LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤分區進行管理的一種機制,它由Heinz Mauelshagen在Linux 2.4內核上實現。
普通的磁盤分區管理方式在邏輯分區划分好之后就無法改變其大小,當一個邏輯分區存放不下某個文件時,這個文件因為受上層文件系統的限制,也不能跨越多個分區來存放,所以也不能同時放到別的磁盤上。而遇到出現某個分區空間耗盡時,解決的方法通常是使用符號鏈接,或者使用調整分區大小的工具,但這只是暫時解決辦法,沒有從根本上解決問題。隨着Linux的邏輯卷管理功能的出現,這些問題都迎刃而解,用戶在無需停機的情況下可以方便地調整各個分區大小。
LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來為文件系統屏蔽下層磁盤分區布局,提供一個抽象的存儲卷,在存儲卷上建立文件系統。
一、LVM 相關名詞解釋:
1、物理存儲介質(PhysicalStorageMedia)
指系統的物理存儲設備:磁盤,如:/dev/hda、/dev/sda等,是存儲系統最底層的存儲單元。
2、物理卷(Physical Volume,PV)
指磁盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
3、卷組(Volume Group,VG)
類似於非LVM系統中的物理磁盤,其由一個或多個物理卷PV組成。可以在卷組上創建一個或多個LV(邏輯卷)。
4、邏輯卷(Logical Volume,LV)
類似於非LVM系統中的磁盤分區,邏輯卷建立在卷組VG之上。在邏輯卷LV之上可以建立文件系統(比如/home或者/usr等)。
5、物理塊(Physical Extent,PE)
每一個物理卷PV被划分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認為4MB。所以物理卷(PV)由大小等同的基本單元PE組成。
二、創建一個LVM系統;
1、創建分區
使用分區工具(如:fdisk等)創建LVM分區,方法和創建其他一般分區的方式是一樣的,區別僅僅是LVM的分區類型為8e。
2、創建物理卷
創建物理卷的命令為pvcreate,利用該命令將希望添加到卷組的所有分區或者磁盤創建為物理卷。
將整個磁盤創建為物理卷的:
# pvcreate /dev/sdb
將單個分區創建為物理卷的:
# pvcreate /dev/hda5
3、創建卷組
創建卷組 vgcreate,
將使用 pvcreate 建立的物理卷創建為一個完整的卷組:
# vgcreate web_data /dev/hda5 /dev/sdb
vgcreate
第一個參數是指定該卷組的邏輯名:web_data。
后面參數是指定希望添加到該卷組的所有分區和磁盤。
vgcreate 在創建卷組web_data以外,還設置使用大小為4MB的PE(默認為4MB),這表示卷組上創建的所有邏輯卷都以4MB為增量單位來進行擴充或縮減。由於內核原因,PE大小決定了邏輯卷的最大大小,4MB的PE決定了單個邏輯卷最大容量為256GB,若希望使用大於256G的邏輯卷則創建卷組時指定更大的PE。PE大小范圍為8KB到512MB,並且必須總是2的倍數(使用-s指定,具體請參考manvgcreate)。(centos 6.2系統已發現沒有這種限制)
4、激活卷組
為了立即使用卷組而不是重新啟動系統,可以使用vgchange來激活卷組:
# vgchange -ay web_data
5、添加新的物理卷到卷組中
當系統安裝了新的磁盤並創建了新的物理卷,而要將其添加到已有卷組時,就需要使用vgextend命令:
# vgextend web_data /dev/hdc1
/dev/hdc1 表示是新的物理卷。
6、從卷組中刪除一個物理卷
要從一個卷組中刪除一個物理卷,首先要確認要刪除的物理卷沒有被任何邏輯卷正在使用,就要使用pvdisplay命令察看一個該物理卷信息:
如果某個物理卷正在被邏輯卷所使用,就需要將該物理卷的數據備份到其他地方,然后再刪除。刪除物理卷的命令為vgreduce:
# vgreduce web_data /dev/hda1
7、創建邏輯卷
創建邏輯卷的命令為 lvcreate:
# lvcreate -L 500 -n test web_data
該命令就在卷組web_data上 創建名字為test
-L 大小為 500M (大小格式還有 G)
並且設備入口為 /dev/web_data/test(web_data為卷組名,test為邏輯卷名)。
如果希望創建一個使用全部卷組的邏輯卷,則需 要首先察看該卷組的PE數,然后在創建邏輯卷時指定:
# vgdisplay web_data | grep "TotalPE" TotalPE45230 # lvcreate -l45230 web_data -n test
8、加載文件系統格式
mkfs.ext4 /dev/web_data/test
或者:
mkfs -t ext4 /dev/web_data/test
resize2fs 針對的是ext2、ext3、ext4 文件系統
xfs_growfs 針對的是 xfs 文件系統
擴展增大減小 邏輯卷:
ext2/ext3/ext4 文件系統的調整命令是resize2fs(增大和減小都支持)
lvextend -L 100G /dev/web_data/test //增大至100G lvextend -L +20G /dev/web_data/test //增加20G lvreduce -L 50G /dev/web_data/test //減小至50G lvreduce -L -20G /dev/web_data/test //減小20G resize2fs /dev/web_data/test //執行調整 xfs 文件系統的調整命令是xfs_growfs(只支持增大)
lvextend -L 100G /dev/web_data/test //增大至100G lvextend -L +20G /dev/web_data/test //增加20G xfs_growfs /dev/web_data/test //執行調整
創建掛載目錄
#mkdir /data/wwwroot #mount /dev/web_data/test /data/wwwroot 如果希望系統啟動時自動加載文件系統
編輯 /etc/fstab 添加: /dev/web_data/test /data/wwwroot ext4 defaults 1 2
9、刪除一個邏輯卷
刪除邏輯卷以前首先需要將其卸載,然后 lvremove 刪除:
取消掛載
# umount /dev/web_data/test 移除邏輯卷 # lvremove /dev/web_data/test
