3.1 硬盘分配说明
3.1.1 数据文件系统
为安装的nas系统我准备了有7块硬盘,分配如下:
a) 1块M2固态硬盘:大小为1T,做Nas系统盘使用。
b) 6块SATA机械硬盘:每块大小为4T,5块做数据盘,1块做校验盘。
为了方便使用,不碎片话,需要把5块数据盘整合然后挂到同一个目录下。因此使用联合文件系统mergerfs。
a) Nas系统盘,创建 /data 目录。用来挂载5块磁盘。/data目录,使用空间大小为20T。
b)5块磁盘全部格式化为btrfs文件系统。
c)使用mergerfs将5块4T磁盘,联合成一个整的20T磁盘使用。
3.1.2 数据备份
放弃raid,家用环境中raid是不可靠的,且恢复难度极大。多份冷备份才能减少数据丢失的概率。
a)重要数据做一份单独磁盘的复制冷备份。
b)Nas系统使用一块4T磁盘做snapraid的快照备份。
3.2 mergerfs
3.2.1 查看磁盘信息
查看硬盘列表
fdisk -l
或
lsblk
查看挂载信息
blkid
或
df -h
查看硬盘详细信息
paru hwinfo
3.2.2 格式化数据盘
我的5块数据盘如下:【sda,sdb,sdc,sdd,sde】
使用btrfs格式化 ,以第一块盘sda为例
# 安装btrfs文件系统
pacman -S btrfs-progs
# 格式化磁盘
mkfs.btrfs -L "sda" /dev/sda
# 如果需要强制格式化
mkfs.btrfs -f -L "sda" /dev/sda
挂载到/mnt目录
sudo mkdir /mnt/sda
chown -R archnas:archnas /mnt/sda
mount /dev/sda /mnt/sda -o compress=zstd
其他磁盘一样,这样有5块磁盘分别挂载如下:
【磁盘:/dev/sda,挂载:/mnt/sda】
【磁盘:/dev/sdb,挂载:/mnt/sdb】
【磁盘:/dev/sdc,挂载:/mnt/sdc】
【磁盘:/dev/sdd,挂载:/mnt/sdd】
【磁盘:/dev/sde,挂载:/mnt/sde】
3.2.3 配置mergerfs
安装mergerfs
paru mergerfs
整合所有的btrfs磁盘到一个mergerfs文件系统,并挂载mergerfs文件系统到 /data目录下
sudo mkdir /data
chown -R archnas:archnas /data
mergerfs -o cache.files=partial,dropcacheonclose=true,category.create=mfs \
/mnt/sda:/mnt/sdb:/mnt/sdc:/mnt/sdd:/mnt/sdd:/mnt/sde /data
重新加载所有磁盘
重新加载所有磁盘
mount -a
3.2.4 配置fstab
手动挂载磁盘,重启后就失效了。如果要开机自动挂载磁盘,需要配置fastab
mergerfs配置示例如下
vim /etc/fstab
添加内容:
UUID=XXXXXXXXXXXXXXXXXXXXXXXXXX /mnt/sda btrfs rw,relatime,compress=zstd 0 0
UUID=XXXXXXXXXXXXXXXXXXXXXXXXXX /mnt/sdb btrfs rw,relatime,compress=zstd 0 0
UUID=XXXXXXXXXXXXXXXXXXXXXXXXXX /mnt/sdc btrfs rw,relatime,compress=zstd 0 0
UUID=XXXXXXXXXXXXXXXXXXXXXXXXXX /mnt/sde btrfs rw,relatime,compress=zstd 0 0
UUID=XXXXXXXXXXXXXXXXXXXXXXXXXX /mnt/sde btrfs rw,relatime,compress=zstd 0 0
/mnt/sda:/mnt/sdb:/mnt/sdc:/mnt/sdd:/mnt/sde /data mergerfs cache.files=partial,dropcacheonclose=true,category.create=mfs 0 0
3.3 snapraid
将第6块校验盘使用btrfs格式化,并挂载到 /mnt/sdf 目录、
3.3.1 安装配置snapraid
安装snapraid
paru snapraid
配置snapraid
sudo mkdir /var/snapraid
sudo chown -R archnas:archnas /var/snapraid
vim /etc/snapraid.conf
添加内容
data d1 /mnt/sda
data d2 /mnt/sdb
data d3 /mnt/sdc
data d4 /mnt/sdd
data d5 /mnt/sde
parity /mnt/sdf/SnapRAID.parity
content /var/snapraid/SnapRAID.content
content /mnt/sdf/SnapRAID.content
exclude /lost+found/
说明:
- disk 指定所需要备份的目录, 配置为数据盘挂载点
- parity 指定校验文件的存放位置,配置为校验盘目录文件
- content 指定文件索引等备份所需要的元信息,需要配置两个不同磁盘目录
3.3.2 备份数据
执行:
snapraid sync
3.3.3 还原数据
例如 /dev/sdb 盘挂掉。
a) 首先停止掉定时备份的脚本
b) 拆掉旧硬盘,替换新硬盘,并将新硬盘挂载到 /mnt/sdb_recovery 目录
c)修改/etc/snapraid.conf,替换
d)执行恢复命令
snapraid -d d2 -l recovery.log fix
3.3.4 取消删除
取消删除
snapraid fix -f FILENAME
(使用 file 或 dir 的完整 PATH 更好。file path 相对于所有根目录)
3.4 定时备份脚本
3.5 其他
btrfs磁盘管理命令
# 添加磁盘
btrfs device add /dev/sdZ /mnt/sda
# 强制添加
btrfs device add -f /dev/sdZ /mnt/sda
# 移除硬盘
btrfs device delete /dev/sdZ /mnt/sda
# 添加后重新均衡文件
btrfs balance start /mnt/sda
# 查看文件系统上各种数据的用量
btrfs filesystem df /data