一、LVM簡介
LVM(Logical Volume Manager,邏輯卷管理)的重點在於可以動態調整文件系統的容量!而並非在於數據的存儲效率及安全上面。需要文件的讀寫性能或者是數據的可靠性是RAID所考慮的問題。LVM可以整合多個實體分區在一起,讓這些分區看起來就像是一個磁盤一樣!而且,還可以在未來新增或移除其它的實體分區到這個LVM管理的磁盤當中。如此一來,整個磁盤空間的使用上,實在是相當的具有彈性。
二、LVM常用術語
1.物理存儲介質(he physical mediaThe physical media):這裏指系統的存儲設備文件,如/dev/sda,/dev/sdb等等;
2.物理卷(Physical Volume):簡稱PV,物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區,硬盤)比較,卻包含有與LVM相關的管理參數;
3.卷組(Volume Group):簡稱VG,LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組有一個或多個物理卷組成
4.邏輯卷(Logical Volume):簡稱LV,LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯捲上可以建立文件系統(如/home,/usr等);
5.PE(Physical Extent):PV中可以分配的最小存儲單元稱爲PE,PE的大小是可以配置的,默認爲4MB;
6.LE(Logical Extent):LV中可以分配的最小存儲單元稱爲LE,在同一個卷組中,LE的大小和PE是一樣的,且一一對應;
圖1 LVM磁盤結構圖
三、創建邏輯卷
1.例如:要創建一個10G的lv;
2.注:邏輯卷可以拿分區或者整塊硬盤做實驗;這裏我用/dev/sda7,/dev/sdb做實驗
3.步驟:
3.1.創建物理分區:
①fdisk /dev/sda;(劃分/dev/sda6分區,大小10G,修改分區類型爲Linux LVM,ID改爲8e)
②partx -a /dev/sda;同步分區;
3.2.創建物理卷(PV):
①pvcreate /dev/sd{a6,b};
②pvs;
③pvdisplay;
與PV相關的一些管理命令:
pvcreate:將實體分區創建成爲PV;
pvs:顯示pv簡要信息;
pvdisplay:顯示PV詳細信息;
pvscan:搜尋目前系統裏面任何具有PV的磁碟;
pvremove:將PV屬性移除,讓該分區不具有PV屬性;
pvmove:移動pv
3.3.創建卷組(VG):
語法:vgcreate VGNAME(卷組名) /dev/pv1...(物理卷)
①vgcreate vg0 /dev/sd{a6,b};
②vgs;
③pvdisplay;
④vgdisplay;
與VG相關的一些管理命令:
vgcreate:創建VG;
vgs:顯示vg簡要信息;
vgdisplay:顯示vg詳細信息;
vgscan:搜尋系統上面是否有VG存在;
vgextend:在vg內添加額外的pv;
vgreduce:在vg內移除pv;
vgremove:刪除一個VG;
vgchange:配置vg是否啓動(active);
3.4.創建邏輯卷(LV):
語法:lvcreate [-L 邏輯卷大小 | -l PE的個數] [-n 邏輯卷名稱] [所屬的卷組名]
①lvcreate -L 10G -n lv0 vg0;
②lvdisplay;
與LV相關的一些管理命令:
lvcreate:創建LV;
lvs:顯示lv簡要信息;
lvdisplay:顯示lv詳細信息;
lvscan:查詢系統上面的lv;
lvextend:在lv裏面添加容量;
lvreduce:在lv裏面減少容量;
lvremove:刪除一個lv;
lvresize:對lv進行容量大小的調整
3.5.建立文件系統(格式化):
①mkfs.ext4 /dev/vg0/lv0;
3.6.掛載邏輯卷(寫進/etc/fstab文件實現自動掛載):
①mkdir /mnt/ln0;
②/dev/vg0/lv0 mnt/lv0 ext4 defaults 0 0
③mount -a;
④df- h
⑤cp -r /etc/* /mnt/lv0;
四、擴展邏輯卷
1.注:擴展邏輯卷,前提卷組要有足夠的容量;
2.擴展邏輯卷步驟:
①lvextend -L +10G /dev/vg0/lv0;
②lvdisplay;
③resize2fs /dev/vg0/lv0;同步文件系統,resize2fs只能同步ext系列文件系統;
④df -h;
注:擴展邏輯卷容量表示方法:+10G的含義是在已有的當前容量上加上10G;10G的含義是把容量擴展到10G;
3.要想把卷組空間容量全部擴展完並且同步文件系統使用以下命令:
①lvextend -r -l +100%FREE /dev/vg0/lv0;
五、擴展卷組
1.方法:加硬盤;(這裏我用/dev/sdc硬盤做實驗)
2.擴展卷組步驟:
①pvcreate /dev/sdc;##把硬盤變成物理卷
②vgextend vg0 /dev/sdc;##把物理卷加入卷組
③vgdisplay;
六、縮減邏輯卷
1.縮減邏輯卷步驟:
①umount /mnt/lv0:##取消已經掛載的邏輯卷
②e2fsck -f /dev/vg0/lv0;##強制進行磁盤檢測
③resize2fs /dev/vg0/lv0 10G;
④lvreduce -L 10G /dev/vg0/lv0;
⑤mount -a:重新掛載邏輯卷
⑥lvdisplay;
⑦df -h;
七、刪除物理卷(PV)
1.刪除PV步驟:
①pvmove /dev/sdb;將PV中的PE個數移動到別的PV
②pvdisplay;(可以看到PE個數被移動到別的PV)
③vgreduce vg0 /dev/sdb;從卷組中刪除PV
④vgdisplay;(可以看到卷組容量變小了)
⑤ pvs;(可以看見/dev/sdb不屬於VG0)
⑥pvremove /dev/sdb;移除pv,不讓/dev/sdb具有pv屬性;
⑦pvs;查看
八、刪除邏輯卷
1.刪除邏輯卷步驟:
①umount /mnt/lv0;取消已經掛載的邏輯卷
②lvremove /dev/vg0/lv0;
③lvs;
九、刪除卷組
1.刪除卷組步驟:
①vgremove vg0;
④pvs;
十、邏輯卷快照
1.快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的 準確拷貝。
2.對於需要備份或者複製的現有數據集臨時拷貝以及其它操 作來說,快照是最合適的選擇。
3.快照只有在它們和原來的邏輯卷不同時纔會消耗空間:
3.1在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或 者快照有所改變纔會使用這些空間。
3.2當原來的邏輯卷中有所改變時,會將舊的數據複製到快照中。
3.3快照中只含有原來的邏輯卷中更改的數據或者自生成快照後的快 照中更改的數據。
3.4建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了。也可 以使用lvextend放大快照。
4.快照就是將當時的系統信息記錄下來,就好像照相一般, 若將來有任何數據改動了,則原始數據會被移動到快照區,沒有改動的區域則由快照區和文件系統共享。
5.由於快照區與原本的LV共用很多PE的區塊,因此快照區與被快照的LV必須要要在同一個VG上。系統恢復的時候的文件數量不能高於快照區的實際容量。
十一、創建快照邏輯卷
注:要事先創建好邏輯卷(我這裏事先創建好了邏輯卷(/dev/vg0/lv0),並掛載在/mnt/lv0裏),並拷貝一些數據到目錄裏做實驗,以下四步事先準備好:
(1)cd /mnt/lv0;
(2)cp /etc/fstab f1;
(3)cp /etc/fstab f2;
(4)cp /etc/fstab f3 ;
1.創建邏輯卷快照步驟:
注:創建快照要注意卷組空間容量要足夠;快照邏輯卷容量小於或等於被快照的邏輯卷;
①lvcreate -L 1G -s -n lv0-snapshot -p r /dev/vg0/lv0;創建快照
②lvdisplay;查看快照信息
③mkdir /mnt/snapshot;創建快照目錄
④mount /dev/vg0/lv0-snapshot /mnt/snapshot/;掛載快照
2.測試:
①cd /mnt/lv0;進入到被快照的邏輯卷目錄裏
②echo > f1;在被快照的邏輯卷裏清空f1的數據
③cd /mnt/snapshot;進入到快照邏輯卷目錄裏
④cat f1;可以看到原始f1的數據內容
3.利用快照回覆數據:
(1)注:所要恢復的數據不能超過快照區的總大小,因爲如果變動的數據大小超過了快照區的空間,那麼快照區是不能容納所有變動的數據了,這個時候快照功能會失效。
(2)方法:把快照裏的數據複製到邏輯卷的掛載目錄裏即可;
4.刪除快照邏輯卷:
①umount /mnt/snapshot/;取消掛載
②lvremove /dev/vg0/lv0-snapshot;刪除快照邏輯卷