ラズパイ 読む時間 約13分

ラズパイに自宅の NAS を自動でつなぐ:起動したら NAS のフォルダが使える状態にする(cifs・fstab)

ラズパイに NAS の共有フォルダを自動でつなぐ(マウントする)手順です。cifs-utils と fstab を使い、起動したら NAS が使える状態にします。変える所を示して、そのまま実行できる形で紹介します。

Raspberry Pi・第 5 回「ラズパイに保存先をつなぐ」。NAS か外付けのハードディスクを、起動したら自動で使える状態に

※ この記事には Amazon のアソシエイトリンクが含まれています。

ラズパイに NAS のフォルダをつないで(マウントして)、ラズパイが起動したら自動で NAS が使える状態にします。一度設定すれば、あとは完全自動です。

この回でつないだ NAS のフォルダに、次の回からバックアップなどのファイルを保存していきます。「ここだけ自分の環境に変える」の所を書き換えれば、あとはそのまま実行できます。

この回の前にできていること

この回でできるようになること

  • ラズパイの /mnt/nas を開くと、NAS の共有フォルダの中が見える
  • ラズパイが起動したら、NAS に自動でつながる(NAS が止まっていても、ラズパイは起動する)
  • ラズパイから NAS にファイルを書き込める

なぜ、ラズパイの外に保存先をつなぐのか

ラズパイの中のデータは、microSD カードに入っています。次の回から、レンタルサーバーのデータベースのバックアップを毎晩取って保存していきますが、保存先を microSD カードのままにしないほうが安全です。

  • 容量が足りなくなる:microSD カードは 32GB〜64GB ほどで、OS も同じカードに入っています。バックアップは毎晩たまっていくので、すぐにいっぱいになります。
  • カードが傷みやすい:microSD カードは、書き込みをくり返すと傷んでいきます。毎晩大きなファイルを書くと、寿命が早く来ます。
  • ラズパイと一緒に失う:カードやラズパイが壊れたときに、バックアップも一緒に読めなくなります。バックアップは、元のデータとも、ラズパイとも別の場所に置くのが基本です。

そこで、ラズパイの外の保存先をつなぎ、ラズパイからはふつうのフォルダ(この記事では /mnt/nas)として使えるようにします。つないでおくと、次のことができるようになります。

  • 毎晩のバックアップを、大きな容量の保存先に自動でためていける(次の回)
  • カメラで撮った写真や動画、温度などの記録も、同じフォルダにためていける(このあとの回で使う予定)
  • PC やほかの機器からも、同じフォルダを開いてバックアップを取り出せる(NAS のとき)
  • ラズパイを作り直しても、保存先のデータはそのまま残る
ラズパイの /mnt/nas が、LAN で NAS に、または USB で外付けのハードディスクにつながり、毎晩のバックアップやカメラの写真をためる図

保存先は、NAS でなくてもよい

家では NAS を使っていますが、USB メモリや外付けのハードディスクでもできます。くらべると、次のようになります。

保存先 向いているところ・弱いところ
USB メモリ 安く、挿すだけで使える。ただし容量が小さめで、microSD カードと同じく書き込みのくり返しに弱い。少ない量を試すときに向いている
外付けのハードディスク(USB) 容量が大きく、値段も手ごろ。ラズパイに直接挿すので、ラズパイと同じ場所に置く。電源つきのもの(AC アダプターで動くもの)を選ぶと、ラズパイの電気が足りなくなりにくい(例:バッファロー HD-AD2U3 2TB)
NAS(家の LAN につなぐ保存先) 容量が大きく、PC やスマホからも同じフォルダを開ける。ディスクを 2 台以上で使う形なら、1 台が壊れてもデータが残る。値段は高め。家ではこれを使っている

使う保存先で、進む所が分かれます

使う保存先のボタンを押すと、その手順へ移ります。

どちらでも、ラズパイの中では /mnt/nas のフォルダとして見えるようにするので、次の回のバックアップの手順は同じです。

用意するもの(NAS を使うとき)

現在わたしが家で使っている機種と、これから用意するときの選び方です。

NAS(ネットワークにつなぐ HDD)

  • ラズパイから見えるファイルの置き場所です。SMB(Windows のファイル共有と同じしくみ)で共有できる物を選びます。
  • 現在わたしが家で使っている機種:古い NAS(もう売っていない型)
  • HDD を自分で取り付けるなら Synology DS223j、HDD が付いていてすぐ使える物なら バッファロー LinkStation LS210D 2TB

NAS 向けの HDD(HDD が付いていない NAS のとき)

  • 24 時間動かす前提の、NAS 向けの HDD を選びます。
  • 例:WD Red Plus 2TB

NAS 側で先にしておくこと

