linux(4):Linux逻辑卷详解总结
??? LVM是邏輯卷管理(Logical Volume Manager)的簡稱,它是建立在物理存儲設備之上的一個抽象層,允許你生成邏輯存儲卷,與直接使用物理存儲在管理上相比,提供了更好靈活性。
? ?? ?LVM將存儲虛擬化,使用邏輯卷,你不會受限于物理磁盤的大小,另外,與硬件相關的存儲設置被其隱藏,你可以不用停止應用或卸載文件系統來調整卷大小或數據遷移.這樣可以減少操作成本.
LVM與直接使用物理存儲相比,有以下優點:
1. 靈活的容量.
當使用邏輯卷時,文件系統可以擴展到多個磁盤上,你可以聚合多個磁盤或磁盤分區成單一的邏輯卷.
2.可伸縮的存儲池.
你可以使用簡單的命令來擴大或縮小邏輯卷大小,不用重新格式化或分區磁盤設備.
3.在線的數據再分配.
你可以在線移動數據,數據可以在磁盤在線的情況下重新分配.比如,你可以在線更換可熱插拔的磁盤.
4. 方便的設備命名
邏輯卷可以按你覺得方便的方式來起任何名稱.
5.磁盤條塊化.
你可以生成一個邏輯盤,它的數據可以被條塊化存儲在2個或更多的磁盤上.這樣可以明顯提升數據吞吐量.
6.鏡像卷
邏輯卷提供方便的方法來鏡像你的數據.
7.卷快照
使用邏輯卷,你可以獲得設備快照用來一致性備份或者測試數據更新效果而不影響真實數據.
二、 LVM基本術語
前面談到,LVM是在物理存儲上添加的一個邏輯層,來為文件系統屏蔽下面的硬件存儲設備,提供了一個抽象的盤卷,在盤卷上建立文件系統。首先我們討論以下幾個LVM術語:
* 物理存儲介質(The Physical Media)
這里指系統的存儲設備,如:/dev/hda1、/dev/sda等等,是存儲系統最低層的存儲單元。
* 物理卷(PV, Physical Volume)
物理卷就是指磁盤,磁盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。當前LVM允許你在每個物理卷上保存這個物理卷的0至2份元數據拷貝.默認為1,保存在設備的開始處.為2時,在設備結束處保存第二份備份.
* 卷組(VG, Volume Group)
LVM卷組類似于非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。
* 邏輯卷(LV, Logical Volume)
LVM的邏輯卷類似于非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
*線性邏輯卷 (Linear Volumes)
一個線性邏輯卷聚合多個物理卷成為一個邏輯卷.比如,如果你有兩個60GB硬盤,你可以生成120GB的邏輯卷.
*條塊化的邏輯卷(Striped Logical Volumes)
當你寫數據到此邏輯卷中時,文件系統可以將數據放置到多個物理卷中.對于大量連接讀寫操作,它能改善數據I/O效率.
*鏡像的邏輯卷(Mirrored Logical Volumes)
鏡像在不同的設備上保存一致的數據.數據同時被寫入原設備及鏡像設備.它提供設備之間的容錯。
*快照卷(Snapshot Volumes)
快照卷提供在特定瞬間的一個設備虛擬映像,當快照開始時,它復制一份對當前數據區域的改變,由于它優先執行這些改變,所以它可以重構當前設備的狀態。
* PE(physical extent)
每一個物理卷被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認為4MB。
* LE(logical extent)
邏輯卷也被劃分為被稱為LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,并且一一對應。
和非LVM系統將包含分區信息的元數據保存在位于分區的起始位置的分區表中一樣,邏輯卷以及卷組相關的元數據也是保存在位于物理卷起始處的VGDA(卷組描述符區域)中。VGDA包括以下內容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。系統啟動LVM時激活VG,并將VGDA加載至內存,來識別LV的實際物理存儲位置。當系統進行I/O操作時,就會根據VGDA建立的映射機制來訪問實際的物理位置。
三、 安裝LVM
首先確定系統中是否安裝了lvm工具:
[root@test2 root]# rpm –qa|grep lvm
lvm-x-x-x
如果命令結果輸入類似于上例,那么說明系統已經安裝了LVM管理工具;如果命令沒有輸出則說明沒有安裝LVM管理工具,則需要從網絡下載或者從光盤裝LVM rpm工具包。
安裝了LVM的RPM軟件包以后,要使用LVM還需要配置內核支持LVM。RedHat默認內核是支持LVM的,如果需要重新編譯內核,則需要在配置內核時,進入Multi-device Support (RAID and LVM)子菜單,選中以選項:
·? Multiple devices driver support (RAID and LVM)
? ?Device mapper support?
? ???Snapshot target (EXPERIMENTAL)?
? ???Mirror target (EXPERIMENTAL)? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???
然后重新編譯內核,即可將LVM的支持添加到新內核中。
為了使用LVM,要確保在系統啟動時激活LVM,在RedHa的版本中,系統啟動腳本已經具有對激活LVM的支持,在/etc/rc.d/rc.sysinit中有以下內容:
if [ -x /sbin/lvm.static ]; then
? ?? ?? ? action $'Setting up Logical Volume Management:' /sbin/lvm.static vgchange -a y --ignorelockingfailure
fi
vgchange -a y命令激活系統所有卷組。
四、 創建和管理LVM
要創建一個LVM系統,一般需要經過以下步驟:
1、 創建分區
使用分區工具(如:fdisk等)創建LVM分區,方法和創建其他一般分區的方式是一樣的,區別僅僅是LVM的分區類型為8e。
# fdisk -l /dev/sdb /dev/sdc
Disk /dev/sdb: 18.2 GB, 18200739840 bytes
255 heads, 63 sectors/track, 2212 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 18.2 GB, 18200739840 bytes
255 heads, 63 sectors/track, 2212 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot? ?? ?Start? ?? ?? ?End? ?? ?Blocks? ?Id??System
/dev/sdc1? ?? ?? ?? ?? ?1? ?? ?? ?200? ???1606468+??8e??Linux LVM
如果要將使用整塊盤,可以通過下面的命令來覆蓋磁盤上的原有分區信息:
#dd if=/dev/zero of=/dev/sdc bs=512 count=1
partprobe命令
你可以使用fdisk或者其他命令創建一個新的分區,然后使用partprobe命令重新讀取分區表。
這個命令執行完畢之后不會輸出任何返回信息,你可以使用mke2fs命令在新的分區上創建文件系統。
2、 創建物理卷
創建物理卷的命令為pvcreate,利用該命令將希望添加到卷組的所有分區或者磁盤創建為物理卷。將整個磁盤創建為物理卷的命令為:
# pvcreate /dev/sdb
Physical volume '/dev/sdb' successfully created
將單個分區創建為物理卷的命令為:
# pvcreate /dev/sdc1
Physical volume '/dev/sdc1' successfully created
也可以同時生成多個卷:
#pvcreate /dev/sdb /dev/sdc1
3、掃描塊設備
通過lvmdiskscan可以看到那些設備成為了物理卷.
#lvmdiskscan
??/dev/ramdisk? ?? ?? ?? ? [? ?? ? 16.00 MB]?
??/dev/sda? ?? ?? ?? ?? ???[? ?? ???4.00 GB]?
??/dev/root? ?? ?? ?? ?? ? [? ?? ???2.88 GB]?
??/dev/ram? ?? ?? ?? ?? ???[? ?? ? 16.00 MB]?
??/dev/sda1? ?? ?? ?? ?? ? [? ?? ?101.94 MB]?
??/dev/VolGroup00/LogVol01 [? ?? ???1.00 GB]?
??/dev/ram2? ?? ?? ?? ?? ? [? ?? ? 16.00 MB]?
??/dev/sda2? ?? ?? ?? ?? ? [? ?? ???3.90 GB] LVM physical volume
??/dev/lvm_test/test? ?? ? [? ?? ?508.00 MB]?
??/dev/ram3? ?? ?? ?? ?? ? [? ?? ? 16.00 MB]?
??/dev/ram4? ?? ?? ?? ?? ? [? ?? ? 16.00 MB]?
??/dev/ram5? ?? ?? ?? ?? ? [? ?? ? 16.00 MB]?
??/dev/ram6? ?? ?? ?? ?? ? [? ?? ? 16.00 MB]?
??/dev/ram7? ?? ?? ?? ?? ? [? ?? ? 16.00 MB]?
??/dev/ram8? ?? ?? ?? ?? ? [? ?? ? 16.00 MB]?
??/dev/ram9? ?? ?? ?? ?? ? [? ?? ? 16.00 MB]?
??/dev/ram10? ?? ?? ?? ?? ?[? ?? ? 16.00 MB]?
??/dev/ram11? ?? ?? ?? ?? ?[? ?? ? 16.00 MB]?
??/dev/ram12? ?? ?? ?? ?? ?[? ?? ? 16.00 MB]?
??/dev/ram13? ?? ?? ?? ?? ?[? ?? ? 16.00 MB]?
??/dev/ram14? ?? ?? ?? ?? ?[? ?? ? 16.00 MB]?
??/dev/ram15? ?? ?? ?? ?? ?[? ?? ? 16.00 MB]?
??/dev/sdb? ?? ?? ?? ?? ???[? ?? ?512.00 MB] LVM physical volume
??/dev/sdc? ?? ?? ?? ?? ???[? ?? ?512.00 MB] LVM physical volume
??5 disks
??16 partitions
??2 LVM physical volume whole disks
??1 LVM physical volume
4、顯示物理卷
可以使用pvs,pvscan,pvdisplay來顯示當前系統中的物理卷.
#pvs
??PV? ?? ?? ?VG? ?? ?? ?Fmt??Attr PSize? ?PFree??
??/dev/sda2??VolGroup00 lvm2 a-? ???3.88G? ?? ?0?
??/dev/sdb? ?lvm_test? ?lvm2 a-? ?508.00M? ?? ?0?
??/dev/sdc? ?? ?? ?? ???lvm2 --? ?512.00M 512.00M
#pvscan?
??PV /dev/sdb? ? VG lvm_test? ???lvm2 [508.00 MB / 0? ? free]
??PV /dev/sda2? ?VG VolGroup00? ?lvm2 [3.88 GB / 0? ? free]
??PV /dev/sdc? ?? ?? ?? ?? ?? ???lvm2 [512.00 MB]
??Total: 3 [4.87 GB] / in use: 2 [4.37 GB] / in no VG: 1 [512.00 MB]
#pvdisplay
??--- Physical volume ---
??PV Name? ?? ?? ?? ?? ?/dev/sdb
??VG Name? ?? ?? ?? ?? ?lvm_test
??PV Size? ?? ?? ?? ?? ?512.00 MB / not usable 4.00 MB
??Allocatable? ?? ?? ???yes (but full)
??PE Size (KByte)? ?? ? 4096
??Total PE? ?? ?? ?? ???127
??Free PE? ?? ?? ?? ?? ?0
??Allocated PE? ?? ?? ? 127
??PV UUID? ?? ?? ?? ?? ?Pkp5Cq-SD1w-ANw2-cDDe-BGtw-nmFS-jTxXFD
? ?
??--- NEW Physical volume ---
??PV Name? ?? ?? ?? ?? ?/dev/sdc
??VG Name? ?? ?? ?? ?? ?
??PV Size? ?? ?? ?? ?? ?512.00 MB
??Allocatable? ?? ?? ???NO
??PE Size (KByte)? ?? ? 0
??Total PE? ?? ?? ?? ???0
??Free PE? ?? ?? ?? ?? ?0
??Allocated PE? ?? ?? ? 0
??PV UUID? ?? ?? ?? ?? ?BNCVEE-YWlK-0mrV-LOcf-0tCY-WWNw-DeySk0
5、移除物理卷
#pvremove /dev/sdc
Labels on physical volume '/dev/sdc' successfully wiped
6、 創建卷組
創建卷組的命令為vgcreate,將使用pvcreate建立的物理卷創建為一個完整的卷組:
# vgcreate lvm_test /dev/sdc1 /dev/sdb
Volume group 'lvm_test' successfully created
vgcreate命令第一個參數是指定該卷組的邏輯名:lvm_test。后面參數是指定希望添加到該卷組的所有分區和磁盤。vgcreate在創建卷組 lvm_test 以外,還設置使用大小為4 MB的PE(默認為4MB),這表示卷組上創建的所有邏輯卷都以 4 MB 為增量單位來進行擴充或縮減。PE最小為1KB??,并且必須總是1KB的 2^n 的倍數(使用-s指定,具體請參考man vgcreate)。
7、 激活卷組
卷組在創建時默認激活,也可以使用vgchange來激活卷組:
# vgchange -a y lvm_test
8、 添加新的物理卷到卷組中
當系統安裝了新的磁盤或新建分區并創建了新的物理卷,而要將其添加到已有卷組時,就需要使用vgextend命令:
#fdisk -l /dev/sdc
Disk /dev/sdc: 18.2 GB, 18200739840 bytes
255 heads, 63 sectors/track, 2212 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot? ?? ?Start? ?? ?? ?End? ?? ?Blocks? ?Id??System
/dev/sdc1? ?? ?? ?? ?? ?1? ?? ?? ?200? ???1606468+??8e??Linux LVM
/dev/sdc2? ?? ?? ?? ? 201? ?? ?? ?400? ???1606500? ?8e??Linux LVM
? ?? ?? ?
#pvcreate /dev/sdc2
Physical volume '/dev/sdc2' successfully created
? ?? ???
# vgextend lvm_test /dev/sdc2
Volume group 'lvm_test' successfully extended
這里/dev/sdc2是新的物理卷。
9、顯示卷組
顯示卷組可以使用vgs和vgdisplay.
# vgs
??VG? ?? ?? ?#PV #LV #SN Attr? ?VSize? ?VFree
??VolGroup00? ?1? ?2? ?0 wz--n-? ?3.88G? ? 0?
??lvm_test? ???1? ?1? ?0 wz--n- 508.00M? ? 0?
# vgdisplay?
??--- Volume group ---
??VG Name? ?? ?? ?? ?? ?lvm_test
??System ID? ?? ?? ?? ??
??Format? ?? ?? ?? ?? ? lvm2
??Metadata Areas? ?? ???1
??Metadata Sequence No??10
??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 MB
??PE Size? ?? ?? ?? ?? ?4.00 MB
??Total PE? ?? ?? ?? ???127
??Alloc PE / Size? ?? ? 127 / 508.00 MB
??Free??PE / Size? ?? ? 0 / 0? ?
??VG UUID? ?? ?? ?? ?? ?uJx24t-WWdY-vffu-97Of-mgFB-FEov-eRwzAf
10、掃描磁盤生成緩存文件
#vgscan
??Reading all physical volumes.??This may take a while...
??Found volume group 'lvm_test' using metadata type lvm2
??Found volume group 'VolGroup00' using metadata type lvm2
? ?
11、 從卷組中刪除一個物理卷
要從一個卷組中刪除一個物理卷,首先要確認要刪除的物理卷沒有被任何邏輯卷正在使用,就要使用pvdisplay命令察看一個該物理卷信息:
#pvdisplay /dev/sdc2
--- Physical volume ---
PV Name? ?? ?? ?? ?? ?/dev/sdc2
VG Name? ?? ?? ?? ?? ?lvm_test
PV Size? ?? ?? ?? ?? ?1.53 GB / not usable 868.00 KB
Allocatable? ?? ?? ???yes?
PE Size (KByte)? ?? ? 4096
Total PE? ?? ?? ?? ???392
Free PE? ?? ?? ?? ?? ?392
Allocated PE? ?? ?? ? 0 (表示未被使用)
PV UUID? ?? ?? ?? ?? ?jAiils-1vRz-Td9k-1AiD-kIJs-191z-YMz09H
如果某個物理卷正在被邏輯卷所使用,就需要將該物理卷的數據備份到其他地方,然后再刪除。刪除物理卷的命令為vgreduce:
# vgreduce lvm_test /dev/sdc2
Removed '/dev/sdc2' from volume group 'lvm_test'
12、 創建邏輯卷
創建邏輯卷的命令為[size=+0]lvcreate:
#[size=+0]lvcreate -L 1500 –n test lvm_test
Logical volume 'test' created
該命令就在卷組lvm_test上創建名字為test,大小為1500M的邏輯卷,并且設備入口為/dev/lvm_test/test (lvm_test為卷組名,test為邏輯卷名)。如果希望創建一個使用全部卷組的邏輯卷,則需要首先察看該卷組的PE數,然后在創建邏輯卷時指定:
# vgdisplay lvm_test| grep 'Total PE'
Total PE 4731
# [size=+0]lvcreate -l 4731 lvm_test -n test
Logical volume 'test' created
13、創建條塊化的邏輯卷
# [size=+0]lvcreate -L 500M -i2??-n test lvm_test
??Using default stripesize 64.00 KB
??Rounding size (125 extents) up to stripe boundary size (126 extents)
??Logical volume 'test' created
-i2指此邏輯卷在兩個物理卷中條塊化存放數據,默認一塊大小為64KB.
14、創建鏡像的邏輯卷。
#[size=+0]lvcreate -L 52M??-m1??-n test lvm_test /dev/sdb1 /dev/sdc1 /dev/sdb2?
??Logical volume 'test' created
-m1表示只生成一個單一鏡像,鏡像分別放在/dev/sdb1和/dev/sdc1上,鏡像日志放在/dev/sdb2上.
15、創建快照卷。
#[size=+0]lvcreate --size 10 --snapshot --name snaptest /dev/lvm_test/test?
16、 創建文件系統
如使用ext3文件系統:
#mkfs.ext3 /dev/lvm_test/test
mke2fs 1.35 (28-Feb-2004)
max_blocks 4294967295, rsv_groups = 0, rsv_gdb = 1024
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2424832 inodes, 4844544 blocks
242227 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=8388608
148 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:?
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,?
4096000
Writing inode tables: done? ?? ?? ?? ?? ?? ?? ?? ?? ??
inode.i_blocks = 90120, i_size = 4243456
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.??Use tune2fs -c or -i to override.
創建了文件系統以后,就可以加載并使用它:
# mkdir /mnt/test
# mount /dev/lvm_test/test /mnt/test
如果希望系統啟動時自動加載文件系統,則還需要在/etc/fstab中添加內容:
/dev/lvm_test/test /mnt/test ext3 defaults 1 2
17、 刪除一個邏輯卷
刪除邏輯卷以前首先需要將其卸載,然后刪除:
# umount /dev/lvm_test/test
# lvremove /dev/lvm_test/test
Do you really want to remove active logical volume 'test'? [y/n]: y
Logical volume 'test' successfully removed
18、 擴展邏輯卷大小
LVM提供了方便調整邏輯卷大小的能力,擴展邏輯卷大小的命令是lvextend:
# lvextend -L12G /dev/lvm_test/test
Extending logical volume test to 12.00 GB
Logical volume test successfully resized
上面的命令就實現將邏輯卷test的大小擴大為12G。
# lvextend -L+1G /dev/lvm_test/test
Extending logical volume test to 13.00 GB
Logical volume test successfully resized
上面的命令就實現將邏輯卷test的大小增加1G。
增加了邏輯卷的容量以后,就需要修改文件系統大小以實現利用擴充的空間。
對于希望調整被加載的文件系統大小,使用ext2online(ext2resize) 或 resize2fs.
#df -h
# ext2online /dev/lvm_test/test
ext2online /dev/lvm_test/test
ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b
#df -h
Filesystem? ?? ?? ?? ?容量??已用 可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol01
? ?? ?? ?16G? ?11G??3.6G??76% /
/dev/sda1? ?? ?? ?? ? 494M? ?18M??451M? ?4% /boot
none? ?? ?? ?? ?? ?? ?? ? 506M? ???0??506M? ?0% /dev/shm
/dev/mapper/lvm_test-test
? ?? ?? ?13G? ?63M? ?13G? ?1% /mnt/test
一般建議最好將文件系統卸載,調整大小,然后再加載:
# umount /dev/lvm_test/test
#resize2fs /dev/lvm_test/test
# mount??/dev/lvm_test/test /mnt/test
19、 減少邏輯卷大小
使用lvreduce即可實現對邏輯卷的容量,同樣需要首先將文件系統卸載:
# umount /mnt/test
#e2fsck -f /dev/lvm_test/test
# resize2fs /dev/lvm_test/test??11G
# lvreduce -L -1.992G /dev/lvm_test/test (少2個PE的大小)
# resize2fs /dev/lvm_test/test??(通過此命令確認是否文件系統大小與收縮后的邏輯卷大小匹配)
# mount /dev/lvm_test/test /mnt/test
20、顯示邏輯卷
通過lvscan,lvs及lvdisplay可以察看當前系統中存在的邏輯卷。
# lvdisplay?
??--- Logical volume ---
??LV Name? ?? ?? ?? ?? ? /dev/VolGroup00/LogVol00
??VG Name? ?? ?? ?? ?? ? VolGroup00
??LV UUID? ?? ?? ?? ?? ? sPmLMD-6xq4-wStB-uSAP-jlQc-YKTm-3bt8Pc
??LV Write Access? ?? ???read/write
??LV Status? ?? ?? ?? ???available
??# open? ?? ?? ?? ?? ???1
??LV Size? ?? ?? ?? ?? ? 2.88 GB
??Current LE? ?? ?? ?? ? 92
??Segments? ?? ?? ?? ?? ?1
??Allocation? ?? ?? ?? ? inherit
??Read ahead sectors? ???0
??Block device? ?? ?? ???253:0
??
#lvscan?
lvscan
??ACTIVE? ?? ?? ?? ?'/dev/VolGroup00/LogVol00' [2.88 GB] inherit
??ACTIVE? ?? ?? ?? ?'/dev/VolGroup00/LogVol01' [1.00 GB] inherit
#lvs -o +devices
??LV? ?? ? VG? ?? ?? ?Attr? ?LSize Origin Snap%??Move Log Copy%??Devices? ?? ?
??LogVol00 VolGroup00 -wi-ao 2.88G? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /dev/sda2(0)?
??LogVol01 VolGroup00 -wi-ao 1.00G? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /dev/sda2(92)??
21、使用過濾控制LVM的設備掃描
通過編輯/etc/lvm/lvm.conf 中的filter段,來定義過濾那些設備要掃描。
filter =[ 'a|/dev/sd.*|', 'a|/dev/hd.*|', 'r|.*|' ]?
上面對scsi及ide設備掃描,對其它設備均不掃描。
22、在線數據遷移
通過pvmove可以將一個PV上的數據遷移到新的PV上,也可以將PV上的某個LV遷移到另一個PV上。
#lvs -o +devices
??LV? ?? ? VG? ?? ?? ?Attr? ?LSize??Origin Snap%??Move Log Copy%??Devices? ?? ?
??LogVol00 VolGroup00 -wi-ao??2.88G? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /dev/sda2(0)?
??LogVol01 VolGroup00 -wi-ao??1.00G? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /dev/sda2(92)
??test? ???lvm_test? ?-wi-ao 52.00M? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /dev/sdb1(0)?
#pvmove -n test /dev/sdb1 /dev/sdc1
#lvs -o +devices
??LV? ?? ? VG? ?? ?? ?Attr? ?LSize??Origin Snap%??Move Log Copy%??Devices? ?? ?
??LogVol00 VolGroup00 -wi-ao??2.88G? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /dev/sda2(0)?
??LogVol01 VolGroup00 -wi-ao??1.00G? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /dev/sda2(92)
??test? ???lvm_test? ?-wi-ao 52.00M? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? /dev/sdc1(0)?
23、刪除卷組
按照順序卸載文件系統,刪除邏輯卷,然后刪除卷組。
#umount /mnt/test
# lvremove /dev/lvm_test/test
Do you really want to remove active logical volume 'test'? [y/n]: y
??Logical volume 'test' successfully removed
#vgremove lvm_test
??Volume group 'lvm_test' successfully removed
24、故障排查
通過在命令后加 -v,-vv,-vvv或-vvvv來獲得更詳細的命令輸出。
通過在lvs,vgs后加-P可以更好的查看失敗設備.
#vgs -a -o +devices -P
??Partial mode. Incomplete volume groups will be activated read-only.
??VG? ?? ?? ?#PV #LV #SN Attr? ?VSize? ? VFree? ?Devices? ?? ?? ?? ?? ??
??VolGroup00? ?1? ?2? ?0 wz--n-? ? 3.88G? ?? ?0??/dev/sda2(0)? ?? ?? ???
??VolGroup00? ?1? ?2? ?0 wz--n-? ? 3.88G? ?? ?0??/dev/sda2(92)? ?? ?? ??
??lvm_test? ???2? ?2? ?0 wz--n- 1016.00M 896.00M pvmove0(0)? ?? ?? ?? ??
??lvm_test? ???2? ?2? ?0 wz--n- 1016.00M 896.00M /dev/sdb(0),/dev/sdc(0)
#lvs -a -o +devices -P
??Partial mode. Incomplete volume groups will be activated read-only.
??Failure parsing mirror status fraction: 1 core
??Failure parsing mirror status fraction: 1 core
??LV? ?? ???VG? ?? ?? ?Attr? ?LSize??Origin Snap%??Move? ???Log Copy%??Devices? ?? ?? ?? ?? ??
??LogVol00??VolGroup00 -wi-ao??2.88G? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???/dev/sda2(0)? ?? ?? ???
??LogVol01??VolGroup00 -wi-ao??1.00G? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???/dev/sda2(92)? ?? ?? ??
??[pvmove0] lvm_test? ?p-C-ao 60.00M? ?? ?? ?? ?? ?/dev/sdb? ?? ?? ?? ?/dev/sdb(0),/dev/sdc(0)
??test? ?? ?lvm_test? ?-wI-a- 60.00M? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???pvmove0(0)? ?? ?? ?? ??
五、 總結
根據上面的討論可以看到,LVM具有很好的可伸縮性,使用起來非常方便。可以方便地對卷組、邏輯卷的大小進行調整,更進一步調整文件系統的大小,還能方便的進行數據遷移,數據完整性保護。如果希望了解更多信息,請參考LVM-HOWTO。
ps:
關于卷遷移的整理
最近在學習HP UNIX,發現HP UNIX中卷的遷移過程和其它的如LINUX,AIX有些不同,所以抽空將三種操作系統的操作步驟做了個整理:
###
linux
###
在redhat Linux中LVM信息是同時保存在磁盤上和/etc/lvm.conf里,可以通過vgexport命令來實現vg的遷移。
vgexport只是把/etc/lvm.conf中關于這個VG的信息刪除,而不會更改磁盤上的任何數據。磁盤掛到新的機器
上后,只需要修改/etc/lvmconf,這個可以通過vgimport完成。
源端:
1,將源端文件系統umount
umount /test
2,將lv和lv inactive
lvchange -an /dev/vg_test/lv_test
vgchange -an vg_test
3,導出vg
vgexport vg_test
目標端:
1,用kudzu檢測新的盤
2,導入vg
vgimport vg_test
3,激活vg
vgchange -ay vg_test
4,mount文件系統
###
HP UNIX
###
在HP UNIX上,vgexport只是在/etc/lvmtab里把相關vg的entry刪除,重新vgimport就會重新生成,map文件除了能記錄
原來lv的名字之外沒有任何用處,如果不用map,vgimport后所有lv會使用默認值如:lvol1,lvol2…但不會影響vg中的數據。
源端:
1,將源端文件系統umount
umount /test
2,將vg inactive
vgchange –a n vg_test
3,在源端產生map文件
vgexport -p -s -m /tmp/vg_exp_bak/vg_test.map /dev/vg_test
4,將map文件拷貝到目標端
可以通過在源端export vg 前后通過 strings /etc/lvmtab觀察發生的變化.
目標端:
1,用ioscan檢測新的盤并識別
ioscan -fnCdisk
insf -e
2,建立vg的相關信息
mkdir /dev/vg_test
mknod /dev/vg_test/group c 64 0×100000
3,import vg
vgimport -s -m /tmp/vg_exp_bak/vg_test.map /dev/vg_test
4,激活vg
vgchange -a y /dev/vg_test
5,掛載文件系統
###
AIX
###
在AIX中,exportvg就是在系統中把這個vg的定義從ODM中刪除,在vg上的lv、fs、pv的定義也都從系統中刪除
了.這些信息都保存這個vg的VGDA中.importvg就是系統從這個vg的VGDA中讀取這個vg的信息,把它們加入到系
統當中,這樣系統就可以正常使用這個vg了.兩個命令都不對VG做操作的而是對ODM庫的操作.
源端:
1,將vg inactive
varyoff testvg
2,導出vg(從ODM中導出vg)
exportvg testvg
目標端:
1,用cfgmgr檢測新的盤并識別
lspv
lsdev –Cc disk
cfgmgr
2,導入vg
importvg testvg
3,掛載文件系統
最后記住,在確認目標端正常后,將源端將磁盤的信息清除掉。
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的linux(4):Linux逻辑卷详解总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OR运算符
- 下一篇: linux常用关机命令及其区别-Shut