動態調整linux分區大小——lvm
摘要:LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制。主要用於幫助我們靈活解決分區擴展和調整大小的問題。本文主要為你介紹lvm的大致原理,使用方法和解決的問題。
一、大致原理
lvm是磁盤和文件系統的中間層,我們正是利用中間層,實現了對磁盤空間的靈活管理。從上到下的邏輯層次依次為:
--------------------------------------------------------------------------------------
文件系統:在邏輯卷上建立文件系統等同於在分區上建立文件系統
--------------------------------------------------------------------------------------
邏輯卷:一個卷組可以被切分成多個邏輯卷
---------------------------------------------------------------------------------------
卷組:多個物理卷組成一個卷組,相當與多個分區組成一個磁盤
--------------------------------------------------------------------------------------
PV物理卷=是磁盤的邏輯分區或者整個磁盤
--------------------------------------------------------------------------------------
二、操作流程
要創建一個LVM系統,一般需要經過以下步驟:
1、創建分區
使用分區工具(如:fdisk等)創建LVM分區,方法和創建其他一般分區的方式是一樣的,區別僅僅是LVM的分區類型為8e。
2、創建物理卷
創建物理卷的命令為pvcreate,利用該命令將希望添加到卷組的所有分區或者磁盤創建為物理卷。將整個磁盤創建為物理卷的命令為:
#pvcreate /dev/hdb
將單個分區創建為物理卷的命令為:
#pvcreate /dev/hda5
3、創建卷組
創建卷組的命令為vgcreate,將使用pvcreate建立的物理卷創建為一個完整的卷組:
#vgcreate web_document /dev/hda5 /dev/hdb
vgcreate命令第一個參數是指定該卷組的邏輯名:web_document。後面參數是指定希望添加到該卷組的所有分區和磁盤。vgcreate 在創建卷組web_document以外,還設置使用大小為4MB的PE(默認為4MB),這表示卷組上創建的所有邏輯卷都以4MB為增量單位來進行擴充 或縮減。由於內核原因,PE大小決定了邏輯卷的最大大小,4MB的PE決定了單個邏輯卷最大容量為256GB,若希望使用大於256G的邏輯卷則創建卷組 時指定更大的PE。PE大小范圍為8KB到512MB,並且必須總是2的倍數(使用-s指定,具體請參考manvgcreate)。
4、激活卷組
為了立即使用卷組而不是重新啟動系統,可以使用vgchange來激活卷組:
#vgchange -ay web_document
5、添加新的物理卷到卷組中
當系統安裝了新的磁盤並創建了新的物理卷,而要將其添加到已有卷組時,就需要使用vgextend命令:
#vgextend web_document /dev/hdc1
這裡/dev/hdc1是新的物理卷。
6、從卷組中刪除一個物理卷
要從一個卷組中刪除一個物理卷,首先要確認要刪除的物理卷沒有被任何邏輯卷正在使用,就要使用pvdisplay命令察看一個該物理卷信息:
如果某個物理卷正在被邏輯卷所使用,就需要將該物理卷的數據備份到其他地方,然後再刪除。刪除物理卷的命令為vgreduce:
#vgreduce web_document /dev/hda1
7、創建邏輯卷
創建邏輯卷的命令為lvcreate:
#lvcreate -L1500 -n www1 web_document
該命令就在卷組web_document上創建名字為www1,大小為1500M的邏輯卷,並且設備入口為 /dev/web_document/www1(web_document為卷組名,www1為邏輯卷名)。如果希望創建一個使用全部卷組的邏輯卷,則需 要首先察看該卷組的PE數,然後在創建邏輯卷時指定:
#vgdisplay web_document | grep"TotalPE"
TotalPE45230
#lvcreate -l45230 web_document -n www1
8、創建文件系統
筆者推薦使用reiserfs文件系統,來替代ext2和ext3:
創建了文件系統以後,就可以加載並使用它:
#mkdir/data/wwwroot
#mount /dev/web_document/www1/data/wwwroot
如果希望系統啟動時自動加載文件系統,則還需要在/etc/fstab中添加內容:
/dev/web_document/www1/data/wwwrootreiserfsdefaults12
9、刪除一個邏輯卷
刪除邏輯卷以前首先需要將其卸載,然後刪除:
#umount /dev/web_document/www1
#lvremove /dev/web_document/www1
lvremove--doyoureallywanttoremove"/dev/web_document/www1"?[y/n]:y
lvremove--doingautomaticbackupofvolumegroup"web_document"
lvremove--logicalvolume"/dev/web_document/www1"successfullyremoved
10、擴展邏輯卷大小
LVM提供了方便調整邏輯卷大小的能力,擴展邏輯卷大小的命令是lvextend:
#lvextend -L12G /dev/web_document/www1
lvextend--extendinglogicalvolume"/dev/web_document/www1"to12GB
lvextend--doingautomaticbackupofvolumegroup"web_document"
lvextend--logicalvolume"/dev/web_document/www1"successfullyextended
上面的命令就實現將邏輯卷www1的大小擴招為12G。
#lvextend -L +1G /dev/web_document/www1
lvextend--extendinglogicalvolume"/dev/web_document/www1"to13GB
lvextend--doingautomaticbackupofvolumegroup"web_document"
lvextend--logicalvolume"/dev/web_document/www1"successfullyextended
上面的命令就實現將邏輯卷www1的大小增加1G。
增加了邏輯卷的容量以後,就需要修改文件系統大小以實現利用擴充的空間。筆者推薦使用reiserfs文件系統來替代ext2或者ext3。因此這裡僅 僅討論reiserfs的情況。Reiserfs文件工具提供了文件系統大小調整工具:resize_reiserfs。對於希望調整被加載的文件系統大 小:
#resize_reiserfs -f /dev/web_document/www1
一般建議最好將文件系統卸載,調整大小,然後再加載:
#umount /dev/web_document/www1
#resize_reiserfs /dev/web_document/www1
#mount-treiserfs /dev/web_document/www1/data/wwwroot
對於使用ext2或ext3文件系統的用戶可以考慮使用工具
ext2resize。
11、減少邏輯卷大小
使用lvreduce即可實現對邏輯卷的容量,同樣需要首先將文件系統卸載:
#umount /data/wwwroot
#resize_reiserfs -s -2G /dev/web_document/www1
#lvreduce -L -2G /dev/web_document/www1
#mount-treiserfs /dev/web_document/www1/data/wwwroot
三、解決的問題
磁盤分區的擴充:一般情況下,當一個分區空間用完的時候,我們會調入一個空白分區,但後調整整個磁盤分區的布局,這是非常不方便的一種做法,無法進行各個分區大小的有效調整。有了lvm以後,我們可以直接卸載邏輯卷,然後可以動態調整邏輯卷的大小(上面的文件不會在調整(增大)大小的時候丟失),從而實現分區的動態調整。