LVM的建立,修改大小,刪除以及完全卸載的操做步驟

首先解釋一下幾個關鍵詞
pv: physical volume 物理卷,就是用物理磁盤組成的卷,要在物理磁盤上建立。
vg:volume group卷組,就是物理卷組成的卷組合,要在物理卷基礎上建立。
lv:logical volume邏輯卷,能夠理解爲邏輯可動態分配的磁盤空間,要在卷組上建立。app

因此lvm的建立順序就是,物理磁盤分區(也能夠不分區),在物理分區上建立pv,在pv上建立vg,在vg上建立lv,而後格式化lv掛載使用
ok,下面具體來操做一下邏輯卷的建立以及空間擴容和刪除
咱們使用的虛擬機sdb磁盤來分幾個區作一下測試(通常可以使用多個磁盤直接加入到卷組,這裏咱們使用物理磁盤的多個分區,操做方法相同)ide

01 [root@cnhejia ~]# fdisk -l
02  
03 Disk /dev/sdb: 21.5 GB, 21474836480 bytes
04 255 heads, 63 sectors/track, 2610 cylinders
05 Units = cylinders of 16065 * 512 = 8225280 bytes
06 Sector size (logical/physical): 512 bytes / 512 bytes
07 I/O size (minimum/optimal): 512 bytes / 512 bytes
08 Disk identifier: 0x32d0a442
09  
10 Device Boot Start End Blocks Id System

先將sdb分3個100M的分區出來測試

01 [root@cnhejia ~]# fdisk /dev/sdb <<EOF
02  
03 n
04 p
05 1
06  
07 +100M
08 n
09 p
10 2
11  
12 +100M
13 n
14 p
15 3
16  
17 +100M
18 w
19 EOF
20  
21 [root@cnhejia ~]# fdisk -l
22  
23 Disk /dev/sdb: 21.5 GB, 21474836480 bytes
24 255 heads, 63 sectors/track, 2610 cylinders
25 Units = cylinders of 16065 * 512 = 8225280 bytes
26 Sector size (logical/physical): 512 bytes / 512 bytes
27 I/O size (minimum/optimal): 512 bytes / 512 bytes
28 Disk identifier: 0x32d0a442
29  
30 Device Boot Start End Blocks Id System
31 /dev/sdb1 1 14 112423+ 83 Linu x
32 /dev/sdb2 15 28 112455 83 Linu x
33 /dev/sdb3 29 42 112455 83 Linu x

將sdb[1-3]轉換爲物理卷ui

1 [root@cnhejia ~]# pvcreate /dev/sdb[1-3]
2 Physical volume "/dev/sdb1" successfully created
3 Physical volume "/dev/sdb2" successfully created
4 Physical volume "/dev/sdb3" successfully created

使用pvs查看目前的物理卷狀況,都沒有加入VGcode

1 [root@cnhejia ~]# pvs
2 PV VG Fmt Attr PSize PFree
3 /dev/sdb1 lvm2 a-- 109.79m 109.79m
4 /dev/sdb2 lvm2 a-- 109.82m 109.82m
5 /dev/sdb3 lvm2 a-- 109.82m 109.82m

如今咱們先將sdb1和sdb2加入一個卷組vgtestorm

01 [root@cnhejia ~]# vgcreate vgtest /dev/sdb[1-2]
02 Volume group "vgtest" successfully created
03 [root@cnhejia ~]# vgs
04 VG #PV #LV #SN Attr VSize VFree
05 VolGroup 1 2 0 wz--n- 19.51g 0
06 vgtest 2 0 0 wz--n- 216.00m 216.00m
07 [root@cnhejia ~]# pvs
08 PV VG Fmt Attr PSize PFree
09 /dev/sda2 VolGroup lvm2 a-- 19.51g 0
10 /dev/sdb1 vgtest lvm2 a-- 108.00m 108.00m
11 /dev/sdb2 vgtest lvm2 a-- 108.00m 108.00m
12 /dev/sdb3 lvm2 a-- 109.82m 109.82m
13 [root@cnhejia ~]#

卷組vgtest建立成功,而且將sdb1和sdb2加入了這個卷組,經過vgs能夠看到卷組大小爲216Mip

如今咱們在卷組vgtest上建立一個名爲lvtest的100M的邏輯卷,這樣才能真正使用這個磁盤rem

1 [root@cnhejia ~]# lvcreate -L 100M -n lvtest vgtest
2 Logical volume "lvtest" created
3 [root@cnhejia ~]# lvs
4 LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
5 lv_root VolGroup -wi-ao---- 17.57g
6 lv_swap VolGroup -wi-ao---- 1.94g
7 lvtest vgtest -wi-a----- 100.00m

這時候就能夠對lvtest進行格式化使用了同步

01 [root@cnhejia ~]# mkfs.ext4 /dev/vgtest/lvtest
02 或者
03 [root@cnhejia ~]# mkfs.ext4 /dev/mapper/vgtest-lvtest
04 mapper下會生成卷組映射,等同於軟鏈接同樣,操做徹底同步。
05 [root@cnhejia ~]# mkfs.ext4 /dev/mapper/vgtest-lvtest ^C
06 [root@cnhejia ~]# mount /dev/mapper/vgtest-lvtest /mnt/
07 [root@cnhejia ~]# df -h
08 Filesystem Size Used Avail Use% Mounted on
09 /dev/mapper/VolGroup-lv_root 18G 3.6G 13G 22% /
10 tmpfs 495M 0 495M 0% /dev/shm
11 /dev/sda1 485M 70M 391M 16% /boot
12 /dev/mapper/vgtest-lvtest 97M 5.6M 87M 7% /mnt

