参考链接https://www.linuxprobe.com/basic-learning-07.html#711

RAID磁盘冗余阵列

RAID 0、1、5、10方案技术对比

RAID级别 最少硬盘 可用容量 读写性能 安全性 特点
0 2 n n 追求最大容量和速度,任何一块盘损坏,数据全部异常。
1 2 n/2 n 追求最大安全性,只要阵列组中有一块硬盘可用,数据不受影响。
5 3 n-1 n-1 在控制成本的前提下,追求硬盘的最大容量、速度及安全性,允许有一块硬盘异常,数据不受影响。
10 4 n/2 n/2 综合RAID1和RAID0的优点,追求硬盘的速度和安全性,允许有一半硬盘异常(不可同组),数据不受影响

mdadm命令的常用参数和作用

参数 作用
-a 检测设备名称
-n 指定设备数量
-l 指定RAID级别
-C 创建
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止RAID磁盘阵列

RAID 5

RAID 5 简介

​ RAID5技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID 5磁盘阵列中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上。这样的好处是,其中任何一设备损坏后不至于出现致命缺陷。中Parity部分存放的就是数据的奇偶校验信息。换句话说,就是RAID 5技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。RAID这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。RAID 5最少由3块硬盘组成,使用的是硬盘切割(Disk Striping)技术。相较于RAID 1级别,好处就在于保存的是奇偶校验信息而不是一模一样的文件内容,所以当重复写入某个文件时,RAID 5级别的磁盘阵列组只需要对应一个奇偶校验信息就可以,效率更高,存储成本也会随之降低。
第7章 使用RAID与LVM磁盘阵列技术第7章 使用RAID与LVM磁盘阵列技术
​ RAID5技术示意图


准备四块硬盘,三块做RAID5一块备份

1.安装软件包

root@debian:~# apt install -y mdadm

2.查看硬盘

root@debian:~# fdisk -l
Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
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 /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
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 /dev/sdd: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
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 /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb185de14

Device     Boot    Start      End  Sectors Size Id Type
/dev/sda1  *        2048 33554431 33552384  16G 83 Linux
/dev/sda2       33556478 41940991  8384514   4G  5 Extended
/dev/sda5       33556480 41940991  8384512   4G 82 Linux swap / Solaris


Disk /dev/sde: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

3.创建RAID5

root@debian:~# mdadm -Cv /dev/md0 -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd -x 1 /dev/sde		##创建并显示过程新建一个RAID5到/dev/md0里,设备数量为3,还有一个备份盘
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

4.查看详细信息

root@debian:~# mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Mon Oct 10 04:48:15 2022
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Mon Oct 10 04:50:00 2022
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : debian:0  (local to host debian)
              UUID : 309c7330:5d5e1d6d:dfcdb8b6:a271bad2
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       3       8       64        -      spare   /dev/sde

等待部署完成后将其格式化为Ext4格式

5.格式化为eXt4格式

root@debian:~# mkfs.ext4 /dev/md0 
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: b9e25901-cc14-46fb-aa62-4fa1b102b369
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done  

6.添加自动挂载

root@debian:~# mkdir /RAID5		##创建挂载目录
root@debian:~# echo "/dev/md0 /RAID5 ext4 defaults 0 0" >> /etc/fstab 	##添加自动挂载
root@debian:~# mount -a		##使挂载生效
root@debian:~# df		##查看挂载信息
Filesystem     1K-blocks     Used Available Use% Mounted on
udev             1989024        0   1989024   0% /dev
tmpfs             401776     6412    395364   2% /run
/dev/sda1       16447356  6749920   8842244  44% /
tmpfs            2008860       12   2008848   1% /dev/shm
tmpfs               5120        4      5116   1% /run/lock
tmpfs            2008860        0   2008860   0% /sys/fs/cgroup
/dev/sr0        47147918 47147918         0 100% /dvd
tmpfs             401772     4656    397116   2% /run/user/1000
tmpfs             401772        0    401772   0% /run/user/0
/dev/md0        40987872    49176  38826904   1% /RAID5

7.模拟故障

root@debian:~# mdadm /dev/md0  -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
root@debian:~# mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Mon Oct 10 04:48:15 2022
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Mon Oct 10 05:01:49 2022
             State : clean, degraded, recovering 
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 13% complete

              Name : debian:0  (local to host debian)
              UUID : 309c7330:5d5e1d6d:dfcdb8b6:a271bad2
            Events : 22

    Number   Major   Minor   RaidDevice State
       3       8       64        0      spare rebuilding   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty   /dev/sdb

可以看到/dev/sdb损坏后,备份盘/dev/sde立即顶替上去了并开始数据同步

