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管理的全部内容了,已经足够应对生产环境中遇到的问题了。

送给路过的同学一句话:学习必须要多实践才能快成长。

本文标签: 管理器架构逻辑Linuxlvm