Linux加强篇007-使用RAID与LVM磁盘阵列技术

简介: 山重水复疑无路,柳暗花明又一村

一、前言

悟已往之不谏知来者之可追实迷途其未远觉今而昨非。舟遥遥以轻飏风飘飘而吹衣。问征夫以前路恨晨光之熹微

第一版我已经全部放到我的精选里了,大家可以点开我的头像主页,选择精选观看,本系列依照《Linux就该这么学》第二版随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,学习起来我们既要多巴胺也要内啡肽。

趁着你还年轻,做一个牛逼的人,世上不缺伯乐,缺的是千里马,短期利益看工资,长期利益看发展,都不沾看自己是不是不够优秀,为啥会到如今这个地步,算一下自己的岁数,想想多少次想突破一下却望而却步,不肯迈出第一步。人生无心外之物,诸相皆由心生,不要老想着补短板,把长板加长,让别人看到你。踏踏实实学,天塌了都挨不着你来顶,送上一首天王的<周杰伦-蜗牛>,不够牛的时候请闭紧嘴巴,低下头做事。

7.1 RAID磁盘冗余阵列

RAID 0、RAID 1、RAID 5与RAID 10这4种最常见的方案。这4种方案的对比,n代表硬盘总数。

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

1. RAID 0

RAID 0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入各个物理硬盘中,数据被分别写入到不同的硬盘设备中,即硬盘A和硬盘B设备会分别保存数据资料,最终实现提升读取、写入速度的效果。

2. RAID 1

把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。

3. RAID 5

RAID5技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中,实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据,RAID 5最少由3块硬盘组成,使用的是硬盘切割(Disk Striping)技术。

4.  RAID 10

RAID 10技术是RAID 1+RAID 0技术的一个“组合体”RAID 10技术需要至少4块硬盘来组建,其中先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度,在不考虑成本的情况下RAID 10的性能也超过了RAID 5,因此当前成为广泛使用的一种存储技术。

7.1.1 部署磁盘阵列

在虚拟机中添加4块硬盘设备来制作一个RAID 10磁盘阵列,mdadm命令用于创建、调整、监控和管理RAID设备,语法格式为“mdadm参数 硬盘名称”之前的盘删掉,新增四块硬盘

image.png

  mdadm命令常用参数和作用

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

我在加盘之前,把旧盘给删了,这会导致一个问题,之前在/etc/fstab上边绑定的盘失效,然后会有一些异常,我们紧急登录后把这些配置删掉,[root@localhost ~]# systemctl reboot

使用mdadm命令创建RAID 10,名称为“/dev/md0”-C参数代表创建一个RAID阵列卡;在后面追加一个设备名称/dev/md0,/dev/md0就是创建后的RAID磁盘阵列的名称;-v参数显示创建的过程,-n 4参数代表使用4块硬盘来部署这个RAID磁盘阵列;而-l 10参数则代表RAID 10方案;最后再加上4块硬盘设备的名称

先查看一下盘名称:

[root@localhost ~]# lsblk  

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sr0          11:0    1 10.1G  0 rom  /run/media/centos8/CentOS-8-5-2111-x86_64-dvd

nvme0n1     259:0    0   20G  0 disk  

├─nvme0n1p1 259:1    0  300M  0 part /boot

├─nvme0n1p2 259:2    0    2G  0 part [SWAP]

└─nvme0n1p3 259:3    0 17.7G  0 part /

nvme0n2     259:4    0   20G  0 disk  

nvme0n3     259:5    0   20G  0 disk  

nvme0n4     259:6    0   20G  0 disk  

nvme0n5     259:7    0   20G  0 disk  

发现这四块盘后,我们再进行分配