8.删除故障盘重新添加

root@debian:~# mdadm /dev/md0 -r /dev/sdb		##删除故障盘
mdadm: hot removed /dev/sdb from /dev/md0
root@debian:~# mdadm /dev/md0 -a /dev/sdb		##添加一个新盘
mdadm: added /dev/sdb
root@debian:~# mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Mon Oct 10 04:48:15 2022
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Mon Oct 10 05:06:29 2022
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : debian:0  (local to host debian)
              UUID : 309c7330:5d5e1d6d:dfcdb8b6:a271bad2
            Events : 39

    Number   Major   Minor   RaidDevice State
       3       8       64        0      active sync   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       5       8       16        -      spare   /dev/sdb

可以看到/dev/sdb成为了备份盘

删除磁盘阵列

root@debian:~# umount /RAID5 	##取消挂载
root@debian:~# mdadm /dev/md0 -f /dev/sde -r /dev/sde		###依次移出所有硬盘
mdadm: set /dev/sde faulty in /dev/md0
mdadm: hot removed /dev/sde from /dev/md0
root@debian:~# mdadm /dev/md0 -f /dev/sdc -r /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
mdadm: hot removed /dev/sdc from /dev/md0
root@debian:~# mdadm /dev/md0 -f /dev/sdd -r /dev/sdd
mdadm: set /dev/sdd faulty in /dev/md0
mdadm: hot removed /dev/sdd from /dev/md0
root@debian:~# mdadm /dev/md0 -f /dev/sdb -r /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
mdadm: hot removed /dev/sdb from /dev/md0
root@debian:~# mdadm --stop  /dev/md0 	##删除RAID磁盘阵列
mdadm: stopped /dev/md0

RAID 10

RAID 1 0 简介

​ RAID 0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入各个物理硬盘中。也就是说,它的数据是分开存放的,其中任何一块硬盘发生故障都会导致整个系统的数据丢失。

​ RAID 0技术示意图

​ RAID 1是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用,只要保证有一块硬盘稳定运行,数据就不会出现损坏的情况,可靠性较高。但是因为是在多块硬盘设备中写入了相同的数据,因此硬盘设备的利用率得以下降。

第7章 使用RAID与LVM磁盘阵列技术第7章 使用RAID与LVM磁盘阵列技术

​ RAID 1技术示意图

​ RAID 1 0 顾名思义,是RAID 1+RAID 0技术的一个“组合体”。RAID 10需要至少4块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。这样从理论上来讲,只要坏的不是同一阵列中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据。由于RAID 10技术继承了RAID 0的高读写速度和RAID 1的数据安全性,在不考虑成本的情况下RAID 10的性能也超过了RAID 5,因此当前成为广泛使用的一种存储技术。

第7章 使用RAID与LVM磁盘阵列技术第7章 使用RAID与LVM磁盘阵列技术

​ RAID 10技术示意图

Tips
由于RAID 10是由RAID 1和RAID 0组成的,因此正确的叫法是“RAID一零”,而不是“RAID十”。


1.安装软件包

root@debian:~# apt install -y mdadm

2.查看磁盘

root@debian:~# fdisk -l
Disk /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
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 /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
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 /dev/sdd: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
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 /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb185de14

Device     Boot    Start      End  Sectors Size Id Type
/dev/sda1  *        2048 33554431 33552384  16G 83 Linux
/dev/sda2       33556478 41940991  8384514   4G  5 Extended
/dev/sda5       33556480 41940991  8384512   4G 82 Linux swap / Solaris


Disk /dev/sde: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

3.添加RAID 10

root@debian:~# mdadm -Cv /dev/md0 -l 10 -n 4  /dev/sd{b,c,d,e}

4.查看详细信息

root@debian:~# mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Mon Oct 10 05:19:08 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Mon Oct 10 05:20:13 2022
             State : clean, resyncing 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

     Resync Status : 36% complete

              Name : debian:0  (local to host debian)
              UUID : bdf3f1a0:06c0b66c:5b859d41:47969f66
            Events : 6

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde
root@debian:~# 

5.格式化为EXT4格式

root@debian:~# mkfs.ext4 /dev/md0 
mke2fs 1.44.5 (15-Dec-2018)
/dev/md0 contains a ext4 file system
        last mounted on Mon Oct 10 04:56:42 2022
Proceed anyway? (y,N) y
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 419fd096-6fee-443b-896f-45970567e2a3
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done 

6.添加自动挂载