ラズパイからつなぐ前に、NAS の管理画面で次の 3 つを済ませておきます。画面の名前は NAS の種類で少し違いますが、どの NAS にも同じような設定があります。

  1. 共有フォルダを作る(例:share)
  2. NAS に、ラズパイから使うためのユーザーを作り(例:nasbackup。ラズパイのユーザー pi とは別のもの)、その共有フォルダに読み書きできる権限を付ける
  3. ファイル共有の SMB を有効にする(Synology なら「ファイルサービス」の SMB)

NAS の IP アドレス(例:192.168.1.20)も、管理画面かルーターの画面で見ておきます。

手順 1:cifs-utils をインストールする

ラズパイに ssh でつないで、SMB の NAS につなぐためのソフト(cifs-utils)をインストールします。

sudo apt update
sudo apt install -y cifs-utils

手順 2:つなぐ先のフォルダを作る

NAS のファイルが見える場所を、ラズパイの中に 1 つ作ります。この記事では /mnt/nas にします。

sudo mkdir -p /mnt/nas

手順 3:NAS のユーザー名とパスワードのファイルを設置する

NAS につなぐユーザー名とパスワードを、ラズパイの中の 1 つのファイルにまとめて書きます。

ここだけ自分の環境に変える(手順 3)

  • username=:NAS に作ったユーザー名(例 nasbackup)。ラズパイのユーザー pi ではなく、NAS のほう
  • password=:その NAS のユーザーのパスワード
  • ~(チルダ):ラズパイのユーザーのホームのフォルダ(/home/pi)。第 2 回で pi 以外の名前にした人は /home/その名前 になります

次のコマンドでファイルを開き、下の 2 行を書いて保存します(nano は Ctrl+O で保存、Ctrl+X で閉じる)。

nano ~/.nas-credentials
username=nasbackup
password=ここにNASのパスワード

保存したら、自分だけが読めるようにします。

chmod 600 ~/.nas-credentials

パスワードを fstab に直接書かない理由

  • /etc/fstab は、ラズパイのどのユーザーからでも読めるファイルです。パスワードを書くと、ほかのユーザーにも見えてしまいます。
  • 別のファイルにして chmod 600(自分だけが読める)にしておけば、パスワードを読めるのは、このファイルを作ったラズパイの pi ユーザーと管理者(root)だけになります。

手順 4:まず手動で 1 回つないで試す

自動でつなぐ設定の前に、手動でつないで、見えるか・書けるかを試します。

ここだけ自分の環境に変える(手順 4・5)

  • //192.168.1.20/share:NAS の IP アドレスと、共有フォルダの名前
  • uid=pi,gid=pi:ラズパイのユーザー名(第 2 回で決めた名前。pi 以外なら書き換える)
  • /home/pi/.nas-credentials の pi:同じく、ラズパイのユーザー名(手順 3 で作ったファイルの場所)
sudo mount -t cifs //192.168.1.20/share /mnt/nas -o credentials=/home/pi/.nas-credentials,uid=pi,gid=pi,vers=3.0,iocharset=utf8
ls /mnt/nas
touch /mnt/nas/test-from-raspi.txt && ls -l /mnt/nas/test-from-raspi.txt
rm /mnt/nas/test-from-raspi.txt
sudo umount /mnt/nas

ls /mnt/nas で NAS の中のファイルが表示され、touch でファイルが作れたら成功です。うまくいかないときは、下の「つまずきやすい所」を見てください。

手順 5:起動したら自動でつながるようにする

/etc/fstab は、起動のときに「どの保存先を、どのフォルダにつなぐか」を書いておくファイルです。手動でつなげたら、同じ設定を /etc/fstab に 1 行足して、起動のときに自動でつながるようにします。書き換える前に、元のファイルを残しておきます。

sudo cp /etc/fstab /etc/fstab.bak
echo '//192.168.1.20/share /mnt/nas cifs credentials=/home/pi/.nas-credentials,uid=pi,gid=pi,vers=3.0,iocharset=utf8,nofail,_netdev,noauto,x-systemd.automount,x-systemd.idle-timeout=600 0 0' | sudo tee -a /etc/fstab
sudo systemctl daemon-reload
sudo systemctl restart remote-fs.target
ls /mnt/nas

付けているオプションの意味

  • nofail:NAS が止まっていても、ラズパイの起動を止めない(これを忘れると、NAS が止まっているときにラズパイが起動しなくなることがあります)
  • _netdev:ネットワークがつながってからつなぐ
  • noauto,x-systemd.automount:起動のときに待たず、/mnt/nas を開いたときに自動でつなぐ
  • x-systemd.idle-timeout=600:10 分使わないと切る(使うとまた自動でつながる)

