Answers:
简单:您正在寻找mhddfs。
它伪装成一个大文件系统,按照它们提到的顺序写入磁盘,如果第一个文件太满,则最终将大文件移动到另一个设备。实际上,它也可以使用磁盘上的子文件夹,以实现相同的功能。
必须先安装各个磁盘并保持可访问性。它根本不改变文件系统,也不在乎哪个文件系统就位(只要文件系统正确报告了可用空间)。万一磁盘丢失,您将不得不再次(动态)重新安装mhddfs,并且该磁盘上的数据都将丢失。
用法:
mhddfs /dir1,/dir2[,/path/to/dir3] /path/to/mount [-o options]
或在 /etc/fstab
mhddfs#/path/to/dir1,/path/to/dir2 /mnt/point fuse defaults 0 0
复杂而强大:您需要unionfs。
虽然mhddfs很好而且非常简单,但是在通过SSH授予其他人访问权限时,我在文件权限方面遇到了问题。我找不到任何解决方案,但找到了unionfs。
Unionfs还允许您将不同文件系统中的多个文件夹安装到一个文件夹中,但这确实对权限具有神奇作用。您可以将几个只读文件夹和一个可写文件夹合并在一起,因此它显示为一个。然后,与您共享合并文件夹的人员可以将其写入一个只读文件夹(如他们所看到的那样),但这些文件最终位于单个可写文件夹中。Linux引导CD的工作原理是这样的,可写磁盘是ramdisk。人们甚至可以删除只读文件夹中的文件,这实际上并不会删除文件,而是会在其写入目录中创建隐藏的白名单文件。如果您掌握了所有选项,则基本上可以将您的文件系统用作穷人SVN。
如果过多使用类似于SVN的选项,则可能会错过两次存在的数据(在您的方案中是不可能的,但有可能),而可写文件夹则填充了微小的隐藏白名单文件。除此之外,它还可以使磁盘保持清洁并可以单独使用。如果文件对于磁盘来说太大了,那我会不知道怎么办。
用法:
unionfs-fuse -o cow,max_files=32768 \
-o allow_other,use_ino,suid,dev,nonempty \
/path/to/dir1=rw:/path/to/dir2=ro:/dir3
/u/union/etc
where =rw
使文件夹可读可写,并且=ro
使其只读,即使权限另有规定也是如此。在etc/fstab
这是
unionfs-fuse#/path/to/dir1=rw:/path/to/dir2=ro:dir3 /path/to/mount fuse cow,allow_other 0 0
如果只是将多个设备连接在一起,则不会有任何冗余,因此可能会丢失数据。但是,如果您将媒体/文件服务器用于企业,则不应丢失任何东西,因为您已将所有内容备份到备份服务器/磁带驱动器中。
为什么要避免使用RAID?RAID的重点是可用性。如果您不想由于磁盘故障而浪费时间,可以使用RAID 1配置,这也可以加快读取速度。它们不是太贵,可以在第一次出现磁盘故障时自己购买,如果您真的避免为购买卡而付费,则可以将Linux设置为使用软件RAID,尽管在安装过程中需要多加注意和故障排除,以确保您更换正确的驱动器。
否则,您将不得不经历一些麻烦,以尝试从剩余磁盘中恢复什么数据。可能,但您的确要比实际需要的麻烦更多。获得适当的备份,然后重新考虑RAID。
我认为更简单的方法是为媒体分区配置mdadm。如果您没有用于“真实RAID”的硬件,则mdadm路由会容易得多,并且似乎可以满足您对冗余和简单磁盘更换的要求。
# Format your drives first
# Create your MD
mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sda2 /dev/sdb2 /dev/sdc2
# In the event that a drive fails do the following
mdadm /dev/md1 --fail /dev/sda1
# Format the new drive
mdadm --add /dev/md1 /dev/sda1
有关更多信息:http : //en.wikipedia.org/wiki/Mdadm
如果卷中的多个硬盘之一发生故障,我会丢失所有数据还是会丢失存储在该单个磁盘上的数据?
如果您使用mdadm和RAID 5,则可能会丢失一个驱动器并具有阵列功能,但性能会下降。
Btrfs是一个不错的选择。您可以使元数据具有抵御丢失一个磁盘的能力(“ raid1”块配置文件);其他磁盘上的数据仍然可以访问(我们很清楚,无论在哪里引用丢失的磁盘,都将转换为充满孔的文件)。这是通过运行带有过滤器的btrfs balance来完成的:
sudo btrfs balance start -m convert=raid1 /mnt/point