Linux crea una matriz de incursión suave
Preparación ambiental
Agregue un disco duro virtual de 20G y divídalo en 10 particiones de 2G
1. Crear incursión0
Si no hay ningún comando mdadm en el sistema, instale las herramientas relevantes:
[root@node01 ~]# which mdadm
/usr/sbin/mdadm
[root@node01 ~]# rpm -qf /usr/sbin/mdadm
mdadm-4.1-4.el8.x86_64
[root@node01 ~]# dnf install -y mdadm
Crear raid0:
[root@node01 ~]# mdadm --create /dev/md0 --raid-devices=2 /dev/sdb1 /dev/sdb2 --level=0
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
o
[root@node01 ~]# mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
-C:创建软raid
-l:指定raid级别
-n:指定raid中设备个数
Ver información de RAID:
el archivo /proc/mdstat registra toda la información de RAID
[root@node01 ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb2[1] sdb1[0]
#md0为raid0,两个成员sdb2(第二个成员),sdb1(第一个成员)
41905152 blocks super 1.2 512k chunks
#一共有多少个块(每块1K) 数据段的大小是512K
#chunk决定了阵列中每个成员盘写入的数据量,大于这个值才会到下一个盘读写
unused devices: <none>
Ver información RAID especificada:
[root@node01 ~]# mdadm -D/--detail /dev/md0
[root@node01 ~]# mdadm --detail /dev/md0
/dev/md0: #名称
Version : 1.2 #工具版本
Creation Time : Wed Dec 11 03:05:31 2019 #建立时间
Raid Level : raid0 #类型
Array Size : 41905152 (39.96 GiB 42.91 GB)#容量
Raid Devices : 2 #组成RAID的硬盘数量
Total Devices : 2#成员总数,包含备用磁盘
Persistence : Superblock is persistent
Update Time : Wed Dec 11 03:05:31 2019
State : clean #raid的状态
Active Devices : 2 #活跃的设备数量
Working Devices : 2 #工作的设备数量
Failed Devices : 0 #故障的数量
Spare Devices : 0 #备用设备数量
Chunk Size : 512K
Consistency Policy : none
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 06b2d3b2:3ace3ddf:b5b65dd7:eb40b040
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdb2
Para formatear el uso del montaje:
[root@node01 ~]# mkfs.ext4 /dev/md0
[root@node01 ~]# mkdir /md0
[root@node01 ~]# mount /dev/md0 /md0/
Ver uso de espacio:
[root@node01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/md0 3.9G 16M 3.7G 1% /md0
#可用空间100%
prueba:
[root@node01 ~]# iostat -m -d /dev/sdb1 /dev/sdb2 2
[root@node01 ~]# dd if=/dev/zero of=/md0/file bs=1Mcount=1024
2. Crear RAID1
Crear raid1:
[root@node01 ~]# mdadm -C /dev/md1 -l 1 -n 2 /dev/sdb3 /dev/sdb4
Ver información de estado:
[root@node01 ~]# watch -n1 "cat /proc/mdstat"
#watch命令监控该文件变化情况,1秒钟显示一次
#或者直接查看
[root@node01 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdb4[1] sdb3[0]
20953024 blocks super 1.2 [2/2] [UU]
#两个UU说明状态ok,一个盘故障则显示_U
[==============>......] resync = 73.5% (15404032/20953024) finish=0.4min speed=205582K/sec
unused devices: <none>
#以上信息说明两块盘在进行同步,100%说明同步完成
Ver detalles de raid1
[root@node01 ~]# mdadm -D /dev/md1
Para formatear el uso del montaje:
[root@node01 ~]# mkfs.ext4 /dev/md1
[root@node01 ~]# mount /dev/md1 /md1
Ver uso de espacio:
[root@node01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/md1 2.0G 6.0M 1.9G 1% /md1
#可用空间50%
Pruebas para verificar el intercambio en caliente:
- Simular una falla de disco (marcar el disco como fallido)
[root@node01 ~]# mdadm /dev/md1 -f /dev/sdb3
mdadm: set /dev/sdb1 faulty in /dev/md1
#-f or --fail 表示失效
- Verificar el estado de raid1
[root@node01 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdb4[1] sdb3[0](F) F表示失效失败
20953024 blocks super 1.2 [2/1] [_U]
#_表示有一块盘失效
unused devices: <none>
[root@node01 ~]# mdadm -D /dev/md1
...
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 33 1 active sync /dev/sdb4
0 8 17 - faulty /dev/sdb3
#失效盘等待移除
- Quitar un disco duro defectuoso o fallido (intercambio en caliente)
[root@node01 ~]# mdadm /dev/md1 -r /dev/sdb3
mdadm: hot removed /dev/sdb3 from /dev/md1
#-r or --remove 表示移除
[root@node01 ~]# mdadm -D /dev/md1
...
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 33 1 active sync /dev/sdb4
- Agregar nuevos discos a raid1 (conexión en caliente)
[root@node01 ~]# mdadm /dev/md1 -a /dev/sdb5
mdadm: added /dev/sdd5
#-a or --add 表示增加
[root@node01 ~]# cat /proc/mdstat
3. Crear RAID5
Crear raid5:
[root@node01 ~]# mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sdb{6,7,8,9}
#-x, --spare-devices= 表示指定热备盘
[root@node01 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdb8[4] sdb9[3](S) sdb7[1] sdb6[0] #S备用盘
4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
Nota: El disco de repuesto dinámico significa que cuando uno de los discos falla, el disco de repuesto dinámico se instalará inmediatamente sin intervención manual.
[root@node01 ~]# mdadm -D /dev/md5 查看详细信息
。。。
Number Major Minor RaidDevice State
0 8 22 0 active sync /dev/sdb6
1 8 23 1 active sync /dev/sdb7
4 8 24 2 active sync /dev/sdb8
3 8 25 - spare /dev/sdb9
Para formatear el uso del montaje:
[root@node01 ~]# mkfs.ext4 /dev/md5
[root@node01 ~]# mkdir /md5
[root@node01 ~]# mount /dev/md5 /md5/
Ver uso de espacio:
[root@node01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/md5 3.9G 16M 3.7G 1% /md5
#可用空间 (磁盘数量-1)x 单一磁盘容量
Pruebe la función del disco de repuesto activo:
- Marcar un disco activo como no válido
[root@node01 /]# mdadm /dev/md5 -f /dev/sdb6
mdadm: set /dev/sdb6 faulty in /dev/md5
#立即查看状态:
[root@node01 /]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sdb8[4] sdb9[3] sdb7[1] sdb6[0](F)
说明:
sdb6(F)失效后,原来的sdb9(S)热备盘立马顶上去同步数据
4188160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]
[==>..................] recovery = 13.0% ..
unused devices: <none>
[root@node01 /]# mdadm -D /dev/md5
...
Number Major Minor RaidDevice State
3 8 25 0 active sync /dev/sdb9
1 8 23 1 active sync /dev/sdb7
4 8 24 2 active sync /dev/sdb8
0 8 22 - faulty /dev/sdb6
- Quitar disco fallido
[root@node01 /]# mdadm /dev/md5 -r /dev/sdb6
mdadm: hot removed /dev/sdb6 from /dev/md5
- Para consideraciones futuras, agregue nuevamente un disco de repuesto dinámico a raid5
[root@node01 /]# mdadm /dev/md5 -a /dev/sdb6
mdadm: added /dev/sdb6
4. Guarde la información de RAID
¿Por qué deberíamos guardar la información de las incursiones?
Si la información no se guarda, en CentOS6, la incursión no se puede reconocer automáticamente después de reiniciar el sistema, esta situación no ocurrirá en los sistemas 7 y 8.
- Crear archivo de configuración
[root@node01 ~]# mdadm -D --scan >> /etc/mdadm.conf
[root@node01 ~]# cat /etc/mdadm.conf
ARRAY /dev/md/1 metadata=1.2 name=localhost.localdomain:1 UUID=170d690d:4f7ccd02:646c3ce0:8f6012be
ARRAY /dev/md/0 metadata=1.2 name=localhost.localdomain:0 UUID=a845702e:9251cae9:25d1bc8b:9a337df2
ARRAY /dev/md/5 metadata=1.2 spares=1 name=localhost.localdomain:5 UUID=d49e6cca:5312271b:7e8e83d5:adac4ed5
detener y comenzar la incursión
Tome RAID5 como ejemplo:
detenga la incursión:
- Desinstalar incursión
[root@node01 ~]# umount /md5
- Detener la incursión usando el comando
[root@node01 ~]# mdadm --stop /dev/md5
mdadm: stopped /dev/md5
Comienza la incursión:
- El archivo de configuración (/etc/mdadm.conf) existe y se inicia de la siguiente manera
[root@node01 ~]# mdadm -A /dev/md5
mdadm: /dev/md5 has been started with 3 drives and 1 spare.
#-A:Assemble a pre-existing array 表示装载一个已存在的raid
- El archivo de configuración (/etc/mdadm.conf) no existe, comience de la siguiente manera
[root@node01 ~]# mdadm -A /dev/md5 /dev/sdb[6789]
mdadm: /dev/md5 has been started with 3 drives and 1 spare.
- Si no conoce el nombre del dispositivo, puede verificar la información de incursión de cada dispositivo y usar uuid para reagrupar los dispositivos de incursión.
[root@node01 ~]# mdadm -E /dev/sdb6 | grep UUID
Array UUID : d49e6cca:5312271b:7e8e83d5:adac4ed5
Device UUID : b933b8d5:04a6e003:90e9b230:d13cacf5
#说明:同一个raid里每个磁盘查看的UUID都是这个值
...
[root@node01 ~]# mdadm -E /dev/sdb7 | grep UUID
Array UUID : d49e6cca:5312271b:7e8e83d5:adac4ed5
Device UUID : b8ca85bd:7809faa4:48882a21:98ef9349
#通过以上方法找到后进行重新组合,如下:
[root@node01 ~]# mdadm -A --uuid=d49e6cca:5312271b:7e8e83d5:adac4ed5 /dev/md5
mdadm: /dev/md5 has been started with 3 drives and 1 spare.
eliminación de incursiones
- Desinstalar dispositivo
[root@node01 ~]# umount /md5/
- Quitar todos los discos
[root@node01 ~]# mdadm /dev/md5 -f /dev/sdb[6789]
mdadm: set /dev/sdb6 faulty in /dev/md5
mdadm: set /dev/sdb7 faulty in /dev/md5
mdadm: set /dev/sdb8 faulty in /dev/md5
mdadm: set /dev/sdb9 faulty in /dev/md5
[root@node01 ~]# mdadm /dev/md5 -r /dev/sdb[6789]
mdadm: hot removed /dev/sdb6 from /dev/md5
mdadm: hot removed /dev/sdb7 from /dev/md5
mdadm: hot removed /dev/sdb8 from /dev/md5
mdadm: hot removed /dev/sdb9 from /dev/md5
- detener la redada
[root@node01 ~]# mdadm --stop /dev/md5
mdadm: stopped /dev/md5
- Borrar el superbloque y borrar la información relacionada.
[root@node01 ~]# mdadm --zero-superblock /dev/sdb[6789]