读书笔记——L...

Linux Chapter07——使用RAID与LVM磁盘阵列技

2023-11-28  本文已影响0人  So_ProbuING

RAID独立冗余磁盘阵列

RAID技术通过把多个硬盘组合成一个容量更大、安全性更好的磁盘阵列。并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果
出于成本和技术方面的考虑,需要针对不同的需求在数据可靠性及读写性能上做出权衡,制定出满足各自需求的不同方案。最常见的方案如下


RAID0、1、5、10

RAID0

RAID0技术把多块物理硬盘设备通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入各个物理硬盘中。

RAID1

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


RAID1

RAID1优缺点

RAID5

RAID5技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID磁盘阵列中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上。

RAID 10

RAID10技术是RAID1+RAID0的一个“组合体”
RAID10至少需要4块硬盘来搭建

在RAID10中只要坏的不是同一阵列中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据

部署磁盘阵列

在Linux中,我们可以使用mdadm命令,用于创建、调整、监控和管理RAID设备

mdadm 参数 硬盘名称
mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sdc /dev/sdd /dev/sde /dev/sdf 
表示创建 名称为 /dev/md0的磁盘阵列
-v 参数显示创建的过程
-n 4 表示使用4块硬盘来部署这个RAID磁盘阵列
-l 10 代表选择RAID10方案
然后再加上4块硬盘的名称

使用-Q查看简要信息

[root@linuxprobe ~]# mdadm -Q /dev/md0
/dev/md0: 39.97GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

将RAID磁盘阵列格式化为Ext4格式

[root@linuxprobe ~]# mkfs.ext4 /dev/md0
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 0fc0f7e4-b49b-4280-b4e0-64efee997b70
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@linuxprobe ~]# mkdir /RAID
[root@linuxprobe ~]# mount /dev/md0 /RAID 

查看/dev/md0磁盘阵列设备的详细信息,确认RAID级别、阵列大小和硬盘总数

[root@linuxprobe ~]# mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Wed Nov 29 15:17:42 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 : Wed Nov 29 15:21:42 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 : linuxprobe:0  (local to host linuxprobe)
              UUID : 78b10560:670df6f8:0d021f2c:42d96621
            Events : 19

    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync set-A   /dev/sdc
       1       8       48        1      active sync set-B   /dev/sdd
       2       8       64        2      active sync set-A   /dev/sde
       3       8       80        3      active sync set-B   /dev/sdf

将创建好的磁盘阵列RAID添加到/etc/fstab文件中,这样可以确保在每次重启后RAID磁盘阵列都会生效

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

损坏磁盘阵列及修复

模拟一下故障。使得一块硬盘故障

