0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

おうちサーバー構築報告:Raspberry Pi 5 でNAS構築

Last updated at Posted at 2025-06-15

能書き

おうちサーバー構築報告:予告の流れとは違いますが。実は予告でも触れた我が家の HP N54L が、とうとう故障しました。連続して大量のファイルをコピーすると、いつの間にか電源が切れます… バックアップが出来ません。これは困った!

偶々タイミング良く、知り合いから2TBのHDDを5台譲っていただきました。そこでまあ少々考えまして、ラズパイ5でNASを作ってみようかと。HDDケースとしてはMAL355EU3Rを選択。

と言う訳で、今回はラズパイ5をNASに仕立てる過程の記録です。

ハードウェア

やること

  • ラズパイ5にUbuntuServerをインストール
  • ZFSとSambaを設定
  • 今まで使っていたHDDをインポートして、データを引き継ぐ

参考文献

ラズパイ5にUbuntuServerをインストール

Windows版インストーラー

まずは公式サイトから Raspberry Pi Imager をダウンロードします。私の場合は普段使いのマシンがWindowsなので、Windows版インストーラーをダウンロードします。

image.png

ダウンロードしたインストーラーを実行します。

「このアプリがデバイスに変更を加える事を許可しますか?」画面が表示されるので、ここは「はい」をクリックします。

Select Setup Language 画面。日本語は無いようなのでEnglishを選択します。

image.png

Welcome画面。

image.png

License Agreement 画面。「I accept the agreement」を選択。

image.png

Select Destination Location 画面。インストール先フォルダを選択します。私はデフォルトでいきます。

image.png

Select Additional Tasks 画面。デスクトップにショートカットを作るか否かを選択できるようですが、私は不要です。

image.png

Raspberry Pi Imager セットアップウィザード、完了。

image.png

Raspberry Pi Imager

image.png

Raspberry Piデバイスは「RASPBERRY PI 5」を選択。

image.png

OS > Other general-purpose OS > Ubuntu > Ubuntu Server 24.04.2 LTS (64-bit)

image.png

image.png

image.png

image.png

ストレージ… あ、忘れてた。MicroSDカードをこのノートパソコンで書き込めるようにアダプターで接続します。そうすると選択肢が表示されます。
ストレージ > SDHD Card - 31.0GB

image.png

image.png

「次へ」ボタンをクリックすると「Would you like to apply OS customization settings?」ダイアログが表示されますので、「設定を編集する」ボタンをクリックします。

image.png

Windows とアプリに位置情報へのアクセスを許可しますか? ラズパイと言えばイギリス製ですし、とりあえず「はい」でいいかな。

image.png

OS Customization 画面一般タブ。Wi-Fi以外の各項目を設定します。ここは各自のお好みで。ちなみにWi-Fiに関しては通信速度の点で有線の方が有利だそうです。

image.png

OS Customization 画面サービスタブ。私はSSHを公開鍵認証にしたかったんですが、なぜか、キーを貼り付けられません。仕方が無くパスワード認証にしました。

image.png

OS Customization 画面オプションタブ。デフォルトのままでいいですかね。

image.png

全部設定したら「保存」ボタンをクリックします。

Would you like to apply OS customization settings? 画面。「はい」をクリックします。

image.png

削除の確認画面。「はい」をクリックします。

image.png

Windowsのフォーマット確認画面。恐らく Raspberry Pi Imager がMicroSDのフォーマットを壊して、そのせいでWindowsが認識できなくなって、という流れでこの画面なのでしょう。ここは「キャンセル」をクリックします。

image.png

書き込みは順調に進みます。

image.png

書き込みが終了したらMicroSDカードを取り出して、Raspberry Pi Imager を終了します。

image.png

ラズパイ起動とssh接続

MicroSDカードをラズパイに挿入します。そしてEthernetケーブル・モニター・USBキーボード・電源を繋ぎます。OSがUbuntuServerなのでマウスは不要です。

モニターはスターターキットに同梱されていたHDMI-miniHDMIのケーブルですね。ラズパイ側にはminiHDMI端子が2つありますが、どちらに挿入しても大丈夫のようです。

電源は繋いだ途端にスイッチが入りますので、最後に繋ぎましょう。

最初に電源を入れた時にはcloud-initが動くようです。まずは一服して落ち着くのを待ちますか。ロシアンティーを一杯。ジャムではなく、マーマレードでもなく、蜂蜜で。

無事に起動すると、Windowsマシンからはホスト名で接続できるようです。

