NAS における Ext4 対 XFS 対 Btrfs 対 ZFS

NAS における Ext4 対 XFS 対 Btrfs 対 ZFS

私の使用例: Ubuntu Server 18.04 を M.2 SSD にインストールしています。ストレージとして追加したい 4TB HDD があります。主に大きなメディア ファイルとバックアップ用なので、頻繁に書き込まれることはありません。

このユースケースに最適なファイルシステムはどれだと思いますか?

私の主な候補は、Ext3/4、XFS、Btrfs、ZFS です (他の候補があれば遠慮なくおっしゃってください)。

「最良のファイルシステムは何ですか?」と尋ねているわけではありません。「最良の」ものなど存在しないのです。 私は、このユースケースに最も適したファイルシステムはどれかと尋ねているだけです。以下の内容を含めてください。

  • 欠点やリスクはありますか? 電源が切れると XFS がデータが破損する可能性があると聞きました。ECC RAM のない ZFS でも同様です。
  • 後でデータを失うことなく RAID-1 を追加することは可能ですか? 現時点では別のハード ドライブを購入する資金がありません (外付けドライブとして使用しました。RAID はバックアップの代わりにはなりません) が、後で追加する可能性があります。これは必須ではありませんが、あれば便利な機能です。
  • 読み取り/書き込みのパフォーマンスはどの程度ですか? Btrfs はおそらくほとんどのニーズを満たしますが、Phoronix ベンチマークでは非常に遅いです。XFS は優れたパフォーマンスを発揮しますが、データ損失を引き起こす可能性があると聞きました。

アドバイスありがとうございます。

答え1

通常、次の 2 つのファイルシステムのいずれかを使用します。

  • CoW とうまく連携しないもの (またはデータストアがすでに CoW ファイルシステム上にある仮想マシン) や、非常に高速な直接 I/O が必要な場合には XFS を使用します。

  • その他については ZFS を使用します。

あなたのユースケースでは、Ubuntu 18.04 にすでに ZFS が搭載されていることを考えると、ZFS を使用することをお勧めします。既存のデバイスに別のミラー レッグを簡単に接続できるため、ZFS はまさにぴったりです。たとえば、ディスクに次の名前を付けますnvme0p1

  • zpool create tank /dev/nvme0p1「tank」という名前の単一の vdev プールを作成します。
  • zpool attach tank <newdev> /dev/nvme0p1ミラーリングを有効にします。

