btrfs 主机上的文件服务器虚拟机

btrfs 主机上的文件服务器虚拟机

我想构建一个文件服务器/NAS,同时使用 btrfs 来保护数据(防止数据腐烂),但我想使用我现有的 KVM/QEMU 服务器(带有 btrfs raid1 的 debian)并为此目的创建一个 VM。

如果我创建虚拟机并将数据存储在 ext4 文件系统中,主机服务器上的 btrfs 校验是否会检测到虚拟机上的数据损坏?

--------------------
|    KVM server    |
|   btrfs - raid1  |
|   -----------    |
|   | VM-ext4 |    |
|   -----------    |
|------------------|

如果之前的答案是否定的,我是否也必须创建以 btrfs 作为其文件系统的虚拟机?

在这种情况下,为了保留 btrfs 的“自我修复”功能,我必须创建至少 2 个虚拟磁盘以在 raid1 中拥有 btrfs。

---------------------
|     KVM server    |
|    btrfs - raid1  |
|   ------------    |
|   | VM-btrfs |    |
|   | 2 x vda  |    |
|   ------------    |
|-------------------|

但是这样我会浪费很多空间...主机服务器中的 raid1 加上 VM 中的 raid1。

或者最好的解决方案是直接在主机服务器上实现文件服务器(尽管我更愿意在这两个角色之间保持一定的分离)?

更新 1
尽管我偏爱 btrfs,但我的主要问题是 btrfs/zfs 在检测和纠正虚拟机磁盘中的静默损坏方面是否有用。这些文件系统如何区分虚拟磁盘上的静默损坏和正常磁盘写入?

更新 2
在谷歌搜索了一段时间后,我只能找到更多关于此的信息来自 serverfault 的问题
根据一些评论,除非实施更复杂的文件系统(可能是 raid1 主机文件系统内的 raid1 客户文件系统),否则虚拟客户系统也将面临风险 。

所以我现在的想法是这样的:

  • 在 kvm 主机服务器上设置文件服务器
  • 将关键数据安全地保存在文件服务器(已使用 btrfs)上,并通过 NFS 与虚拟机共享
  • 禁用虚拟机磁盘映像文件夹的 COW
  • 创建虚拟机的 kvm 快照并将其配置文件备份到 NFS 共享

这是一个合理的解决方案吗,还是我忘记了一些重要的细节?

答案1

我主要基于此serverfault 帖子 但我会尽力自己回答。

如果我创建虚拟机并将数据存储在 ext4 文件系统中,主机服务器上的 btrfs 校验是否会检测到虚拟机上的数据损坏?

不,据我所知,主机系统无法检测到虚拟机文件系统上的数据损坏。

如果之前的答案是否定的,我是否也必须创建以 btrfs 作为其文件系统的虚拟机?

是的。

或者最好的解决方案是直接在主机服务器上实现文件服务器(尽管我更愿意在这两个角色之间保持一定的分离)?

对我来说,解决方案是:

  • 在 kvm 主机服务器上设置文件服务器
  • 将关键数据安全地保存在文件服务器(已使用 btrfs)上,并通过 NFS 与虚拟机共享
  • 禁用虚拟机磁盘映像文件夹的 COW
  • 创建虚拟机的 kvm 快照并将其配置文件备份到 NFS 共享

相关内容