root@debian:~# mkdir /RAID10
root@debian:~# echo "/dev/md0 /RAID10 ext4 defaults 0 0" >> /etc/fstab 
root@debian:~# mount -a
root@debian:~# df
Filesystem     1K-blocks     Used Available Use% Mounted on
udev             1989024        0   1989024   0% /dev
tmpfs             401776     6416    395360   2% /run
/dev/sda1       16447356  6749932   8842232  44% /
tmpfs            2008860       12   2008848   1% /dev/shm
tmpfs               5120        4      5116   1% /run/lock
tmpfs            2008860        0   2008860   0% /sys/fs/cgroup
/dev/sr0        47147918 47147918         0 100% /dvd
tmpfs             401772     4656    397116   2% /run/user/1000
tmpfs             401772        0    401772   0% /run/user/0
/dev/md0        40987872    49176  38826904   1% /RAID10

7.模拟故障

 root@debian:~# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
root@debian:~# mdadm /dev/md0 -f /dev/sdd
mdadm: set /dev/sdd faulty in /dev/md0
root@debian:~# mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Mon Oct 10 05:19:08 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Mon Oct 10 05:26:20 2022
             State : clean, degraded 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 2
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : debian:0  (local to host debian)
              UUID : bdf3f1a0:06c0b66c:5b859d41:47969f66
            Events : 24

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       32        1      active sync set-B   /dev/sdc
       -       0        0        2      removed
       3       8       64        3      active sync set-B   /dev/sde

       0       8       16        -      faulty   /dev/sdb
       2       8       48        -      faulty   /dev/sdd

只要有一组硬盘没有损坏就可以


LVM逻辑卷管理器

​ 硬盘设备管理技术虽然能够有效地提高硬盘设备的读写速度以及数据的安全性,但是在硬盘分好区或者部署为RAID磁盘阵列之后,再想修改硬盘分区大小就不容易了。换句话说,当用户想要随着实际需求的变化调整硬盘分区的大小时,会受到硬盘“灵活性”的限制。这时就需要用到另外一项非常普及的硬盘设备资源管理技术了—逻辑卷管理器(Logical Volume Manager,LVM)。LVM允许用户对硬盘资源进行动态调整。

​ LVM是Linux系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。而LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。

​ 为了更好理解,我们来看一个吃货的例子。比如小明家里想吃馒头,但是面粉不够了,于是妈妈从隔壁老王家、老李家、老张家分别借来一些面粉,准备蒸馒头吃。首先需要把这些面粉(物理卷[Physical Volume,PV])揉成一个大面团(卷组[Volume Group],VG),然后再把这个大面团分割成一个个小馒头(逻辑卷[Logical Volume,LV]),而且每个小馒头的重量必须是每勺面粉(基本单元[Physical Extent,PE])的倍数。

在日常的使用中,如果卷组(VG)的剩余容量不足,可以随时将新的物理卷(PV)加入到里面,进行不断地扩容。由于担心同学们还是不理解,这里准备了一张逻辑卷管理器的使用流程示意图,

物理卷处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列。卷组建立在物理卷之上,一个卷组能够包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。这就是LVM的核心理念。

LVM命令

部署时,需要逐个配置物理卷、卷组和逻辑卷,常用的部署命令

功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展 vgextend lvextend
缩小 vgreduce lvreduce

1.安装软件包

root@debian:~# apt install -y lvm2

2.查看硬盘

root@debian:~# fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb185de14

Device     Boot    Start      End  Sectors Size Id Type
/dev/sda1  *        2048 33554431 33552384  16G 83 Linux
/dev/sda2       33556478 41940991  8384514   4G  5 Extended
/dev/sda5       33556480 41940991  8384512   4G 82 Linux swap / Solaris


Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
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 /dev/sdc: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

3.新建物理卷

可以理解为使这两块硬盘支持LVM技术

root@debian:~# pvcreate /dev/sdb /dev/sdc 
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

4.加入卷组

将两块硬盘加入名为storge的卷组

root@debian:~# vgcreate storge /dev/sdb /dev/sdc
  Volume group "storge" successfully created
root@debian:~# vgdisplay 	##查看卷组信息
  --- Volume group ---
  VG Name               storge
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               39.99 GiB
  PE Size               4.00 MiB
  Total PE              10238
  Alloc PE / Size       0 / 0   
  Free  PE / Size       10238 / 39.99 GiB
  VG UUID               qZeqB8-MKSd-qv2B-kAkH-jLh6-XSJu-FL2vdy

5.切割逻辑卷

在storge切割一个37×4MB=148MB名为vo逻辑卷

也可以使用-L 150M来生成一个150MB的逻辑卷

root@debian:~# lvcreate -n vo -l 37 storge
  Logical volume "vo" created.
