debian组软RAID的教程

为了追求高性价比的话RAID是个不错的选择,不过由于硬件RAID下性能的损耗还是挺大的,所以可以考虑开启JBOD模式(有些深度定制卡(比如DELL家的H730,基于LSI的芯片做的深度定制)叫HBA模式)后直接组一个软RAID,还是挺方便的。
这个教程是根据老大以前在CentOS上组软RAID的教程文章总结和修改而来,对应支持的系统是debian(我用的是8.2),用法上和CentOS 7上的大致相同(有个文件位置不同罢了,可以自行琢磨)
首先。。。你有RAID卡并且支持JBOD模式的话,开JBOD模式(不支持的话。。。。。。您老老实实组硬RAID吧)当然没有RAID卡,而是直接HBA卡或者是直接SATA/SAS接主板的话,总之认盘就可以了
其次,组建RAID:

mdadm -C /dev/md0 -a yes -l 0 -n 5 --assume-clean /dev/sd[a,b,c,d,e]

详解:
1、/dev/md* 这里输入数字~不重复即可
2、-l * 这里是RAID模式,0代表RAID 0,其他的就不细说了
3、-n * 这里是注明你有几块硬盘
4、/dev/sd[a,b,c,d,e] 这个是设定物理磁盘用哪些,可以用逗号“,”来选择,或者用[a-e]来表示 abcde 5个盘
接下来,格式化一下~

mkfs.xfs -f /dev/md0

不解释~各位自行选择格式
之后

mkdir /ssd
mount /dev/md0 /ssd

创建个文件夹,然后挂上去,同样不解释~
这样,你的RAID就可以使用了
这里有一个地方要注意一下,软RAID开机不会自动加载,所以需要人工把配置文件弄好
debian

mdadm --verbose --detail --scan > /etc/mdadm/mdadm.conf

centos

mdadm --verbose --detail --scan > /etc/mdadm.conf

其实也就是路径不同罢了~
然后 blkid 查看一下这个MD的UUID
复制一下
接着

vim /etc/fstab
新建一行,输入:
UUID=刚才复制的UUID     /ssd    xfs   defaults   0   0

格式基本上就是:UUID=(这个MD的UUID)空格 (挂载路径) 空格 (格式化的分区格式)空格 (dump值,默认为0) 空格 (pass数值,默认为0)
然后保存退出
这样,软RAID就彻底搞定了,这里顺带说一下查看状态的几个命令

mdadm -D /dev/md0

查看md0这个RAID组的详细状态,如果RAID故障的话,可以从这里查看是否掉盘

cat /proc/mdstat

这里可以简单的看一下这个md是哪些硬盘挂载的
RAID如果坏了,而且需要重启,怎么办
直接重启的话会导致找不到这个UUID的设备而进入死循环,所以需要。。。

vim /etc/fstab

找到出问题的md,注释掉,保存退出再重启
这点很重要,否则进不去系统别怪我没提醒。。。
更新一下,如果需要删除RAID的话,大致做法是这样的~:

mdadm -D /dev/md0

确认一下这个raid的信息(主要看有哪些盘,这里我们假设/dev/sdb和/dev/sdc组了一个r0)

mdadm -S /dev/md0

停止raid

vim /etc/fstab

找到你的raid的那一行,然后删除掉整行,防止机器找不到raid导致进不去系统

vim /etc/mdadm/mdadm.conf

找到你的raid的那一行,删除整行来删除配置文件

mdadm --zero-superblock /dev/sdb
mdadm --zero-superblock /dev/sdc

删除硬盘里的元数据
然后就OK了~

debian系统盘read-only file system的解决办法

由于业务上的需要,我们的系统盘之前一直是直接软RAID 0然后做系统的(因为RAID卡组RAID实际上会有一些性能损耗,损耗大到会对业务有一定的影响,所以直接软RAID0)。
然后15年下半年,偷懒选择了硬盘座克隆硬盘的方式快速写入系统,这样只需要把硬盘插上去,克隆完成后捅回服务器上改一下MAC即可
然后。。。。。。这批机器的系统盘,在工作了2个月后,大量的出现了read-only file system的情况。。。
一开始的做法是:直接重新安装系统,这样比较靠谱,但是很耗费时间,每台机器的流量都很大(最低也会有1个G,高的时候每台甚至都会到10个G的带宽占用),一台服务器下线就意味着压力分散到了其他服务器上
后来经过研究,看到了这一篇文章:http://www.111cn.net/sys/linux/59672.htm,然后决定跟着这篇文章的思路自己来试一试,正好有一台系统盘RO的服务器等着修
实际操作很简单:
我们是EXT4的分区,就直接执行

fsck.ext4 -y /dev/md0

接下来会有一串是否修复的提示(这里有个有意思的事情,有的服务器会自动一路确认然后修下去,但是有些服务器却不自动,等着你按下Y键)
修复完成后,直接reboot,重启机器
漫长的等待后(其实也就1分半)。。。系统起来了,然后touch测试了一发,成功写入~
这里有几点要注意的地方
1、分区格式一定要选对,直接df -Th即可看到
2、参考的文章建议你unmount后再修复,但由于我们是系统盘,又是raid0,所以不可能unmount,这次我也是死马当活马医直接/dev/md0 结果神奇的发现可以修复
3、如果你的机器已经重启,然后进入了busybox的话,不要慌,在这里一样可以执行fsck来修复硬盘,而且至少我这里修复了后就又正常的进入了系统~
4、我们的服务器有接好远程口,所以出了问题大不了就是重装一下系统,但是如果你的服务器并没有装远程口,机器上跑的又是关键业务的话。。。那还是建议你悠着点,毕竟数据更重要。
ps。。。这文章白天写完,下午让机房的人换硬盘的时候。。。。。。日了狗,一块系统盘被她们拔了。。。这回的ro彻底没法修了艸。。。