本章的内容包含以下几大部分(由于作者水平有限,错误之处请留言谢谢!):
(1)什么是LVM,PV,PE,VG,LV。
(2)LVM的实际操作
(3)怎样放大LV的容量
(4)怎样缩小LV的容量
(5)怎样删除逻辑卷
LVM的定义:中文翻译就是逻辑卷管理器,可以整合多个物理分区在一起,让这些分区看起来像是一个磁盘一样,而且,还可以在将来其他的物理分区或将其从这个lvm管理的磁盘当中删除,可以弹性调整文件系统的容量。
PV:指的就是物理卷,我们实际分区要调整系统标识符成为8e(LVM的标识符)然后在经过pvcreat的命令转化成LVM最底层的物理卷(PV)。
PE:指的就是物理扩展块,它是LVM中最小的存储快,默认使用4MB的PE块,我们的文件数据写入都是写入PE来处理的,简单来说,PE就像是文件系统里面的block大小。
VG:就是将许多PV整合成VG,一个VG最大的容量可达256GB,与PE有关。
LV:最终的VG会被切成LV,这个LV就是最后可以被格式化使用的分区。
PV命令:
pvcreat:将物理分区新建成为PV。
pvscan:查询目前系统里面任何具有PV的磁盘。
pvdisplay:显示出目前系统上面的PV状态
pvremove:将PV属性删除,让该分区不具有PV属性。
VG命令:
vgcreat:新建VG
vgscan:查找系统上面是否存在VG。
vgdisply:显示目前系统上面的VG状态。
vgxtend:在VG内增加额外的pv。
vgreduce:在VG内删除PV。
vgchange:删除一个VG。
LV命令:
lvcreat:新建LV
lvscan:查找系统上面是否存在LV。
lvdisply:显示目前系统上面的LV状态。
lvxtend:在LV里面增加的LV状态。
lvreduce:在LV里面减少容量。
lvmove:删除一个LV。
lvresize:对LV进行容量大小的调整。
实际上只看这些概念的东西是很不容易理解的,反正我是不理解,举个列子就很清楚了:
小明想吃馒头,家里的面粉不够,于是从隔壁老王家,老李家,老张家,分别借来一些面粉,准备蒸馒头吃,首先需要把面粉(物理卷pv)揉成一个大面团(卷组VG),然后把这些面团分割成一个个小馒头(逻辑卷LV)而且每个小馒头的重量必须是每勺面粉(PE)的倍数。
相信举了这个例子之后大家都已经很明白了他们的含义以及它们之间的关系了把,那么它们是怎样实现的那,大家看图就一目了然了:
(2)LVM的实际操作
1:新建一个磁盘,分出4个区,每个分区容量1G,
2:先将前三个建成一个VG,在把最后一个分区增加到VG里面VG的名称设置为vbirdvg,且PE的大小为16MB,
3:将全部的VG容量丢给LV,LV的名称设置为vbirdlv,最后将lv,格式化为ext4,且挂载在/mnt/lvm中。
第一步:
由图可知我新建了sdc,并且分了4个物理区,我先用pvscan查看一下,系统上面有没有pv,然后在把四个分区新建成pv格式。
下面用pvdisplay这个命令显示出更详细的每个PV信息,这里只列出一个,
第二步:
[root@centos6 ~]# vgcreate -s 16M vbirdvg /dev/sdc{1,2,3} 将/dev/sdc123新建成为一个VG,且指定PE为16M,vgcreate [-s N[mgt]]VG名称PV名称,-s后面接pe的大小, 单位是mgt,都可以
Volume group "vbirdvg" successfully created
[root@centos6 ~]# vgscan 查看系统上面是否有VG存在。
Reading all physical volumes. This may take a while... 阅读所有物理卷。这可能需要一段时间
Found volume group "vbirdvg" using metadata type lvm2 使用元数据类型lvm2找到卷组“vbirdvg”
[root@centos6 ~]# pvscan 查询系统上具有的PV的磁盘,发现sdc4没被用掉哈
PV /dev/sdc1 VG vbirdvg lvm2 [1.00 GiB / 1.00 GiB free]
PV /dev/sdc2 VG vbirdvg lvm2 [1.00 GiB / 1.00 GiB free]
PV /dev/sdc3 VG vbirdvg lvm2 [1.00 GiB / 1.00 GiB free]
PV /dev/sdc4 lvm2 [1.01 GiB]
Total: 4 [4.01 GiB] / in use: 3 [3.00 GiB] / in no VG: 1 [1.01 GiB]
[root@centos6 ~]# vgdisplay 显示目前系统上面的VG状态,
--- Volume group ---
VG Name vbirdvg
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 3.00 GiB
PE Size 16.00 MiB
Total PE 192
Alloc PE / Size 0 / 0
Free PE / Size 192 / 3.00 GiB
VG UUID GyaL2t-ANXT-J3gY-uawe-wnTX-Qx57-0M1u7F
[root@centos6 ~]# vgextend vbirdvg /dev/sdc4 将sdc4的容量增加到VG中
Volume group "vbirdvg" successfully extended
[root@centos6 ~]# vgdisplay 显示系统上面的VG状态。
--- Volume group ---
VG Name vbirdvg
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 4
Act PV 4
VG Size 4.00 GiB
PE Size 16.00 MiB
Total PE 256 PE的数量由原来的192变为256个,
Alloc PE / Size 0 / 0
Free PE / Size 256 / 4.00 GiB
VG UUID GyaL2t-ANXT-J3gY-uawe-wnTX-Qx57-0M1u7F
[root@centos6 ~]# lvcreate -l 256 -n vbirdlv vbirdvg 将整个vbirdvg分配给vbirdlv,要注意PE总共256个, lvcreate [-L N[mgt] ] [-n LV名称] VG名称,-L后面接容量,-n后面接LV的名称-l接pe个数
Logical volume "vbirdlv" created.
[root@centos6 ~]# lvdisplay 显示系统上LV的状态
--- Logical volume ---
LV Path /dev/vbirdvg/vbirdlv
LV Name vbirdlv
VG Name vbirdvg
LV UUID m7gbpi-1Y1t-GfJb-KMRx-xaXB-QSlx-IOLeaf
LV Write Access read/write
LV Creation host, time centos6.magedu.com, 2018-03-11 02:34:03 +0800
LV Status available
# open 0
LV Size 4.00 GiB
Current LE 256
Segments 4
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
[root@centos6 ~]# mkfs -t ext4 /dev/vbirdvg/vbirdlv 格式化
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
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 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 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@centos6 ~]# mkdir /mnt/lvm 创建挂载点
[root@centos6 ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm 挂载
[root@centos6 ~]# df 查看
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 20511356 4161156 15301624 22% /
tmpfs 1019176 76 1019100 1% /dev/shm
/dev/sda5 20511356 45000 19417780 1% /app
/dev/sda1 194241 40350 143651 22% /boot
/dev/sdb4 505396 408 478484 1% /mnt/sdb4
/dev/mapper/vbirdvg-vbirdlv
3997376 8184 3779480 1% /mnt/lvm
总结:
大家能看到这里,说明还没有懵,上面的操作都是我一步步写的,虽然比较长,但是非常详细,难度不大,就是要记住这些乱七八糟的命令,就好了,没什么其他办法。
(3)放大LV的容量
[root@localhost /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 20G 3.3G 17G 17% /
devtmpfs 977M 0 977M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.2M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 139M 59M 71% /boot
/dev/mapper/centos-app 20G 84M 20G 1% /app
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 24K 199M 1% /run/user/1000
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/storage-vo 772M 2.5M 730M 1% /baiyijie 逻辑卷vo现在的容量
[root@localhost /]# umount /baiyijie 扩展前一定要先卸载设备和挂载点
[root@localhost /]# df -h 查看发现已经卸载
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 20G 3.3G 17G 17% /
devtmpfs 977M 0 977M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.2M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 139M 59M 71% /boot
/dev/mapper/centos-app 20G 84M 20G 1% /app
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 24K 199M 1% /run/user/1000
tmpfs 199M 0 199M 0% /run/user/0
[root@localhost /]# lvextend -L 2000M /dev/storage/vo 把逻辑卷vo扩展至2000M.
Size of logical volume storage/vo changed from 800.00 MiB (200 extents) to 1.95 GiB (500 extents).
Logical volume storage/vo successfully resized.
[root@localhost /]# e2fsck -f /dev/storage/vo 检查磁盘完整性,并重置硬盘容量。
e2fsck 1.42.9 (28-Dec-2013)
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/storage/vo: 11/200000 files (0.0% non-contiguous), 31901/819200 blocks
[root@localhost /]# resize2fs /dev/storage/vo 通过resize2fs将文件系统的容量确实增加!
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 2048000 (1k) blocks.
The filesystem on /dev/storage/vo is now 2048000 blocks long.
[root@localhost /]# mount /dev/storage/vo /baiyijie 挂载
[root@localhost /]# df -h 查看
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 20G 3.3G 17G 17% /
devtmpfs 977M 0 977M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.2M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 139M 59M 71% /boot
/dev/mapper/centos-app 20G 84M 20G 1% /app
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 24K 199M 1% /run/user/1000
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/storage-vo 1.9G 2.9M 1.8G 1% /baiyijie 可以看到确实增加了哈哈
(4)缩小LV的容量
现实企业中一般很少会缩lv的容量的,如果有,说明你在的整个企业很low,还是赶紧走吧!
总结:在LVM中逻辑卷的扩容和所容都需要先取消逻辑卷与目录的挂载关联,扩容操作是先扩容后检查文件系统的完整性,而缩容操作是为了保证数据的安全,需要先检查文件系统完整性在缩容。
(5)删除逻辑卷
[root@localhost /]# umount /baiyijie 先取消逻辑卷与目录的挂载关联,这里没有写入到配置文件中就不再演示
[root@localhost /]# lvremove /dev/storage/vo 删除逻辑卷设备,需要输入y来确认
Do you really want to remove active logical volume storage/vo? [y/n]: y 确认
Logical volume "vo" successfully removed
[root@localhost /]# vgremove storage 删除卷组,只写卷组名称就可以,不需要设备的绝对路径,下面也是
Volume group "storage" successfully removed
[root@localhost /]# pvremove /dev/sdc /dev/sdd 删除物理卷设备
Labels on physical volume "/dev/sdc" successfully wiped.
Labels on physical volume "/dev/sdd" successfully wiped.
总结:
在LVM中的删除顺序不是随意的,要先删除逻辑卷,卷组,然后是物理卷,切记。
转载于:https://blog.51cto.com/13570192/2084759