邏輯卷:
一、基礎知識:
lvm:(Logical Volume Manager) ,邏輯卷管理器。
邏輯卷管理器解決的主要問題如下:
解決分區空間不夠用或者分區空間綽綽有餘的情況。
基本磁盤分區的邊界是不能隨意擴展的。分區大小是在剛剛劃分分區的時候就決定了。
邏輯卷的工作原理:邏輯卷(lv)是將幾個磁盤分區或者塊設備(pv,pv的id必須是8e的,pv可以位於不同的磁盤分區裏,pv大小可以不一)組織起來形成一個大的擴展分區(vg,卷組,一個vg至少要包含一個pv。),該擴展分區不能直接用,需要將其劃分成邏輯卷(lv)才能使用,lv可以格式化成不同的文件系統,掛載後直接使用。 lv的擴展和縮減是不會影響原有數據的,但邏輯捲縮減的風險大於邏輯卷擴展的風險。邏輯卷可以支持快照功能。
快照的工作原理:保存數據某一時刻的狀態。快照剛剛建立的時候,它的大小是空的。快照是訪問原文件的另一條路徑。快照是在數據改變之前將數據原封不動的保存到快照空間裏面。注意數據變化的幅度不能超過給定快照空間的大小,否則快照將崩潰。
快照的作用:對某一時刻數據狀態的備份提供另一條訪問路徑,通過快照來備份數據到其它位置,備份完成後,快照就沒用了,卸載和移除該快照卷。快照空間的大小取決於數據改變的頻度和所需要使用的時間長度,即有限的時間內原文件數據改變的空間大小。
通過下面這些命令創建、查看和縮減 、移除LV的各層。
PV: pvcreate pvremove pvmove pvscan pvdisplay pvs
VG: vgcreate vgdisplay vgextend vgreduce vgs vgscan vgremove
LV: lvcreate lvdisplay lvremove lvreduce lvextend lvs
pv是可以針對任何物理塊設備創建的。
舉例說明vg的創建:
創建一個10G大小的vg。
步驟:1、先創建一個邏輯分區100G;
2、在該邏輯分區下創建2個pv,大小分別是8G和2G。
pvcreate /dev/sda{5,6}
3、通過pvs進行查看;通過pvdisplay查看詳細信息。
4、創建卷組。此時要先進行卷組名查看,用vgs,卷組名不能重複。
5、通過vgcreate命令創建vg。
vgcreate VGNAME PVNAME
6、當看到Volume group "myvg" successfully created證明vg創建成功。通過vgs或vgdisplay進行查看。
7、當不想用哪個vg的時候,可以通過vgremove VGNAME刪除某個vg;當然也可以通過vgremove -f VGNAME 強行刪除某個vg。當看到反饋信息是 Volume group "myvg" successfully removed時,說明vg刪除成功,可以通過vgs或vgdisplay進行查看。
說明: 1)額外命令:vgcreate -s #(KMGT) VGNAME PVNAME :指定PE的大小。
2)PE是lv 層次上的類似於chunk 的空間塊。
3)當感覺到所用的vg大小不夠的時候,可以通過命令vgextend來擴展vg。
vgextend VGNAME PVNAME(可以通過命令vgextend -t VGNAME PVNAME 來測試是否可以擴展該vg。)
4)當感覺不需要vg空間過大,也可以通過vgreduce來縮減vg的大小,此時務必要小心,否則會導致數據丟失等嚴重後果。所有要事先查看vg和pv的大小,通過命令pvmove PVNAME將某個即將挪走的pv但數據保存到vg的其它pv裏面,然後進行縮減。
vgreduce VGNAME PVNAME(可以事先通過vgreduce -t VGNAME PVNAME 來測試是否可以移除某個pv 來縮減vg 的大小。)
lv的創建命令:lvcreate [operator] VGNAME/PVNAMES
-l :指定LE(也即PE)的個數。
-L:指定LE的大小,單位KMGT。
-n:指定LV的名字。
-p r|rw :該lv是隻讀的或者是可讀寫的,在創建快照的時候會用到。
當創建成功的時候顯示: Logical volume "mylv" created。可以通過lvs或者lvdisplay進行查看。
注意:LV的路徑格式爲:/dev/VGNAME/LVNAME。
當LV創建成功的時候,就可以格式化文件系統,掛載使用了。其掛載路徑特別:/dev/mapper/VGNAME—LVNAME 。mapper叫路徑映射,用它來實現多路徑。
擴展LV時,先擴展物理邊界,再擴展邏輯邊界。使用lvextend命令擴展物理邊界,使用resize2fs擴展邏輯邊界。注意:擴展大小不能超過VG的大小。
格式:lvextend -L #KMGT(+#KMGT) LVPATH(注意此時只擴展了物理邊界。)
resize2fs LVPATH(自動擴展跟物理邊界一樣大。)
當我們感覺所創建的LV過大時,可以縮減LV的大小。縮減LV時,先縮減邏輯邊界,再縮減物理邊界。使用lvreduce命令縮減LV大小。
縮減LV的步驟:
1、先卸載LV:umount LV
2、再強行檢測該LV:e2fsck -f
3、然後邏輯上縮減LV:resize2fs LVPATH #KMGT(此時要指定縮減到多大或縮減了多少)
4、而後物理縮減LV:lvreduce -L #KMGT LVPATH(此時會提示是否真的要進行縮減)
5、最後掛載此LV: mount LBPATH MOUNT_POINT。
LV快照的創建:使用命令lvcreate [operator] LVPATH
-L 指定快照的大小;
-s 說明創建的是一個快照;
-p r設置爲只讀;
-n 指定快照的名字;
移除LV:使用lvremove命令。格式:lvremove LVPATH。
二、擴展知識:
一個正在發生改變的數據是可以被複制的,但複製後的數據時不可用的,因爲進程是不能識別處在非同一狀態的數據的。