LVM:Logical Volume Manager 逻辑卷管理
传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。
LVM使用原理结构,如下图所示。
命令总览:
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
Scan扫描 | pvscan | vgscan | lvscan |
Create建立 | pvcreate | vgcreate | lvcreate |
Display显示 | pvdisplay | vgdisplay | lvdisplay |
Remove删除 | pvremove | vgremove | lvremove |
Extend扩展 | vgextend | lvextend |
准备磁盘分区
通过fdisk命令创建/dev/sdb5,/dev/sdb6,/dev/sdb7,/dev/sdb8四个分区。大小可以不同
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): t Partition number (1-8, default 8): 5 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM'
分区创建好之后应有如下输出:
[root@localhost ~]# fdisk -l /dev/sdb Disk /dev/sdb: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xc0d9ee4a Device Boot Start End Blocks Id System /dev/sdb1 2048 20973567 10485760 fd Linux raid autodetect /dev/sdb2 20973568 23070719 1048576 fd Linux raid autodetect /dev/sdb3 23070720 44042239 10485760 83 Linux /dev/sdb4 44042240 125829119 40893440 5 Extended /dev/sdb5 44044288 65015807 10485760 8e Linux LVM /dev/sdb6 65017856 85989375 10485760 8e Linux LVM /dev/sdb7 85991424 96477183 5242880 8e Linux LVM /dev/sdb8 96479232 106964991 5242880 8e Linux LVM
[root@localhost ~]# pvcreate /dev/sdb{5,6,7} Physical volume "/dev/sdb5" successfully created Physical volume "/dev/sdb6" successfully created Physical volume "/dev/sdb7" successfully created
创建完成后可以用pvdisplay查看。这里跳过。
删除物理卷的命令为:
[root@localhost ~]# pvremove /dev/sdb5
准备卷组
创建一个名为testvg的卷组
[root@localhost ~]# vgcreate testvg /dev/sdb{5,6,7} Volume group "testvg" successfully created
卷组创建好之后就可以用vgdisplay看一下
[root@localhost ~]# vgdisplay --- Volume group --- VG Name testvg System ID Format lvm2 Metadata Areas 3 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 3 Act PV 3 VG Size 11.99 GiB PE Size 4.00 MiB Total PE 3069 Alloc PE / Size 0 / 0 Free PE / Size 3069 / 11.99 GiB VG UUID ofhCb0-42oG-3lEF-Tq7S-cLEv-dH91-mvcdOe
删除的命令为:
[root@localhost ~]# vgremove testvg
在卷组里创建逻辑卷
创建一个大小8G,名为testlv的逻辑卷
[root@localhost ~]# lvcreate -L 8G -n testlv testvg Logical volume "testlv" created.
使用lvdisplay查看
[root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/testvg/testlv LV Name testlv VG Name testvg LV UUID b3OHcq-LnQy-lNfj-XDgM-s9tx-rAtq-levoi1 LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-03-17 16:28:39 +0800 LV Status available # open 0 LV Size 8.00 GiB Current LE 2048 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
删除逻辑卷的命令为:
[root@localhost ~]# lvremove /dev/testvg/testlv
接下来,这个逻辑卷就相当于一个可以动态扩容的盘了
先格式化并挂载使用。
[root@localhost ~]# mke2fs -t ext4 /dev/testvg/testlv [root@localhost ~]# mkdir /lvm-mount [root@localhost ~]# mount /dev/testvg/testlv /lvm-mount/
扩展LVM逻辑卷
给刚刚创建的testlv增加2G空间
扩展时可以不用卸载此设备。
[root@localhost ~]# lvextend -L +2G /dev/testvg/testlv Size of logical volume testvg/testlv changed from 8.00 GiB (2048 extents) to 10.00 GiB (2560 extents). Logical volume testlv successfully resized.
运行 resize2fs命令,更新文件系统
[root@localhost ~]# resize2fs /dev/testvg/testlv resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/testvg/testlv is mounted on /lvm-mount; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/testvg/testlv is now 2621440 blocks long.
验证:现在应该增加到10G了
[root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/testvg/testlv LV Name testlv VG Name testvg LV UUID b3OHcq-LnQy-lNfj-XDgM-s9tx-rAtq-levoi1 LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-03-17 16:28:39 +0800 LV Status available # open 1 LV Size 10.00 GiB Current LE 2560 Segments 3 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
缩减逻辑卷
注意:在对逻辑卷减小操作时,需要先把逻辑卷卸载。若缩减后分区大小小于数据时,存储在后面的数据会丢失。
[root@localhost ~]# umount /dev/testvg/testlv
卸载过后,需要使用fsck检查磁盘是否出错(-f强制检查)
[root@localhost ~]# fsck.ext4 -f /dev/testvg/testlv
完成以后,减少逻辑卷大小
[root@localhost ~]# lvresize -L 5G /dev/testvg/testlv
接下来缩小文件系统,更新ext4信息
[root@localhost ~]# resize2fs /dev/testvg/testlv
使用lvdisplay验证一下:
[root@localhost ~]# lvdisplay [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/testvg/testlv LV Name testlv VG Name testvg LV UUID b3OHcq-LnQy-lNfj-XDgM-s9tx-rAtq-levoi1 LV Write Access read/write LV Creation host, time localhost.localdomain, 2016-03-17 16:28:39 +0800 LV Status available # open 0 LV Size 5.00 GiB Current LE 1280 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
接下来就可以挂载使用了。
扩展一个卷组:
其实,扩展卷组和扩展逻辑卷差不多。需要一个空闲分区或硬盘,在创建时选择8e类型。(我选择了刚创建的/dev/sdb8分区)
先查看一下
[root@localhost ~]# vgdisplay --- Volume group --- VG Name testvg System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 3 Act PV 3 VG Size 11.99 GiB PE Size 4.00 MiB Total PE 3069 Alloc PE / Size 1280 / 5.00 GiB Free PE / Size 1789 / 6.99 GiB VG UUID ofhCb0-42oG-3lEF-Tq7S-cLEv-dH91-mvcdOe
使用vgextend命令扩展
[root@localhost ~]# vgextend /dev/testvg /dev/sdb8 Physical volume "/dev/sdb8" successfully created Volume group "testvg" successfully extended
使用vgdisplay来验证(可以看到卷组大小已经增大)。
[root@localhost ~]# vgdisplay --- Volume group --- VG Name testvg System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 4 Act PV 4 VG Size 13.98 GiB PE Size 4.00 MiB Total PE 3580 Alloc PE / Size 1280 / 5.00 GiB Free PE / Size 2300 / 8.98 GiB VG UUID ofhCb0-42oG-3lEF-Tq7S-cLEv-dH91-mvcdOe
完~~~
转载于:https://blog.51cto.com/zhaoyongtao/1752246