LVM (Logic Volume Management,邏輯卷管理)

是傳統商業Unix就帶有的一項高級磁盤管理工具,異常強大。后來LVM移植到了Linux操作系統上,盡管不像原來Unix版本那么強大,但瘦死的駱駝比馬大,LinuxLVM仍然非常強大,可以在生產運行系統上面直接在線擴展硬盤分區,可以把分區umount以后收縮分區大小,還可以在系統運行過程中把一個分區從一塊硬盤搬到另一塊硬盤上面去等等,簡直就像變魔術,而且這一切都可以在一個繁忙運行的系統上面直接操作,不會對你的系統運行產生任何影響,很安全。?


還是拿JavaEye的網站服務器隨便舉個小例子吧。話說今天晚上我登錄JavaEye網站服務器隨便這么一查看磁盤使用狀況:?

  1. df -h ?


竟然發現/home分區的磁盤消耗的很快?

  1. Filesystem? ? ? ? ? ? ? ? Size? Used? Avail Use% ? Mounted on ?
  2. /dev/mapper/system-home? ? 40G ? 32G? ? 8G? 80%? ? /home ?



有點出乎意料,已經使用了80%,如果用光了,可就有點麻煩了,所以為了安全,把/home分區擴大5GB,多給它點硬盤空間,敲入兩條shell命令?

  1. lvextend -L +5G /dev/system/home ?
  2. resize_reiserfs -s +5G /dev/system/home? ?


先把邏輯卷擴大5GB,再把上面的reiserfs文件系統擴大5GB,前后耗時不超過3秒鐘。再df -h查看一下:?

  1. Filesystem? ? ? ? ? ? ? ? Size? Used? Avail Use% ? Mounted on ?
  2. /dev/mapper/system-home? ? 45G ? 32G? ? 13G? 71%? ? /home ?



哈哈,/home立刻多了5GB,搞定收工,這是不是很像變戲法,我沒停任何服務,沒重起服務器,大家沒有任何感覺,就一切搞定,說實話我也一直覺得LVMcool,所以我一直是LVM+Reiserfs的忠實擁躉。有興趣學習LVM的同學可以下載后面的附件,這可是我珍藏多年的LVM秘籍!?


另外強烈推薦Daniel RobbinsIBM DW網站上面關于LVM的系列文章:?


通用線程: 學習 Linux LVM,第 1 部分?

通用線程:學習 Linux LVM,第 2部分?


另外,在大規模的生產系統上面,文件系統的管理是一個錯綜復雜的工作,如果你對這個方面的知識很感興趣,你可以繼續了解一下EVMS(Enterprise Volume Management System,企業級文件卷管理系統)EVMS Linux 下的所有存儲技術提供了統一的、可擴展的、基于插件的 API。這意味著什么?它意味著由于 EVMS,您可以使用單個工具來對磁盤分區、創建 LVM 對象以及甚至創建 Linux 軟件 RAID 卷。并且可以使用這一工具以強有力的方式合并這些技術。還是推薦看Daniel Robbins的文章:?



3.9 擴展LV?

為邏輯卷增加容量可用使用lvextend,即可以指定要增加的尺寸也可以指定擴容后的尺寸,如?

# lvextend -L12G /dev/testvg/testlv?

lvextend -- extending logical volume "/dev/testvg/testlv" to 12 GB?

lvextend -- doing automatic backup of volume group "testvg"?

lvextend -- logical volume "/dev/testvg/testlv" successfully extended?

將擴大邏輯卷testlv的容量為12GB?

# lvextend -L+1G /dev/testvg/testlv?

lvextend -- extending logical volume "/dev/testvg/testlv" to 13 GB?

lvextend -- doing automatic backup of volume group "testvg"?

lvextend -- logical volume "/dev/testvg/testlv" successfully extended?

將為LV testlv再增大容量1GB13GB?

LV擴容的一個前提是:LV所在的VG有足夠的空閑存儲空間可用。?

在為LV擴容之后,應同時為LV之上的文件系統擴容,使二者相匹配。對不同的文件系統有相對應的擴容方法。?

3.9.1 ext2/ext3?

除非內核已有ext2online 補丁,否則在改變ext2/ext3文件系統的大小時應卸載它:?

# umount /dev/testvg/testlv?

# resize2fs /dev/testvg/testlv?

# mount /dev/testvg/testlv /home?

這里假設testlv安裝點為/home。在es2fsprogs-1.19或以上版本中包含resize2fs命令。?

