我想建立一個檔案伺服器/NAS,同時使用 btrfs 來保護資料(防止 bitrot),但我想使用現有的 KVM/QEMU 伺服器(帶有 btrfs raid1 的 debian)並為此目的建立一個虛擬機器。
如果我建立 VM 並將資料儲存在 ext4 檔案系統中,主機伺服器上的 btrfs 校驗和是否會偵測到 VM 上的資料損壞?
--------------------
| KVM server |
| btrfs - raid1 |
| ----------- |
| | VM-ext4 | |
| ----------- |
|------------------|
如果前面的答案是否定的,我是否還必須使用 btrfs 作為其檔案系統來建立 VM?
在這種情況下,為了保持 btrfs 的「自我修復」功能,我必須建立至少 2 個虛擬磁碟才能在 raid1 中擁有 btrfs。
---------------------
| KVM server |
| btrfs - raid1 |
| ------------ |
| | VM-btrfs | |
| | 2 x vda | |
| ------------ |
|-------------------|
但這樣我會浪費很多空間...主機伺服器中的 raid1 加上虛擬機器中的 raid1。
或者也許最好的解決方案是直接在主機伺服器上實現檔案伺服器(儘管我更願意在這兩個角色之間保持一定的分離)?
更新1
儘管我偏好 btrfs,但我的主要問題是 btrfs/zfs 在偵測和修正 VM 磁碟中的靜默損壞方面的有用性。這些檔案系統如何區分虛擬磁碟上的靜默損壞和正常磁碟寫入?
更新2
經過更多谷歌搜索後,我只能找到更多關於此的信息伺服器故障的問題。
根據一些評論,虛擬客戶系統也將面臨風險,除非實現更複雜的檔案系統(可能是 raid1 主機檔案系統內的 raid1 客戶檔案系統)。
所以我現在的想法是這樣的:
- 在kvm主機伺服器上設定檔案伺服器
- 確保檔案伺服器(已使用 btrfs)上的關鍵資料安全,並透過 NFS 與虛擬機器共用
- 停用 VM 磁碟映像資料夾的 COW
- 建立虛擬機器的 kvm 快照並將其設定檔備份到 NFS 共用
這是一個合理的解決方案還是我忘了一些重要的細節?
答案1
我主要是基於此伺服器故障後 但我會嘗試回答自己。
如果我建立 VM 並將資料儲存在 ext4 檔案系統中,主機伺服器上的 btrfs 校驗和是否會偵測到 VM 上的資料損壞?
不會。
如果前面的答案是否定的,我是否還必須使用 btrfs 作為其檔案系統來建立 VM?
是的。
或者也許最好的解決方案是直接在主機伺服器上實現檔案伺服器(儘管我更願意在這兩個角色之間保持一定的分離)?
就我而言,解決方案是:
- 在kvm主機伺服器上設定檔案伺服器
- 確保檔案伺服器(已使用 btrfs)上的關鍵資料安全,並透過 NFS 與虛擬機器共用
- 停用 VM 磁碟映像資料夾的 COW
- 建立虛擬機器的 kvm 快照並將其設定檔備份到 NFS 共用