何らかの理由で ZFS を使用しない/使用できない場合は、MDRAID と XFS が役に立ちます。

  • mdadm --create /dev/md200 -l raid1 -n 2 /dev/nvme0p1 missingレッグが欠落した RAID1 アレイを作成します (1 を参照)。
  • mdadm --manage /dev/md200 --add <newdev>新しいミラーレッグを取り付ける(完全な RAID1 を形成する、#2 を参照)

アレイを作成したら、XFSでフォーマットすることができます。mkfs.xfs

私はしますないパフォーマンスと復元力の両方が標準以下であるため、BTRFSの使用をお勧めします。たとえば、Debian ウィキ:

現在(2019-07-07、Linux ≤ 5.1.16)、2ディスクのRAID1プロファイルが、たとえばディスクの欠落/破損/SATAリンクのリセットなどにより、劣化状態で2回目にマウントされると、永久に読み取り専用になるバグがあります。

また、BTRFS を使用する商用 NAS ベンダー (Synology) は、独自の統合 RAID 機能を使用せず、実績のある Linux MDRAID レイヤーを使用していることにも注意してください。

編集:XFS はデータ損失を起こしやすいと主張する人もいますが、これはまったく正しくありません。ext3 と比較すると、XFS (および遅延割り当てをサポートする他のファイルシステム) は、制御されていない電源オフの場合に、同期されていないデータを失う可能性が高くなります。ただし、同期されたデータ (つまり、重要な書き込み) は 100% 安全です。さらに、XFS のデータ損失を悪化させる特定のバグがあります。10年以上前に修正されました. そのバグは別として、どれでも遅延割り当てファイルシステム(ext4 および btrfs を含む)意思制御されていない電源オフの場合、大量のデータや同期されていないデータが失われます。

ext4と比較すると、XFSには無制限のinode割り当て、高度な割り当てヒント(必要な場合)、および最近のバージョンではreflinkサポート(ただし、Ubuntu 18.04では明示的に有効にする必要があります。mkfs.xfs マニュアルページ追加情報については


1:/proc/mdstatデバイスが見つからない場合のファイルの例:

Personalities : [raid1]
md200 : active raid1 loop0[0]
      65408 blocks super 1.2 [2/1] [U_]

unused devices: <none>

2: /proc/mdstat2台目のデバイスを追加した後のファイル

Personalities : [raid1]
md200 : active raid1 loop1[2] loop0[0]
      65408 blocks super 1.2 [2/2] [UU]

unused devices: <none>

答え2

これはむしろスーパーユーザーserverfault よりも優れていますが、いくつかのアイデアはこのサイトにも有効であるため、いくつかの質問に答えてみます。

  • XFS は、電源喪失を好まないという評判があります。それ以来、多くのことが起こり、現在では RedHat、Oracle などがこれをデフォルトのファイル システムとして使用しているため、この問題が以前よりも大幅に小さくなったとしても驚きません。特に、適切なバックアップ ポリシーがあり、このファイル システムから速度のメリットが得られるような使用事例である場合は、起こり得るリスクを冒す価値があるかもしれません。
  • ECC RAM のない ZFS は、依然として非常に優れた機能を備えていますが、不良データの一部を検出できないリスクがあります。私は、あなたが説明したのと同じような家庭環境で、ECC メモリのない ZFS を数年間実行しましたが、明らかなデータ損失は一度も発生しませんでした。ただし、そのボリュームに重要なデータを保存していたわけではありません。その後、適切なサーバー ハードウェアに移行し、今では重要なデータにストレージを実際に使用しても、はるかに安心しています。
  • ZFSでは、ディスクを単一ディスクプールに追加するだけでミラーを作成できます。実際に試したことはありません。しかし、チェックすると、成功したという複数の検索結果が表示されます。ダックダックゴ他のシステムについてはわかりませんが、ファイル システムの下に何らかのボリューム マネージャーがある限り、単一のディスクから RAID1 に移行するのは簡単なはずです。
  • CoW ベースのファイルシステム (zfs、btrfs) は、機能の少ないシステムよりも遅く、十分に強力なハードウェアのサポートに大きく依存します。

企業環境と同様に、パフォーマンスと機能を直接体験するために、予想される負荷でベンチマークを実行する時間を確実に取ることをお勧めします。

答え3

特別な理由がない限り、問題のオペレーティング システムがデフォルトとして提案するジャーナリング ファイル システムを使用します。前回 Ubuntu で確認したときは、ext4 でした。

理由は簡単です。デフォルトは最もよく使用される可能性が高いため、バグが発見され修正される可能性が最も高くなります。あなたが言及したファイル システム間の違いは、日常的な軽い使用ではあまり意味がありません。パフォーマンスが非常に重要な場合は、代わりにメモリを増設して、オペレーティング システムにキャッシュ用のスペースを増やすことを検討してください。

そうは言っても、ドライブを複数のオペレーティング システムで使用する場合は、ドライブを 2 つ入手するか、少なくとも 1 つを 2 つの物理パーティションに分割し、メディアが入っているパーティションで NTFS または exFAT を使用することをお勧めします。

答え4

実際のミラーがなくても、mdadm で作成されたミラー上に XFS 形式のファイルシステムを作成できます。

3 つのミラーがあり、そのうち 2 つが欠落しているミラーとしてパーティションを作成します。 後で、欠落している 2 つを追加できます。

関連情報