使用mdadm设置RAID
source link: https://www.lujun9972.win/blog/2018/09/10/%E4%BD%BF%E7%94%A8mdadm%E8%AE%BE%E7%BD%AEraid/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
使用mdadm设置RAID
RAID简介
RAID是一种使用磁盘驱动器的方法,它将一组磁盘驱动器用某种逻辑方式联系起来,作为一个逻辑磁盘驱动器来使用的.
比较常用的的RAID级别包括:
级别 说明 RAID0 条带化,数据被拆分到多个驱动器中,但并没有数据镜像或校验信息 RAID1 镜像化,完全磁盘镜像,在独立的磁盘上创建数据的两份拷贝。这个级别提供最好的数据安全,但写速度慢,接代价最昂贵 RAID5 分布式奇偶校验,将奇偶校验信息分布在多个磁盘上,每个磁盘上的校验信息都通过其他磁盘上的数据来构建 RAID6 双分布式奇偶校验,和 RAID 5 相似但它有两个分布式奇偶校验。大多用在大数量的阵列中。我们最少需要4个驱动器,即使有2个驱动器发生故障,我们依然可以更换新的驱动器后重建数据。 RAID10 镜像+条带,RAID 10 可以被称为1 + 0或0 +1。它将做镜像+条带两个工作。在 RAID 10 中首先做镜像然后做条带。在 RAID 01 上首先做条带,然后做镜像。RAID 10 比 01 好。
mdadm: RAID设置工具
madam命令是Linux下用于构建、管理和监控RAID阵列(也被称为md设备)的工具. 它的语法为
mdadm [模式] [设备] [选项]
其中模式有下面几个:
--create使用空闲设备创建新阵列,每个设备具有元数据快 --assemble将设备加入一个已经定义好的磁盘阵列 --build创建一个没有元数据块的磁盘阵列 --manage管理已经存储在阵列中的设备 --misc查询或修改磁盘阵列中相关设备的信息 --grow改变阵列中每个设备使用的容量或阵列中设备的数量 --incremental根据需要在阵列中添加/删除设备 --monitor监控一个或多个阵列,上报指定事件
mdadm操作说明
创建RAID阵列
我们可以通过 mdadm
命令来创建软件RAID,比如下面命令可以创建一个RAID5
sudo mdadm --create /dev/md0 -a yes -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd
--create /dev/md0创建一个新RAID,名字叫做 /dev/md0
-a yes自动在/dev/下创建对应的RAID阵列设备
-l 5指定RAID级别为5
-n 3指定硬盘数量。表示用三块硬盘来创建RAID5,分别为 /dev/sdb
, /dev/sdc
, /dev/sdd
我们会发现 /dev
下出现了一个名为 md0 的设备
ls -l /dev/md0
brw-rw----. 1 root disk 9, 0 Sep 11 09:40 /dev/md0
自动启用RAID
在创建好RAID以后,可以将RAID信息保存到 /etc/mdadm.conf
文件中,这样在下次操作系统重新启动时,系统会自动加载这个文件来启用RAID
sudo mdadm -D --scan >/etc/mdadm.conf cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=MiWiFi-R3-srv:0 UUID=ece6c656:c9999ff6:9d17c0ec:08a0e3af
查看RAID阵列信息
创建好RAID阵列后,我们可以通过 mdadm --misc
模式来查看刚创建好的RAID的详细信息
mdadm --misc --detail /dev/md0
/dev/md0: Version : 1.2 Creation Time : Tue Sep 11 09:40:45 2018 Raid Level : raid5 Array Size : 16758784 (15.98 GiB 17.16 GB) Used Dev Size : 8379392 (7.99 GiB 8.58 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Tue Sep 11 10:03:35 2018 State : clean Active Devices : 3 Working Devices : 3 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : MiWiFi-R3-srv:0 (local to host MiWiFi-R3-srv) UUID : ece6c656:c9999ff6:9d17c0ec:08a0e3af Events : 18 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 3 8 48 2 active sync /dev/sdd
或者我们也可以通过 /proc/mdstat
文件来查看RAID的简洁信息
cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd[3] sdc[1] sdb[0] 16758784 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] unused devices: <none>
使用RAID阵列
在创建好RAID阵列后,我们就不能直接操作组成阵列的磁盘了,否则会损坏刚创建好的RAID阵列。
我们通过 /dev/md0
这个设备来进行文件格式化和挂载
set -x exec 2>&1 mkfs.xfs -f /dev/md0 mount /dev/md0 /mnt mount |grep md0
+ mkfs.xfs -f /dev/md0 meta-data=/dev/md0 isize=512 agcount=16, agsize=261760 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=4188160, imaxpct=25 = sunit=128 swidth=256 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 + mount /dev/md0 /mnt + mount + grep md0 /dev/md0 on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,sunit=1024,swidth=2048,noquota)
关闭RAID
我们可以通过 mdadm --misc
模式来关闭RAID。这会释放所有资源
在关闭RAID之前需要先卸载RAID:
sudo umount /mnt
然后关闭RAID
sudo mdadm --misc --stop /dev/md0
关闭RAID后,我们可以通过 mdadm --misc --zero-superblock
来清空磁盘中RAID阵列的超级块信息。
清空就能够正常使用这些磁盘了
mdadm --misc --zero-superblock /dev/sdb mdadm --misc --zero-superblock /dev/sdc mdadm --misc --zero-superblock /dev/sdd
模拟RAID故障
我们可以通过 mdadm --manage /dev/md0 --fail
来将某块磁盘设置成故障状态
sudo mdadm /dev/md0 -f /dev/sdd 2>&1
mdadm: set /dev/sdd faulty in /dev/md0
然后我们再来查一下这个RAID的信息
sudo mdadm --misc --detail /dev/md0
/dev/md0: Version : 1.2 Creation Time : Tue Sep 11 10:32:21 2018 Raid Level : raid5 Array Size : 16758784 (15.98 GiB 17.16 GB) Used Dev Size : 8379392 (7.99 GiB 8.58 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Tue Sep 11 10:35:12 2018 State : clean, degraded Active Devices : 2 Working Devices : 2 Failed Devices : 1 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : MiWiFi-R3-srv:0 (local to host MiWiFi-R3-srv) UUID : c031d0c9:998a4e86:5cf90e71:52b229cd Events : 20 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc - 0 0 2 removed 3 8 48 - faulty /dev/sdd
你会发现 /dev/sdd
的状态现在变成了 faulty
, 但是RAID5这个级别是允许一块磁盘损坏而不造成数据损坏的。
移除RAID阵列中的磁盘
sudo mdadm --manage /dev/md0 --remove /dev/sdd
更换新磁盘
set -x exec 2>&1 sudo mdadm --manage /dev/md0 --add /dev/sdd sudo mdadm --misc --detail /dev/md0
+ sudo mdadm --manage /dev/md0 --add /dev/sdd mdadm: added /dev/sdd + sudo mdadm --misc --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Sep 11 10:32:21 2018 Raid Level : raid5 Array Size : 16758784 (15.98 GiB 17.16 GB) Used Dev Size : 8379392 (7.99 GiB 8.58 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Tue Sep 11 10:40:41 2018 State : clean, degraded Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : MiWiFi-R3-srv:0 (local to host MiWiFi-R3-srv) UUID : c031d0c9:998a4e86:5cf90e71:52b229cd Events : 22 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc - 0 0 2 removed 3 8 48 - spare /dev/sdd
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK