首先解释一下几个关键词 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 |
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 |
10 |
Device Boot Start End Blocks Id System |
先将sdb分3个100M的分区出来测试
01 |
[root@cnhejia ~] # fdisk /dev/sdb <<EOF |
21 |
[root@cnhejia ~] # fdisk -l |
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 |
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
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 |
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 |
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 |
卷组vgtest建立成功,而且将sdb1和sdb2加入了这个卷组,经过vgs能够看到卷组大小为216Mip 如今咱们在卷组vgtest上建立一个名为lvtest的100M的逻辑卷,这样才能真正使用这个磁盘rem
1 |
[root@cnhejia ~] # lvcreate -L 100M -n lvtest vgtest |
2 |
Logical volume "lvtest" created |
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 |
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 |
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. |
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 |
mnt目录已经成功变成150M了 若是想减小这个逻辑卷的空间,操做也很简单:
3 |
[root@cnhejia ~] # e2fsck -f /dev/mapper/vgtest-lvtest |
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 |
11 |
Metadata Sequence No 4 |
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% |
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从新激活便可。 固然,激活状态去修改原有的磁盘分区表增长新的分区,重启后通常也可以正常生效。 |