手順 6:再起動して、自動でつながるかを見る

sudo reboot

1〜2 分待ってから、PC で ssh mypi でつなぎ直し、次のコマンドを実行します。

ls /mnt/nas

再起動のあとに ls /mnt/nas で NAS のファイルが表示されれば、設定は完了です。これからは、ラズパイが起動するたびに自動で NAS が使えます。

自宅の NAS では

  • 家の NAS は古い型で、ファイル共有の古い方式(SMB1)にしか対応していません。vers=3.0 のままだと接続できないので、代わりに vers=1.0 を付けています。
  • 家では、/mnt/nas はファイルの一覧を見るためだけに、読むだけ(ro)・ゲストでつないでいます。バックアップは、家の NAS が SSH でも書き込める型なので、SSH で NAS に直接書いています。
  • SSH が使えない NAS も多いので、この記事と次の回では、読み書きできるユーザーで /mnt/nas につなぎ、そこに書く形で説明します。
  • 今売られている NAS なら、この記事のとおり vers=3.0(または書かない)で大丈夫です。SMB1 は古くて守りが弱いので、使えるなら 3.0 にします。

つまずきやすい所

  • mount error(13):ユーザー名・パスワード・共有フォルダの名前のどれかが違います。NAS の管理画面で、ユーザーにその共有フォルダの権限があるかも見ます。
  • mount error(95):SMB のバージョンが合っていません。vers=3.0 を vers=2.1 や vers=1.0 に変えて試します。
  • ラズパイが起動しなくなった:/etc/fstab の書き間違いか、nofail の付け忘れです。SD カードを PC に挿して、/etc/fstab の足した 1 行を消すか、fstab.bak に戻します。

NAS を使う人は、ここで完了です。「まとめと、次の回」へ進んでください。

外付けのハードディスクを使うとき

NAS を使った人は、この段は飛ばして「まとめと、次の回」へ進んでください。

NAS のかわりに、USB の外付けのハードディスクを /mnt/nas としてつなぐ手順です。ハードディスクの中のデータは、下の mkfs.ext4 のコマンド(ハードディスクの作り直し)で消えます。空のものか、消してよいものを使ってください。

用意するもの(外付けのハードディスクを使うとき)

  • 電源つき(AC アダプターで動く)の、据え置き型の外付けのハードディスク。ラズパイの USB だけで動く小さなものは、電気が足りなくなることがあります
  • 例:バッファロー 外付けHDD 2TB HD-AD2U3・容量を多めにするなら 4TB の HD-AD4U3

ハードディスクをラズパイの USB の差し口に挿してから、ラズパイで次のコマンドを実行し、ハードディスクの名前を調べます。

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

容量(SIZE)がハードディスクと同じくらいで、TYPE が disk の行(多くは sda)がそれです。その下の sda1 が、使う区画です。mmcblk0 は microSD カードなので、触らないでください。

ここだけ自分の環境に変える

  • /dev/sda1:上で調べた区画の名前
  • UUID の値:2 つ目のコマンドで表示されたもの
sudo mkfs.ext4 -L backup /dev/sda1
sudo blkid /dev/sda1

表示された UUID="…" の値を使って、起動したら /mnt/nas につながるように設定します。

sudo mkdir -p /mnt/nas
echo 'UUID=ここに上の値 /mnt/nas ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab
sudo systemctl daemon-reload
sudo mount -a
sudo chown pi:pi /mnt/nas
df -h /mnt/nas
  • nofail:ハードディスクを外したまま起動しても、ラズパイの起動が止まらないようにする設定
  • 最後の df -h /mnt/nas で、ハードディスクの容量が表示されれば完了です。再起動しても同じように表示されるかも確認します

分からないときは、このページを AI に渡してください

このページの URL を AI(Claude など)に渡して「この手順を手伝って」と頼めば、一緒に進めてくれます。頼み方の例です。

  • 「(このページの URL)の手順 4 で mount error(13) と出た。どこを見ればいい?」
  • 「(このページの URL)の手順 5 の fstab の 1 行を、NAS の IP が 192.168.1.30・共有フォルダが backup の形に書き換えて」

まとめと、次の回

NAS をつないでおくと、ラズパイの小さな SD カードではなく、容量の大きい NAS にファイルを保存できるようになります。次の回では、このフォルダにレンタルサーバーのデータベースのバックアップを、毎晩完全自動で保存します。

次に読む

この記事を書いた人

フリースタイル

Web の仕事 25 年以上。WordPress の保守・引っ越しと、PHP の業務の仕組みづくり。 プロフィール →

まずは、お気軽にご相談ください。

相談と見積りは無料です。急ぎのときは、フォームで「急ぎ」を選んでください。