写点什么

磁盘管理 -Linux 系统磁盘管理

  • 2022 年 8 月 02 日
  • 本文字数:5268 字

    阅读完需:约 17 分钟

磁盘管理-Linux系统磁盘管理

关于 RAID 磁盘阵列的介绍可以看我之前发布的一篇文章基本磁盘与动态磁盘 RAID磁盘冗余阵列区分



mdadm 命令

mdadm 命令用于管理 Linux 系统中的软件 RAID 硬盘阵列,


格式为“mdadm [模式] <RAID 设备名称> [选项] [成员设备名称]”。


当前,生产环境中用到的服务器一般都配备 RAID 阵列卡,尽管服务器的价格越来越便宜,但是我们没有必要为了做一个实验而去单独购买一台服务器,


而是可以会用 mdadm 命令在 Linux 系统中创建和管理软件 RAID 磁盘阵列,而且它涉及的理论知识的操作过程与生产环境中的完全一致。


mdadm 命令的常用参数以及作用如表所示。




创建 RAID10

此时,就需要使用 mdadm 中的参数了。


其中,-C 参数代表创建一个 RAID 阵列卡;


-v 参数显示创建的过程,同时在后面追加一个设备名称/dev/md0,这样/dev/md0 就是创建后的 RAID 磁盘阵列的名称;


-a yes 参数代表自动创建设备文件;


-n 4 参数代表使用 4 块硬盘来部署这个 RAID 磁盘阵列;


而-l 10 参数则代表 RAID 10 方案;最后再加上 4 块硬盘设备的名称就搞定了。

