admin管理员组文章数量:1568354
文章目录
- Linux云计算架构-LVM逻辑卷管理器
- 1. LVM概念介绍
- 2. LVM实操
- 2.1 部署逻辑卷
- 2.2 逻辑卷扩容、缩容
- 2.2.1 扩容【500M扩容到1500M】
- 2.2.2 缩容【1500M缩容到1000M】
- 2.3 卷组扩容、缩容
- 2.3.1 卷组扩容
- 2.3.2 卷组缩容
- 2.4 逻辑卷快照
- 2.5 逻辑卷删除
- 3. 使用SSM工具一步到位创建LVM
Linux云计算架构-LVM逻辑卷管理器
1. LVM概念介绍
在生产环境中使用磁盘分区或者RAID磁盘阵列卡时,若是对数据的增长没有一个准确的定位,那么可能会导致磁盘空间爆满或空闲太多造成浪费。而磁盘分区和RAID不能进行扩容缩容操作,针对这一点,推出了LVM逻辑卷管理器。
LVM逻辑卷管理器可以解决在创建磁盘分区后不易修改磁盘分区大小的问题。
LVM工作原理:
LVM(Logical Volume Manager)逻辑卷管理,是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘,当服务器添加了新的磁盘后,管理员不必将原有的文件移动到新的磁盘上,而是通过LVM可以直接扩展文件系统跨越磁盘。它就是通过将底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
常用LVM概念:
1. 物理存储介质:可以是磁盘分区、整个磁盘、 RAID、SAN磁盘,但是都要初始化为物理卷。
2. 物理卷PV:物理卷是LVM的基本存储逻辑块,包含有与LVM相关的管理参数,可用分区或者硬盘、RAID创建物理卷。
3. 卷组VG:卷组由一个或者多个物理卷组成。
4. 逻辑卷LV:LV建立在VG之上,从卷组中分隔出一部分用作逻辑卷,用以创建文件系统,逻辑卷可用于格式化、挂载。
5. PE:PV中可以分配的最小存储单元。PE大小可以指定,默认是4MB
6. LE:LV逻辑卷中可以分配的最小存储单元。同一卷组,PE和LE一样大。
LVM的优点:
1. 卷组可将多个硬盘空间组成一个更大的硬盘。
2. 逻辑卷可以是跨多个硬盘空间的分区。
3. 可动态调整逻辑卷的大小,不用考虑逻辑卷所在硬盘的位置。
4. 可在线对LV、VG进行创建、删除、调整大小等操作。
5. 允许创建快照来对文件系统进行备份。
生产环境建议:LVM是逻辑卷管理方式,而RAID是磁盘管理的方式。对重要的数据,先用RAID来保证不会因为硬盘损坏而中断业务,再用LVM实现对卷的良性管理,更好的利用磁盘资源。
2. LVM实操
2.1 部署逻辑卷
# 查看硬盘设备情况
# 以下部署都是用的这些硬盘
[root@master ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 7月 18 09:48 /dev/sda
brw-rw----. 1 root disk 8, 1 7月 18 09:48 /dev/sda1
brw-rw----. 1 root disk 8, 2 7月 18 09:48 /dev/sda2
brw-rw----. 1 root disk 8, 16 7月 18 09:56 /dev/sdb
brw-rw----. 1 root disk 8, 32 7月 18 09:57 /dev/sdc
brw-rw----. 1 root disk 8, 48 7月 18 09:57 /dev/sdd
brw-rw----. 1 root disk 8, 64 7月 18 09:57 /dev/sde
# 创建物理卷
[root@master ~]# pvcreate /dev/sd[b-e]
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
Physical volume "/dev/sde" successfully created.
# 创建卷组
[root@master ~]# vgcreate vg_data /dev/sd[b-e]
Volume group "vg_data" successfully created
# 查看卷组vg_data的信息
[root@master ~]# vgdisplay vg_data
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 4
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 4
Act PV 4
VG Size 7.98 GiB # 卷组VG大小
PE Size 4.00 MiB # PE大小
Total PE 2044 # PE个数
Alloc PE / Size 0 / 0
Free PE / Size 2044 / 7.98 GiB # 空闲PE个数或者大小
VG UUID 6LRPn5-0EAX-zoye-SAVz-YBml-hKIY-wMrrxT
# 创建逻辑卷
[root@master ~]# lvcreate -n lv_data -L 500M vg_data
Logical volume "lv_data" created.
# 查看逻辑卷/dev/vg_data/lv_data的信息
[root@master ~]# lvdisplay /dev/vg_data/lv_data
--- Logical volume ---
LV Path /dev/vg_data/lv_data
LV Name lv_data
VG Name vg_data
LV UUID 2pC7DP-1gWc-NmRm-lPez-JWfu-w8Ci-bLsKZG
LV Write Access read/write
LV Creation host, time master, 2020-07-18 10:06:04 +0800
LV Status available
# open 0
LV Size 500.00 MiB
Current LE 125
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
# 再次查看卷组vg_data的信息
[root@master ~]# vgdisplay vg_data
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 2
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 7.98 GiB
PE Size 4.00 MiB
Total PE 2044
Alloc PE / Size 125 / 500.00 MiB # 卷组中已分配的存储空间的大小
Free PE / Size 1919 / <7.50 GiB # 卷组中剩余未分配的存储空间的大小
VG UUID 6LRPn5-0EAX-zoye-SAVz-YBml-hKIY-wMrrxT
# 创建完逻辑卷/dev/vg_data/lv_data之后,就可以进行格式化和挂载了。
[root@master ~]# mkfs.ext4 /dev/vg_data/lv_data
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=34078720
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Allocating group tables: 完成
正在写入inode表: 完成
[root@master ~]# mkdir /data
[root@master ~]# mount /dev/vg_data/lv_data /data
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 477M 2.3M 445M 1% /data
# 永久挂载
[root@master ~]# blkid | grep lv_data
/dev/mapper/vg_data-lv_data: UUID="44f0e998-eb15-4e72-96ea-e3c07b6e2047" TYPE="ext4"
[root@master ~]# vim /etc/fstab
UUID="44f0e998-eb15-4e72-96ea-e3c07b6e2047" /data ext4 defaults 0 0
2.2 逻辑卷扩容、缩容
2.2.1 扩容【500M扩容到1500M】
# 为了让实验效果更直观,这里先创建一个文件,使得lv_data的使用率达到100%
[root@master ~]# cd /data
[root@master data]# dd if=/dev/zero of=a.txt bs=450M count=1
记录了1+0 的读入
记录了1+0 的写出
471859200字节(472 MB)已复制,3.86317 秒,122 MB/秒
[root@master data]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 477M 453M 0 100% /data
# 在扩容之间,先查看下逻辑卷和卷组的信息
# 查看lv_data逻辑卷的信息
# LV Size 只有500M,需要扩容了
[root@master ~]# lvdisplay /dev/vg_data/lv_data
--- Logical volume ---
LV Path /dev/vg_data/lv_data
LV Name lv_data
VG Name vg_data
LV UUID 2pC7DP-1gWc-NmRm-lPez-JWfu-w8Ci-bLsKZG
LV Write Access read/write
LV Creation host, time master, 2020-07-18 10:06:04 +0800
LV Status available
# open 1
LV Size 500.00 MiB
Current LE 125
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
# 查看下vg_data卷组的信息
# VG Size大小为7.98 GiB
# Free PE / Size 为1919 / <7.50 GiB,说明还是7.5G的磁盘空间可以使用。
[root@master ~]# vgdisplay vg_data
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 4
Act PV 4
VG Size 7.98 GiB
PE Size 4.00 MiB
Total PE 2044
Alloc PE / Size 125 / 500.00 MiB
Free PE / Size 1919 / <7.50 GiB
VG UUID 6LRPn5-0EAX-zoye-SAVz-YBml-hKIY-wMrrxT
# 确认好卷组内有空闲的空间可以用来扩容后,就可以开始扩容了。这里扩容为1500M。
# 取消挂载
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 477M 453M 0 100% /data
[root@master ~]# umount /data
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
# 扩容、检查逻辑卷完整性、重置逻辑卷容量【顺序不可变】
[root@master ~]# lvextend -L 1500M /dev/vg_data/lv_data
Size of logical volume vg_data/lv_data changed from 500.00 MiB (125 extents) to 1.46 GiB (375 extents).
Logical volume vg_data/lv_data successfully resized.
[root@master ~]# e2fsck -f /dev/vg_data/lv_data
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg_data/lv_data: 12/128016 files (0.0% non-contiguous), 487486/512000 blocks
[root@master ~]# resize2fs /dev/vg_data/lv_data 1500M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg_data/lv_data to 1536000 (1k) blocks.
The filesystem on /dev/vg_data/lv_data is now 1536000 blocks long.
# 通过以上三步走,就已经扩容成功了,再次查看lv_data的信息,可以发现LV Size已经变为1.46 GiB了
[root@master ~]# lvdisplay /dev/vg_data/lv_data
--- Logical volume ---
LV Path /dev/vg_data/lv_data
LV Name lv_data
VG Name vg_data
LV UUID 2pC7DP-1gWc-NmRm-lPez-JWfu-w8Ci-bLsKZG
LV Write Access read/write
LV Creation host, time master, 2020-07-18 10:06:04 +0800
LV Status available
# open 0
LV Size 1.46 GiB
Current LE 375
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
# 查看下vg_data的信息
# 可以看到Free PE / Size的大小已经变为6.52 GiB了
[root@master ~]# vgdisplay vg_data
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 3
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 7.98 GiB
PE Size 4.00 MiB
Total PE 2044
Alloc PE / Size 375 / 1.46 GiB
Free PE / Size 1669 / <6.52 GiB
VG UUID 6LRPn5-0EAX-zoye-SAVz-YBml-hKIY-wMrrxT
# 重新挂载,数据未丢失
[root@master ~]# mount -a
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 1.5G 453M 914M 34% /data
[root@master ~]# ll /data/a.txt
-rw-r--r--. 1 root root 471859200 7月 18 10:19 /data/a.txt
2.2.2 缩容【1500M缩容到1000M】
# 有了扩容的经验,再来理解缩容就会容易很多了。
# lv_data仅仅用来1%,增长速度也很慢,太浪费磁盘空间了,打算缩容成1000M。
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 1.5G 2.7M 1.4G 1% /data
# 取消挂载
[root@master ~]# umount /data
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
# 检查逻辑卷完整性、重置逻辑卷容量、缩容
[root@master ~]# e2fsck -f /dev/vg_data/lv_data
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg_data/lv_data: 11/382016 files (0.0% non-contiguous), 59206/1536000 blocks
[root@master ~]# resize2fs /dev/vg_data/lv_data 1000M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg_data/lv_data to 1024000 (1k) blocks.
The filesystem on /dev/vg_data/lv_data is now 1024000 blocks long.
[root@master ~]# lvreduce -L 1000M /dev/vg_data/lv_data
WARNING: Reducing active logical volume to 1000.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg_data/lv_data? [y/n]: y
Size of logical volume vg_data/lv_data changed from 1.46 GiB (375 extents) to 1000.00 MiB (250 extents).
Logical volume vg_data/lv_data successfully resized.
# 查看lv_data的存储大小,可以发现已经变为1000M了
[root@master ~]# lvdisplay /dev/vg_data/lv_data
--- Logical volume ---
LV Path /dev/vg_data/lv_data
LV Name lv_data
VG Name vg_data
LV UUID 2pC7DP-1gWc-NmRm-lPez-JWfu-w8Ci-bLsKZG
LV Write Access read/write
LV Creation host, time master, 2020-07-18 10:06:04 +0800
LV Status available
# open 0
LV Size 1000.00 MiB
Current LE 250
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
# 重新挂载
[root@master ~]# mount -a
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 961M 2.5M 905M 1% /data
2.3 卷组扩容、缩容
2.3.1 卷组扩容
# 当卷组的存储空间不足以支持逻辑卷的扩容时,就需要扩大卷组的存储。
# 通过查询磁盘的使用情况和卷组的剩余存储,可以看到vg_data已经没有存储了,这时需要为卷组添加硬盘。
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 24K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 7.8G 6.9G 459M 94% /data
[root@master test]# vgdisplay vg_data
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 4
Act PV 4
VG Size 7.98 GiB
PE Size 4.00 MiB
Total PE 2044
Alloc PE / Size 2044 / 7.98 GiB
Free PE / Size 0 / 0
VG UUID N0Mm13-cqeQ-YzE8-bFJu-86RK-hqdF-jyXuwv
# 添加一块5G的硬盘/dev/sdf
[root@master ~]# ll /dev/sdf
brw-rw----. 1 root disk 8, 80 7月 19 20:35 /dev/sdf
[root@master ~]# pvcreate /dev/sdf
Physical volume "/dev/sdf" successfully created.
[root@master ~]# vgextend vg_data /dev/sdf
Volume group "vg_data" successfully extended
# 可以看到,卷组已经扩容了。卷组的扩容不需要取消挂载。
[root@master ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos_master 1 2 0 wz--n- <19.00g 0
vg_data 5 1 0 wz--n- 12.98g <5.00g
# 但是逻辑卷的扩容是要先取消挂载的。
2.3.2 卷组缩容
# 查看下LVM的信息,可以看到分配给lv_data的空间大小是5G
# 这5G的空间可以看到分别来自哪几个硬盘,分配给了逻辑卷的磁盘空间会被标记为已占用,不能再分配给其他逻辑卷。
# 当/data目录写入数据,数据会存放在这5G大小所对应的硬盘中,若要移除某一块硬盘,需要把硬盘中的数据移到卷组中未分配的磁盘空间中,使得要移除的硬盘不再属于某一个逻辑卷,这时可以说要移除的硬盘是空闲的,所以可以移除。
# 综上:即只有不属于某一个逻辑卷的硬盘才可以移除。
[root@master ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos_master lvm2 a-- <19.00g 0
/dev/sdb vg_data lvm2 a-- <2.00g 0
/dev/sdc vg_data lvm2 a-- <2.00g 0
/dev/sdd vg_data lvm2 a-- <2.00g 1012.00m
/dev/sde vg_data lvm2 a-- <2.00g <2.00g
[root@master ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos_master 1 2 0 wz--n- <19.00g 0
vg_data 4 1 0 wz--n- 7.98g 2.98g
[root@master ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos_master -wi-ao---- <17.00g
swap centos_master -wi-ao---- 2.00g
lv_data vg_data -wi-ao---- 5.00g
[root@master ~]# ll /data
总用量 16
drwx------. 2 root root 16384 7月 19 22:12 lost+found
[root@master ~]# cp -r /boot/ /data
[root@master ~]# ll /data/
总用量 20
dr-xr-xr-x. 5 root root 4096 7月 19 22:21 boot
drwx------. 2 root root 16384 7月 19 22:12 lost+found
# 移除/dev/sdb,会显示这块硬盘在使用
[root@master ~]# vgreduce vg_data /dev/sdb
Physical volume "/dev/sdb" still in use
# 由于/dev/sdb的分配额是2G,故要移除该硬盘,需要有大于等于2G空闲的硬盘接收数据,这里选择/dev/sde。
# 重新移除/dev/sdb,可以看到是可以移除成功的。数据也没有丢失。
[root@master ~]# pvmove /dev/sdb /dev/sde
/dev/sdb: Moved: 1.96%
/dev/sdb: Moved: 100.00%
[root@master ~]# vgreduce vg_data /dev/sdb
Removed "/dev/sdb" from volume group "vg_data"
[root@master ~]# ll /data
总用量 20
dr-xr-xr-x. 5 root root 4096 7月 19 22:21 boot
drwx------. 2 root root 16384 7月 19 22:12 lost+found
# 移除硬盘/dev/sdb,可以看到vg_data只由3块硬盘组成。也就是卷组缩容了。
[root@master ~]# pvremove /dev/sdb
Labels on physical volume "/dev/sdb" successfully wiped.
[root@master ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos_master lvm2 a-- <19.00g 0
/dev/sdc vg_data lvm2 a-- <2.00g 0
/dev/sdd vg_data lvm2 a-- <2.00g 1012.00m
/dev/sde vg_data lvm2 a-- <2.00g 0
# 卷组缩容后,不会影响已分配的逻辑卷大小,分配给逻辑卷的硬盘是不允许被移除的,需把数据移动到卷组的其他硬盘中再移除该硬盘,故数据不会丢失。
2.4 逻辑卷快照
- 创建快照卷的命令和创建逻辑卷的命令相似,多了一个参数-s,表明创建的是一个快照卷。
- 快照卷无需格式化和挂载,在使用快照卷进行还原操作之前,要先取消逻辑卷的挂载。
- 可以使用命令
lvconvert --merge 快照卷名
进行还原操作。 - 还原之后要重新挂载才能继续使用。
# 创建快照卷
# 快照卷的大小和逻辑卷的大小要一样大,镜像同大。
# 查看下逻辑卷和卷组的大小,可以看到lv_data大小为1000M,vg_data剩余空间为7.01 GiB,所以可以创建快照卷
[root@master ~]# lvdisplay /dev/vg_data/lv_data
--- Logical volume ---
LV Path /dev/vg_data/lv_data
LV Name lv_data
VG Name vg_data
LV UUID 2pC7DP-1gWc-NmRm-lPez-JWfu-w8Ci-bLsKZG
LV Write Access read/write
LV Creation host, time master, 2020-07-18 10:06:04 +0800
LV Status available
# open 1
LV Size 1000.00 MiB
Current LE 250
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
[root@master ~]# vgdisplay vg_data
--- Volume group ---
VG Name vg_data
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 4
Act PV 4
VG Size 7.98 GiB
PE Size 4.00 MiB
Total PE 2044
Alloc PE / Size 250 / 1000.00 MiB
Free PE / Size 1794 / <7.01 GiB
VG UUID 6LRPn5-0EAX-zoye-SAVz-YBml-hKIY-wMrrxT
# 为了能对比到差异,这里先创建一个文件。
# 可以看到lv_data已用23%
[root@master data]# dd if=/dev/zero of=a.txt bs=200M count=1
记录了1+0 的读入
记录了1+0 的写出
209715200字节(210 MB)已复制,0.81982 秒,256 MB/秒
[root@master data]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 961M 203M 705M 23% /data
# 创建快照卷lv_data_SNAP
# 快照卷也是一种逻辑卷,-s指明该逻辑卷是快照卷
[root@master ~]# lvcreate -s -n lv_data_SNAP -L 1000M /dev/vg_data/lv_data
Logical volume "lv_data_SNAP" created.
# 查看下快照卷lv_data_SNAP的信息
[root@master ~]# lvdisplay /dev/vg_data/lv_data_SNAP
--- Logical volume ---
LV Path /dev/vg_data/lv_data_SNAP
LV Name lv_data_SNAP
VG Name vg_data
LV UUID d4Pf5o-HNw9-JgtB-1be5-weQx-lr91-NoL9Hn
LV Write Access read/write
LV Creation host, time master, 2020-07-18 10:58:42 +0800
LV snapshot status active destination for lv_data
LV Status available
# open 0
LV Size 1000.00 MiB
Current LE 250
COW-table size 1000.00 MiB
COW-table LE 250
Allocated to snapshot 0.01%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:5
# 在/data目录下创建文件一些文件,磁盘空间已使用100%了
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 961M 903M 4.2M 100% /data
[root@master ~]# ll /data
总用量 921619
-rw-r--r--. 1 root root 209715200 7月 18 10:54 a.txt
-rw-r--r--. 1 root root 104857600 7月 18 11:13 b.txt
-rw-r--r--. 1 root root 314572800 7月 18 11:13 c.txt
-rw-r--r--. 1 root root 314572800 7月 18 11:13 d.txt
drwx------. 2 root root 12288 7月 18 10:11 lost+found
# 查看下快照卷的情况,可以看到Allocated to snapshot已经使用了70.30%了。说明创建快照卷后,快照卷和逻辑卷会同步增长。
[root@master ~]# lvdisplay /dev/vg_data/lv_data_SNAP
--- Logical volume ---
LV Path /dev/vg_data/lv_data_SNAP
LV Name lv_data_SNAP
VG Name vg_data
LV UUID d4Pf5o-HNw9-JgtB-1be5-weQx-lr91-NoL9Hn
LV Write Access read/write
LV Creation host, time master, 2020-07-18 10:58:42 +0800
LV snapshot status active destination for lv_data
LV Status available
# open 0
LV Size 1000.00 MiB
Current LE 250
COW-table size 1000.00 MiB
COW-table LE 250
Allocated to snapshot 70.30%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:5
# 使用快照卷还原逻辑卷
[root@master ~]# lvconvert --merge /dev/vg_data/lv_data_SNAP
Merging of volume vg_data/lv_data_SNAP started.
vg_data/lv_data: Merged: 30.73%
vg_data/lv_data: Merged: 100.00%
# 重新挂载,可以看到已经还原成功了。
[root@master ~]# mount -a
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 24K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 961M 203M 705M 23% /data
[root@master ~]# ll /data
总用量 204814
-rw-r--r--. 1 root root 209715200 7月 18 10:54 a.txt
drwx------. 2 root root 12288 7月 18 10:11 lost+found
2.5 逻辑卷删除
创建顺序:pvcreate创建物理卷-vgcreate创建卷组-lvcreate创建逻辑卷-mkfs格式化-mount挂载
删除顺序:备份重要数据-取消挂载-删除/etc/fstab
相关挂载信息-lvremove删除逻辑卷-vgremove删除卷组-pvremove删除物理卷
# 使用lsblk命令查看磁盘结构
# 可以看到逻辑卷lv_data是使用的物理硬盘/dev/sdb的存储空间。
[root@master ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos_master-root
253:0 0 17G 0 lvm /
└─centos_master-swap
253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 2G 0 disk
└─vg_data-lv_data
253:2 0 1000M 0 lvm /data
sdc 8:32 0 2G 0 disk
sdd 8:48 0 2G 0 disk
sde 8:64 0 2G 0 disk
sr0 11:0 1 4.3G 0 rom /run/media/root/CentOS 7 x86_64
# 删除LVM
# 取消挂载,并删除/etc/fstab下的相应挂载信息
[root@master ~]# umount /data
[root@master ~]# vim /etc/fstab
# 移除逻辑卷、卷组、物理卷
[root@master ~]# lvremove /dev/vg_data/lv_data
Do you really want to remove active logical volume vg_data/lv_data? [y/n]: y
Logical volume "lv_data" successfully removed
[root@master ~]# vgremove vg_data
Volume group "vg_data" successfully removed
[root@master ~]# pvremove /dev/sd[b-e]
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
Labels on physical volume "/dev/sdd" successfully wiped.
Labels on physical volume "/dev/sde" successfully wiped.
# 再次查看磁盘结构,已经不存在LVM了。
[root@master ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos_master-root
253:0 0 17G 0 lvm /
└─centos_master-swap
253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 2G 0 disk
sdc 8:32 0 2G 0 disk
sdd 8:48 0 2G 0 disk
sde 8:64 0 2G 0 disk
sr0 11:0 1 4.3G 0 rom /run/media/root/CentOS 7 x86_64
3. 使用SSM工具一步到位创建LVM
SSM(system-storage-manager):检查关于可用硬驱和 LVM 卷的信息。显示关于现有磁盘存储设备、存储池、LVM 卷和存储快照的信息。
需求:创建一个卷组名为vg_data、逻辑卷名为lv_data、逻辑卷lv_data大小为1G、格式化为ext4文件系统、挂载点为/data、使用的硬盘设备为/dev/sd[b-e]的逻辑卷lv_data,用于存储数据信息。
# 安装ssm工具
[root@master ~]# yum install system-storage-manager -y
# 列出设备信息
[root@master ~]# ssm list dev
------------------------------------------------------------------
Device Free Used Total Pool Mount point
------------------------------------------------------------------
/dev/sda 20.00 GB
/dev/sda1 1.00 GB /boot
/dev/sda2 0.00 KB 19.00 GB 19.00 GB centos_master
/dev/sdb 2.00 GB
/dev/sdc 2.00 GB
/dev/sdd 2.00 GB
/dev/sde 2.00 GB
------------------------------------------------------------------
# 列出存储信息
[root@master ~]# ssm list pool
---------------------------------------------------------
Pool Type Devices Free Used Total
---------------------------------------------------------
centos_master lvm 1 0.00 KB 19.00 GB 19.00 GB
---------------------------------------------------------
# ssm create -s lv_size -n lv_name --fstype fstype -p vg_name 硬盘设备 挂载目录
[root@master ~]# ssm create -s 1G -n lv_data --fstype ext4 -p vg_data /dev/sd[b-e] /data
Physical volume "/dev/sdb" successfully created. # 物理卷
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
Physical volume "/dev/sde" successfully created.
Volume group "vg_data" successfully created # 卷组
WARNING: ext4 signature detected on /dev/vg_data/lv_data at offset 1080. Wipe it? [y/n]: y # 是否覆盖它
Wiping ext4 signature on /dev/vg_data/lv_data.
Logical volume "lv_data" created. # 逻辑卷
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
# df -h,可以看到逻辑卷lv_data已经挂载上去了。
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 24K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_data-lv_data 976M 2.6M 907M 1% /data
# 永久挂载
[root@master ~]# blkid | grep lv_data
/dev/mapper/vg_data-lv_data: UUID="bb0cf8d4-561f-4e79-b352-249b6398881a" TYPE="ext4"
[root@master ~]# vim /etc/fstab
UUID="bb0cf8d4-561f-4e79-b352-249b6398881a" /data ext4 defaults 0 0
[root@master ~]# mount -a
# 重启下看看是否仍然挂载,可以看到,仍然挂载上去了。
[root@master ~]# reboot
[root@master ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_master-root 17G 3.9G 14G 23% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
/dev/mapper/vg_data-lv_data 976M 2.6M 907M 1% /data
tmpfs 182M 20K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
以上就是lvm管理的全部内容了,已经足够应对生产环境中遇到的问题了。
送给路过的同学一句话:学习必须要多实践才能快成长。
版权声明:本文标题:Linux云计算架构-LVM逻辑卷管理器 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727613630a1123012.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论