root@debian:~# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/storge/vo
  LV Name                vo
  VG Name                storge
  LV UUID                952nj2-dOqc-kZos-CpFp-lBa0-nx6A-L4XGVt
  LV Write Access        read/write
  LV Creation host, time debian, 2022-10-10 21:21:58 -0400
  LV Status              available
  # open                 0
  LV Size                148.00 MiB
  Current LE             37
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

6.格式化逻辑卷

root@debian:~# mkfs.ext4 /dev/storge/vo 
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 151552 1k blocks and 38000 inodes
Filesystem UUID: 15ff4919-485e-4802-9ff6-42e4a02e7c68
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done 

7.添加自动挂载

root@debian:~# mkdir /lvm
root@debian:~# echo "/dev/storge/vo /lvm ext4 defaults 0 0" >> /etc/fstab 
root@debian:~# mount -a
root@debian:~# df
Filesystem            1K-blocks     Used Available Use% Mounted on
udev                    1989024        0   1989024   0% /dev
tmpfs                    401776     6352    395424   2% /run
/dev/sda1              16447356  6724560   8867604  44% /
tmpfs                   2008860        0   2008860   0% /dev/shm
tmpfs                      5120        4      5116   1% /run/lock
tmpfs                   2008860        0   2008860   0% /sys/fs/cgroup
/dev/sr0               47147918 47147918         0 100% /dvd
tmpfs                    401772     3496    398276   1% /run/user/1000
tmpfs                    401772        0    401772   0% /run/user/0
/dev/mapper/storge-vo    142649     1550    130491   2% /lvm

扩容逻辑卷

在前面的实验中,卷组是由两块硬盘设备共同组成的。用户在使用存储设备时感知不到设备底层的架构和布局,更不用关心底层是由多少块硬盘组成的,只要卷组中有足够的资源,就可以一直为逻辑卷扩容。扩容前请一定要记得卸载设备和挂载点的关联。

1.取消挂载

root@debian:~# umount /lvm 

2.扩容至300MB

root@debian:~# lvextend -L 300M /dev/storge/vo 		##扩容至300MB
  Size of logical volume storge/vo changed from 148.00 MiB (37 extents) to 300.00 MiB (75 extents).
  Logical volume storge/vo successfully resized.

3.检查硬盘完整性

root@debian:~# e2fsck -f /dev/storge/vo 
e2fsck 1.44.5 (15-Dec-2018)
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/storge/vo: 11/38000 files (0.0% non-contiguous), 10453/155648 blocks

4.重置设备在系统中的容量

root@debian:~# resize2fs /dev/storge/vo 
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/storge/vo to 307200 (1k) blocks.
The filesystem on /dev/storge/vo is now 307200 (1k) blocks long.

5.挂载

root@debian:~# mount -a
root@debian:~# df -h
Filesystem             Size  Used Avail Use% Mounted on
udev                   1.9G     0  1.9G   0% /dev
tmpfs                  393M  6.3M  387M   2% /run
/dev/sda1               16G  6.5G  8.5G  44% /
tmpfs                  2.0G     0  2.0G   0% /dev/shm
tmpfs                  5.0M  4.0K  5.0M   1% /run/lock
tmpfs                  2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sr0                45G   45G     0 100% /dvd
tmpfs                  393M  3.5M  389M   1% /run/user/1000
tmpfs                  393M     0  393M   0% /run/user/0
/dev/mapper/storge-vo  287M  2.1M  266M   1% /lvm

缩小逻辑卷

相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,数据丢失的风险更大。所以在生产环境中执行相应操作时,一定要提前备份好数据。另外,Linux系统规定,在对LVM逻辑卷进行缩容操作之前,要先检查文件系统的完整性(当然这也是为了保证数据的安全)。在执行缩容操作前记得先把文件系统卸载掉。

1.取消挂载

root@debian:~# unmount /lvm

2.检查完整性

root@debian:~# e2fsck -f /dev/storge/vo 
e2fsck 1.44.5 (15-Dec-2018)
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/storge/vo: 11/76000 files (0.0% non-contiguous), 15759/307200 blocks

3.通知系统逻辑卷vo容量缩小到120MB

root@debian:~# resize2fs /dev/storge/vo  120M
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/storge/vo to 122880 (1k) blocks.
The filesystem on /dev/storge/vo is now 122880 (1k) blocks long.

4.缩小逻辑卷至120M

root@debian:~# lvreduce -L 120M /dev/storge/vo 
  WARNING: Reducing active logical volume to 120.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce storge/vo? [y/n]: y
  Size of logical volume storge/vo changed from 300.00 MiB (75 extents) to 120.00 MiB (30 extents).
  Logical volume storge/vo successfully resized.