2015年12月29日 星期二

linux LVM 指令

PV(Physical Volume)實體卷冊
一般指實體硬碟disk partition

VG(Volume Group)卷策群組
由數個PV組成

LV(Logical Volume)
由VG中劃分出來,可格式化並掛載(實際存放資料)

PE(Physical Extents)實體單位
建立VG時決定大小,預設為4M

開始建立LVM
先用fdisk指令建立LVM的分割區,如下如所示
LVM:01.JPG


PV規畫指令
pvcreate:將實體分割區建立成pv
pvscan:搜尋系統具有pv的磁碟
pvdisplay:顯示系統上的pv狀態
pvremove:移除分割區上的pv屬性
先查看目前系統是否有pv磁碟,指令pvscan
LVM:03.JPG
建立分割區sda5和sdb5為pv,指令pvcreate /dev/sda5 /dev/sdb5
LVM:03.JPG

再查看系統pv磁碟,出現剛剛所建立的sda5與sdb5

LVM:04.JPG

查看目前系統的pv狀態,指令pvdisplay

LVM:05.JPG

移除pv,指令pvremove /dev/sda5
LVM:06.JPG
VG規劃
指令
vgcreate:建立系統上的vg
vgscan:搜尋系統上是否有vg存在
vgdisplay:顯示系統上的vg狀態
vgextend:在vg內增加額外pv
vgreduce:在vg內移除pv
vgchange:設定vg是否啟動
vgremove:刪除vg
先建立系統的vg,指令:vgcreate -s 8m testvg /dev/sda5 /dev/sdb5

LVM:07.JPG

指令說明:-s後面指定pe的大小,若未指定大小預設為4MB,"testvg"是指vg的名稱可自行定義
sda5,sdb5為要加入vg的裝置
注意pe有最多數量限制,最高為65534個,如果預設pe大小為4MB,則最高上限為256GB
查看系統上vg,指令:vgscan

LVM:08.JPG


查看系統pv磁碟狀態

LVM:09.JPG


查看vg狀態,指令:vgdisplay

LVM:10.JPG
將pv加入vg,指令:vgextend testvg /dev/sdc1

LVM:11.JPG

查看vg狀態
LVM:12.JPG

注意:若重開機後發現vg沒啟動可用指令:vgchang -a y啟動
LV規劃
指令
lvcreate:建立lv
lvscan:查詢系統上的lv
lvdisplay:顯示系統上的lv狀態
lvextend:增加lv容量
lvreduce:減少lv容量
lvremove:刪除一個lv
lvresize:調整lv容量大小
建立lv,指令:lvcreate -L 5g -n testlv testvg

LVM:13.JPG
指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
-n:後面接lv的名稱,可自行定義
最後面須指定要從哪個vg建立lv
建立出來的lv儲存在/dev/testvg/testlv

查看目前系統lv狀態,指令:lvdisplay
格式化與掛載
將lv格式化成ext3格式,指令:mkfs -t ext3 /dev/testvg/testlv
建立目錄並掛載,指令:mkdir /mnt/testlvm && mount /dev/testvg/testlv /mnt/testlvm
查看磁碟容量,指令:df -h
增加LV容量
指令:lvresize -L +7g /dev/testvg/testlv

指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
最後面要指定lv的完整名稱路徑
注意-L後面要有"+"才是增加容量,如果沒有使用"+"則為修改lv容量
查看系統lv狀態
此時已掛載的lv使用df查看容量依然只顯示5G,使用resize2fs指令修改即可
指令:resize2fs /dev/testvg/testlv

指令說明:最後面要指定lv的完整名稱路徑
使用df -h指令查看磁碟容量


減少LV容量
注意變大是先lvextend(或lvresize)後再resize2fs,變小則先resize2fs在lvreduce
容量變小必須在卸載情況下再能處理
先卸載lv掛載磁區,指令:umount /mnt/testlvm
執行磁碟掃描,指令:e2fsck -f /dev/testvg/testlv
使用resize2fs指令將磁碟容量減少:指令:resize2fs /dev/testvg/testlv 10000M

指令說明:最後面指令容量,原本12G減少成10G
重新掛載目錄後查看磁碟,容量已從原本12G變成10G
此時使用lvdisplay指令查看lv的容量依然在12G,使用lvreduce指令減少lv的容量
指令:lvreduce -L 10g /dev/testvg/testlv

指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
最後面要指定lv的完整名稱路徑
使用lvdisplay指令查看lv的容量已經變成10G
從VG中移除PV從下圖中看到要移除vg中的sda5,可是系統有使用到sda5的pe,sdb5未使用到任何pe
必須先將sda5的pe移動到sdb5
使用pvmove指令,將sda5的pe移動到sdb5,指令:pvmove /dev/sda5 /dev/sdb5
從vg中移除pv,指令:vgreduce testvg /dev/sda5

指令說明:"testvg"為vg的名稱,最後面接裝置名稱
使用pvscan及vgdisplay查看狀態
最後移除sda5的pv,指令:pvremove /dev/sda5
建立快照
先用vgdisplay指令查看是否有足夠的pe和容量,因為快照占用vg的容量


使用lvcreate建立lvm的快照,指令:lvcreate -L 1g -s -n testsnap /dev/testvg/testlv

指令說明:
-L:後面接容量,單位M,G,T,最小單位為PE,所以容量不是PE的倍數時,系統會計算最相近的容量
-l:後面加上PE的個數,如PE容量為8MB則"-l 256"的容量為8MB*256=2048MB(2G)
-s:建立快照
-n:建立名稱,可自行定義
最後面要指定lv的完整名稱路徑
如果在建立快照時無法建立出現以下訊息

表示snapshot模組沒有載入所造成,執行指令:modprobe dm-snapshot即可
查看快照狀態,指令:lvdisplay
移除快照,指令:lvremove /dev/testvg/testsnap

LVM相關指令整理,圖片來源:鳥哥網站
系統重新安裝後要再加入原有LVM步驟如下打 fdisk -l 與 pvscan 應該要可以看到 pv 項目存在
vgscan 應該可以 scan 出 voulme group,若沒看到先 vgchange -ay 跑看看 active vg 項目
如果狀態變成exported請先打vgimport -a
若 vgchange -ay 成功後所有 lv 應該都會出現,那就可以進行一般的存取

出處: http://blog.xuite.net/m740138.m740138/blog/31793294-LVM%E5%AF%A6%E6%88%B0