標籤:linux 快照 lvm 邏輯卷
LVM的主要特點就是可以將已經格式化的分區進行動態縮減。LVM的實現方式是將幾個實體的partitions或者disk通過軟體組成一個大磁碟(VG),然後可以將大磁碟進行切割,切割後可得到lv(相當於分區),在lv上進行格式化掛載。vg和lv的容量都可以動態地進行縮減。下面來說一下具體過程:
1)pv階段。
pv階段涉及到的命令:
1、pvcreate:將分區partition建立成為pv
2、pvscan:檢索目前系統中具有pv的磁碟,顯示pv
3、pvdisplay:顯示系統中pv的狀態
4、pvremove:刪除pv,該partition不在具有pv屬性
5、pvmove:可以將一個分區pe塊上的資料轉移到另一個分區的pe塊上
例:pvmove /dev/sda10 /dev/sda11
首先分割出4個分區,通過pvcreate建立pv。在劃分分區時,注意要將systemID改成8e(即Linux LVM)
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6B/77/wKiom1UuHCihc74RAADqnBoGvjA160.jpg" title="8a434d36-4507-404b-b5db-4b70d5c260c1.png" alt="wKiom1UuHCihc74RAADqnBoGvjA160.jpg" />
建立pv(pvcreate /dev/sda{10,11,12,13})
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6B/73/wKioL1UuHaWz4zcvAAJmXanHdxE219.jpg" title="e29b420d-39b4-4ce4-a873-c43ba74340a8.png" alt="wKioL1UuHaWz4zcvAAJmXanHdxE219.jpg" />
2)VG階段。
VG階段使用到的命令:
1、vgcreate:建立VG(-s:指定pe塊大小)
例:vgcreate [-s N[mgt]] vg名稱 所使用的pv
2、vgscan:簡要顯示系統上的vg資訊
3、vgdisplay:顯示vg的狀態
4、vgextend:在VG上增加額外的pv(擴充VG)
5、vgreduce:在VG上移除pv(縮減VG)
6、vgchange:設定VG是否啟動
7、vgremove:刪除VG
將前3個pv組成一個vg,指定pe大小為8M(vgcreate -s 8m babyVG /dev/sda{10,11,12})
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6B/73/wKioL1UuHdHCt8MVAAKZN3oeelw798.jpg" title="ea43a2af-2568-441c-9698-fbc5193d5f93.png" alt="wKioL1UuHdHCt8MVAAKZN3oeelw798.jpg" />
VG建立完成,VG可以通過添加pv或者刪除pv來動態擴大(vgextend)和縮減(vgreduce)。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6B/73/wKioL1UuHgmiwFd0AAKXqfC0pXE193.jpg" title="5b4c4403-8303-4970-84a1-f1588d125f9a.png" alt="wKioL1UuHgmiwFd0AAKXqfC0pXE193.jpg" />
將/dev/sda10這塊pv從babyVG中移除,VG容量變為6G,再給他添兩塊/dev/sda10與/dev/sda13
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6B/73/wKioL1UuHjnTZ_jPAAKKpjkU7xc031.jpg" title="5e0016cc-5cd4-4fb7-bdef-8add3c68e9a0.png" alt="wKioL1UuHjnTZ_jPAAKKpjkU7xc031.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6B/77/wKiom1UuHQXTjiVeAAGmcx5M__A838.jpg" title="b8f20173-7bbd-4b47-9b23-be19f99d8757.png" alt="wKiom1UuHQXTjiVeAAGmcx5M__A838.jpg" />
通過pvscan查看pv資訊,4塊pv已經全部屬於babyVG。
3)LV階段。
LV階段涉及到的命令:
1、lvcreate:建立lv
例:lvcreate [-l N] [-L size] [-n lvname] VGname
-l:後面指定pe數量
-L:size指定lv大小(-l與-L選擇一個指定大小即可)
-n:後面接lv名稱
2、lvscan:查看系統上的lv
3、lvdisplay:顯示lv狀態
4、lvextend:擴大lv容量
例:lvextend [-l +N] [-L +size[mg]]
-l:後面指定pe數量,+100
-L:size指定要增加的大小 +3G
5、lvreduce:縮減lv容量
例:lvreduce [-l -N] [-L -size[mg]]
-l:後面指定pe數量,-100
-L:size指定要縮減的大小 -3G
6、lvresize:重新設定lv容量
例:lvresize [-l N] [-L size[mg]]
-l:重新設定lv的pe數量
-L:重新設定lv大小
7、lvremove:刪除lv
建立一個LV,進行格式化,掛載。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6B/73/wKioL1UuHqGjv67fAADfv07r2RY140.jpg" title="0e5d8e53-ffbb-4fa1-9c48-6b592ef80055.png" alt="wKioL1UuHqGjv67fAADfv07r2RY140.jpg" />
lv建立完畢,大小5G
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/73/wKioL1UuHsHhQ9PHAAO6XfKzxQg513.jpg" title="582c7936-4666-4656-a119-5ecafec63225.png" alt="wKioL1UuHsHhQ9PHAAO6XfKzxQg513.jpg" />
這樣就掛載完畢,這個檔案系統就可以正常使用了。
LV的訪問路徑
1、/dev/VG_NAME/LV_NAME
2、/dev/mapperVG_NAME-LV_NAME
此兩者均為符號連結,指向的檔案是/dev/dm-N(/dev/dm-0,/dev/dm-1.....)
4)擴大LV
如果哪一天babyLV這個分區的容量不夠了,可以對babyLV 這個分區進行擴容,如果VG不夠大,可以先對VG進行擴容,lv的擴容可以線上進行,不需要umount檔案系統。
在擴大LV時,可以使用的命令很多:
1、lvextend -l +N
2、lvextend -L +size(mg)
3、lvresize -l N
4、lvresize -L size(mg)
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6B/73/wKioL1UuHxPBKRyDAANGHMwMAEw648.jpg" title="e455288e-34c4-4b88-87c1-2dbd97171b26.png" alt="wKioL1UuHxPBKRyDAANGHMwMAEw648.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6B/77/wKiom1UuHfLB7gRrAADgqVCP4jc869.jpg" title="a881dc8d-225c-4951-90e2-2e61b189087a.png" alt="wKiom1UuHfLB7gRrAADgqVCP4jc869.jpg" />
可以看到檔案系統已經擴大至7G
5)縮小LV
如果LV過大,可以縮減LV。如果VG的使用率很低,可以將個別pv從中抽離。在縮減LV時需要注意,要先卸載檔案系統,然後對檔案系統進行強制檢測(fsck -f),然後減小檔案系統的容量(resize2fs),之後才可以減小LV的大小。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/73/wKioL1UuH23hC2VCAAYN5T9Hcy8257.jpg" title="0eae8acd-4227-4463-b21d-850d1692bc39.png" alt="wKioL1UuH23hC2VCAAYN5T9Hcy8257.jpg" />
在縮減LV時,檔案系統縮小的容量可能無法和LV縮小的容量完全一樣,但是整個過程中LV的容量必須大於檔案系統的容量,所以這裡檔案系統縮小之後容量可以稍稍小於LV縮小之後的容量,縮減完畢後,在resize2fs至LV的大小以充分利用空間。我這裡現將檔案系統resize2fs至3G,等完成之後在resize2fs至LV的大小(4G)
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/73/wKioL1UuIKzyNfLIAAPF1HORve0075.jpg" title="7657bc8b-fb54-418a-8435-b9784ed95faf.png" alt="wKioL1UuIKzyNfLIAAPF1HORve0075.jpg" />
這時候VG利用率不高,假如我想騰出/dev/sda11用於其他地方
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/77/wKiom1UuH3LQr1vfAAFw5jYc16s139.jpg" title="5e9f5226-8e0b-4985-880d-117b0f461a1b.png" alt="wKiom1UuH3LQr1vfAAFw5jYc16s139.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/73/wKioL1UuIQPxIqzDAAEvFpVmHys151.jpg" title="e8d824f6-062a-4d0d-a84b-f6740c144807.png" alt="wKioL1UuIQPxIqzDAAEvFpVmHys151.jpg" />
可以看見建立在/dev/sda11上的pv中的pe塊都寫有資料,不能直接將其移除,可以將/dev/sda11上寫有資料的pe塊都轉移至/dev/sda13上,因為/dev/sda13上的pe塊都未被使用。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6B/77/wKiom1UuH-zA0lBNAARfJGDCCAE519.jpg" title="b75707e4-0bff-440d-bca4-2da23275b872.png" alt="wKiom1UuH-zA0lBNAARfJGDCCAE519.jpg" />
可以看見所有的pe都已經轉移至/dev/sda13,然後就可以對其進行移除了。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6B/73/wKioL1UuIXrx4_i4AAIJIWKsXxc535.jpg" title="e3b12b8d-c4c9-4f13-ba44-4e9e76c96f33.png" alt="wKioL1UuIXrx4_i4AAIJIWKsXxc535.jpg" />
/dev/sda11已經從babyVG中移除。
6)快照
可以對VG上的某一個LV進行快照,快照那一刻該LV上的系統資訊就會被記錄下來。可以手動分配快照的大小,一般是小於等於被快照的LV大小。該LV上的某個pe上的資料發生了更改,原始的pe就會被移送至快照地區,沒有發生更改的pe塊則被LV上的檔案系統和快照集共用。當然,如果被修改的資料的總容量大於快照區的容量,快照就會失效。由於LV和快照集共用很多pe塊,所以快照區必須和被快照的LV在同一個VG上。來建立一個快照。
命令:lvcreate -s [-l N][-L size] -n 快照名 /dev/......(被快照的LV)
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/73/wKioL1UuIabxCDSHAAFxjDKZVqM408.jpg" title="e2ca9968-7efd-44d7-8cbd-7b534ef47fe3.png" alt="wKioL1UuIabxCDSHAAFxjDKZVqM408.jpg" />
快照建立完成。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6B/73/wKioL1UuIdDDB0TiAAHBHj0ZTqI698.jpg" title="7d449dd1-4909-46e2-a7e2-dec1ac8b2711.png" alt="wKioL1UuIdDDB0TiAAHBHj0ZTqI698.jpg" />
將快照進行掛載之後,快照的資訊與別快照的LV一模一樣(包括裡面的資料)。當然,也可以將被快照的LV當做備份,把所有的測試放到快照地區中,測試完了即可將快照刪除,不會影響被快照的LV中的資料。這也是個不錯的選擇。
Linux LVM的相關操作