将ubuntu设置为NAS——14.尝试mergerfs合并多个物理硬
创作立场声明:本人小白,只是想通过本平台记录一些折腾以Ubuntu系统为主的NAS过程,同时方便自己查阅,还能赚点金币,于是就有了这个小系列。
前言
之前发文简单介绍了在Ubuntu下的新增硬盘挂载方案,评论区有大佬提到了mergerfs,简单百度了一下,发现是个神器,于是就有了这篇文章。利用这个软件,我实现了多块物理硬盘(可以是不同格式)合并到一个分区文件夹中进行管理,后面又利用此软件实现外接USB3.0的移动硬盘与内部硬盘合并为一个分区文件夹。
1、mergefs介绍
mergerfs是一个联合文件系统,旨在简化众多存储设备中文件的存储和管理。它类似于mhddfs,unionfs和aufs。
如果你想在一个媒体项目中用到了多个磁盘或分区,不想丢失任何现有数据,但又想将所有文件都存放在一个驱动器下,该怎么办?这时,mergerfs 就能派上用场!
从我的感受就是mergerfs+snapraid能实现类似unRAID的硬盘管理方式,我个人不喜欢采用冗余盘来做数据校验保证数据的安全性,一般我是重要数据冷备份方式,或是多处硬盘数据同步,不重要的数据也没有备份的必要。比如重要照片在NAS系统存储,再同步到私人PC电脑上,隔段时间冷备份到移动硬盘。所以我就直接采用mergerfs,不需要snapraid校验保证数据。如果你需要数据校验等功能,需要再安装snapraid校验保证数据。
通过mergerfs,能将多个物理硬盘组成一个分区文件夹,可以是不同格式,比如ext4与ntfs混合为一个分区文件夹,当我需要拆出其中硬盘时,也能保证不破坏硬盘数据,还能在其他电脑里把数据拷贝出来。新买硬盘或是想把现有数据的硬盘加到NAS,还能在不清除数据的情况,不需要格式化为ext4,挂载到同一分区文件夹中利用Ubuntu进行管理,这对管理媒体文件,是很方便的。
2、mergerfs安装
mergerfs 官网,里面安装方法很仔细,还有详细的设置,不过确实看着很复杂。试试安装看吧
方法一:直接安装(本人推荐)
当然最简单的安装方法是
sudo apt install mergerfs
方法二:新建mergefs文件夹,并进入此文件夹
mkdir mergerfs
cd ./mergerfs
下载最新版mergefs,目前这次尝试我用的是我的超级蜗牛,安装了 Ubuntu 20.04,找到合适版本如下,其他系统请下载其他版本(比如 Ubuntu 18.04 用mergerfs_2.32.6.ubuntu-bionic_amd64.deb)
wget https://github.com/trapexit/mergerfs/releases/download/2.32.6/mergerfs_2.32.6.ubuntu-focal_amd64.deb
安装
sudo dpkg -i ../mergerfs_2.32.6.ubuntu-focal_amd64.deb
图上是2.31.0版本(之前安装截图的),最新是2.32.6
3、mergerfs挂载硬盘
首先查看NAS服务器下的硬盘情况
sudo fdisk -l
目前我的硬盘主要是1块64G固态做系统,2块500G机械硬盘主做存储。
查看硬盘的UUID
sudo blkid
64G固态硬盘为sda2, UUID="add73d6a-c780-4922-854e-0007631dc53e" TYPE="ext4" PARTUUID="b2b48c97-e412-479d-8b91-56820d093018"
其中一块500G机械硬盘为 sdb1, UUID="32F057E6F057AF3B" TYPE="ntfs" PARTUUID="e80b2b83-01"
另外一块500G机械硬盘为sdc1,UUID="5E1578FC2B456847" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="6515ebc5-76ee-4c93-a629-431ff7aabdfa"
准备硬盘挂载点,计划挂载载/mnt目录下面
sudo mkdir /mnt/disk{1,2}
sudo mkdir /mnt/all
其中disk1和disk2用于挂载2个机械硬盘,all用来mergerfs合并分区。
编辑fstab将分区信息写到/etc/fstab 文件中让它永久挂载。
sudo nano /etc/fstab
添加如下内容:
# /mnt new harddisk
UUID=32F057E6F057AF3B /mnt/disk1 ntfs defaults
UUID=D61DFC12BB32EDB9 /mnt/disk2 ntfs defaults
# mergerfs storage combine data harddrives into single storage
/mnt/disk* /mnt/all fuse.mergerfs defaults,allow_other,minfreespace=10G,fsname=mergerfs,ignorepponrename=true 0 0
其中最重要的是mergerfs相关命令
fuse.mergerfs defaults,allow_other,minfreespace=10G,fsname=mergerfs,ignorepponrename=true 0 0
简单介绍一下上述参数的意义。
defaults:开启以下 FUSE 参数以提升性能:atomic_o_trunc, auto_cache, big_writes, default_permissions, splice_move, splice_read, splice_write;
allow_other:允许挂载者以外的用户访问 FUSE。你可能需要编辑 /etc/fuse.conf来允许这一选项;
use_ino:使用 mergerfs 而不是 libfuse 提供的 inode,使硬链接的文件 inode 一致;
minfreespace=10G:选择往哪个下层文件系统写文件时,跳过剩余空间低于 10G 的文件系统;
fsname=mergerfs:设置文件系统的名称为 mergerfs,特可以自定义其他名字如mount,df等 。
ignorepponrename=true:重命名文件时,不再遵守路径保留原则,保持原来的存储路径。
填好上面内容后,ctrl+O保存(输入Y确认),ctrl+X退出。
对磁盘挂载分区进行更新挂载
sudo mount -a
再查看挂载情况
df -TH
已经能看到挂载各个硬盘,以及mergerfs挂载情况,mergerfs容量 = disk1容量 + disk2容量,共计 995 G 。
4、合并移动硬盘
购入移动12T西数硬盘,准备也合并起来,考虑USB3.0传输速度问题也不大,并且对蜗牛的NAS的供电不是太信任,直接接USB3.0,而不是拆出来使用,还是用原来的西数硬盘盒,再将移动硬盘挂载合并使用。
准备硬盘挂载点,还是挂载/mnt目录下面
sudo mkdir /mnt/disk3
查看移动硬盘信息
sudo blkid
重点记住UUID和TYPE。
编辑fstab将分区信息写到/etc/fstab 文件中让它永久挂载。
sudo nano /etc/fstab
保存退出后,对磁盘挂载分区进行更新挂载
sudo mount -a
如果出现问题,可能是USB已经自动挂载了,再挂载后出现重复挂载的情况,那就重启一下NAS服务器。
fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option
重启ubuntu服务器后,查看mnt/all容量,已经有12.7T了,挂载成功。
局域网测试移动文件
基本达到了局域网千兆网速要求,这样的分区设置,基本对硬盘速度没有。后期使用过程,这样的分区设置,部分文件移动还是会有些影响,可以微调mergerfs相关命令,不过目前本文使用的这个默认命令,已经可以满足大部分应用场景需求。如要调整请参照官网说明
总结
通过尝试mergerfs管理磁盘,合并多个物理磁盘为同一挂载文件,方便了文件管理。之前有小伙伴提到mergerfs影响磁盘性能,经过简单测试,并没有这个问题。我理解本软件实现的只是不同物理硬盘的映射方式,对硬盘本身是没有影响的,即不能加速,也不会减速。
参考
mergerfs官网:https://github.com/trapexit/mergerfs
https://forums.serverbuilds.net/t/setting-up-media-server-using-ubuntu-and-snapraid/239/2
龍門渕透華
校验提示文案
我就是cy
校验提示文案
lemorange
校验提示文案
若星汉的天空
校验提示文案
yinhao
校验提示文案
littleneko
校验提示文案
天吟
校验提示文案
riverqh
校验提示文案
riverqh
校验提示文案
lemorange
校验提示文案
我就是cy
校验提示文案
天吟
校验提示文案
littleneko
校验提示文案
yinhao
校验提示文案
龍門渕透華
校验提示文案
若星汉的天空
校验提示文案