使用 mdadm 命令创建 RAID 10,名称为“/dev/md0”。
[root@liza ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sdemdadm: layout defaults to n2mdadm: layout defaults to n2mdadm: chunk size defaults to 512Kmdadm: size set to 20954624Kmdadm: Defaulting to version 1.2 metadatamdadm: array /dev/md0 started.
复制代码
其次,把制作好的 RAID 磁盘阵列格式化为 ext4 格式。
[root@liza ~]# mkfs.ext4 /dev/md0mke2fs 1.42.9 (28-Dec-2013)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=128 blocks, Stripe width=256 blocks2621440 inodes, 10477312 blocks523865 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=2157969408320 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,4096000, 7962624Allocating group tables: doneWriting inode tables: doneCreating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: done 
复制代码
再次,创建挂载点然后把硬盘设备进行挂载操作。挂载成功后可看到可用空间为 40GB。
[root@liza ~]# mkdir /RAID[root@liza ~]# mount /dev/md0 /RAID[root@liza ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/rhel-root 18G 3.0G 15G 17% /devtmpfs 905M 0 905M 0% /devtmpfs 914M 84K 914M 1% /dev/shmtmpfs 914M 8.9M 905M 1% /runtmpfs 914M 0 914M 0% /sys/fs/cgroup/dev/sr0 3.5G 3.5G 0 100% /media/cdrom/dev/sda1 497M 119M 379M 24% /boot/dev/md0 40G 49M 38G 1% /RAID 
复制代码
最后,查看/dev/md0 磁盘阵列的详细信息,并把挂载信息写入到配置文件中,使其永久生效。
[root@liza ~]# mdadm -D /dev/md0/dev/md0:Version : 1.2Creation Time : Tue May 5 07:43:26 2017Raid Level : raid10Array Size : 41909248 (39.97 GiB 42.92 GB)Used Dev Size : 20954624 (19.98 GiB 21.46 GB)Raid Devices : 4Total Devices : 4Persistence : Superblock is persistentUpdate Time : Tue May 5 07:46:59 2017State : cleanActive Devices : 4Working Devices : 4Failed Devices : 0Spare Devices : 0Layout : near=2Chunk Size : 512KName : localhost.localdomain:0 (local to host localhost.localdomain) UUID : cc9a87d4:1e89e175:5383e1e8:a78ec62cEvents : 17Number Major Minor RaidDevice State0 8 16 0 active sync /dev/sdb1 8 32 1 active sync /dev/sdc2 8 48 2 active sync /dev/sdd3 8 64 3 active sync /dev/sde
[root@liza ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
复制代码



损坏磁盘阵列及修复

在确认有一块物理硬盘设备出现损坏而不能继续正常使用后,应该使用 mdadm 命令将其移除,然后查看 RAID 磁盘阵列的状态,可以发现状态已经改变。


[root@liza ~]# mdadm /dev/md0 -f /dev/sdbmdadm: set /dev/sdb faulty in /dev/md0[root@liza ~]# mdadm -D /dev/md0/dev/md0:Version : 1.2Creation Time : Fri May 8 08:11:00 2017Raid Level : raid10Array Size : 41909248 (39.97 GiB 42.92 GB)Used Dev Size : 20954624 (19.98 GiB 21.46 GB)Raid Devices : 4Total Devices : 4Persistence : Superblock is persistentUpdate Time : Fri May 8 08:27:18 2017State : clean, degradedActive Devices : 3Working Devices : 3Failed Devices : 1Spare Devices : 0Layout : near=2Chunk Size : 512KName : linuxprobe.com:0 (local to host linuxprobe.com)UUID : f2993bbd:99c1eb63:bd61d4d4:3f06c3b0Events : 21Number Major Minor RaidDevice State0 0 0 0 removed1 8 32 1 active sync /dev/sdc2 8 48 2 active sync /dev/sdd3 8 64 3 active sync /dev/sde0 8 16 – faulty /dev/sdb
复制代码


在 RAID 10 级别的磁盘阵列中,当 RAID 1 磁盘阵列中存在一个故障盘时并不影响 RAID10 磁盘阵列的使用。


当购买了新的硬盘设备后再使用 mdadm 命令来予以替换即可,在此期间我们可以在/RAID 目录中正常地创建或删除文件。


由于我们是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到 RAID 磁盘阵列中。


[root@liza ~]# umount /RAID[root@liza ~]# mdadm /dev/md0 -a /dev/sdb[root@liza ~]# mdadm -D /dev/md0/dev/md0: Version : 1.2 Creation Time : Mon Jan 30 00:08:56 2017 Raid Level : raid10 Array Size : 41909248 (39.97 GiB 42.92 GB) Used Dev Size : 20954624 (19.98 GiB 21.46 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Jan 30 00:19:53 2017 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : near=2 Chunk Size : 512K Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : d3491c05:cfc81ca0:32489f04:716a2cf0 Events : 56 Number Major Minor RaidDevice State 4 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 2 8 48 2 active sync /dev/sdd 3 8 64 3 active sync /dev/sde[root@liza ~]# mount –a
复制代码



磁盘阵列+备份盘

RAID 10 磁盘阵列中最多允许 50%的硬盘设备发生故障,但是存在这样一种极端情况,即同一 RAID 1 磁盘阵列中的硬盘设备若全部损坏,也会导致数据丢失。换句话说,在 RAID10 磁盘阵列中,如果 RAID 1 中的某一块硬盘出现了故障,而我们正在前往修复的路上,恰巧该 RAID1 磁盘阵列中的另一块硬盘设备也出现故障,那么数据就被彻底丢失了。


在这样的情况下,该怎么办呢?其实,我们完全可以使用 RAID 备份盘技术来预防这类事故。该技术的核心理念就是准备一块足够大的硬盘,这块硬盘平时处于闲置状态,一旦 RAID 磁盘阵列中有硬盘出现故障后则会马上自动顶替上去。



创建 RAID5

现在创建一个 RAID 5 磁盘阵列+备份盘。

在下面的命令中,参数-n 3 代表创建这个 RAID 5 磁盘阵列所需的硬盘数,参数-l 5 代表 RAID 的级别,而参数-x 1 则代表有一块备份盘。


当查看/dev/md0(即 RAID 5 磁盘阵列的名称)磁盘阵列的时候就能看到有一块备份盘在等待中了。


[root@liza ~]# lsblk NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda             8:0    0   20G  0 disk ├─sda1          8:1    0    1G  0 part /boot└─sda2          8:2    0   19G  0 part   ├─rhel-root 253:0    0   17G  0 lvm  /  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]sdb             8:16   0   20G  0 disk sdc             8:32   0   20G  0 disk sdd             8:48   0   20G  0 disk sde             8:64   0   20G  0 disk sr0            11:0    1  3.8G  0 rom  /run/media/root/RHEL-7.4 Server.x86_64
复制代码


[root@liza ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sdemdadm: layout defaults to left-symmetricmdadm: layout defaults to left-symmetricmdadm: chunk size defaults to 512Kmdadm: size set to 20955136Kmdadm: Defaulting to version 1.2 metadatamdadm: array /dev/md0 started.
复制代码
查看详细信息
[root@liza ~]# mdadm -D /dev/md0 /dev/md0:           Version : 1.2     Creation Time : Mon Jan 11 22:58:07 2021        Raid Level : raid5        Array Size : 41910272 (39.97 GiB 42.92 GB)     Used Dev Size : 20955136 (19.98 GiB 21.46 GB)      Raid Devices : 3     Total Devices : 4       Persistence : Superblock is persistent
Update Time : Mon Jan 11 22:58:26 2021 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 : 21% complete
Name : liza:0 (local to host liza) UUID : fe775c8a:a46b3811:84f4a134:178ebd74 Events : 4
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 spare rebuilding /dev/sdd
3 8 64 - spare /dev/sde
复制代码
现在将部署好的 RAID 5 磁盘阵列格式化为 ext4 文件格式,然后挂载到目录上,之后就可以使用了。
[root@liza ~]# mkfs.ext4 /dev/md0 mke2fs 1.42.9 (28-Dec-2013)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=128 blocks, Stripe width=256 blocks2621440 inodes, 10477568 blocks523878 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=2157969408320 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock 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 (32768 blocks): doneWriting superblocks and filesystem accounting information: done
[root@liza ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab [root@liza ~]# mkdir /RAID[root@liza ~]# mount -a
复制代码


最后是见证奇迹的时刻!我们再次把硬盘设备/dev/sdb 移出磁盘阵列,然后迅速查看/dev/md0 磁盘阵列的状态,就会发现备份盘已经被自动顶替上去并开始了数据同步。


RAID 中的这种备份盘技术非常实用,可以在保证 RAID 磁盘阵列数据安全性的基础上进一步提高数据可靠性,所以,如果公司不差钱的话还是再买上一块备份盘以防万一。


[root@liza ~]# mdadm /dev/md0 -f /dev/sdbmdadm: set /dev/sdb faulty in /dev/md0[root@liza ~]# mdadm -D /dev/md0 /dev/md0:           Version : 1.2     Creation Time : Mon Jan 11 22:58:07 2021        Raid Level : raid5        Array Size : 41910272 (39.97 GiB 42.92 GB)     Used Dev Size : 20955136 (19.98 GiB 21.46 GB)      Raid Devices : 3     Total Devices : 4       Persistence : Superblock is persistent
Update Time : Mon Jan 11 23:01:38 2021 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 : 6% complete
Name : liza:0 (local to host liza) UUID : fe775c8a:a46b3811:84f4a134:178ebd74 Events : 23
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
复制代码


发布于: 刚刚阅读数: 3
用户头像

🏅️ InfoQ 专家博主 2022.03.08 加入

CSDN:飞向星的客机

评论

发布
暂无评论
磁盘管理-Linux系统磁盘管理_Linux_飞向星的客机_InfoQ写作社区