[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
[root@linuxprobe ~]# mdadm -D /dev/md0
[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md0

购买了新的硬盘设备后再使用mdadm命令予以替换即可。更换故障的硬盘后再次使用-a参数进行添加操作,系统默认会自动开始数据的同步工作,使用-D参数即可看到整个过程和进度

[root@linuxprobe ~]# mdadm /dev/md0 -a /dev/sdc 
mdadm: added /dev/sdc
[root@linuxprobe ~]# mdadm -D /dev/md0 

磁盘阵列+备份盘

RAID10磁盘阵列中最多允许50%的硬盘设备发生故障。如果同一RAID1磁盘阵列中的硬盘设备若全部损坏,就会导致数据丢失。在这样的情况,我们可以使用RAID备份盘技术来预防这类事故,该技术的和新就是 需要准备一块足够大的盘,这块硬盘平时处于闲置状态,一旦RAID磁盘阵列中有硬盘出现故障就会自动替换上去

删除磁盘阵列

mdadm -S /dev/md0

LVM 逻辑卷管理器

LVM允许用户对硬盘资源进行动态调整
LVM是Linux系统用于对硬盘分区进行管理的一种机制。为了解决硬盘设备在创建分区后不易修改区分大小的缺陷。LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层提供了一个抽象的卷组。可以把多块硬盘进行卷组合并。这样,用户不必关心物理设备的底层架构和布局,可以实现对硬盘分区的动态调整。

各组件间的关系

部署逻辑卷

常用的LVM部署命令


常用的LVM部署命令

新添加两块硬盘
让新添加的两块硬盘设备支持LVM技术

[root@linuxprobe ~]# pvcreate /dev/sdb /dev/sdc
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

把两块硬盘设备加入到storage卷组中

[root@linuxprobe ~]# vgcreate storage /dev/sdb /dev/sdc
Volume group "storage" successfully created
[root@linuxprobe ~]# vgdisplay

切割出一个约为150MB的逻辑卷设备

[root@linuxprobe ~]# lvcreate -n vo -l 37 storage

把生成好的逻辑卷进行格式化然后挂载使用

[root@linuxprobe ~]# mkfs.ext4 /dev/storage/vo 
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 151552 1k blocks and 38000 inodes
Filesystem UUID: 3eb7ebe0-f2d4-40f8-bfa9-af084f7fc952
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 

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

echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0">> /etc/

扩容逻辑卷

下面对刚才的分的LVM卷进行扩容
扩容前先卸载设备和挂载点的关联

[root@linuxprobe ~]# umount /linuxprobe 
  1. 把上一个实验中的逻辑卷vo扩展至290MB
[root@linuxprobe ~]# lvextend -L 290M /dev/storage/vo 
  Rounding size to boundary between physical extents: 292.00 MiB.
  Size of logical volume storage/vo changed from 148.00 MiB (37 extents) to 292.00 MiB (73 extents).
  Logical volume storage/vo successfully resized
  1. 检查硬盘的完整性,确认目录结构、内容和文件内容没有丢失
[root@linuxprobe ~]# e2fsck -f /dev/storage/vo 
e2fsck 1.44.3 (10-July-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/storage/vo: 11/38000 files (0.0% non-contiguous), 10453/151552 blocks
  1. 重置设备在系统中农的容量,刚才是对LV设备进行扩容操作,但系统内核还没有同步到这部分新修改的信息。需要手动进行同步
[root@linuxprobe ~]# resize2fs /dev/storage/vo 
resize2fs 1.44.3 (10-July-2018)
Resizing the filesystem on /dev/storage/vo to 299008 (1k) blocks.
The filesystem on /dev/storage/vo is now 299008 (1k) blocks long.
  1. 重新挂载硬盘设备并查看挂载状态
[root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
devtmpfs                959M     0  959M   0% /dev
tmpfs                   976M     0  976M   0% /dev/shm
tmpfs                   976M  9.7M  966M   1% /run
tmpfs                   976M     0  976M   0% /sys/fs/cgroup
/dev/mapper/rhel-root    17G  4.8G   13G  28% /
/dev/nvme0n1p1         1014M  193M  822M  19% /boot
/dev/sda1               2.0G   76M  2.0G   4% /newFS
/dev/sr0                6.7G  6.7G     0 100% /media/cdrom
tmpfs                   196M   16K  196M   1% /run/user/42
tmpfs                   196M  2.3M  193M   2% /run/user/0
/dev/mapper/storage-vo  279M  2.1M  259M   1% /linuxprobe (扩容完成)

缩小逻辑卷

相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,数据丢失的风险更大。所以在生产环境执行相应操作时,一定要提前备份数据。Linux系统规定,在对LVM逻辑卷进行缩容操作之前,要先检查文件系统的完整性

  1. 卸载文件系统
[root@linuxprobe ~]# umount /linuxprobe 

  1. 检查文件系统的完整性
[root@linuxprobe ~]# e2fsck -f /dev/storage/vo 
e2fsck 1.44.3 (10-July-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/storage/vo: 11/74000 files (0.0% non-contiguous), 15507/299008 blocks
  1. 通知系统内核将逻辑卷vo的容量减小120M
[root@linuxprobe ~]# resize2fs /dev/storage/vo 120M
resize2fs 1.44.3 (10-July-2018)
Resizing the filesystem on /dev/storage/vo to 122880 (1k) blocks.
The filesystem on /dev/storage/vo is now 122880 (1k) blocks long.

  1. 将LV(逻辑卷)的容量修改为120MB
[root@linuxprobe ~]# lvreduce -L 120M /dev/storage/vo 
  WARNING: Reducing active logical volume to 120.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce storage/vo? [y/n]: y
  Size of logical volume storage/vo changed from 292.00 MiB (73 extents) to 120.00 MiB (30 extents).
  Logical volume storage/vo successfully resized.
  1. 重新挂载文件系统并查看系统状态
[root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
devtmpfs                959M     0  959M   0% /dev
tmpfs                   976M     0  976M   0% /dev/shm
tmpfs                   976M  9.7M  966M   1% /run
tmpfs                   976M     0  976M   0% /sys/fs/cgroup
/dev/mapper/rhel-root    17G  4.8G   13G  28% /
/dev/nvme0n1p1         1014M  193M  822M  19% /boot
/dev/sda1               2.0G   76M  2.0G   4% /newFS
/dev/sr0                6.7G  6.7G     0 100% /media/cdrom
tmpfs                   196M   16K  196M   1% /run/user/42
tmpfs                   196M  2.3M  193M   2% /run/user/0
/dev/mapper/storage-vo  113M  1.6M  103M   2% /linuxprobe (缩容为113M)

逻辑卷快照

LVM还具备快照卷功能,类似于虚拟机的还原时间点功能

填坑 日后补

删除逻辑卷

当生产环境中想要重新部署LVM或者不再需要使用LVM时,则需要执行LVM删除操作。删除操作必须按照删除逻辑卷、卷组、物理卷设备这个顺序

  1. 取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数
[root@linuxprobe ~]# umount /linuxprobe 
[root@linuxprobe ~]# vim /etc/fstab 
  1. 删除逻辑卷设备
[root@linuxprobe ~]# vim /etc/fstab 
[root@linuxprobe ~]# lvremove /dev/storage/vo 
Do you really want to remove active logical volume storage/vo? [y/n]: y
  Logical volume "vo" successfully removed

  1. 删除卷组
[root@linuxprobe ~]# vgremove storage 
  Volume group "storage" successfully removed
  1. 删除物理卷
[root@linuxprobe ~]# pvremove /dev/sdb /dev/sdc 
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.

上一篇下一篇

猜你喜欢

热点阅读