LVM的創建、擴容和縮減
阿新 • • 發佈:2018-06-21
分區 real sed reference TE 空間大小 vdi lock lin 一、創建LVM系統
?1. 硬盤分區
??首先我們需要為我們的虛擬機添加一個虛擬硬盤,過程略。
查看硬盤設備:
[root@localhost ~]# fdisk -l ... Disk /dev/sdc: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xa2c6e480 Device Boot Start End Blocks Id System ...
如上/dev/sdc是我們新添加的硬盤設備。
我們需要在/dev/sdc基礎上創建分區並修改分區系統類型為8e:
[root@localhost ~]# fdisk /dev/sdc WARNING: DOS-compatible mode is deprecated. It is strongly recommended to switch off the mode (command ‘c‘) and change display units to sectors (command ‘u‘). Command (m for help): n # 創建新分區 Command action e extended # 擴展分區 p primary partition (1-4) # 主分區 p Partition number (1-4): 1 # 分區號 First cylinder (1-1305, default 1): # 默認從第一個柱面開始劃分 Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +5G # 分區大小 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (655-1305, default 655): Using default value 655 Last cylinder, +cylinders or +size{K,M,G} (655-1305, default 1305): +3G Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (1048-1305, default 1048): Using default value 1048 Last cylinder, +cylinders or +size{K,M,G} (1048-1305, default 1305): Using default value 1305 Command (m for help): t # 修改分區系統類型 Partition number (1-4): 1 # 選擇要修改的分區號 Hex code (type L to list codes): 8e # 修改為LVM分區類型,可使用‘L‘查看所有可使用類型 Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 8e Changed system type of partition 2 to 8e (Linux LVM) Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 8e Changed system type of partition 3 to 8e (Linux LVM) Command (m for help): p # 查看分區情況 Disk /dev/sdc: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xa2c6e480 Device Boot Start End Blocks Id System /dev/sdc1 1 654 5253223+ 8e Linux LVM /dev/sdc2 655 1047 3156772+ 8e Linux LVM /dev/sdc3 1048 1305 2072385 8e Linux LVM Command (m for help): w # 保存分區表並退出 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@localhost ~]#
?2. 創建物理卷
創建物理卷的命令為pvcreate,利用該命令將希望添加到卷組的所有分區或者硬盤創建為物理卷。
[root@localhost ~]# pvcreate /dev/sdc{1,2} # 將/dev/sdc1和2創建為物理卷 Physical volume "/dev/sdc1" successfully created Physical volume "/dev/sdc2" successfully created [root@localhost ~]# pvs # 查看物理卷信息 PV VG Fmt Attr PSize PFree /dev/sdc1 lvm2 ---- 5.01g 5.01g /dev/sdc2 lvm2 ---- 3.01g 3.01g [root@localhost ~]# pvdisplay # 查看物理卷詳細信息 ... "/dev/sdc1" is a new physical volume of "5.01 GiB" --- NEW Physical volume --- PV Name /dev/sdc1 VG Name PV Size 5.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID jKHeSG-XYna-zFYi-9Kd9-bWRM-f1zY-Qs7FZZ "/dev/sdc2" is a new physical volume of "3.01 GiB" --- NEW Physical volume --- PV Name /dev/sdc2 VG Name PV Size 3.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID WcKTKi-av0e-so5s-QVXB-yf7G-Tynz-9TQDJb [root@localhost ~]#
?3. 創建卷組
創建卷組的命令為vgcreate,將使用pvcreate建立的物理卷創建為一個完整的卷組。
[root@localhost ~]# vgcreate myvg /dev/sdc{1,2} # 創建卷組
Volume group "myvg" successfully created
[root@localhost ~]# vgs # 查看卷組信息
VG #PV #LV #SN Attr VSize VFree
myvg 2 0 0 wz--n- 8.02g 8.02g
[root@localhost ~]# vgdisplay myvg # 查看卷組詳細信息
--- Volume group ---
VG Name myvg
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 8.02 GiB # 卷組的大小,由上面兩個分區決定
PE Size 4.00 MiB # PE大小可以在vgcreate命令中使用‘-s‘指定,默認為4M
Total PE 2052
Alloc PE / Size 0 / 0
Free PE / Size 2052 / 8.02 GiB
VG UUID 4aIItM-FyPx-GJ47-1A70-b8W4-EwfH-beFZrZ
[root@localhost ~]# pvdisplay # 再次查看物理卷,跟上一次查看有所區別
--- Physical volume ---
PV Name /dev/sdc1
VG Name myvg
PV Size 5.01 GiB / not usable 2.10 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1282
Free PE 1282
Allocated PE 0
PV UUID jKHeSG-XYna-zFYi-9Kd9-bWRM-f1zY-Qs7FZZ
--- Physical volume ---
PV Name /dev/sdc2
VG Name myvg
PV Size 3.01 GiB / not usable 2.79 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 770
Free PE 770
Allocated PE 0
PV UUID WcKTKi-av0e-so5s-QVXB-yf7G-Tynz-9TQDJb
[root@localhost ~]#
?4. 創建邏輯卷
創建邏輯卷的命令為lvcreate
[root@localhost ~]# lvcreate -L 6G -n mylv myvg
Logical volume "mylv" created.
[root@localhost ~]#
使用方法:
lvcreate -L #G -n LV_NAME VG_NAME
參數解釋:
-L: 指定邏輯卷大小,不可超過卷組大小
-n: 指定邏輯卷名稱
?5. 掛載文件系統
至此我們的邏輯卷就已創建完成,接下來我們就需要格式化分區並掛載使用啦。
[root@localhost ~]# mkfs.ext4 /dev/myvg/mylv # 格式化分區
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
393216 inodes, 1572864 blocks
78643 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1610612736
48 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@localhost ~]# mount /dev/myvg/mylv /mnt/ # 掛載分區到/mnt目錄下
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/myvg-mylv
5.8G 12M 5.5G 1% /mnt
[root@localhost ~]#
二、擴展邏輯卷
上一章我們介紹了如何創建LVM系統,並掛載使用。如果我們分配的空間不夠用,那麽就需要我們來擴展分區大小了。
接下來我們將/dev/sdc3分區也加入到卷組,並擴展邏輯卷空間。
[root@localhost ~]# pvcreate /dev/sdc3 # 創建物理卷
Physical volume "/dev/sdc3" successfully created
[root@localhost ~]# vgextend myvg /dev/sdc3 # 添加物理卷到卷組
Volume group "myvg" successfully extended
[root@localhost ~]# pvs # 查看物理卷信息
PV VG Fmt Attr PSize PFree
/dev/sdb datavg lvm2 a--u 20.00g 1020.00m
/dev/sdc1 myvg lvm2 a--u 5.01g 0
/dev/sdc2 myvg lvm2 a--u 3.01g 2.02g
/dev/sdc3 myvg lvm2 a--u 1.97g 1.97g # /dev/sdc3已加入myvg卷組
[root@localhost ~]# vgs # 卷組信息
VG #PV #LV #SN Attr VSize VFree
datavg 1 1 0 wz--n- 20.00g 1020.00m
myvg 3 1 0 wz--n- 9.99g 3.99g # 卷組容量比之前擴大
[root@localhost ~]# lvextend -L 9G /dev/myvg/mylv # 擴展邏輯卷容量到9G
Size of logical volume myvg/mylv changed from 6.00 GiB (1536 extents) to 9.00 GiB (2304 extents).
Logical volume mylv successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
nsas01 datavg -wi-ao---- 19.00g
mylv myvg -wi-a----- 9.00g # 邏輯卷容量成功擴展到9G
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/myvg-mylv
5.8G 12M 5.5G 1% /mnt # 但是分區空間還是初始大小
[root@localhost ~]# resize2fs -p /dev/myvg/mylv # 改變分區大小為邏輯卷大小
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mylv to 2359296 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 2359296 blocks long.
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/myvg-mylv
8.8G 14M 8.3G 1% /mnt # 分區大小成功擴展到9G
[root@localhost ~]#
三、縮減邏輯卷
註意事項:
- 縮減前需要先卸載掛載;
- 要確保縮減後的空間依然能夠存儲原有的所有數據;
- 縮減之前需要先強行檢查文件,確保文件系統處於一致性狀態。
[root@localhost ~]# umount /dev/myvg/mylv # 卸載掛載分區
[root@localhost ~]# e2fsck -f /dev/myvg/mylv # 強行檢查文件系統
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/myvg/mylv: 11/589824 files (0.0% non-contiguous), 73247/2359296 blocks
[root@localhost ~]# resize2fs /dev/myvg/mylv 8G # 改變分區大小
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv to 2097152 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 2097152 blocks long.
[root@localhost ~]# lvreduce -L 8G /dev/myvg/mylv # 改變邏輯卷大小
WARNING: Reducing active logical volume to 8.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv? [y/n]: y
Size of logical volume myvg/mylv changed from 9.00 GiB (2304 extents) to 8.00 GiB (2048 extents).
Logical volume mylv successfully resized.
[root@localhost ~]# mount /dev/myvg/mylv /mnt/
[root@localhost ~]# df -h
...
/dev/mapper/myvg-mylv
7.8G 14M 7.4G 1% /mnt # 分區大小成功縮減為8G
[root@localhost ~]#
四、從卷組移除物理卷
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
nsas01 datavg -wi-ao---- 19.00g
mylv myvg -wi-ao---- 8.00g
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 1 0 wz--n- 20.00g 1020.00m
myvg 3 1 0 wz--n- 9.99g 1.99g
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 myvg lvm2 a--u 5.01g 0
/dev/sdc2 myvg lvm2 a--u 3.01g 16.00m
/dev/sdc3 myvg lvm2 a--u 1.97g 1.97g
[root@localhost ~]#
我們的目前狀態:
掛載分區空間為8G;
邏輯卷(LV)空間大小為8G;
卷組(VG)空間大小為9.99G,剩余1.99G;
物理卷/dev/sdc3空間未使用。
那麽我們是否可以將/dev/sdc3從卷組中移除出來呢?
[root@localhost ~]# pvmove /dev/sdc3 # 移動/dev/sdc3中數據到其他物理卷
No data to move for myvg
[root@localhost ~]# vgreduce myvg /dev/sdc3 # 從myvg卷組中移除/dev/sdc3物理卷
Removed "/dev/sdc3" from volume group "myvg"
[root@localhost ~]# pvremove /dev/sdc3 # 移除物理卷/dev/sdc3
Labels on physical volume "/dev/sdc3" successfully wiped
[root@localhost ~]# pvs # /dev/sdc3成功從卷組myvg中移除
PV VG Fmt Attr PSize PFree
/dev/sdb datavg lvm2 a--u 20.00g 1020.00m
/dev/sdc1 myvg lvm2 a--u 5.01g 0
/dev/sdc2 myvg lvm2 a--u 3.01g 16.00m
[root@localhost ~]# vgs # 卷組空間大小縮減了/dev/sdc3空間大小
VG #PV #LV #SN Attr VSize VFree
datavg 1 1 0 wz--n- 20.00g 1020.00m
myvg 2 1 0 wz--n- 8.02g 16.00m
[root@localhost ~]#
五、常用命令
- 物理卷管理(PV)
pvcreate、pvdisplay、pvmove、pvremove、pvs- 卷組管理(VG)
vgcreate、vgdisplay、vgextend、vgreduce、vgremove、vgrename、vgs- 邏輯卷管理(LV)
lvcreate、lvdisplay、lvextend、lvreduce、lvremove、lvrename、lvs
LVM的創建、擴容和縮減