目录
2.把两块硬盘设备加入到storage卷组中,然后查看卷组的状态。
2.检查硬盘的完整性,确认目录结构、内容和文件内容没有丢失。一般情况下没有报错,均为正常情况。
3.重置设备在系统中的容量。刚刚是对LV(逻辑卷)设备进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步。
一、常用的LVM部署命令
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
二、部署逻辑卷
准备三块硬盘,各20G。
在虚拟机中添加两块新硬盘设备的目的,是为了更好地演示LVM理念中用户无须关心底层物理硬盘设备的特性。我们先对这两块新硬盘进行创建物理卷的操作,可以将该操作简单理解成让硬盘设备支持LVM技术,或者理解成是把硬盘设备加入到LVM技术可用的硬件资源池中,然后对这两块硬盘进行卷组合并,卷组的名称允许由用户自定义。接下来,根据需求把合并后的卷组切割出一个约为150MB的逻辑卷设备,最后把这个逻辑卷设备格式化成Ext4文件系统后挂载使用。步骤如下:
1.让新添加的两块硬盘设备支持 LVM 技术。
[root@RHEL8 ~]# pvcreate /dev/sdb /dev/sdc
# pvcreate命令的功能是用于创建物理卷设备。LVM逻辑卷管理器技术由物理卷、卷组和逻辑卷组成,其中pvcreate命令的工作属于第一个环节——创建物理卷设备。
2.把两块硬盘设备加入到storage卷组中,然后查看卷组的状态。
vgcreate命令的功能是用于创建卷组设备。LVM逻辑卷管理器技术由物理卷、卷组和逻辑卷组成,其中vgcreate命令的工作属于第二个环节——创建卷组设备。
卷组,顾名思义是将多个物理卷组成一个整体,屏蔽了底层物理设备细节,让用户在后续的逻辑卷创建工作后无需再考虑具体的硬件设备信息。
# 使用两块硬盘,创建出一块指定名称(storage 可自定义)的卷组设备
[root@RHEL8 ~]# vgcreate storage /dev/sdb /dev/sdc
[root@RHEL8 ~]# vgdisplay
# vgdisplay命令用于显示LVM卷组的信息
3.切割出一个约为150MB的逻辑卷设备。
lvcreate命令的功能是用于创建逻辑卷设备。LVM逻辑卷管理器技术由物理卷、卷组和逻辑卷组成,其中lvcreate命令的工作属于最后一个环节——创建逻辑卷设备。
设定逻辑卷容量可以使用-L参数直接写具体值,亦可以写-l参数指定PE个数,每个PE大小默认为4M,因此-L 400M和-l 100的效力是等价的。例如,使用-l 37可以生成一个大小为37×4MB=148MB的逻辑卷。
# 在已有的卷组中(storage)创建一个逻辑卷(vo),大小为37个PE:
[root@RHEL8 ~]# lvcreate -n vo -l 37 storage
[root@RHEL8 ~]# lvdisplay
4.把生成好的逻辑卷进行格式化,然后挂载使用。
Linux系统会把LVM中的逻辑卷设备存放在/dev设备目录中(实际上就是个快捷方式),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev卷组名称逻辑卷名称)。
mkfs命令来自于英文词组“make file system”的缩写,其功能是用于对设备进行格式化文件系统操作。在挂载使用硬盘空间前的最后一步,运维人员需要对整块硬盘或指定分区进行格式化文件系统操作,Linux系统支持的文件系统包含ext2、ext3、ext4、xfs、fat、msdos、vfat、minix等多种格式。
[root@RHEL8 ~]# mkfs.ext4 /dev/storage/vo
[root@RHEL8 ~]# mkdir -p /text
[root@RHEL8 ~]# mount /dev/storage/vo /text/
5.查看挂载状态,并写入配置文件,使其永久生效。
[root@RHEL8 ~]# df -Th
[root@RHEL8 ~]# echo "/dev/storage/vo /text ext4 defaults 0 0" >> /etc/fstab
[root@RHEL8 ~]# cat /etc/fstab
三、扩容逻辑卷
在前面的实验中,卷组是由两块硬短设各同组成的。用户在使用存储设备时感知不到设备底层的架构和布局,更不用关心底层是由名少块硬盘组成的,只要卷组中有足够的资源就可以一直为逻辑卷扩容。扩容前请一定要记得卸载设备和挂载点的关联。
[root@RHEL8 ~]# umount /text
1.把上一个实验中的逻辑卷vo扩展至290MB。
[root@RHEL8 ~]# lvextend -L 290M /dev/storage/vo
2.检查硬盘的完整性,确认目录结构、内容和文件内容没有丢失。一般情况下没有报错,均为正常情况。
e2fsck命令用于检查使用 Linux ext2 档案系统的 partition 是否正常工作。 e2fsck命令可以检查ext2、ext3、ext4文件系统,如果系统已经挂载了,那么不建议去检查,因为这样是不安全的。
[root@RHEL8 ~]# e2fsck -f /dev/storage/vo
-f 强制检查
3.重置设备在系统中的容量。刚刚是对LV(逻辑卷)设备进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步。
esize2fs命令来自于英文词组“resize to filesystem”的缩写,其功能是用于同步文件系统容量到内核。如对ext3、ext4、XFS等设备卷容量进行了调整,则需要使用resize2fs命令同步信息到系统内核。
[root@RHEL8 ~]# resize2fs /dev/storage/vo
4.重新挂载硬盘设备并查看挂载状态。
[root@RHEL8 ~]# mount -a
[root@RHEL8 ~]# df -Th
-a 挂载/etc/fstab文件中所有已定义的设备文件
四、缩小逻辑卷
相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,数据丢失的风险更大。所以在生产环境中执行相应操作时,一定要提前备份好数据。另外,Linux系统规定,在对LVM逻辑卷进行缩容操作之前,要先检查文件系统的完整性(当然这也是为了保证数据的安全)。在执行缩容操作前记得先把文件系统卸载掉。
[root@RHEL8 ~]# umount /text
1.检查文件系统的完整性。
[root@RHEL8 ~]# e2fsck -f /dev/storage/vo
e2fsck 1.44.3 (10-July-2018)
第 1 步:检查inode、块和大小
第 2 步:检查目录结构
第 3 步:检查目录连接性
第 4 步:检查引用计数
第 5 步:检查组概要信息
/dev/storage/vo:11/74000 文件(0.0% 为非连续的), 15507/299008 块
2.通知系统内核将逻辑卷vo的容量减小到120MB。
[root@RHEL8 ~]# resize2fs /dev/storage/vo 120M
resize2fs 1.44.3 (10-July-2018)
将 /dev/storage/vo 上的文件系统调整为 122880 个块(每块 1k)。
/dev/storage/vo 上的文件系统现在为 122880 个块(每块 1k)。
3.将 LV(逻辑卷)的容量修改为120MB。
[root@RHEL8 ~]# lvreduce -L 120M /dev/storage/vo
WARNING: Reducing active logical volume to 120.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce storage/vo? [y/n]: y
Size of logical volume storage/vo changed from 292.00 MiB (73 extents) to 120.00 MiB (30 extents).
Logical volume storage/vo successfully resized.
4.重新挂载硬盘设备并查看挂载状态。
[root@RHEL8 ~]# mount -a
[root@RHEL8 ~]# df -Th
-a 挂载/etc/fstab文件中所有已定义的设备文件
五、 逻辑卷快照
LVM还具备有“快照卷”功能,该功能类似于虚拟机软件的还原时间品能。例如,对某一个逻辑卷设备做一次快照,如果日后发现数据被改错了,就可以利用之前做好的快照卷进行覆盖还原。LVM的快照卷功能有两个特点:
a.快照卷的容量必须等同于逻辑卷的容量;
b.快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。
在正式操作前,先看看VG(卷组)中的容量是否够用:
通过卷组的输出信息可以清晰看到,卷组中已经使用了120MB的容量,空闲容量还有39.88GB。接下来用重定向往逻辑卷设备所挂载的目录中写入一个文件。
[root@RHEL8 ~]# echo "Hello world" > /text/readme.txt
[root@RHEL8 ~]# ls -l /text/
第1步:使用-s参数生成一个快照卷,使用-L参数指定切割的大小,需要与要做快照的设备容量保持一致。另外,还需要在命令后面写上是针对哪个逻辑卷执行的快照操作,稍后数据也会还原到这个相应的设备上。
[root@RHEL8 ~]# lvcreate -L 120M -s -n SNAP /dev/storage/vo
[root@RHEL8 ~]# lvdisplay
第2步:在逻辑卷所挂载的目录中创建一个100MB的垃圾文件,然后再查看快照卷的状态。可以发现存储空间的占用量上升了。
dd命令来自于英文词组“disk dump”的缩写,其功能是用于拷贝及转换文件。使用dd命令可以按照指定大小的数据块来拷贝文件,并在拷贝的过程中对内容进行转换。
语法格式:dd 参数 对象
常用参数:
- if=文件名:输入文件名,默认为标准输入。即指定源文件。
- of=文件名:输出文件名,默认为标准输出。即指定目的文件。
- ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。 - cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
- skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
- seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
- count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
生成一个指定大小(100M)的新文件:
[root@RHEL8 ~]# dd if=/dev/zero of=/text/files count=1 bs=100M
记录了1+0 的读入
记录了1+0 的写出
104857600 bytes (105 MB, 100 MiB) copied, 7.17258 s, 14.6 MB/s
[root@RHEL8 ~]# lvdisplay
[root@RHEL8 ~]# ls -l /text/
总用量 102416
-rw-r--r--. 1 root root 104857600 6月 14 16:46 files
drwx------. 2 root root 12288 6月 14 09:29 lost+found
-rw-r--r--. 1 root root 12 6月 14 16:37 readme.txt
第3步:为了校验快照卷的效果,需要对逻组卷进行快照还原操作。在此之前记得先卸载掉逻辑卷设备与目录的挂载。
lvconvert 命令用于管理逻辑卷的快照,语法格式为“lvconvert [参数] 快照卷名称”。使用Ivconvert 命令能自动回复逻辑卷的快服,在早期的RHEL/CentOS 5版本中要写全格式:“–mergesnapshot”,而从RHEL 6到RHEL 8.已经允许用户只输入-merge参数进行操作了,系统会自动分辨设备的类型。
[root@RHEL8 ~]# umount /text
[root@RHEL8 ~]# lvconvert --merge /dev/storage/SNAP
Merging of volume storage/SNAP started.
storage/vo: Merged: 38.92%
storage/vo: Merged: 100.00%
[root@RHEL8 ~]# lvdisplay
# 快照卷 SNAP 没有了
第4步:快照卷会被自动删除掉,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的100MB的垃圾文件也被清除了。
[root@RHEL8 ~]# mount -a
[root@RHEL8 ~]# ls -l /text/
总用量 14
drwx------. 2 root root 12288 6月 14 09:29 lost+found
-rw-r--r--. 1 root root 12 6月 14 16:37 readme.txt
[root@RHEL8 ~]# cat /text/readme.txt
Hello world
六、删除逻辑卷
当生产环境中想要重新部署LVM或者不再需要使用LVM时,则需要执行LVM的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒。
第1步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。
[root@RHEL8 ~]# umount /text
[root@RHEL8 ~]# vim /etc/fstab
删除这行
/dev/storage/vo /text ext4 defaults 0 0
第2步:删除逻辑卷设备,需要输入y来确认操作。
[root@RHEL8 ~]# lvremove /dev/storage/vo
Do you really want to remove active logical volume storage/vo? [y/n]: y
Logical volume "vo" successfully removed
第3步:删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。
[root@RHEL8 ~]# vgremove storage
Volume group "storage" successfully removed
第4步:删除物理卷设备。
[root@RHEL8 ~]# pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
在上述操作执行完毕之后,再执行lvdisplay、vgdisplay、pvdisplay命令来查看LVM的信
息时就不会再看到相关信息了(前提是上述步骤的操作是正确的)。干净利落!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74665.html