如果您有多个磁盘或分区要用于一个媒体项目,而又不想丢失任何现有数据,但又想将所有文件都放置或安装在一个驱动器下,该怎么办?这时mergefs可以助您一臂之力!
简介 mergefs是一个联合文件系统,旨在简化众多存储设备中文件的存储和管理。 您将需要从 https://github.com/trapexit/mergerfs/releases 页面获取新的RPM包,Fedora的发行版名称中包含fc和版本号,例如针对Fedora 31版本的,请下载mergerfs-2.29.0-1.fc31.x86_64.rpm,如果是针对Ubuntu 20.04 LTS(Focal Fossa)的,则下载mergerfs_2.29.0.ubuntu-focal_amd64.deb,如果是针对Debian 10(Buster)的,则下载mergerfs_2.29.0.debian-buster_amd64.deb。
在Fedora系统下安装 使用sudo安装已下载的mergefs软件包: $ sudo dnf install mergerfs-2.29.0-1.fc31.x86_64.rpm
在Fedora系统下使用和配置mergefs 现在,您可以将多个磁盘作为一个驱动器安装,如果您有一台媒体服务器,并且希望所有媒体文件都显示在一个位置下,这将很方便。如果将新文件上载到系统,则可以将它们复制到您的mergefs目录,并且mergefs将自动将它们复制到驱动器具有足够可用空间的位置。 这是使您更容易理解的示例,如下图:
所运行的命令: $ df -hT | grep disk $ ls -l /disk1/Videos/ $ ls -l /disk2/Videos/ 在此示例中,安装了两个磁盘,分别为disk1和disk2,两个驱动器都有一个包含现有文件的“Videos”目录。 现在,我们将使用mergefs挂载这些驱动器,使它们看起来像一个更大的驱动器: $ sudo mergerfs -o defaults,allow_other,use_ino,category.create=mfs,moveonenospc=true,minfreespace=1M /disk1:/disk2 /media mergefs手册页非常广泛且复杂,因此我们将分解指定的选项。 defaults:除非指定,否则将使用默认设置。 allow_other:允许sudo或root以外的用户查看文件系统。 use_ino:导致mergefs提供文件/目录的inode而不是libfuse,虽然不是默认值,但建议您启用它,以便链接的文件共享相同的inode值。 category.create=mfs:根据可用空间在驱动器中传播文件。 moveonenospc=true:如果启用,则如果写入失败,将进行扫描以查找具有最大可用空间的驱动器。 minfreespace=1M:使用的最小空间值。 disk1:第一个硬盘驱动器。 disk2:第二个硬盘驱动器。 /media:安装驱动器的目录文件夹。 看起来是这样的,如下图:
所运行的命令: $ df -hT | grep disk $ df -hT | grep media 您可以看到mergefs挂载现在显示的总容量为66M,这是两个硬盘驱动器的总容量。 继续示例: 有一个30Mb的视频,叫做Baby的第二个Xmas.mkv,让我们将其复制到/media文件夹中,该文件夹是mergefs挂载,如下图:
所运行的命令: $ ls -lh "Baby's second Xmas.mkv" $ cp "Baby's second Xmas.mkv" /media/Videos/ 这是最终结果,如下图:
所运行的命令: $ df -hT | grep disk $ df -hT | grep media 从磁盘空间利用率中可以看到,因为disk1没有足够的可用空间,所以mergefs自动将文件复制到disk2。 这是所有文件的细分,如下图:
所运行的命令: $ ls -l /disk1/Videos/ $ ls -l /disk2/Videos/ $ ls -l /media/Videos/ 当您将文件复制到mergefs挂载时,它将始终将文件复制到具有足够可用空间的硬盘上。如果池中的所有驱动器都没有足够的可用空间,那么您将无法复制它们。
相关主题 |