LVM 邏輯卷管理器(實現(xiàn)一個可以彈性調(diào)整容量的文件系統(tǒng)客情,而不是著眼于效能與安全桨仿。)
PV(Physical Volume): 物理卷
我們實際的分區(qū)(partitiono)或磁盤(disk)需要調(diào)整系統(tǒng)標(biāo)識符(systemID)為8e(LVM的標(biāo)識符),然后再經(jīng)過pvcreate的指令將它轉(zhuǎn)成LVM最底層的物理卷(PV)
相關(guān)名詞 | |
---|---|
VG(Volume Group) | 卷組--就是LVM組合起來的大磁盤摆霉,最多包含65534個PE |
LV(Logic Volume) | 邏輯卷椰棘,其名稱通常為/dev/vgname/lvname,數(shù)據(jù)寫入LV有兩種模式:線性(一個partition寫完再寫另一個)飘弧,交錯(就像raid0) |
PE(Physical Extent) | 物理范圍塊(預(yù)設(shè)為4MB,是LV的最小儲存區(qū)塊) |
LV(邏輯卷) | 在32位系統(tǒng)上最多僅能含有65534個PE(物理范圍塊),因此預(yù)設(shè)的LVM的LV會有256G |
各命令使用與創(chuàng)建流程
流程如下:
1.分區(qū)或磁盤 -->(fdisk修改前者的SystemID為8e) -->(pvcreate命令)-->2.PV物理卷
各階段的相關(guān)命令:
PV階段:pv名稱就是分區(qū)名或磁盤名如 /dev/sdb2
fdisk /path/to/partition:修改分區(qū)或磁盤的SystemID為8e
pvscan: 搜尋目前系統(tǒng)里面任何具有PV的磁盤
pvcreate /path/to/partition: 將實體分區(qū)或磁盤創(chuàng)建成為PV
pvdisplay [/path/to/partition]: 顯示目前系統(tǒng)上面的PV狀態(tài)
pvmove: 將指定pv里的已經(jīng)被分配的PE移到其它的pv里
例如:pvmove /dev/sdc1 /dev/scb1
pvremove : 將PV屬性(擦除元數(shù)據(jù))移除,讓該partition不具有PV屬性.
VG階段:
vgcreate: 就是主要建立VG的指令
用法格式: vgcreate [-s Num[bBsSkKmMgGtTpPeE]] VG名 PV名
-s, --physicalextentsize : 后面接PE的大小(size),單位可以是m,g,t(大小寫均可)不寫的話默認(rèn)為4M
例: vgcreate -s 16M uangianlap_VG /dev/sdb{1,2,3}
vgscan: 搜尋系統(tǒng)上面是否有VG存在?
vgdisplay VG名: 顯示目前系統(tǒng)上面的VG狀態(tài)
vgextend VG名 增加的PV名: 在VG內(nèi)增加額外的PV
例如:vgextend vbirdvg /dev/sdc1 這里VG在創(chuàng)建的時候指定PE的大小了,所以這里不用再指定砚著。
vgreduce VG名 pv名: 在VG內(nèi)移除PV
vgchange: 設(shè)定VG是否啟動(active)
vgremove VG名: 刪除一個VG
vgrename
LV階段:
lvcreate: 建立LV
用法格式:lvcreate [-L NUM[mgt]] [-n LV名] VG名
-L|--size: 邏輯卷的大小(必須為PE(創(chuàng)建VG時指定)的倍數(shù)) LogicalVolumeSize[b|B|s|S|k|K|m|M|g|G|t|T|p|P|e|E]
-l: 后面可以接PE的個數(shù),
-n,--name: 接邏輯卷名
-T|--thin: 創(chuàng)建一個Thin Pool
lvscan: 查詢系統(tǒng)上面的LV
lvdisplay: 顯示系統(tǒng)上面的LV狀態(tài)
lvextend : 擴(kuò)展LV里面容量(擴(kuò)展的其實是物理邊界大小,需要運(yùn)行resize2fs命令,如resize2fs -p /dev/myvg/testlv 進(jìn)行邏輯大小的調(diào)整)
用法格式: lvextend -L [+]size LogicalVolumePath [PhysicalVolumePath](沒有+號則指定最終大小為size)
-L, --size=[bBsSkKmMgGtTpPeE]:
resize2fs(針對ext系文件系統(tǒng)): 例如,resize2fs /PATH/TO/PV 3G 其調(diào)整的是邏輯邊界大小
lvreduce LV名: 在LV里面減少容量
用法格式: lvreduce [-]LogicalVolumeSize[bBsSkKmMg-GtTpPeE]}
lvremove LV名... : 刪除一個LV
lvresize: 對LV進(jìn)行容量大小的調(diào)整.
擴(kuò)展LV:不需要卸載文件系統(tǒng)
1.lvextend -L 5G /dev/myvg/testlv (需要確定VG里有相應(yīng)的未分配容量可用)
2.resize2fs -p /dev/myvg/testlv
縮減LV:
1.取消LV掛載 umount /mnt/lv0
2.e2fsck -f /dev/vg0/lv0 (在 縮減之前應(yīng)該先強(qiáng)行檢查文件,以確保文件系統(tǒng)處于移植性狀態(tài))
3.resize2fs /dev/vg0/lv0 10G(并確贝瘟妫縮減到的大小能可存儲原有的數(shù)據(jù).)
4.lvreduce -L 10G /dev/vg0/lv0
5.mount -a
快照卷
1.其生命周期為整個數(shù)據(jù)時長:在這段時長內(nèi),數(shù)據(jù)的增長量不能走出快照卷大小
2.快照卷應(yīng)該是只讀的
- 跟原卷在同一卷組內(nèi)
創(chuàng)建格式: lvcreate -L # -n SLV_NAME -s -p r /PATH/TO/LV
移除快照卷: lvremove /dev/myvg/testlv-snap
lvresize
例如:lvresize -L +500M /dev/vbirdvg/vbirdlv (前提是LV所在的VG里至少有500M的空閑容量(vgdisplay VG名 查看))
xfs_info /srv/lvm:
xfs_growfs /srv/lvm: 將lvm變更后的容量同步更新到掛載點(這里因為vbirdlv寫入的文件系統(tǒng)是xfs所以才用此命令)
resize2fs:
用法:resize2fs [-f] [device] [size]
例如:resize2fs /dev/vbirdvg/vbirdlv
邏輯卷實例操作:
1.劃分4個分區(qū),如/dev/sdb{1..4},每個分區(qū)為1G稽穆,設(shè)置system ID為8e
2.pvcreate /dev/sdb{1..4} 分別創(chuàng)建4個PV冠王,其名稱與partition一樣。
3.pvscan 或 pvdisplay檢查一下是否執(zhí)行成功
4.vgcreate -s 16M vbirdvg /dev/sdb{1..4} 創(chuàng)建VG 舌镶,另外意到這里vg名可以任意指定
-s 自定義每個PE的大小為16M
5.vgscan 或 vgdisplay 檢查
6.lvcreate -l 200 -n vbirdlv vbirdvg 創(chuàng)建LV, -l參數(shù)指定PE個數(shù)柱彻, 最后一個參數(shù)是VG名
7. ls -l /dev/vbirdvg/vbirdlv; lvdisplay 檢查LV是否創(chuàng)建成功,注意LV的名稱。
8. mkfs -t ext4 /dev/vbirdvg/vbirdlv 給創(chuàng)建的LV創(chuàng)建文件系統(tǒng)(格式化)
9. mkdir /mnt/lvm 創(chuàng)建掛載目錄
10. mount /dev/vbirdvg/vbirdlv /mnt/lvm 掛載LV設(shè)備文件
11.如何擴(kuò)展LV的容量--> vgextend vbirdvg /dev/sdc1 -->在VG里添加一個PV
12.lvresize -l +100 /dev/vbirdvg/vbirdlv -->注意這里的+號不能少餐胀,不然的話將是設(shè)定lv的PE總數(shù)為100個的意思哟楷。
而且這里對lv大小作調(diào)整的同時并不需要解除其掛載關(guān)系。
13.到了這一步我們的LV里應(yīng)該已經(jīng)有了300個PE即4.68G的大小否灾,但是執(zhí)行df -Th /mnt/lvm時卻只看到還是上一次200個
的200個PE卖擅,但是lvdisplay時卻是增加了的。所以這里還是要使用resize2fs(只對ext系的文件系統(tǒng)有效)處理一下。
14.執(zhí)行命令: resize2fs /dev/vbirdvg/vbirdlv
15.第11步是擴(kuò)展LV容量惩阶,那么要縮小該如何設(shè)置呢挎狸? 先解掛載umont /mnt/lvm
2.e2fsck -f /dev/vg0/lv0
3.resize2fs /dev/vg0/lv0 10G
4.lvreduce -L 10G /dev/vg0/lv0
5.mount -a
例如:lvresize -L +500M /dev/vbirdvg/vbirdlv
(前提是LV所在的VG里至少有500M的空閑容量(vgdisplay VG名 查看))
注:如果pv還有空閑也可以刪除一個pv,具體步驟如下:
1.pvscan 看看沒有被分配給lv的容量有沒有至少任意一個pv那么大
2.如果1成立的話断楷,則可以用pvmove命令將指定一個或多個pv中
3.在VG中刪除pv中分配pe為0的pv
4.執(zhí)行pvremove移除前兩步指定的pv