软RAID设置规范
2011.07.20
1. 软RAID应用场景
如果设备不具备硬RAID功能,比如部分PC服务器不具备硬RAID功能,
而又想采用RAID技术来保护数据,可以考虑采用软RAID技术。
2. 软RAID成熟度
Linux上软RAID技术已相当成熟,早在Linux 2.2内核时代就已经被内核小组吸收进Linux内核。
https://www.wendangku.net/doc/6810755401.html,/FAQ/Linux-RAID-FAQ/
https://www.wendangku.net/doc/6810755401.html,/HOWTO/Software-RAID-HOWTO.html
Linux下标准软RAID管理工具是mdadm(Multiple Devices Admin的简称),作者是Neil Brown,
mdadm的介绍位于https://www.wendangku.net/doc/6810755401.html,/blog/mdadm
3. 软RAID创建步骤
3.1. 创建RAID5卷磁盘(-n 4的意思是RAID5卷里面一共有4块物理磁盘):
mdadm -Cv /dev/md0 -l5 -n4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm -Cv /dev/md1 -l5 -n4 /dev/sdf /dev/sdg /dev/sdh /dev/sdi
测试结果表明,创建一个含有4块932G硬盘的RAID5卷需要至少9个小时。
3.2. 创建软RAID配置文件
一般来说,一个新的阵列被创建后我们最好创建一个/etc/mdadm.conf文件,没有该文件在激活阵列
时我们就得指定详细的信息,可以使用输出重定向来解决:
mdadm -Ds > /etc/mdadm.conf
4. 软RAID维护
4.1. 查看软RAID的状态
cat /proc/mdstat
mdadm -D /dev/md0
4.2. 检查某个磁盘属于哪个软RAID
mdadm -E /dev/sdX
4.3. 移除损坏的设备
mdadm /dev/md0 -r /dev/sdh2
4.4. mdadm /dev/md0 -a /dev/sdh2
将新设备添加到阵列中
4.5. 启动RAID5卷
mdadm -As (/dev/md0)
4.6. 停止RAID5卷
mdadm -S /dev/md0
4.7. 清空软RAID数据
mdadm --zero-superblock /dev/sdg /dev/sdh /dev/sdi /dev/sdj /dev/sdk
4.8. 动态增加RAID5卷空间
mdadm -a /dev/md0 /dev/sdX
mdadm -r /dev/md0 -n5(假设原来的RAID5卷是4块硬盘)
5. 在线更换软RAID卷中磁盘
5.1. 模拟md0卷中磁盘/dev/sdc故障
mdadm -f /dev/md0 /dev/sdc
mdadm --manage --set-faulty /dev/md1 /dev/sdc2
5.2. 如果磁盘尚未完全坏透,将分区信息保存下来
sfdisk -d /dev/sdc > partitions.sdc
5.3. 从md0卷中移除磁盘/dev/sdc
mdadm -r /dev/md0 /dev/sdc
5.4. 热拔出磁盘
cat /proc/scsi/scsi
echo "scsi remove-single-device h b t l" > /proc/scsi/scsi
cat /proc/scsi/scsi
# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: WDC WD1002FBYS-0 Rev: 0C06
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi0 Channel: 00 Id: 01 Lun: 00
Vendor: ATA Model: WDC WD1002FBYS-0 Rev: 0C06
Type: Direct-Access ANSI SCSI revision: 05
... ...
#
h是host(SCSI adapter number),硬盘所在SCSI控制器号,也就是scsi0后面的0.
b是bus(channel number),硬盘所在SCSI通道的编号.
t是target(scsi id number),硬盘的SCSI ID号,可通过插入的硬盘插槽来判断.
l是lun,硬盘的lun号,默认情况都是0.
Linux's flavour of SCSI add
ressing is a four level hierarchy:
Using the naming conventions of devfs this becomes:
5.5. 热插入磁盘
echo "scsi add-single-device h b t l" > /proc/scsi/scsi
5.6. 导入之前磁盘的分区信息
sfdisk /dev/sdc < partitions.sdc
5.7. 将新的磁盘/dev/sdc加入md0卷
mdadm -a /dev/md0 /dev/sdc