btrfs を使用してデータを保護しながら (bitrot から) ファイル サーバー/NAS を構築したいのですが、既存の KVM/QEMU サーバー (btrfs raid1 を備えた debian) を使用して、この目的のために VM を作成したいと思います。
VM を作成し、データを ext4 ファイル システムに保存した場合、ホスト サーバーの btrfs チェックサムによって VM 上のデータ破損が検出されますか?
--------------------
| KVM server |
| btrfs - raid1 |
| ----------- |
| | VM-ext4 | |
| ----------- |
|------------------|
前の答えが「いいえ」の場合、ファイル システムとして btrfs を使用して VM を作成する必要がありますか?
この場合、btrfs の「自己修復」機能を維持するには、raid1 で btrfs を使用するために少なくとも 2 つの仮想ディスクを作成する必要があります。
---------------------
| KVM server |
| btrfs - raid1 |
| ------------ |
| | VM-btrfs | |
| | 2 x vda | |
| ------------ |
|-------------------|
しかし、この方法では多くのスペースを無駄にすることになります...ホスト サーバーの RAID1 と VM の RAID1 です。
あるいは、おそらく最善の解決策は、ファイル サーバーをホスト サーバーに直接実装することです (ただし、これら 2 つの役割をある程度分離しておくことをお勧めします)。
アップデート 1
私は btrfs を好みますが、主な質問は、VM ディスクのサイレント破損を検出して修正する際の btrfs/zfs の有用性についてです。これらのファイル システムは、仮想ディスク上のサイレント破損と通常のディスク書き込みをどのように区別できるのでしょうか。
アップデート2
もう少しグーグルで検索したところ、これに関する詳細情報がいくつか見つかりましたserverfaultからの質問
いくつかのコメントによると、より複雑なファイル システムが実装されない限り (おそらく RAID1 ホスト ファイル システム内の RAID1 ゲスト ファイル システム)、仮想ゲスト システムも危険にさらされることになります 。
だから私の今の考えはこうです:
- KVMホストサーバーにファイルサーバーをセットアップする
- 重要なデータをファイルサーバー(すでにbtrfsを使用している)上で安全に保管し、NFS経由でVMと共有する
- VMディスクイメージフォルダのCOWを無効にする
- VMのkvmスナップショットを作成し、その構成ファイルをNFS共有にバックアップします。
これは合理的な解決策でしょうか、それとも重要な詳細を忘れているのでしょうか?
答え1
私は主にそれに基づいていますserverfault 投稿 しかし、私は自分自身で答えようとします。
VM を作成し、データを ext4 ファイル システムに保存した場合、ホスト サーバーの btrfs チェックサムによって VM 上のデータ破損が検出されますか?
いいえ。私が収集した情報によると、ホスト システムが VM ファイル システム上のデータ破損を検出する方法はありません。
前の答えが「いいえ」の場合、ファイル システムとして btrfs を使用して VM を作成する必要がありますか?
はい。
あるいは、おそらく最善の解決策は、ファイル サーバーをホスト サーバーに直接実装することです (ただし、これら 2 つの役割をある程度分離しておくことをお勧めします)。
私の場合の解決策は次のようになります。
- KVMホストサーバーにファイルサーバーをセットアップする
- 重要なデータをファイルサーバー(すでにbtrfsを使用している)上で安全に保管し、NFS経由でVMと共有する
- VMディスクイメージフォルダのCOWを無効にする
- VMのkvmスナップショットを作成し、その構成ファイルをNFS共有にバックアップします。


