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

RAID独立冗余磁盘阵列

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


RAID0、1、5、10

RAID0

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

  • 硬盘设备的读写性能会提升数倍

  • 若任意一块硬盘发生故障,将导致整个系统的数据都受到破坏。

  • RAID0技术能够有效地提升硬盘数据的吞吐速度,但不具备数据备份和错误修复能力

  • 数据被分别写入到不同的硬盘设备中,硬盘A和硬盘B设备会分别保存数据资料


    RAID0

RAID1

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


RAID1

RAID1优缺点

  • 写入数据时RAID1的速度会比RAID0低一些
  • 读取数据时,理论读取速度的峰值可以是硬盘数量的倍数
  • 只要有一块硬盘稳定运行,数据就不会损坏。可靠性较高

RAID5

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

  • RAID5技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。


    RAID5

    RAID5最少由3块硬盘组成,使用硬盘切割技术。当重复写入某个文件时,RAID5级别的磁盘阵列组只需要对应一个奇偶校验信息。效率更高、存储成本低

RAID 10

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

  • 两两制作RAID1磁盘阵列,以保证数据的安全,然后再对两个RAID1磁盘阵列实时RAID0,提高硬盘设备的读写速度


    RAID10

    从上图中得知,RAID10是先对信息进行分割,然后再两两一组制作镜像。也就是先将RAID 1作为最低级别的组合,然后再使用RAID 0将RAID 1磁盘阵列组合到一起,将它们视为一整块硬盘

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

部署磁盘阵列

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

mdadm 参数 硬盘名称
  • -a 检测设备名称
  • -n 指定设备数量
  • -l 指定RAID级别
  • -C 创建
  • -v 显示过程
  • -f 模拟设备损坏
  • -r 移除设备
  • -Q 查看摘要信息
  • -D 查看详细信息
  • -S 停止RAID磁盘阵列
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中的最底层,可以将其理解为物理硬盘、硬盘分区、或者RAID磁盘阵列
  • 卷组建立在物理卷之上,一个卷组能够包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。
  • 逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立之后可以动态地扩展或缩小空间

部署逻辑卷

常用的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.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容