在单个虚拟分区下访问多个磁盘?

在我的Debian服务器上有如下的磁盘:

/dev/sda1 276M 29M 233M 11% /boot /dev/sdb1 917G 793G 79G 92% /home /dev/sdc1 1.8T 1.7T 79G 96% /home2 /dev/sdd1 1.8T 1.7T 79G 96% /home3 

是否有可能作为单个分区访问/dev/sdb1 /dev/sdc1 /dev/sdd1 ,以便:

一个)。 我可以通过像/bighome这样的单个挂载点访问它们,而文件则会透明地自动保存到我的脚本中?

B)。 这可以实现而不会丢失服务器上的现有数据?

是的,你可以做。 与普遍的看法相矛盾,没有必要重新格式化。

有文件系统正在做你想要的。 两个他们我记得: unionfs , aufs和overlayfs 。 最后一个用在每个ubuntu live / install dvd上。

这些可以工作,因为他们正在文件系统的水平,而不是块设备的水平。

a)是的,这就是Raid或LVM条纹所做的。 但是要小心,如果你构buildraid0或者LVM条带,并且你的一个磁盘发生故障,那么整个数据就没有了。 为了克服这一点,你需要冗余; 突袭6将是很好的select。 但要build立RAID5,你最好有所有的磁盘相同的大小…

b)据我所知,没有办法在创buildRaid或LVM时保存现有的数据。 你需要备份它们。

正如已经指出的那样,有几种方法可以做到这一点:

  • 一个联合文件系统,尽pipe这些文件系统通常用于相当具体的用例(例如,提供只读文件系统的可写版本或为慢速远程文件系统提供本地快速caching),因此可能不适合这种情况

  • LVM条纹

  • RAID以各种forms

其中一个你应该去的是RAID,使用5,或者linux特殊的3个驱动器RAID10(这基本上是IBM硬件RAID控制器称为RAID1E的东西) – 这样,如果一个驱动器死了,你的数据是安全的,所以你可以插入另一个驱动器并重新创buildarrays。 如果有其他select,如果一个驱动器遇到麻烦,则可能会丢失所有三个驱动器上的所有数据。 RAID5和RAID10之间的select取决于系统的用途。 使用RAID5,最终的容量是3.6T,但是写入性能问题会影响一些使用情况(如重型数据库工作),对于3驱动器的RAID10,您将得到相同的或者更好的(对于某些写入工作量大)的性能,但可用空间只有2.7Tb。

当然你可以使用RAID0,但是那个一样的“死亡,所有的数据都没了”的问题。

迁移不丢失数据是可能的(因为您的两个驱动器开始是空的), 但不推荐使用,并且仍然需要一些停机时间(至less在数据是只读的时候):

  1. 使用这两个驱动器在降级状态下创buildRAIDarrays(即,您的两个驱动器R5arraysperformance得像驱动器已经失败)
  2. 停止用户写入现有卷(或者完全禁止访问)
  3. 将数据复制到新数组中
  4. 更改安装细节,以便新副本是主动副本。
    (此时您可以重新启用写入权限。)
  5. 删除旧的文件系统
  6. 将现在空的第三个设备添加到RAIDarrays中,作为“失败”驱动器的替代品,arrays将被构build(对于像这样的大型驱动器,这可能需要一些时间,特别是如果同时有活动使用的数据)
  7. 一旦arrays重build完成(您可以通过/proc/mdstat监视进度),一切都完成了,您正在使用全部三个驱动器,并在任何给定的时间对任何一个驱动器进行保护。

在进行上述操作之前,我强烈build议您确保您的备份是最新的,并在出现问题时进行testing。 因此,更新和validation备份可能更快更安全,可以正常构buildarrays,并从最新的备份中重build数据。