LVM發行包中有一個稱為e2fsadm的工具,它同時包含了lvextendresize2fs的功能,如:?

# e2fsadm -L+1G /dev/testvg/testlv?

等價于下面兩條命令:?

# lvextend -L+1G /dev/testvg/testlv?

# resize2fs /dev/testvg/testlv?

但用戶仍需首先卸載文件系統。?

3.9.2 reiserfs?

ext2不同,Reiserfs不必卸載文件系統,如:?

# resize_reiserfs -f /dev/testvg/testvl?

3.9.3? xfs?

SGI XFS文件系統必須在安裝的情況下才可改變大小,并且要使用安裝點而不是塊設備,如:?

# xfs_growfs /home?

3.10 縮小LV?

邏輯卷可擴展同樣也可縮小,但應在縮小LV之前首先減小文件系統,否則將可能導致數據丟失。?

3.10.1 ext2/ext3?

可以使用LVM的工具e2fsadm操作,如:?

# umount /home?

# e2fsadm -L-1G /dev/testvg/testvl?

# mount /home?

如果采用resize2fs,就必須知道縮少后卷的塊數:?

# umount /home?

# resize2fs /dev/testvg/testvl 524288?

# lvreduce -L-1G /dev/testvg/testvl?

# mount /home?

3.10.2 reiserfs?

在縮小reiserfs時,應首先卸載它,如:?

# umount /home?

# resize_reiserfs -s-1G /dev/testvg/testvl?

# lvreduce -L-1G /dev/testvg/testvl?

# mount -treiserfs /dev/testvg/testvl /home?

3.10.3 xfs?

無法實現。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383333.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383333.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383333.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

cpu中的MMU的作用

虛擬內存與物理內存之間的映射 用戶空間映射到物理內存是獨立的,提高安全性修改內存訪問級別 (0是最高級)

Linux命令行與Shell腳本編程大全讀書筆記

Linux內核4大主要功能: 內存管理 進程管理 設備管理 文件系統管理 Linux系統啟動的進程和腳本管理 1./etc/inittab 管理系統開機時會自動啟動的進程 2./etc/init.d 管理開機時啟動或停止某個應用的腳本放在這個目錄下,/etc/rcX.d目錄在啟動時&…

拷貝構造函數的總結

構造函數的分類及調用 按照參數分類 1.無參構造(默認構造) 2.有參構造按照類型分類 1.普通構造函數2.拷貝構造函數無參構造寫法和調用 Person p1; 注意不能寫Person (),因為編譯器認為這個是函數聲明有參構造函數寫法 和調用 Person p2(10) 或者Per…

技術與技巧札記

Linux常用命令及技巧: (1)cat /proc/version 查看當前內核的版本 (2) 掛載nfs文件夾:需要先確認在/etc/exports文件,可以用于開發板掛載的文件夾 mount -o nolock 10.0.22.30:/root/sharednfs …

c++中new的總結(動態管理,malloc存在的問題,malloc與new的區別)

c中使用malloc出現的問題 程序員必須確定對象的長度malloc 返回一個(void *)指針 ,c不允許將(void*) 賦值給其它指針,必須強轉malloc可能申請內存失敗,所以必須判斷返回值來保存內存分配成功用戶在使用對象…

Linux中變量#,@,0,1,2,*,$$,$?的含義

$# 是傳給腳本的參數個數 $0 是腳本本身的名字 $1 是傳遞給該shell腳本的第一個參數 $2 是傳遞給該shell腳本的第二個參數 $ 是傳給腳本的所有參數的列表 $* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個 $$ 是腳本運行的當前…

Volatile的陷阱

最近寫的關于在嵌入式開發中常遇到的關于volatile關鍵字使用的短文,都是些通用的技術,貼上來share。 對于volatile關鍵字,大部分的C語言教材都是一筆帶過,并沒有做太過深入的分析,所以這里簡單整理了一些關于volatile的…

c++中靜態成員變量和靜態成員函數

靜態成員變量 在一個類中,若將一個成員變量聲明為static,這種成員成為靜態成員變量,與一般的數據成員不同,無論建立了多少個對象,都只想有一個靜態數據的拷貝,靜態成員變量,屬于某個類,所有對象…

單列模式(餓漢)

