世界を動かす技術を、日本語で。

Synology、QNAP、TrueNASなしでミニマルなZFS NASを構築する方法 (2024)

2026年7月8日原文(neil.computer)

概要

  • SynologyやTrueNAS等の専用NASソフト不要、 Debian 12 でZFS NASを最小構成で構築する手順
  • ZFSの自己完結性 と、ディスク移行時の柔軟性が大きな利点
  • RAIDZ1構成 (1台冗長)で 4x4TB NVMe SSD を利用
  • Sambaによる ネットワーク共有 とTime Machine対応
  • 初心者向け、 Linux基本操作 のみで構築可能

最小構成ZFS NAS構築手順(GUI不要・Debian 12編)

  • 前提条件

    • RAIDレベル: RAIDZ1 (1台冗長)
    • OS: Debian 12 Bookworm
    • 暗号化: なし
    • ZFS実装: OpenZFS 2.1.1
    • CPU: 4コア Xeon等サーバー向けCPU
    • メモリ: 16GB ECC RDIMM
    • ストレージ: 4x4TB NVMe SSD
    • バックアップ: ZFS Backup Scheduler等を別途利用
    • 必要スキル: Linuxの基礎知識
  • ZFSの特徴

    • 自己完結型ファイルシステム
      • OSが破損しても、ディスクを他マシンに移して zfs import で即復旧可能
      • 設定情報は全て ディスク自体に保存
      • RAIDZ2等でも同様の自由度
  • ディスクの確認と整理

    • ディスク一覧取得:
      lsblk -d -o TRAN,NAME,TYPE,MODEL,SERIAL,SIZE
      
    • ディスクID確認:
      ls -lh /dev/disk/by-id
      
    • vdev_id.conf でエイリアス設定(任意)
      vim /etc/zfs/vdev_id.conf
      alias nvme0 /dev/disk/by-id/xxx
      alias nvme1 /dev/disk/by-id/xxx
      ...
      udevadm trigger
      
      • /dev/nvme1等の直接指定は非推奨、 IDベースでの指定が安全
  • ZPOOL作成

    • ZFSインストール(Debianの場合)
      apt install zfsutils-linux
      
    • ashift=12 指定でzpool作成(4Kセクタ最適化)
      zpool create -o ashift=12 s16z1 raidz1 nvme0 nvme1 nvme2 nvme3
      
    • プール状態確認
      zpool status s16z1
      
    • 圧縮・マウントポイント設定
      zfs set mountpoint=/mnt/s16z1 s16z1
      zfs set compression=lz4 s16z1
      
    • ZFSデータセット作成 (例:docs, backups)
      zfs create s16z1/docs
      zfs create s16z1/backups
      
      • データセット は単なるフォルダ以上の管理単位
      • スナップショット、レプリケーション、暗号化等のZFS機能を個別適用可能
  • Sambaによる共有設定

    • Sambaインストール

      apt install samba
      
    • 専用UNIXユーザー作成(例:john)

      useradd -m john
      passwd john
      smbpasswd -a john
      
    • Samba設定ファイル編集

      vim /etc/samba/smb.conf
      
      • 例:[docs]と[backups]の2つの共有を作成
      • Time Machine用にはfruitモジュール等を有効化
      [docs]
      path = /mnt/s16z1/docs
      browseable = yes
      read only = no
      guest ok = no
      valid users = john
      create mask = 0755
      
      [backups]
      path = /mnt/s16z1/backups
      read only = no
      guest ok = no
      inherit acls = yes
      spotlight = yes
      fruit:aapl = yes
      fruit:time machine = yes
      vfs objects = catia fruit streams_xattr
      valid users = john
      
  • 動作確認

    • macOS Finderでsmb://<サーバIP>/docs/backupsに接続
    • Time Machineは backups共有 を指定
    • Linuxクライアントからはsmbclientコマンドでアクセス可能
  • 補足

    • /etc/zfs/vdev_id.conf は利便性向上用であり、OS障害時の復旧には不要
    • ZFSのレプリケーション・暗号化等は別記事で解説予定

TrueNAS等を使わない理由

  • TrueNAS は多機能だが、 必要最低限の機能だけで十分な場合 は過剰
  • シンプルな構成の方が トラブル時の自己解決性 が高い
  • ZFSの本質的な利便性 (ディスク単体移行、自己完結性)を最大限活かせる

ZFSのデータ移行・復旧の強み

  • ディスク構成情報は全てディスクに記録
    • 新しいマシンやOSに zfsツールのみインストールzfs import で即データ認識
  • RAIDZ1/2/3 等、どのレベルでも同様のメリット
  • ホストOS障害時のリスク低減

まとめ

  • Debian 12 + ZFS + Samba で、 GUI不要の高品質NAS を最小構成で実現
  • ZFSの自己完結性柔軟なデータセット管理 が最大の魅力
  • Samba連携 でWindows/macOS双方からのアクセスやTime Machineバックアップも簡単
  • 将来的な拡張 (暗号化、レプリケーション等)も容易

参考:Oracle ZFSシステムの美しい外観 https://docs.oracle.com/cd/E78901_01/html/E78910/gqtmb.html

Hackerたちの意見

