ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Raspberry Pi】Raspberry PiにSambaを入れてNASにする

 最近作った自作PCのデータ保存容量を増やそう思い内蔵HDDを購入しました。ですが「組んだPCをまた開けてHDDを増設するのが面倒だし、他のPCと共通で使えるようにしたい」と考え何か良い方法はないかと思っていたところNAS(Network Attached Storage)」というものがあると知りました。NASは簡単に言うと同じネットワーク内で接続できるファイルサーバみたいなものです。特に自宅などのWi-Fiネットワーク内にNASを構築すれば、無線でファイルサーバにアクセスできるのでケーブル要らずで便利です。さらに調べていくとRaspberry Piで簡単にNASを作れるということもわかりました。

 前置きが長々となりましたが、そんな理由で今回はRaspberry Piを使ってNASを作ってみた備忘録になります。


 では、始めます。


0:Raspberry PiとHDDの準備
 Raspberry Piを普通に使うためにSDカードにOSを書き込んで最低限の環境を構築しておきます。以下の記事の内容を行っている前提で進めていきます。

 またIPアドレスを固定していた方が何かと便利なので、以下の記事に沿ってIPアドレスを固定しておきます。

 Raspberry Piに繋げるHDDはexFATでフォーマットしたいので、以下の記事に沿ってexFATでフォーマットしておきます。


1:マウント用ディレクトリの作成とHDDの認識確認
 最初にHDDのマウント用ディレクトリを作成しておきます。

「/mnt」ディレクトリ配下であればなんでもよいと思いますが、自分の場合は「hdd01」というディレクトリ名にして作成しました。

$ mkdir /mnt/hdd01

 
 以降は「/mnt/hdd01」に外付けHDDをマウントするという前提で進めます。

 次にHDDをUSBケーブルでRaspberry Piに接続した状態で以下のコマンドを実行します。

$ sudo fdisk -l

 このコマンドを実行すると色々出てきますが「/dev/sda1」や「/dev/sda2」と書かれているものが認識されているHDDになります。

 以降は「/dev/sda1」のHDDをファイルサーバにするという前提で進めていきます。


2:exFATのHDDをマウントする
 Raspberry PiでマウントさせたいHDDがexFATでフォーマットされたもの場合、そのままマウントコマンドを実行してもエラーになります。なので以下のコマンドを実行してexFATをマウントできるようにします。

$ sudo apt-get install exfat-fuse exfat-utils

 上記コマンド実行後に以下のマウントコマンドを実行するとエラーなくマウントされます。

$ sudo mount /dev/sda1 /mnt/hdd01

 これで「/mnt/hdd01」ディレクトリ配下にファイルを作成するとHDDに保存されるようになります。

 HDDをラズパイから取り外したいときは、以下のコマンドでアンマウントさせてから取り外します。

$ sudo umount /mnt/hdd01


3:Sambaのインストール
 いよいよ本題のファイルサーバの準備に入ります。

 ファイルサーバにするために、今回はSambaをインストールします。

 Sambaのインストールは以下のコマンドを実行します。

$ sudo apt install samba samba-common-bin

 インストール途中で以下のような画面が出てきますが「いいえ」を選択します(参考ページより引用)。
f:id:rikoubou:20201021053758j:plain

 これでSambaのインストールは完了です。


4:Sambaの設定ファイルの編集
 最初に以下のコマンドでデフォルトのSamba設定ファイルのバックアップを取っておきます。

$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

 エディタはなんでもいいですが、今回はnanoを使って設定ファイルを編集していきます。

$ sudo nano /etc/samba/smb.conf

 以下の記述をファイルの最後に追記します。

[nas_hdd1]
comment = nas
path = /mnt/hdd01
public = no
read only = no
browsable = yes
force user = pi

 少し解説しておくと、各項目は以下のような意味になっています。
[nas_hdd1]:外部からアクセスした時に表示されるディレクトリ名。括弧の中の文字列は任意。
comment:アクセスした時に表示されるディレクトリ名にマウスカーソルを合わせた時に出てくる説明。
path:ファイルサーバにするディレクトリパス。
public:yesだとパスワードなしのゲストユーザでも利用可能。
read only:yesだと読み込みのみ。noだと書き込み可能。
browsable:yesだと利用可能な共有の一覧に表示。noだと非表示。
force user:ファイル操作をする時のUNIX上でのユーザ。

 詳しい説明は以下のページを参照してください。

 編集が完了したらファイルを上書き保存してエディタを終了させます。

 次に以下のコマンドでSambaを再起動させ、更新した設定ファイルを有効にします。

$ sudo systemctl restart smbd


