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

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

我的 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作为单个分区进行访问以便:

a). 我可以从单个挂载点访问它们,就像/bighome文件自动保存在磁盘上一样,这对我的脚本来说是透明的?

b). 是否可以在不丢失服务器上现有数据的情况下实现此目的?

答案1

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

有些文件系统可以完全按照你的要求运行。我记得有两个这样的文件系统:联合文件系统奥夫斯覆盖文件系统. 最后一个用于每个 ubuntu live/install dvd。

它们之所以能工作是因为它们在文件系统级别而不是块设备级别上工作。

答案2

a) 是的,这就是 Raid 或 LVM 条带化的作用。但请注意,如果您构建了 raid0 或 LVM 条带化,并且其中一个磁盘发生故障,则其中的所有数据都将丢失。为了克服这个问题,您需要冗余;raid 6 是不错的选择。但要构建 raid5,最好让所有磁盘的大小相同...

b) 不,据我所知,创建 Raid 或 LVM 时无法保留现有数据。您需要备份它们。

答案3

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

  • 联合文件系统,虽然这些通常是用于相当特定的用例(即提供只读文件系统的可写版本或为慢速远程文件系统提供本地快速缓存),所以可能不是最适合这种情况

  • LVM 条带化

  • 各种形式的 RAID

其中,您应该选择使用 5 个驱动器的 RAID,或者 Linux 的特殊 3 驱动器 RAID10(本质上是 IBM 硬件 RAID 控制器所称的 RAID1E)——这样,如果一个驱动器坏了,您的数据是安全的,因此您可以插入另一个驱动器并重新创建阵列。使用其他选项,如果一个驱动器出现问题,您可能会丢失全部所有三个驱动器上的数据。RAID5 和 RAID10 之间的选择取决于系统的用途。使用 RAID5,您最终将获得 3.6T 卷,但存在影响某些用例(如繁重的数据库工作)的写入性能问题;使用 3 驱动器 RAID10,您将获得相同或有时更好的性能(对于某些写入繁重的工作负载来说要好得多),但可用空间只有 2.7Tb。

您当然可以使用 RAID0,但这会产生同样的“一个磁盘坏了,所有数据都丢失”的问题。

无需删除数据即可进行迁移(因为您的两个驱动器都是空的)但不推荐并且仍然需要一些停机时间(或至少是数据只读的时间):

  1. 使用两个驱动器在降级状态下创建 RAID 阵列(即,您的两个驱动器 R5 阵列的行为就像驱动器发生故障一样)
  2. 停止用户对现有卷的写入(或完全阻止对它的访问)
  3. 将数据复制到新数组
  4. 更改安装详细信息,使新副本成为活动副本。
    (此时您可以重新启用写访问权限。)
  5. 删除旧文件系统
  6. 将现在为空的第三个设备添加到 RAID 阵列中以替代“故障”驱动器,然后构建阵列(这在大型驱动器上可能需要一些时间,特别是如果同时主动使用数据)
  7. 一旦阵列重建完成(您可以通过监控进度/proc/mdstat),一切都完成了,您正在使用所有三个驱动器,并且可以防止其中任何一个在任何给定时间发生故障。

在做上述事情之前我强烈建议确保您的备份是最新的,并经过测试以防出现问题。在这种情况下,更新和验证您的备份、正常构建阵列并从最新备份重建数据可能更快、更安全。

相关内容