是傳統商業Unix就帶有的一項高級磁盤管理工具,異常強大。后來LVM移植到了Linux操作系統上,盡管不像原來Unix版本那么強大,但瘦死的駱駝比馬大,Linux的LVM仍然非常強大,可以在生產運行系統上面直接在線擴展硬盤分區,可以把分區umount以后收縮分區大小,還可以在系統運行過程中把一個分區從一塊硬盤搬到另一塊硬盤上面去等等,簡直就像變魔術,而且這一切都可以在一個繁忙運行的系統上面直接操作,不會對你的系統運行產生任何影響,很安全。?
還是拿JavaEye的網站服務器隨便舉個小例子吧。話說今天晚上我登錄JavaEye網站服務器隨便這么一查看磁盤使用狀況:?
- df -h ?
竟然發現/home分區的磁盤消耗的很快?
- Filesystem? ? ? ? ? ? ? ? Size? Used? Avail Use% ? Mounted on ?
- /dev/mapper/system-home? ? 40G ? 32G? ? 8G? 80%? ? /home ?
有點出乎意料,已經使用了80%,如果用光了,可就有點麻煩了,所以為了安全,把/home分區擴大5GB,多給它點硬盤空間,敲入兩條shell命令?
- lvextend -L +5G /dev/system/home ?
- resize_reiserfs -s +5G /dev/system/home? ?
先把邏輯卷擴大5GB,再把上面的reiserfs文件系統擴大5GB,前后耗時不超過3秒鐘。再df -h查看一下:?
- Filesystem? ? ? ? ? ? ? ? Size? Used? Avail Use% ? Mounted on ?
- /dev/mapper/system-home? ? 45G ? 32G? ? 13G? 71%? ? /home ?
哈哈,/home立刻多了5GB,搞定收工,這是不是很像變戲法,我沒停任何服務,沒重起服務器,大家沒有任何感覺,就一切搞定,說實話我也一直覺得LVM很cool,所以我一直是LVM+Reiserfs的忠實擁躉。有興趣學習LVM的同學可以下載后面的附件,這可是我珍藏多年的LVM秘籍!?
另外強烈推薦Daniel Robbins在IBM 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再增大容量1GB至13GB。?
為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的工具,它同時包含了lvextend與resize2fs的功能,如:?
# 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?
無法實現。