VMware Linux RAID5 配置
VM环境:VMware Workstation
OS环境:CentOS 7
一、在VM中,软RAID 设备是/dev/md*, md (Multiple Devices)
二、在RAID5中,至少要有3块硬盘,因为有差错检验.
三、在软RAID5中,实际的硬盘大小应该为实际硬盘数减一,即(N-1),减去的那块空间奇偶校验.这个空间是分散到每个磁盘上的.
四、在软RAID5中,实际的每块硬盘的大小,由最小的那块硬盘来决定.因为数据会拆开平均分配给每块硬盘.
五、所有实际RAID硬盘大小应该是(硬盘数or硬盘的分区数-1)*最小的那个硬盘大小or分区大小
六、因为adadm是个工具,并没服务进程去读取/etc/mdadm.conf文件,所以,这个/etc/mdadm.conf文件是系统kernel默认读取的
RAID模块为kernel支持模块,/etc/mdadm.conf作为默认的配置文件,系统启动时加载RAID模块读默认配置文件/etc/mdadm.conf,与/etc/hosts,/etc/resolv.conf之类一 样。
实验
首先在VM上的Linux安装4块硬盘,/dev/sdb /dev/sdc /dev/sdd /dev/sde 每块硬盘20G
#fdisk -l
1.首选把这4块硬盘合并成raid.
#mdadm -Cv /dev/md0 -l5 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
# C 为创建RAID
# v 为显示创建信息
# /dev/md0 为软raid设备
# --raid-devices 为几块硬盘
- 这时你可以用mdadm -D /dev/md0 参看RAID创建情况
#mdadm -D /dev/md0
下面是CentOS 5效果图
这时,还在编译,都它编译好了.就可以用了
- 就创建了一个/dev/md0的raid了.但它的大小是(硬盘数or硬盘的分区数-1)*最小的那个硬盘大小or分区大小
#fdisk -l
4.如果要使用,还必须指定/dev/md0的文件格式
# mkfs.ext3 /dev/md0
5.这个时候,我们就要使用fdisk /dev/md0 重新对新的/dev/md0进行分区
#fdisk /dev/md0
6.如果想控制页面的大小就需要加 -c32 (32标识每个页面32K,默认是64K),页面大小直接影响到IO
mdadm -Cv /dev/md0 -c32 -l5 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
通过mdadm -D /dev/md0就可以看到
#mdadm -Cv /dev/md0 -c32 -l5 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
7. mdadm -Cv /dev/md0 -l5 --raid-devices=4 --spare-devices=1 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
这个是建立一个热备磁盘,如果某个磁盘坏了.可以自动顶上去.
#mdadm -Cv /dev/md0 -l5 --raid-devices=4 --spare-devices=1 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
模拟一个磁盘坏了,查看raid信息
[root@localhost MegaRAID]# mdadm /dev/md0 -f /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
[root@localhost MegaRAID]# mdadm -D /dev/md0
8、查看raid信息
#cat /proc/mdstat
格式化
mkfs.ext4 -j -b 4096 /dev/md0
挂载 (硬盘挂载到data目录成功)
mkdir /data
mount /dev/md1 /data
echo "/dev/md1 /data ext4 defaults 0 0" >> /etc/fstab
写数据
mkdir /data/abc && touch /data/abc/123
mdadm -D /dev/md0 查看是否有坏的硬盘
新增磁盘设备,添加到md1
#mdadm /dev/md1 -a /dev/sdb
mdadm: Cannot open /dev/sdb: Device or resource busy
软Raid创建的时候出现mdadm: Cannot open /dev/sde1: Device or resource busy
用一下命令可以解决:mdadm --stop /dev/md1
[root@localhost ~]# mdadm --stop /dev/md0
mdadm: Cannot get exclusive access to /dev/md0:Perhaps a running process, mounted filesystem or active volume group?
意思就是停止Raid,停止先前创建的,
停止Raid后不提示就用上面的命令 md_d1是生成Raid重启后有的
四个硬盘,一个模拟坏盘,三个是磁盘正在运行,一个是刚刚挂载的data
报错:系统正在使用中。
解决办法 :添加完硬盘后,需要重启才能识别这些硬盘设备。
删除已损坏的硬盘
#mdadm /dev/md0 -r /dev/sdc
mdadm: hot remove failed for /dev/sdc: Device or resource busy
#/dev/sdc正在使用中
#mdadm -D /dev/md0 #查看损坏的硬盘,是否被删除。
停止md1磁盘
#mdadm --stop /dev/md1
mdadm: Cannot get exclusive access to /dev/md1:Perhaps a running process, mounted filesystem or active volume group?
查看状态,一切正常:
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md1 : active raid5 sdf[4] sdg[3] sdi[2] sdj[1] sdh[0]
3907045376 blocks super 1.2 level 5, 256k chunk, algorithm 2 [5/5] [UUUUU]
unused devices: <none>
查看挂载点,也未发现有mount;也没有使用LVM管理该设备。
查看是否有用户正在使用该设备:
#fuser -vm /dev/md1
显示root用户正在操作该设备,kill掉该进程,再次stop该设备成功。
扩展
LINUX下彻底关闭某个RAID磁盘阵列
1、查看RAID磁盘阵列信息,确认一下要关闭哪个。如:关闭md0这个阵列
[root@godben ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
2、卸载md0这个阵列的挂载点:
[root@godben ~]# umount /mnt/raid5
3、停止md0这个阵列,并释放与该阵列相关的所有资源:
[root@godben ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
注意:如果在停止md0的阵列前,却没有把它卸载(umount)掉,会出现如下提示:
[root@godben ~]# mdadm -S /dev/md0
mdadm: Cannot get exclusive access to /dev/md0:Perhaps a running process, mounted filesystem or active volume group?
4、清除成员磁盘当中阵列的超级块信息,这一步很重要!
[root@godben ~]# mdadm --zero-superblock /dev/sdb[1-3,5]
5、删除或注释/etc/fstab上的挂载信息
[root@godben ~]# vim /etc/fstab
#UUID=796a27da-d899-4e64-a3bd-b468fb0c4f37 /mnt/raid5 ext4 defaults 0 0
6、删除或注释/etc/mdadm.conf对应的RAID信息:
[root@godben ~]# vim /etc/mdadm.conf
#ARRAY /dev/md0 metadata=1.2 spares=1 name=kashu.localdomain:0 UUID=3895d28e:bdcaed28:136b4cf6:d2a858f5
7、如果做完上面所有的操作后,发现/dev/下还有md0这个设备文件存在,直接rm -f /dev/md0即可
#rm -f /dev/md0
注:
用/dev/md0 的软raid设备生成的磁盘整列.无法进行分区.
mdadm -Cv /dev/md0 -l5 -c32 --raid-devices=5 --spare-devices=1 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
这里,无法对/dev/md0分区后的设备进行mkfs.ext* 操作,无法创建分区的格式.所以挂载md0分区后的设备
例如 mkfs.ext3 /etc/md0p1 // error
所以需要
创建md设备时,用/dev/md_d0替代/dev/md0,才能对MD设备进行分区。
mdadm -Cv --auto=mdp /dev/md_d0 -l5 -c32 --raid-devices=5 --spare-devices=1 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
基本操作
mdadm -S /dev/md0 #关闭raid
mdadm -A /dev/md0 #启动raid
mdadm -E /dev/sdb #如果你不知道哪个分区属于哪个磁盘整列,可以用这个命令.
#UUID就是这个磁盘整列的唯一标识符.
mdadm -Av /dev/md0 --uuid=8ba81579:e20fb0e8:e040da0e:f0b3fec8 # 获得UUID后,也可以这样激活阵列
mdadm /dev/md0 --fail /dev/sdb --remove /dev/sdb # 删除某个硬盘或分区.如果有一份热备用盘.如果删除.热备份盘会自动启动.
mdadm /dev/md0 --add /dev/sdb # 新加一块硬盘.
重启后,使RAID从内核启动.
mdadm --detail --scan >> /etc/mdadm.conf # 放入配置文件.再次重启raid还是存在
参考链接 :
CENTOS 7安装MEGACLI
https://www.freesion.com/article/88151145481/
https://blog.csdn.net/weixin_50355475/article/details/110530929
https://blog.csdn.net/m582445672/article/details/7600798?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control
虚拟机上创建RAID01 :https://blog.csdn.net/qq_41524362/article/details/88902264?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param
mdadm删除RAID失败的解决方法 :https://www.it610.com/article/3160808.htm
Linux下彻底关闭某个RAID磁盘阵列 : https://blog.51cto.com/godben/1708634
https://blog.csdn.net/u011442726/article/details/101475738