まだスヌーティーにお金を払ってるんだけど、その理由は、ディスクが壊れたとき(いつ壊れるかじゃなくて、壊れるときね)に、トレイを引き出してディスクを交換して、トレイを戻して、いくつかのウィジェットをクリックするだけで済むから。ちゃんと再構築されるって分かってるからね。(ディスクが壊れるとビープ音が鳴って、壊れたディスクの近くのLEDが点灯するから、それを知っておかないといけない)この記事に書かれてるようなNASを作るのは簡単だけど、長い目で見るとデータ損失のリスクがかなり高くなる。あと、「ディスク3が壊れました、これが安全に交換する方法です」みたいなガイドがないのは、個人的には不完全だと思う。たとえディスクの故障をどうやって知るかを説明していなくてもね。

スヌーティーって、シノロジーの自動修正のこと?それとも他の製品?

でも、ZFSの仕組みはまさにそんな感じだよ。ガイドは完全ではないけど、「配列を再構築する」っていうのは、ディスクを交換してZFSコマンドを一つ実行するだけだから。

ZFSを使えば、"ビープ音とLEDの点灯"以外は全然簡単だよ。

ZFSはドライブの故障を他のどの方法よりも堅牢に処理するよ。SynologyがBTRFSの下でmdadmを使う理由があるし、mdadmはデバイスレベルで動作するからね。つまり、ドライブを交換するにはmdadmが全体を再構築しなきゃいけないけど、ZFSは実際に使われている部分だけを再構築するんだ。> それに、「ディスク3が故障しました、これが安全に交換する方法です」といったガイドがないのは、個人的には不完全だと思う。ディスクが故障したかどうかを知る方法を説明しなくてもね。zpool replace my_pool disk3 newdisk

NASを作ったとき、同じ結論に至ったよ。システムにはNix、RAIDにはZFS、サービスを動かすためにはDocker Composeを使ってる。https://www.splitbrain.org/blog/2025-08/03-diy_nas_on_nixos

同じく、NixOSをNASとして使ってるけど、どんどん大きくなってきて、今は他の人と共有しようとしてる。MDADMでBTRFSを使ってるけどね。クローゼットにあったうるさい電力を食うラックに疲れたから、今はオールインワンのホームサーバー兼ルーターになっちゃった。https://HomeFree.host

NASにはNixOSを使ってるんだけど、コンテナを管理するためにquadlets(systemdで管理されるDockerコンテナ)を調べてみて。

NASを作るには今はあまり良い時期じゃないけど、ここ2週間やってるよ。Jonsbo N6ケースの中に入れてて、8x SATAバックプレーンとドライブベイがあってかなりいい感じ(以前のJonsboのバリエーションとは違って)。結局、14TBのWD Elements Desktopを4台剥がしたよ。ヘリウムドライブが入ってて、私の場合はWD140EDGZで、12TBのWD Red Plusドライブ(空気充填のやつ)4台よりも約3分の1安い。剥がすのも思ったより簡単だったし、パフォーマンスもかなり似てるみたい。保証は確かにマイナス点(ヨーロッパ製だから、マグヌソン・モス法の対象外)、でも万が一故障しても2年の保証期間内に元のケースに戻せると思う。ブートドライブには中古の256GB M.2 SSDを入れたんだけど、片方のドライブが故障してもブートが止まらないようにするのがちょっと大変だった。LUKS、TPMキー、ZFSをルートに組み合わせるのもね。初めて使ったsystemd-bootについてもたくさん学んだけど、grubよりはずっと使いやすい気がする。今はDebianベースのNASを作るための大きなスクリプトがあるよ。ZFSに関する神話やカルトがたくさんあることにも気づいた。例えば、TFAがECC RAMを挙げてるけど、ある界隈ではZFSがスクラブ中にプールを壊すから必須だって言われてるのは神話だよ。それに、今年は特に高いしね。ZFSにはあまりRAMはいらないし、L2ARCはほとんどRAMを使わない。他にもいくつかあるけど。dnodesize=auto(デフォルト設定)を設定するかどうかまだ迷ってる。怖い話も聞くからね[1]。zfs sendをサポートしてる合理的な価格のクラウドストレージプロバイダーを見つけるのも不可能に近い。Rsync.netは最近、最低注文量を10TiBに引き上げたけど、私の使い方には多すぎる。[1] https://github.com/openzfs/zfs/issues/11353 [2] https://www.rsync.net/products/zfsintro.html

自分のNASを作ることも考えてるんだ。ハードドライブにいくら払ったか、どのマザーボードを選んだか教えてくれない?

今はNASを作るにはあまり良い時期じゃない それは事態を軽く見すぎだよ。今はNASを作るには本当にひどい時期だ。AIが全くない方がいいし、ストレージがAI以前の価格の1/10であってほしいくらいだよ。(もしAIを持つことと、かなり高価なストレージを持つことの間に魔法の選択肢があって、AIがない代わりにその投資資金を使ってもっと利用可能なストレージを得るプログラムがあったら、っていう意味だけど。)

今、新しいホームサーバーの構築を考えてるんだけど、価格がマジで高いよね。今のところ、22TBのWD Elements HDDを2台で820ユーロ、16GBのDDR5キットを2つで375ユーロ、2TBのM.2 SSDを2台で520ユーロ使った。合計1700ユーロだけど、まだサーバーはできてない。CPUとマザーボードを選ぶのを先延ばしにしてるのも良くないね。

Hacker Newsで議論の続きを見る