Windowsマシン
ping raspberrypi
Windowsマシン
ssh administrator@raspberrypi

ネットワークIPアドレス固定化

ラズパイのIPアドレスを固定化します。

ラズパイ5
cd /etc/netplan
sudo vi 99-config.yaml

/etc/netplanには50-cloud-init.yamlが存在しますが、これはこのまま放置し、99-config.yamlファイルを追加します。その内容は我が家のIPアドレス体系に従って下記にします。

  • NASのIPアドレス: 172.16.1.3/16
  • デフォルトゲートウェイ: 172.16.2.1
  • DNSサーバ: デフォルトゲートウェイと同じ(172.16.2.1)
/etc/netplan/99-config.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
      dhcp6: false
      addresses: [172.16.1.3/16]
      routes:
        - to: default
          via: 172.16.2.1
      nameservers:
        addresses: [172.16.2.1]

/etc/netplan/99-config.yamlを作成したら反映します。すると即座にIPアドレスが変わりますのでsshが切断されます。

ラズパイ5
sudo chmod 600 99-config.yaml
ラズパイ5
sudo netplan apply

sshを接続し直しましょう。

UbuntuServerにNAS設定

ZFS

インストール

OpenZFSをインストールします。

ラズパイ5
sudo apt update -y && sudo apt upgrade -y
ラズパイ5
sudo apt install -y zfsutils-linux

zfsがインストールされた事を確認します。

ラズパイ5
zpool --version

実行結果はこんな感じになります。

ラズパイ5
$ zpool --version
zfs-2.2.2-0ubuntu9.2
zfs-kmod-2.2.2-0ubuntu9.1

HDD接続

いよいよHDDを接続します。

HDDケースはこれです。

image.png

image.png

image.png

HP N54L の電源を切り離し、収まっていた5台のHDDを取り出して、上のHDDケースに格納。モードはスタンダードモード、5台のHDDを個別認識させるモードです。内臓RAID機能は使いません。折角の機能なんですけどね。

添付のUSBケーブルでHDDケースとラズパイ5を接続します。ラズパイ5の方は電源を入れっ放しですが、USBケーブルを接続してからHDDケースの電源を接続、電源を入れます。

数秒置いてから状況を確認。まずはlsblk。

ラズパイ5
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0  38.7M  1 loop /snap/snapd/23546
loop1         7:1    0  44.3M  1 loop /snap/snapd/24509
sda           8:0    0 465.8G  0 disk
├─sda1        8:1    0     2G  0 part
└─sda2        8:2    0 463.8G  0 part
sdb           8:16   0 931.5G  0 disk
├─sdb1        8:17   0 931.5G  0 part
└─sdb9        8:25   0     8M  0 part
sdc           8:32   0 465.8G  0 disk
├─sdc1        8:33   0     2G  0 part
└─sdc2        8:34   0 463.8G  0 part
sdd           8:48   0 465.8G  0 disk
├─sdd1        8:49   0     2G  0 part
└─sdd2        8:50   0 463.8G  0 part
sde           8:64   0 465.8G  0 disk
├─sde1        8:65   0     2G  0 part
└─sde2        8:66   0 463.8G  0 part
mmcblk0     179:0    0  28.9G  0 disk
├─mmcblk0p1 179:1    0   512M  0 part /boot/firmware
└─mmcblk0p2 179:2    0  28.4G  0 part /

sdaからsdeまで5台、認識してくれたようです。ではzpool importを。

ラズパイ5
$ sudo zpool import
[sudo] password for administrator:
   pool: tank
     id: 2891006712653798077
  state: ONLINE
status: The pool was last accessed by another system.
 action: The pool can be imported using its name or numeric identifier and
        the '-f' flag.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
 config:

        tank                                 ONLINE
          raidz2-0                           ONLINE
            sde                              ONLINE
            sdd                              ONLINE
            sdc                              ONLINE
            sda                              ONLINE
            ata-ST1000VN008-3CW10C_WWD1E4QZ  ONLINE

何か1台だけ名前が変ですが、とにかく5台をZFSとして認識してくれました!

zpool importに当たっては-fオプションを指定します。zpool exportしていなかったので。

またマウント先は/mnt/tankにしたいので、そのように指定します。

そして、デバイスをWWN(World Wide Name)で管理したいので、その指定を入れます。

ラズパイ5
sudo zpool import -d /dev/disk/by-id/ -R /mnt -f tank

インポートには少々時間がかかりました(体感で数十秒?)

さてインポートできたかな?

ラズパイ5
zfs list
ls /mnt/tank