單例模式案例 目的&#xff1a;為了讓類中只有一個實例&#xff0c;實例不需要自己釋放將 默認構造 和 拷貝構造 私有化內部維護一個 對象的指針私有化唯一指針對外提供getinstance方法來訪問這個指針保證類中只能實例化唯一 一個對象 主席案例 #include<iostream>usin…

Makefile札記

Makefile中: ? 的區別 在Makefile中我們經常看到 : ? 這幾個賦值運算符&#xff0c;那么他們有什么區別呢&#xff1f;我們來做個簡單的實驗 新建一個Makefile&#xff0c;內容為&#xff1a; ifdef DEFINE_VRE VRE “Hello World!” else endif ifeq ($(OPT),define) VRE…

c++中this指針基本概念和使用

class Person { public:int m_A;//非靜態成員變量&#xff0c;屬于對象上void func(/*Person * this*/){}; //非靜態成員函數 不屬于對象身上static int m_B;//靜態成員函數&#xff0c;不屬于對象上static void fun2(){};//靜態成員函數 &#xff0c;不屬于對象身上//double …

通用Makefile實現

Makefile是Linux下程序開發的自動化編譯工具&#xff0c;一個好的Makefile應該準確的識別編譯目標與源文件的依賴關系&#xff0c;并且有著高效的編譯效率&#xff0c;即每次重新make時只需要處理那些修改過的文件即可。Makefile擁有很多復雜的功能&#xff0c;這里不可能也沒必…

c++中空指針訪問成員函數

如果成員函數沒有用到this &#xff0c;那么空指針可以直接訪問 如果成員函數用到this 指針&#xff0c;就要注意&#xff0c;要判斷是否為空&#xff0c;防止程序崩潰 #include<iostream>using namespace std;class Person{public:void show(){//沒有 用到this指針&am…

從0開始python學習-35.allure報告企業定制

目錄 1. 搭建allure環境 2. 生成報告 3. logo定制 4. 企業級報告內容或層級定制 5. allure局域網查看 1. 搭建allure環境 1.1 JDK&#xff0c;使用PyCharm 找到pycharm安裝目錄找到java.exe記下jbr目錄的完整路徑&#xff0c;eg: C:\Program Files\JetBrains\PyCharm Com…

grep 常用命令

這個--include選項,可以這樣使用: grep -rn --include*.c --include*.h re . 可以指定多次, 如果真是上面的這種情況, 其實可以用 grep -rn --include*.[ch] re . 但是, 如果源文件中含有C源代碼,上面的方法就不湊效了, 因為[]中只能放一個字符. grep -rn --include*.{cp…

c++中友元函數詳解

友元 友元分為&#xff1a;友元函數和友元類 友元提供了一種突破封裝的方式&#xff0c;有時提供了便利。但是友元會增加耦合度&#xff0c;破壞了封裝&#xff0c;所以友元不宜多 用。 全局函數做友元函數 全局函數寫到類中做聲明 并且最前面寫關鍵字 friend 友元函數可訪問…

Linux時間函數札記

關于gmtime、gmtime_r、localtime、localtime_r 測試環境&#xff1a;vmware 7 Redhat5.5&#xff0c;系統時間使用UTC&#xff0c;時區為上海。 1、函數功能介紹 使用man gmtime或man localtime都可以的得到這幾個函數的介紹。原型如下&#xff1a; struct tm *gmtime(const …

c++實現順序表的相關操作

Myarray.h文件 #pragma once#include<iostream>using namespace std;class MyArray { public:MyArray();//默認構造 默認100容量MyArray(int capacity);MyArray(const MyArray& array);~MyArray();//尾插法void Push_Back(int val);//根據索引獲取值int getData(int…

系統架構札記

什么是高內聚、低耦合&#xff1f; 起因&#xff1a;模塊獨立性指每個模塊只完成系統要求的獨立子功能&#xff0c;并且與其他模塊的聯系最少且接口簡單&#xff0c;兩個定性的度量標準――耦合性和內聚性。 耦合性也稱塊間聯系。指軟件系統結構中各模塊間相互聯系緊密程度的一…

c++中運算符重載(加號運算,左移運算,前置后置++運算符,賦值運算,關系運算,函數運算)

運算符重載注意 重載的運算符要易讀內置的數據類型的表達式的運算符是不可以改變的不要重載&& 和 | | 運算符&#xff0c;[]和->運算符只能通過成員函數進行重載<<和>>只能通過全局函數配合友元函數進行重載 加號運算符重載 如果想讓自定義數據類型 進…