本篇主要以實體Partition角度來表達LVM整體結構。為了方便說明,以下會用3個Partition,分別是40G、40G及20G容量已建立一個LV。
假設已經建立一個LVM,也儲存一些資料分別是A、B、C、D、E及F。以實體Partition及LVM兩者不同角度來看看儲存資料狀態。 由示意圖可以看出A,B,C,D,E,F六個不同資料分別儲存在不同的分割區,但由軟體所管理的LV則整合一個磁區儲存著6個不同資料。
為方便建立硬碟,以下範例都是以虛擬機來模擬。分別建立1G(/dev/sdb),500MB(/dev/sdc)硬碟整合1個VG,再VG上建立500MBLV。
分別建立/dev/sdb1及/dev/sdc1, 並改變系統ID為8e
#fdisk /dev/sdb press n press Enter press Enter Press t Press 8e
#fdisk /dev/sdc press n press Enter press Enter Press t Press 8e
#fdisk -cul ~略~ Device Boot Start End Blocks Id System /dev/sdb1 63 2088449 1044193+ 8e Linux LVM ~略~ Device Boot Start End Blocks Id System /dev/sdc1 32 1048575 524272 8e Linux LVM
#pvcreate /dev/sdb1 /dev/sdc1 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully created
顯示PV Summary
#pvscan PV /dev/sdb1 lvm2 [1019.72 MiB] PV /dev/sdc1 lvm2 [511.98 MiB] Total: 2 [1.50 GiB] / in use: 0 [0 ] / in no VG: 2 [1.50 GiB]
#vgcreate VG1.5 /dev/sdb1 /dev/sdc1 Volume group "VG1.5" successfully created
詳細顯示 名為VG1.5資訊
#vgdisplay VG1.5 --- Volume group --- VG Name VG1.5 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 1.49 GiB -->整個VG容量有 1.5GB PE Size 4.00 MiB -->每個PE佔4MB Total PE 381 -->VG共有381個PE Alloc PE / Size 0 / 0 -->目前未使用,表示還未切割LV(Logical Volume) Free PE / Size 381 / 1.49 GiB -->PE是lvm最小的儲存單位;其實他像是一般檔案系統的Block。目前381個PE 共約1.5GB VG UUID 0zW8Gv-frp1-6mKr-o0to-95K3-SVu2-Djf1Pu
目前VG共約1.5GB。這邊先建立LV 容量為500MB
#lvcreate -L 500MB -n lvDisk VG1.5 Logical volume "lvDisk" created
顯示VG詳細的用量
--- Volume group --- VG Name VG1.5 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 1.49 GiB PE Size 4.00 MiB Total PE 381 Alloc PE / Size 125 / 500.00 MiB -->已分配125個PE;共500MB Free PE / Size 256 / 1.00 GiB VG UUID 0zW8Gv-frp1-6mKr-o0to-95K3-SVu2-Djf1Pu
列出系統上所有的LV
#lvscan ACTIVE '/dev/VG1.5/lvDisk' [500.00 MiB] inherit
詳細顯示/dev/VG1.5/lvDisk資訊
#lvdisplay /dev/VG1.5/lvDisk --- Logical volume --- LV Name /dev/VG1.5/lvDisk VG Name VG1.5 LV UUID TGwY7n-YcSA-GSjR-SXwX-eXFt-XoZX-Ng0Bfc LV Write Access read/write LV Status available # open 1 LV Size 500.00 MiB Current LE 125 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
針對LV /dev/VG1.5/lvDisk進行建立檔案系統(Formate)
#mkfs -t ext4 /dev/VG1.5/lvDisk
掛載 /dev/VG1.5/lvDisk 到 /lvDisk(如圖,灰色區域是可以儲存資料部分)
#mkdir /lvDisk #mount /dev/VG1.5/lvDisk /lvDisk
目前lvm上,架構一個硬碟為/dev/sdc1(舊硬碟)。此範例的目標要將/dev/sdc1的資料全部移轉到/dev/sdb1。
顯示目前一些背景資料:
#fdisk -l Disk /dev/sdb: 1073 MB, 1073741824 bytes ~略~ Device Boot Start End Blocks Id System /dev/sdb1 1 130 1044193+ 8e Linux LVM Disk /dev/sdc: 536 MB, 536870912 bytes ~略~ Device Boot Start End Blocks Id System /dev/sdc1 1 512 524272 8e Linux LVM
#pvscan PV /dev/sdc1 VG VG1.5 lvm2 [508.00 MiB / 160.00 MiB free] -->508-160=348MB;已有348MB被LV所使用 Total: 1 [508.00 MiB] / in use: 1 [508.00 MiB] / in no VG: 0 [0 ]
#vgdisplay --- Volume group --- VG Name VG1.5 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 31 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 508.00 MiB PE Size 4.00 MiB Total PE 127 Alloc PE / Size 87 / 348.00 MiB Free PE / Size 40 / 160.00 MiB VG UUID 0zW8Gv-frp1-6mKr-o0to-95K3-SVu2-Djf1Pu
#lvscan ACTIVE '/dev/VG1.5/lvDisk2' [348.00 MiB] inherit
#pvcreate /dev/sdb1 # vgextend VG1.5 /dev/sdb1
#umount /dev/VG1.5/lvDisk2
#pvscan PV /dev/sdc1 VG VG1.5 lvm2 [508.00 MiB / 160.00 MiB free] PV /dev/sdb1 VG VG1.5 lvm2 [1016.00 MiB / 1016.00 MiB free]
#pvmove -v -i 2 /dev/sdc1 /dev/sdb1 每2秒開始秀出一些訊息 ~略~ /dev/sdc1: Moved: 2.3% /dev/sdc1: Moved: 26.4% /dev/sdc1: Moved: 50.6% /dev/sdc1: Moved: 74.7% /dev/sdc1: Moved: 98.9% /dev/sdc1: Moved: 100.0% ~略~ #pvscan PV /dev/sdc1 VG VG1.5 lvm2 [508.00 MiB / 508.00 MiB free] PV /dev/sdb1 VG VG1.5 lvm2 [1016.00 MiB / 668.00 MiB free] -->已換到新硬碟上了 #vgdisplay --- Volume group --- VG Name VG1.5 ~略~ VG Size 1.49 GiB PE Size 4.00 MiB Total PE 381 -->總PE個數產生變化 Alloc PE / Size 87 / 348.00 MiB -->以經分配87個PE Free PE / Size 294 / 1.15 GiB -->還有294個PE未使用 VG UUID 0zW8Gv-frp1-6mKr-o0to-95K3-SVu2-Djf1Pu
#vgreduce VG1.5 /dev/sdc1
#pvremove /dev/sdc1
#pvscan PV /dev/sdb1 VG VG1.5 lvm2 [1016.00 MiB / 668.00 MiB free] -->已移除舊硬碟了 Total: 1 [1016.00 MiB] / in use: 1 [1016.00 MiB] / in no VG: 0 [0 ]
#mkdir lvDisk #mount /dev/VG1.5/lvDisk2 /lvmDisk/
本範例3承接範例2環境情況。目前/dev/VG1.5/lvDisk2的容量為348MB,現在要增加500MB容量,使總容量為848MB。
--- Logical volume --- LV Name /dev/VG1.5/lvDisk2 VG Name VG1.5 LV UUID 7as5jn-HPPS-5teW-2MqQ-NaD8-9R8f-gHt5hA LV Write Access read/write LV Status available # open 1 LV Size 348.00 MiB Current LE 87 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
#lvextend -l +125 /dev/VG1.5/lvDisk2
#resize2fs /dev/VG1.5/lvDisk2
#df -h /dev/mapper/VG1.5-lvDisk2 823M 50M 731M 7% /lvmDisk
現在有一個Logical Volum :lvtest容量為200MB,此範例目標減少到100MB。
--- Logical volume --- LV Name /dev/vgtest/lvtest VG Name vgtest LV UUID fM6ZTM-cQdj-wquV-T585-gHo6-dreJ-fRDqc2 LV Write Access read/write LV Status available # open 1 LV Size 200.00 MiB Current LE 50 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:3
#df -h 檔案系統 Size Used Avail Use% 掛載點 ~略~ /dev/mapper/vgtest-lvtest 194M 37M 147M 21% /media/test
# ls -l /media/test 總計 21 drwxr-xr-x. 112 root root 7168 2012-03-15 21:59 etc drwx------. 2 root root 12288 2012-03-15 21:58 lost+found
#umount /media/test
#fsck -f /dev/mapper/vgtest-lvtest
#resize2fs /dev/mapper/vgtest-lvtest 100M
#lvreduce -L 100MB /dev/mapper/vgtest-lvtest WARNING: Reducing active logical volume to 100.00 MiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lvtest? [y/n]: y Enter Reducing logical volume lvtest to 100.00 MiB Logical volume lvtest successfully resized
#mount /dev/vgtest/lvtest /media/test/ #ll /media/test/ drwxr-xr-x. 112 root root 7168 2012-03-15 21:59 etc drwx------. 2 root root 12288 2012-03-15 21:58 lost+found #df -h 檔案系統 Size Used Avail Use% 掛載點 ~略~ /dev/mapper/vgtest-lvtest 97M 37M 55M 41% /media/test