[root@localhost ~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4 /dev/nvme0n5

mdadm: layout defaults to n2

mdadm: layout defaults to n2

mdadm: chunk size defaults to 512K

mdadm: size set to 20954112K

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

初始化过程大约需要1分钟左右,期间可以用-D参数进行查看。也可以用-Q参数查看简要信息:

[root@localhost ~]# mdadm -Q /dev/md0  

/dev/md0: 39.97GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

80G变成40G,也对应了RAID 10的存储方式,把制作好的RAID磁盘阵列格式化为Ext4格式:

[root@localhost ~]# mkfs.ext4 /dev/md0  

mke2fs 1.45.6 (20-Mar-2020)

Creating filesystem with 10477056 4k blocks and 2621440 inodes

Filesystem UUID: ced31587-3113-4b0e-9768-0151f26c0804

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  

创建挂载点,将硬盘设备进行挂载操作:

[root@localhost ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

devtmpfs        878M     0  878M   0% /dev

tmpfs           896M     0  896M   0% /dev/shm

tmpfs           896M  9.6M  886M   2% /run

tmpfs           896M     0  896M   0% /sys/fs/cgroup

/dev/nvme0n1p3   18G  7.1G   11G  41% /

/dev/nvme0n1p1  295M  194M  102M  66% /boot

tmpfs           179M   24K  179M   1% /run/user/1000

/dev/sr0         11G   11G     0 100% /run/media/centos8/CentOS-8-5-2111-x86_64-dvd

/dev/md0         40G   49M   38G   1% /RAID10

查看/dev/md0磁盘阵列设备的详细信息,确认RAID级别(Raid Level)、阵列大小(Array Size)和总硬盘数(Total Devices)都是否正确:

[root@localhost ~]# mdadm -D /dev/md0  

/dev/md0:

          Version : 1.2

    Creation Time : Thu Nov 23 09:58:23 2023

       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 : Thu Nov 23 10:20:49 2023

            State : clean  

   Active Devices : 4

  Working Devices : 4

   Failed Devices : 0

    Spare Devices : 0

           Layout : near=2

       Chunk Size : 512K

Consistency Policy : resync

             Name : localhost.localdomain:0  (local to host localhost.localdomain)

             UUID : 6d6c0abc:bb461271:f1b30a0b:b7d55fe5

           Events : 17

   Number   Major   Minor   RaidDevice State

      0     259        4        0      active sync set-A   /dev/nvme0n2

      1     259        5        1      active sync set-B   /dev/nvme0n3

      2     259        6        2      active sync set-A   /dev/nvme0n4

      3     259        7        3      active sync set-B   /dev/nvme0n5

将信息添加到/etc/fstab文件中,这样可以确保在每次重启后RAID磁盘阵列都是有效的

[root@localhost ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab

7.1.2 损坏磁盘阵列及修复

确认有一块物理硬盘设备出现损坏而不能再继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态,可以发现状态已经改变,使用的-f参数是让硬盘模拟损坏的效果。为了能够彻底地将故障盘移除:

[root@localhost ~]# mdadm /dev/md0 -f /dev/nvme0n2

mdadm: set /dev/nvme0n2 faulty in /dev/md0

[root@localhost ~]# mdadm /dev/md0 -r /dev/nvme0n2

mdadm: hot removed /dev/nvme0n2 from /dev/md0

在RAID 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响RAID 10磁盘阵列的使用,购买了新的硬盘设备后再使用mdadm命令予以替换即可,更换硬盘后再次使用-a参数进行添加操作,系统默认会自动开始数据的同步工作,在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到RAID磁盘阵列中。

硬盘发生故障,服务器上相应的指示灯也会变成红灯(或者变成一直闪烁的黄灯)

1701223403027.jpg

7.1.3 删除磁盘阵列

将所有的磁盘都设置成停用状态:

[root@localhost ~]# umount /RAID

[root@localhost ~]# mdadam -D /dev/md0

   Number   Major   Minor   RaidDevice State

      -       0        0        0      removed

      1     259        5        1      active sync set-B   /dev/nvme0n3

      2     259        6        2      active sync set-A   /dev/nvme0n4

      3     259        7        3      active sync set-B   /dev/nvme0n5

故障一台之后就不能停用另一台:

[root@localhost ~]# mdadm /dev/md0 -f /dev/nvme0n3

mdadm: set device faulty failed for /dev/nvme0n3:  Device or resource busy

这时我们终止RAID即可

[root@localhost ~]# mdadm -S /dev/md0

mdadm: stopped /dev/md0

删除相关设备文件

[root@localhost ~]# mdadm -r /dev/md0

mdadm: error opening /dev/md0: No such file or directory

7.1.4 磁盘阵列+备份盘

RAID 10磁盘阵列中最多允许50%的硬盘设备发生故障,但是存在这样一种极端情况,即同一RAID 1磁盘阵列中的硬盘设备若全部损坏,也会导致数据丢失,可以使用RAID备份盘技术来预防这类事故。该技术的核心理念就是准备一块足够大的硬盘,这块硬盘平时处于闲置状态,一旦RAID磁盘阵列中有硬盘出现故障后则会马上自动顶替上去。

部署RAID 5磁盘阵列时,至少需要用到3块硬盘,还需要再加一块备份硬盘(也叫热备盘),所以总计需要在虚拟机中模拟4块硬盘设备

创建一个RAID 5磁盘阵列+备份盘。在下面的命令中,参数-n 3代表创建这个RAID 5磁盘阵列所需的硬盘数,参数-l 5代表RAID的级别,而参数-x 1则代表有一块备份盘。当查看/dev/md0(即RAID 5磁盘阵列的名称)磁盘阵列的时候,就能看到有一块备份盘在等待中

[root@localhost ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4 /dev/nvme0n5

mdadm: layout defaults to left-symmetric

mdadm: layout defaults to left-symmetric

mdadm: chunk size defaults to 512K

mdadm: /dev/nvme0n2 appears to be part of a raid array:

      level=raid10 devices=4 ctime=Thu Nov 23 09:58:23 2023

mdadm: /dev/nvme0n3 appears to be part of a raid array:

      level=raid10 devices=4 ctime=Thu Nov 23 09:58:23 2023

mdadm: /dev/nvme0n4 appears to be part of a raid array:

      level=raid10 devices=4 ctime=Thu Nov 23 09:58:23 2023

mdadm: /dev/nvme0n5 appears to be part of a raid array:

      level=raid10 devices=4 ctime=Thu Nov 23 09:58:23 2023

mdadm: size set to 20954112K

Continue creating array? y

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

[root@localhost ~]# mdadm -D /dev/md0

/dev/md0:

          Version : 1.2

    Creation Time : Wed Nov 29 11:20:40 2023

       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 : Wed Nov 29 11:21:14 2023

            State : clean, degraded, recovering  

   Active Devices : 2

  Working Devices : 4

   Failed Devices : 0

    Spare Devices : 2

           Layout : left-symmetric

       Chunk Size : 512K

Consistency Policy : resync

   Rebuild Status : 35% complete

             Name : localhost.localdomain:0  (local to host localhost.localdomain)

             UUID : 2f7781e6:5a9c9b33:a740c87c:c0ab5f33

           Events : 6

   Number   Major   Minor   RaidDevice State

      0     259        4        0      active sync   /dev/nvme0n2

      1     259        5        1      active sync   /dev/nvme0n3

      4     259        6        2      spare rebuilding   /dev/nvme0n4

      3     259        7        -      spare   /dev/nvme0n5

将部署好的RAID 5磁盘阵列格式化为Ext4文件格式,然后挂载到目录上

[root@localhost ~]# mkfs.ext4 /dev/md0

mke2fs 1.45.6 (20-Mar-2020)

/dev/md0 contains a ext4 file system

last mounted on Thu Nov 23 10:20:18 2023

Proceed anyway? (y,N) y

Creating filesystem with 10477056 4k blocks and 2621440 inodes

Filesystem UUID: 59761aa9-ba71-4829-9486-15956b9149b2

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  

[root@localhost ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab

由3块硬盘组成的RAID 5磁盘阵列,其对应的可用空间是n-1,也就是40GB。热备盘的空间不计算进来,处于休眠状态,只有在意外出现时才会开始工作。

[root@localhost ~]# mount -a

[root@localhost ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

devtmpfs        878M     0  878M   0% /dev

tmpfs           896M     0  896M   0% /dev/shm

tmpfs           896M  9.3M  886M   2% /run

tmpfs           896M     0  896M   0% /sys/fs/cgroup

/dev/nvme0n1p3   18G  7.1G   11G  41% /

/dev/nvme0n1p1  295M  194M  102M  66% /boot

tmpfs           179M   12K  179M   1% /run/user/42

tmpfs           179M     0  179M   0% /run/user/0

/dev/md0         40G   49M   38G   1% /RAID

把硬盘设备/dev/nvme0n2移出磁盘阵列,然后迅速查看/dev/md0磁盘阵列的状态,就会发现备份盘已经被自动顶替上去并开始了数据同步

[root@localhost ~]# mdadm /dev/md0 -f /dev/nvme0n2

mdadm: set /dev/nvme0n2 faulty in /dev/md0

[root@localhost ~]# mdadm -D /dev/md0

/dev/md0:

          Version : 1.2

    Creation Time : Wed Nov 29 11:20:40 2023

       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 : Thu Nov 30 16:09:28 2023

            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 : 16% complete

             Name : localhost.localdomain:0  (local to host localhost.localdomain)

             UUID : 2f7781e6:5a9c9b33:a740c87c:c0ab5f33

           Events : 24

   Number   Major   Minor   RaidDevice State

      3     259        7        0      spare rebuilding   /dev/nvme0n5

      1     259        5        1      active sync   /dev/nvme0n3

      4     259        6        2      active sync   /dev/nvme0n4

      0     259        4        -      faulty   /dev/nvme0n2

后面想再添加一块热备盘进来,使用-a参数就可以

7.2 LVM逻辑卷管理器

逻辑卷管理器(Logical Volume Manager,LVM)。LVM允许用户对硬盘资源进行动态调整,在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。

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

卷组(VG)的剩余容量不足,可以随时将新的物理卷(PV)加入到里面,进行不断地扩容。

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

7.2.1 部署逻辑卷

 常用的LVM部署命令

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

将虚拟机还原到初始状态,并重新添加两块新硬盘设备

image.png

根据需求把合并后的卷组切割出一个约为150MB的逻辑卷设备,最后把这个逻辑卷设备格式化成Ext4文件系统后挂载使用

第1步:让新添加的两块硬盘设备支持LVM技术。

[root@localhost ~]# lsblk  

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sr0          11:0    1 10.1G  0 rom  

nvme0n1     259:0    0   20G  0 disk  

├─nvme0n1p1 259:1    0  300M  0 part /boot

├─nvme0n1p2 259:2    0    2G  0 part [SWAP]

└─nvme0n1p3 259:3    0 17.7G  0 part /

nvme0n2     259:4    0   20G  0 disk  

nvme0n3     259:5    0   20G  0 disk  

[root@localhost ~]# pvcreate /dev/nvme0n2 /dev/nvme0n3

 Physical volume "/dev/nvme0n2" successfully created.

 Physical volume "/dev/nvme0n3" successfully created.

第2步:把两块硬盘设备加入到weihongbin卷组中,然后查看卷组的状态。

[root@localhost ~]# vgcreate weihongbin /dev/nvme0n2 /dev/nvme0n3

 Volume group "weihongbin" successfully created

[root@localhost ~]# vgdisplay  

 --- Volume group ---

 VG Name               weihongbin

 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               2Jsrhk-Rl3b-wgJA-YVix-921P-joNQ-DGEpbh

第3步:再切割出一个约为150MB的逻辑卷设备。

在对逻辑卷进行切割时有两种计量单位。第一种是以容量为单位,所使用的参数为-L。使用-L 150M生成一个大小为150MB的逻辑卷。另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为4MB。使用-l 37可以生成一个大小为37×4MB=148MB的逻辑卷

[root@localhost ~]# lvcreate -n vo -l 37 weihongbin

 Logical volume "vo" created.

[root@localhost ~]# lvdisplay  

 --- Logical volume ---

 LV Path                /dev/weihongbin/vo

 LV Name                vo

 VG Name                weihongbin

 LV UUID                88vHc4-PTQe-wx2c-Ssi9-DuXe-MIff-Xb1l3e

 LV Write Access        read/write

 LV Creation host, time localhost.localdomain, 2023-11-30 16:29:03 +0800

 LV Status              available

 # open                 0

 LV Size                148.00 MiB

 Current LE             37

 Segments               1

 Allocation             inherit

 Read ahead sectors     auto

 - currently set to     8192

 Block device           253:0

第4步:把生成好的逻辑卷进行格式化,然后挂载使用。

[root@localhost ~]# mkfs.ext4 /dev/weihongbin/vo  

mke2fs 1.45.6 (20-Mar-2020)

Creating filesystem with 151552 1k blocks and 38000 inodes

Filesystem UUID: 77738f1a-73b5-4e8f-8eac-5886cd9fb375

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  

[root@localhost ~]# mkdir /weihongbin

[root@localhost ~]# mount /dev/weihongbin/vo /weihongbin

使用了逻辑卷管理器,则不建议用XFS文件系统,因为XFS文件系统自身就可以使用xfs_growfs命令进行磁盘扩容。

第5步:查看挂载状态,并写入配置文件,使其永久生效。

[root@localhost ~]# echo "/dev/weihongbin/vo /weihongbin ext4 defaults 0 0" >> /etc/fstab

[root@localhost ~]# df -h

Filesystem                 Size  Used Avail Use% Mounted on

devtmpfs                   878M     0  878M   0% /dev

tmpfs                      896M     0  896M   0% /dev/shm

tmpfs                      896M  9.3M  886M   2% /run

tmpfs                      896M     0  896M   0% /sys/fs/cgroup

/dev/nvme0n1p3              18G  7.1G   11G  41% /

/dev/nvme0n1p1             295M  194M  102M  66% /boot

tmpfs                      179M   12K  179M   1% /run/user/42

tmpfs                      179M     0  179M   0% /run/user/0

/dev/mapper/weihongbin-vo  140M  1.6M  128M   2% /weihongbin

7.2.2 扩容逻辑卷

只要卷组中有足够的资源,就可以一直为逻辑卷扩容。扩容前请一定要记得卸载设备和挂载点的关联。

[root@localhost ~]# umount /weihongbin  

第1步:把上一个实验中的逻辑卷vo扩展至290MB。

[root@localhost ~]# lvextend -L 290M /dev/weihongbin/vo  

 Rounding size to boundary between physical extents: 292.00 MiB.

 Size of logical volume weihongbin/vo changed from 148.00 MiB (37 extents) to 292.00 MiB (73 extents).

 Logical volume weihongbin/vo successfully resized.

第2步:检查硬盘的完整性,确认目录结构、内容和文件内容没有丢失。一般情况下没有报错,均为正常情况。

[root@localhost ~]# e2fsck -f /dev/weihongbin/vo  

e2fsck 1.45.6 (20-Mar-2020)

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/weihongbin/vo: 11/38000 files (0.0% non-contiguous), 10453/151552 blocks

第3步:重置设备在系统中的容量。刚刚是对LV(逻辑卷)设备进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步。

[root@localhost ~]# resize2fs /dev/weihongbin/vo  

resize2fs 1.45.6 (20-Mar-2020)

Resizing the filesystem on /dev/weihongbin/vo to 299008 (1k) blocks.

The filesystem on /dev/weihongbin/vo is now 299008 (1k) blocks long.

第4步:重新挂载硬盘设备并查看挂载状态。

[root@localhost ~]# mount -a

[root@localhost ~]# df -h

Filesystem                 Size  Used Avail Use% Mounted on

devtmpfs                   878M     0  878M   0% /dev

tmpfs                      896M     0  896M   0% /dev/shm

tmpfs                      896M  9.3M  886M   2% /run

tmpfs                      896M     0  896M   0% /sys/fs/cgroup

/dev/nvme0n1p3              18G  7.1G   11G  41% /

/dev/nvme0n1p1             295M  194M  102M  66% /boot

tmpfs                      179M   12K  179M   1% /run/user/42

tmpfs                      179M     0  179M   0% /run/user/0

/dev/mapper/weihongbin-vo  279M  2.1M  259M   1% /weihongbin

7.2.3 缩小逻辑卷

相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,数据丢失的风险更大。所以在生产环境中执行相应操作时,一定要提前备份好数据。在执行缩容操作前记得先把文件系统卸载掉。

[root@localhost ~]# umount /weihongbin

第1步:检查文件系统的完整性。

[root@localhost ~]# e2fsck -f /dev/weihongbin/vo  

e2fsck 1.45.6 (20-Mar-2020)

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/weihongbin/vo: 11/74000 files (0.0% non-contiguous), 15507/299008 blocks

第2步:通知系统内核将逻辑卷vo的容量减小到120MB。

[root@localhost ~]# resize2fs /dev/weihongbin/vo 120M

resize2fs 1.45.6 (20-Mar-2020)

Resizing the filesystem on /dev/weihongbin/vo to 122880 (1k) blocks.

The filesystem on /dev/weihongbin/vo is now 122880 (1k) blocks long.

第3步:将LV逻辑卷的容量修改为120M。

[root@localhost ~]# lvreduce -L 120M /dev/weihongbin/vo  

 WARNING: Reducing active logical volume to 120.00 MiB.

 THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce weihongbin/vo? [y/n]: y

 Size of logical volume weihongbin/vo changed from 292.00 MiB (73 extents) to 120.00 MiB (30 extents).

 Logical volume weihongbin/vo successfully resized.

第4步:重新挂载文件系统并查看系统状态。

[root@localhost ~]# mount -a

[root@localhost ~]# df -h

Filesystem                 Size  Used Avail Use% Mounted on

devtmpfs                   878M     0  878M   0% /dev

tmpfs                      896M     0  896M   0% /dev/shm

tmpfs                      896M  9.3M  886M   2% /run

tmpfs                      896M     0  896M   0% /sys/fs/cgroup

/dev/nvme0n1p3              18G  7.1G   11G  41% /

/dev/nvme0n1p1             295M  194M  102M  66% /boot

tmpfs                      179M   12K  179M   1% /run/user/42

tmpfs                      179M     0  179M   0% /run/user/0

/dev/mapper/weihongbin-vo  113M  1.6M  103M   2% /weihongbin

实际内存有3%左右的“缩水”,所以是113而不是120

7.2.4 逻辑卷快照

LVM还具备有“快照卷”功能,该功能类似于虚拟机软件的还原时间点功能。

LVM的快照卷功能有两个特点:快照卷的容量必须等同于逻辑卷的容量;快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。

看看VG(卷组)中的容量是否够用:

[root@localhost ~]# vgdisplay  

 --- Volume group ---

 VG Name               weihongbin

 System ID              

 Format                lvm2

 Metadata Areas        2

 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                2

 Act PV                2

 VG Size               39.99 GiB

 PE Size               4.00 MiB

 Total PE              10238

 Alloc PE / Size       30 / 120.00 MiB

 Free  PE / Size       10208 / <39.88 GiB

 VG UUID               2Jsrhk-Rl3b-wgJA-YVix-921P-joNQ-DGEpbh

卷组中已经使用了120MB的容量,空闲容量还有39.88GB

重定向往逻辑卷设备所挂载的目录中写入一个文件。

[root@localhost ~]# echo "123" > /weihongbin/test.txt

[root@localhost ~]# ll /weihongbin/

total 14

drwx------. 2 root root 12288 Nov 30 16:30 lost+found

-rw-r--r--. 1 root root     4 Nov 30 16:53 test.txt

第1步:使用-s参数生成一个快照卷,使用-L参数指定切割的大小,需要与要做快照的设备容量保持一致。

[root@localhost ~]# lvcreate -L 120M -s -n KUAIZHAO /dev/weihongbin/vo

 Logical volume "KUAIZHAO" created.

[root@localhost ~]# lvdisplay  

 --- Logical volume ---

 LV Path                /dev/weihongbin/KUAIZHAO

 LV Name                KUAIZHAO

 VG Name                weihongbin

 LV UUID                cYz6Wy-pv9T-W7w8-EX2S-oOpC-GeBq-XW03UE

 LV Write Access        read/write

 LV Creation host, time localhost.localdomain, 2023-11-30 16:56:56 +0800

 LV snapshot status     active destination for vo

 LV Status              available

 # open                 0

 LV Size                120.00 MiB

 Current LE             30

 COW-table size         120.00 MiB

 COW-table LE           30

 Allocated to snapshot  0.01%

 Snapshot chunk size    4.00 KiB

 Segments               1

 Allocation             inherit

 Read ahead sectors     auto

 - currently set to     256

 Block device           253:3

第2步:在逻辑卷所挂载的目录中创建一个100MB的垃圾文件,然后再查看快照卷的状态。

[root@localhost ~]# dd if=/dev/zero of=/weihongbin/files count=1 bs=100M

1+0 records in

1+0 records out

104857600 bytes (105 MB, 100 MiB) copied, 1.31263 s, 79.9 MB/s

[root@localhost ~]# lvdisplay  

 --- Logical volume ---

 LV Path                /dev/weihongbin/KUAIZHAO

 LV Name                KUAIZHAO

 VG Name                weihongbin

 LV UUID                cYz6Wy-pv9T-W7w8-EX2S-oOpC-GeBq-XW03UE

 LV Write Access        read/write

 LV Creation host, time localhost.localdomain, 2023-11-30 16:56:56 +0800

 LV snapshot status     active destination for vo

 LV Status              available

 # open                 0

 LV Size                120.00 MiB

 Current LE             30

 COW-table size         120.00 MiB

 COW-table LE           30

 Allocated to snapshot  83.71%

 Snapshot chunk size    4.00 KiB

 Segments               1

 Allocation             inherit

 Read ahead sectors     auto

 - currently set to     256

 Block device           253:3

第3步:为了校验快照卷的效果,需要对逻辑卷进行快照还原操作。lvconvert命令用于管理逻辑卷的快照,语法格式为“lvconvert [参数]快照卷名称”。使用lvconvert命令能自动恢复逻辑卷的快照,输入--merge参数进行操作,系统会自动分辨设备的类型。

[root@localhost ~]# umount /weihongbin  

[root@localhost ~]# lvconvert --merge /dev/weihongbin/KUAIZHAO  

 Merging of volume weihongbin/KUAIZHAO started.

 weihongbin/vo: Merged: 100.00%

第4步:快照卷会被自动删除掉,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的100MB的垃圾文件也被清除了。

[root@localhost ~]# mount -a

[root@localhost ~]# ll /weihongbin/

total 14

drwx------. 2 root root 12288 Nov 30 16:30 lost+found

-rw-r--r--. 1 root root     4 Nov 30 16:53 test.txt

7.2.5 删除逻辑卷

重新部署LVM或者不再需要使用LVM时,则需要执行LVM的删除操作。需要提前备份好重要的数据信息,然后依次删除逻辑卷、卷组、物理卷设备,这个顺序不可颠倒。

第1步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。

[root@localhost ~]# umount /weihongbin  

[root@localhost ~]# vim /etc/fstab  

/dev/weihongbin/vo /weihongbin ext4 defaults 0 0

第2步:删除逻辑卷设备,需要输入y来确认操作。删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。删除物理卷设备。(顺序不能错)

[root@localhost ~]# lvremove  /dev/weihongbin/vo  

Do you really want to remove active logical volume weihongbin/vo? [y/n]: y

 Logical volume "vo" successfully removed.

[root@localhost ~]# vgremove weihongbin  

 Volume group "weihongbin" successfully removed

[root@localhost ~]# pvremove /dev/nvme0n2 /dev/nvme0n3

 Labels on physical volume "/dev/nvme0n2" successfully wiped.

 Labels on physical volume "/dev/nvme0n3" successfully wiped.

二、巩固练习

1.RAID技术主要是为了解决什么问题?

答:RAID技术可以解决存储设备的读写速度问题及数据的冗余备份问题。

2.RAID 0和RAID 5哪个更安全?

答:RAID 0没有数据冗余功能,因此RAID 5更安全。

3.假设使用4块硬盘来部署RAID 10方案,外加一块备份盘,最多可以允许几块硬盘同时损坏呢?

答:最多允许5块硬盘设备中的3块设备同时损坏。

4.位于LVM最底层的是物理卷还是卷组?

答:最底层的是物理卷,然后再通过物理卷组成卷组。

5.LVM对逻辑卷的扩容和缩容操作有何异同点呢?

答:扩容和缩容操作都需要先取消逻辑卷与目录的挂载关联;扩容操作是先扩容后检查文件系统完整性,而缩容操作为了保证数据的安全,需要先检查文件系统完整性再缩容。

6.LVM的快照卷能使用几次?

答:只可使用一次,而且使用后即自动删除。

7.LVM的删除顺序是怎么样的?

答:依次移除逻辑卷、卷组和物理卷。

三、跋文

如果想上手操作的同学们可以通过阿里云ecs服务器免费试用参与或低价购买专属于自己的服务器入口如下

入口一:新老同学免费试用

入口二:新人服务器特惠礼包

入口三:大学生版低价特惠服务器

入口四:云服务器首购特惠&免费试用

入口五:云服务器特惠1.5折起

入口六:低价特惠建站

入口七:阿里云最新活动页

入口八:中小企业权益满减礼包

目录
相关文章
|
2月前
|
Ubuntu Linux Shell
Linux系统中如何查看磁盘情况
【9月更文挑战第3天】在Linux系统中,有多种方式查看磁盘情况。可通过命令行工具`df`查看文件系统磁盘使用情况,选项`-h`以人类可读格式显示,`-T`显示文件系统类型;`du`命令显示目录或文件磁盘使用情况,`-h`以人类可读格式显示,`-s`仅显示总计;`fdisk -l`列出磁盘和分区信息。此外,图形界面的磁盘管理工具和文件管理器也可用于查看磁盘使用情况。这些方法有助于更好地管理磁盘空间。
550 4
|
1月前
|
Linux 虚拟化
Vmware 傻瓜式安装(不可不知道的Linux基础知识和技术 01)
本文介绍了VMware虚拟机的下载与安装步骤。首先,通过提供的网盘链接下载VMware安装包。接着,详细描述了安装流程,包括接受协议、选择安装路径(建议避免系统C盘)、取消更新选项等。最后,输入许可证密钥完成安装,并展示了打开虚拟机后的主界面。整个过程简单易懂,适合新手操作。
136 1
|
1月前
|
Unix Linux 对象存储
Linux 磁盘管理
Linux 磁盘管理
33 1
|
2月前
|
存储 Linux 5G
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
这篇文章介绍了LVM(逻辑卷管理)如何提供灵活的磁盘管理方式,允许动态调整逻辑卷的大小而不会丢失数据。
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
|
1月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
55 0
|
1月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
38 0
|
2月前
|
安全 Linux Android开发
Linux CFI (Control-flow integrity)技术相关资料汇总
Linux CFI (Control-flow integrity)技术相关资料汇总
|
安全 Linux 数据安全/隐私保护
14.2 【Linux】软件磁盘阵列(Software RAID)
14.2 【Linux】软件磁盘阵列(Software RAID)
136 0