目前已經成功掛載完成在物理卷sdb1和sdb2上建立的卷組vgtest上建立的100M大小的邏輯卷lvtest虛擬機

若是這100M的mnt目錄不夠用怎麼辦?邏輯卷的好處就是動態無損擴容,使用lvextend增長空間而後使用resize2fs從新同步磁盤大小。操做方法以下:

01 [root@cnhejia ~]# lvextend -L +50M /dev/mapper/vgtest-lvtest
02 Rounding size to boundary between physical extents: 52.00 MiB
03 Extending logical volume lvtest to 152.00 MiB
04 Logical volume lvtest successfully resized
05 [root@cnhejia ~]# lvs
06 LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
07 lv_root VolGroup -wi-ao---- 17.57g
08 lv_swap VolGroup -wi-ao---- 1.94g
09 lvtest vgtest -wi-ao---- 152.00m
10 [root@cnhejia ~]# resize2fs /dev/mapper/vgtest-lvtest
11 resize2fs 1.41.12 (17-May-2010)
12 Filesystem at /dev/mapper/vgtest-lvtest is mounted on /mnt; on-line resizing required
13 old desc_blocks = 1, new_desc_blocks = 1
14 Performing an on-line resize of /dev/mapper/vgtest-lvtest to 155648 (1k) blocks.
15 The filesystem on /dev/mapper/vgtest-lvtest is now 155648 blocks long.
16  
17 [root@cnhejia ~]# df -h
18 Filesystem Size Used Avail Use% Mounted on
19 /dev/mapper/VolGroup-lv_root 18G 3.6G 13G 22% /
20 tmpfs 495M 0 495M 0% /dev/shm
21 /dev/sda1 485M 70M 391M 16% /boot
22 /dev/mapper/vgtest-lvtest 148M 5.6M 135M 4% /mnt
23 [root@cnhejia ~]#

mnt目錄已經成功變成150M了
若是想減小這個邏輯卷的空間,操做也很簡單:

1 umount /mnt
2 //檢測空間使用狀況
3 [root@cnhejia ~]# e2fsck -f /dev/mapper/vgtest-lvtest
4 //將邏輯卷調整爲100M便可
5 [root@cnhejia ~]# resize2fs /dev/mapper/vgtest-lvtest 100M

這時候若是兩個物理卷200M都用光了怎麼辦?不要緊,lvm也能夠將新的磁盤加進來。如今咱們就把sdb3加進來,操做方法以下:

01 [root@cnhejia ~]# pvcreate /dev/sdb3
02 Physical volume "/dev/sdb3" successfully created
03 [root@cnhejia ~]# vgextend vgtest /dev/sdb3
04 Volume group "vgtest" successfully extended
05 [root@cnhejia ~]# vgdisplay
06 --- Volume group ---
07 VG Name vgtest
08 System ID
09 Format lvm2
10 Metadata Areas 3
11 Metadata Sequence No 4
12 VG Access read/write
13 VG Status resizable
14 MAX LV 0
15 Cur LV 1
16 Open LV 1
17 Max PV 0
18 Cur PV 3
19 Act PV 3
20 VG Size 324.00 MiB
21 PE Size 4.00 MiB
22 Total PE 81
23 Alloc PE / Size 38 / 152.00 MiB
24 Free PE / Size 43 / 172.00 MiB
25 VG UUID Xh0P8e-FMPu-oA4G-nNP4-9Vcn-tiZN-szYlSQ

怎麼樣,vgtest這個卷組有300M空間了吧,須要的話能夠都放到/mnt的掛載下。

——————————————————————————————
上述是建立和使用管理的一些介紹,若是某個分區/硬盤可能健康狀態很差,要卸載或者移出或者更換怎麼辦?
先使用pvmove將看着不爽的物理卷數據轉移,數據轉移完成後而後使用vgreduce將看着不爽的物理卷從卷組移出,而後使用pvremove刪除物理卷,這個磁盤就變成普普統統的磁盤了,愛修愛丟隨便你;
假設如今sdb2這個分區(或者磁盤)壞了,要移除,可是數據不能丟,操做步驟以下:

1 [root@cnhejia ~]# pvmove /dev/sdb2
2 /dev/sdb2: Moved: 18.5%
3 /dev/sdb2: Moved: 100.0%
4  
5 [root@cnhejia ~]# vgreduce vgtest /dev/sdb2
6 Removed "/dev/sdb2" from volume group "vgtest"
7 [root@cnhejia ~]# pvremove /dev/sdb2
8 Labels on physical volume "/dev/sdb2" successfully wiped

至此sdb2這個分區和lvm已經沒有關係了

一個VG卷組是能夠建立多個LV邏輯卷的,若是有一個卷你不想要了直接執行lvremove便可

1 [root@cnhejia ~]#lvremove /dev/mapper/vgtest/lvtest

如何刪除整個系統的卷組,再也不使用lvm?
須要數據先備份,不要數據直接操做,操做以下:

1 [root@cnhejia ~]# vgremove vgtest
2 Do you really want to remove volume group "vgtest" containing 1 logical volumes? [y/n]: y
3 Do you really want to remove active logical volume lvtest? [y/n]: y
4 Logical volume "lvtest" successfully removed
5 Volume group "vgtest" successfully removed

這時候fdisk就再也不能看到以前的卷組了,pvremove移出卷組便可,直接重分區格式化其實也能夠。

注意:

若是磁盤添加到了vg中,而且vg是激活的,那麼再去對磁盤分區表作修改的時候會失敗,提示readonly。

先經過vgchange -a n vgname取消vg的激活狀態再經過fdisk分區,分區後經過vgchange -ay vgname從新激活便可。

固然,激活狀態去修改原有的磁盤分區表增長新的分區,重啓後通常也可以正常生效。

相關文章
相關標籤/搜索