5:Sambaのユーザとパスワード設定
 Samba用のユーザとパスワードを設定します。

「pi」という名前のユーザでSambaのパスワードを設定するコマンドは以下の通りです。これはSamba用のユーザとパスワードなのでRaspberry Piのユーザとパスワードとは関係ありません。なので別のパスワードにしておくのが良いです。

$ sudo smbpasswd -a pi

 パスワードを設定したらSambaを再起動させます。

$ sudo systemctl restart smbd

 パスワードが設定されているユーザ一覧は以下のコマンドで確認できます。今回であれば「pi:1000:」というように表示されるはずです。

$ sudo pdbedit -L

 これでSambaの設定は全て終了です。

 ちなみにRaspberry Piが起動すると自動的にSambaも起動されます。

 Sambaが起動しているかどうかは以下のコマンドで確認できます。

$ ps aux | grep smbd
root       679  7.3  3.8  44888 16824 ?        Ss   07:17   0:01 /usr/sbin/smbd --foreground --no-process-group
root       724  0.0  1.2  41964  5720 ?        S    07:17   0:00 /usr/sbin/smbd --foreground --no-process-group
root       726  0.0  1.1  41956  5272 ?        S    07:17   0:00 /usr/sbin/smbd --foreground --no-process-group
root       739  0.0  1.3  44888  6016 ?        S    07:17   0:00 /usr/sbin/smbd --foreground --no-process-group
pi         814  0.0  0.4   3900  2096 pts/0    S+   07:17   0:00 grep --color=auto smbd

 ちなみにSambaを止めるコマンドは以下の通りです。

$ sudo systemctl stop smbd


6:Macからのアクセス
  まずSambaを起動させた状態のRaspberry Piと同じWi-FiMacのPCを接続します。

 その後Finderを立ち上げて「移動」→「サーバへ接続」を選択します。
f:id:rikoubou:20201021162340p:plain

「サーバへ接続」のウインドウが表示されるので「smb://IPアドレス」を入力して「接続」ボタンをクリックします。
f:id:rikoubou:20201021163659p:plain

 ユーザ名とパスワードを要求されるので「Samba用のユーザとパスワード」を入力して「接続」ボタンをクリックします。ちなみにSambaの設定ファイルで「public = no」と設定しているのでゲストユーザでの接続はできません。
f:id:rikoubou:20201021163818p:plain

 ボリューム一覧が表示されるので、今回設定した「nas_hdd1」を選択してOKをクリックします。
f:id:rikoubou:20201021164319p:plain

 これでMacから普通のフォルダのようにアクセスできるようになります。


7:Windowsからのアクセス
  まずSambaを起動させた状態のRaspberry Piと同じWi-FiWindowsのPCを接続します。

 エクスプローラーを開いてネットワークをクリックします。
f:id:rikoubou:20201022102632p:plain

 初めてネットワークを開くと以下のように表示されますが「OK」をクリックします。
f:id:rikoubou:20201022102738p:plain

 するとエクスプローラーの上の方に赤枠で囲ったメッセージが表示されるので、この部分をクリックします。
f:id:rikoubou:20201022102843p:plain

「ネットワーク探索とファイル共有の有効化」をクリックします。
f:id:rikoubou:20201022102948p:plain

 以下の表示が出るので「はい」の方を選択します。
f:id:rikoubou:20201022103359p:plain

 エクスプローラーの右上にある更新ボタンをクリックすると現在のネットワーク上から見える機器が表示されるので、その中にある「RASPBERRYPI」をダブルクリックします。
f:id:rikoubou:20201022105305p:plain

 Macの時と同じようにユーザ名とパスワードを要求されるので「Samba用のユーザとパスワード」を入力して「OK」ボタンをクリックします。
f:id:rikoubou:20201022105502p:plain

 アクセスできるフォルダ一覧が出てくるので、今回設定した「nas_hdd1」をダブルクリックすれば普通のフォルダと同じように使うことができます。
f:id:rikoubou:20201022110340p:plain


 以上がRaspberry PiにSambaを入れてNASにする方法です。


 割と長い内容になってしまいましたが、基本的には「Sambaを入れて、ファイルサーバにするディレクトリの設定をして、ユーザを作成して、Sambaを起動させる」だけです。
 初めてSambaを触ったので戸惑った部分もありますが、コマンドを叩ける程度の知識の自分でも簡単にNASを構築できました。

 自分はRaspberry Pi Zero Wを使っており、上りは1.5MB/s、下りは4MB/sぐらいなのでちょっと遅い気もしますが、そんなに重くないファイルであれば問題なく使えます。
 もう少し速度にこだわりたいならRaspberry Pi 4を使用するのもいいかもしれません。


・参考資料