うむ、見覚えのあるディレクトリ名が出てきます。やった!

自動マウント

マシン起動時に自動マウントさせるには/etc/zfs/zpool.cacheにプール情報を保存する必要があるそうです。Copilot、ありがとう。

但し、実行に時間がかかりますな。体感で10分前後でしょうかね?ちゃんと計れば良かったんですが、うっかりしてました…

ラズパイ5
sudo zpool set cachefile=/etc/zfs/zpool.cache tank
sudo zpool export tank
sudo zpool import tank

コマンドが終了したら、マウント先が/tankになっていました。-Rオプションを付けずにzpool import tankしたから当然ですか。仕方無いですな。

確認の為にマシンを再起動します。

ラズパイ5
sudo reboot

起動時にも時間が掛かります。が、自動マウントできました!

ラズパイ5
zpool list
ls /tank

(R7.2025.06.17. ここから)
もう一回やり直してみたら、うまくいかなくなりました。自動マウントされません。なぜでしょう。
異なる点と言えば下記2点ですかね…

  • cachefile作成時にほんの10秒前後で作成されてしまいました
  • マシン再起動も待たされずに起動してしまいます

手が空いた時に対応します。それまではマシン起動後に手動でマウントですな。
(R7.2025.06.17. ここまで)
(R7.2025.06.25. ここから)
答えはCopilotが知ってました。USBハードディスクの場合、認識が遅れてZFSの後になってしまう事があるそうです。
HDDデバイスの後にZFSが起動するように、systemdユニットで依存関係を追加すればよい、との事。

ラズパイ5
sudo systemctl edit zfs-import-cache

上記コマンドで、下記3行を追加します。

zfs-import-cache.service
[Unit]
Requires=dev-sde.device
After=dev-sde.device

これでzfs-import-cache.service/dev/sdeの後に出来ます。

/dev/by-id/~にしなかったのはデバイス交換の度に書き換える事になってしまうのが嫌だったからです。
/dev/sdaにしなかったのはHDDが5台あるからで、最後の/dev/sdeの認識が終われば5台全部認識済だろうという期待です。
(R7.2025.06.25. ここまで)

Samba

次にSambaを設定して、Windowsマシンからのアクセスを図ります。

インストール

何の変哲も無い、基本的なコマンドです。

ラズパイ5
sudo apt update -y && sudo apt upgrade -y
ラズパイ5
sudo apt install -y samba

Sambaサービスが起動した事を確認します。

ラズパイ5
systemctl status smbd

ユーザー追加

Sambaで使用するユーザーはOSの一般ユーザーです。
新しく追加するなら、例えばtaroを追加するなら下記のようにします。

通常はホームディレクトリ内に用意したサブディレクトリをSambaでそのユーザーだけに公開すると思いますが、今回はファイルサーバーのZFSフォーマットしたディレクトリを公開します。その都合でtaroにはホームディレクトリを作りません。Samba用ユーザーという事でログインも禁止してみます。

ラズパイ5
NEWUSER=taro
ラズパイ5
sudo useradd -M -s /usr/sbin/nologin $NEWUSER

そしてSamba用パスワードはsmbpasswdコマンドを管理者権限で実行して設定します。

ラズパイ5
sudo smbpasswd -a $NEWUSER

共有フォルダを作成

共有対象となるフォルダを作成します。何でもいいのですが、先程作成したtaroユーザー用にZFSのフォルダを用意してみます。

ラズパイ5
cd /tank
sudo mkdir $NEWUSER
sudo chown $NEWUSER: $NEWUSER
sudo chmod 775 $NEWUSER

公開設定

実験は別記事に任せるとして、ここではtaroの読み書き設定をします。設定ファイルを書き換えた後はSambaを再起動します。

ラズパイ5
cat <<___ | sudo tee -a /etc/samba/smb.conf >/dev/null

[$NEWUSER]
path = /tank/$NEWUSER
browsable = yes
guest ok = no
read only = no
___
sudo systemctl restart smbd

Windowsマシンからアクセスして読み書きを確認します。

最後に、これを真似て、既に作ってあった共有フォルダに対して共有設定をしました。

仕舞い

古いマシン(CPU:AMD)上で構築したZFSのNASを、ラズパイ5(CPU:ARM)に引き継ぎました。うまくいって良かったです。実はドキドキだったんですよ、バックアップも碌に取れない状況だったもので。
デバイスさえ無事ならこういう事が出来るのがZFSなんですよね。ZFSで良かった。ZFS最強です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?