使用树莓派搭建RAID磁盘阵列

最近一直想整一个磁盘阵列,然后看见角落里吃灰的树莓派,看着4个空空的USB口有点感慨,于是就突发奇想着在树莓派上用4个U盘来做磁盘阵列

这里我选用的是台电很便宜的64G U盘,淘宝上25块就能弄到一个,我买了4个(反正U盘坏了也可以保修)

磁盘阵列最大的好处就是某个设备坏了数据不会丢失,替换损坏的设备就可以继续正常使用

在多次测试后我最终选择了比较保守的RAID5,4个U盘组成磁盘阵列后实际可用大小是3个U盘容量的总和,就是176G,磁盘格式选择exfat,经过测试在这个U盘上exfat的实际速度会比其他格式高

开始搭建磁盘阵列

进入超级用户模式

这个不多说

sudo su
安装组件

首先我们来安装mdadm以及exfat所需要的组件

apt install mdadm exfat-utils exfat-fuse -y
确定需要组成阵列的磁盘

我们用lsblk这条命令来确定需要组阵列所需要的磁盘

如上图,我要使用的4个U盘名字分别为sda、sdb、sdc、sdd

创建阵列

这里使用上面得到的名字来创建RAID5阵列,如果你想创建RAID0、RAID1、RAID6、RAID10,只需要修改level的值为0、1、6或10即可。

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd -c 512

当系统提示mdadm: array /dev/md0 started.时,阵列就创建成功了,我们可以使用cat /proc/mdstat命令查看结果

分区并格式化阵列

阵列组好了,接下来就是分区格式化和挂载等操作了,我们先来分区

fdisk /dev/md0
n
p
1
w


使用lsblk查看分区是否成功

然后格式化,这里我们将分区格式化成exfat格式

mkfs.exfat  /dev/md0p1

如果你的存储设备性能比较高,可以用下面命令格式化成f2fs,当然后面设置开机挂载的时候也需要做对应的修改

apt install f2fs-tools -y
mkfs.f2fs /dev/md0p1
测试挂载

我们新建一个文件夹/mnt/md0用于挂载

mkdir -p /mnt/md0
mount /dev/md0p1 /mnt/md0

挂载后可以使用df -Th查看挂载状态

保存阵列布局

不知道怎么解释...保存就对了

mdadm --detail --scan | tee -a /etc/mdadm/mdadm.conf
update-initramfs -u
开机自动挂载阵列

这里我们开机后将阵列挂载到/mnt/md0目录,可以自行修改,重启后使用df -h测试是否挂载成功

echo '/dev/md0p1 /mnt/md0 exfat defaults,nofail,discard 0 0' | tee -a /etc/fstab

到此,磁盘阵列搭建结束,我们可以使用samba挂载,samba的搭建可以参考我的笔记https://note.ito.fun/archives/20.html,不详细叙述
我将其挂载到了本地磁盘,美滋滋

删除或重建阵列

想重建阵列的时,先删除之前建立的分区

fdisk /dev/md0
d
w


使用lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT命令查看设备文件系统的状态,记下FSTYPElinux_raid_member的设备的设备名,卸载md0,停止阵列,最后清除RAID数据

我这里是四个盘,按下面命令清除

umount /dev/md0p1
mdadm --stop /dev/md0
mdadm --zero-superblock /dev/sda
mdadm --zero-superblock /dev/sdb
mdadm --zero-superblock /dev/sdc
mdadm --zero-superblock /dev/sdd

最后删除/etc/mdadm/mdadm.conf/etc/fstab中对应本次删除阵列的相关信息,运行一下update-initramfs -u,然后重新开始建立阵列即可

坏盘处理

将坏盘设为故障状态

当有一块硬盘损坏后,我们需要插入新盘并rebuild,假设出问题的盘为sda,我们先用下面命令将sda设为故障

mdadm /dev/md0 --set-faulty /dev/sda
移除故障盘
mdadm /dev/md0 --remove /dev/sda
添加新盘
mdadm /dev/md0 --add /dev/sda

新盘添加后阵列会自动rebuild,可以使用mdadm --detail /dev/md0查看rebuild进度

后记

发热量有点大...最后还是加了个集线器,散热会好一点

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注