【動画付き】Raspberry PiにNAS環境を構築してみる

最近妙にNASをたくさん作っている気がします。めぐみそです。

今回はラズパイにNAS環境を構築してみたので、そのやり方をご紹介します。

動画

環境

・Raspberry Pi 4 4GB
・USB-A to USB-C 3A ケーブル(百均)
・miniHDMI to HDMIケーブル
・USBキーボード
・有線LANケーブル
・microSDリーダー
・microSD 8GB以上
・USB-HDD 必要な容量

今回はRaspberry Pi 4 4GBを使用しています。
余りがなかったので4GBを使用していますが、今回のこと自体は1GBでも全然問題なく構築・利用できます。

今回はRAID等は説明していません。RAIDも必要の場合は、RAIDを使用した方法を一度書いているので、こちらをご確認ください。

OSの準備

今回はUbuntu Serverを使用します。

Ubuntu ServerにはRaspberry Pi専用のバージョンが存在するので、そちらを利用します。

ダウンロード

今回のUbuntu Serverはここからダウンロードを行います。


ダウンロードしたら解凍する必要があります。Windowsの場合は7zipを使用して解凍します。
Macの場合は標準アプリ(Finder)で解凍が可能です。

書き込み

解凍し終わったら、今度はmicroSDに書き込みをしていきます。

Windowsの場合

Windowsの場合は、動画で紹介したように「Rufus」を使用します。

書き込む先にmicroSD、ファイルに先ほど解凍したファイルを選択します。

間違いがないかを確認して、書き込みを開始します。

Macの場合

Macの場合は、「BalenaEtcher」を使用します。

先に解凍したファイルを選択して、書き込む先にmicroSDを選択します。
画像ではUSBになってますが…

最後に「Flash!」で書き込みを開始します。

環境構築

書き込んだmicroSDをRaspberry Piに挿入して、Ubuntu Serverを起動します。

初回ログイン

初期ユーザー名とパスワードは、どちらも「ubuntu」です。

ログインすると、このままだと脆弱なので、パスワードを再設定するように言われます。

パスワードの再設定は、最初に今までのパスワードを入力します。この場合は「ubuntu」ですね。

その後、設定したいパスワードを2回入力します。1回入力するごとにEnterで決定します。


この画面になればログイン成功です。

ここからコマンドを入力できるようになります。

パッケージ更新

Ubuntu Server(に限らずほとんどのLinux)では、コマンドでインストール可能なパッケージ(ツール)をカタログのように保存していますが、初期状態ではそのカタログが存在しないか、カタログがとても古い状態になっています。
これを最新にするために、以下のコマンドで最新にします。

sudo apt update

これでパッケージが最新になるので、ツールのダウンロードができるようになりました。

ユーザー追加

このままubuntuユーザーを最後まで使い続けるのも気が引けるので、今のうちに自分のユーザーを追加しておきましょう。

sudo adduser <ユーザー名>

ユーザーを追加すると、パスワードをどうするかを聞かれるので、2回入力します。1回入力したらEnterで決定します。


ユーザーの情報を聞かれますが、ユーザーを作る上では何も関係ないので、全てEnterで飛ばしておきましょう。


最後に作ったユーザーに管理者権限を持たせておきます。

sudo usermod -aG sudo <ユーザー名>

大文字小文字は区別されるのでご注意ください。

ネットワーク設定

初期状態では、ルーターからIPアドレスを取得していますが、このIPアドレスはこのままだと変動してしまう可能性があるので、IPアドレスの固定を行います。

sudo vim /etc/netplan/99-main.yaml

今回はエディタとして、vimを使用していますが、お好みでnano等を使用しても構いません。
この記事では、vimを前提として説明していきます。

開いたら、「a」を押して入力モードにします。

以下のような感じで入力をしていきます。

network:
    ethernets:
        eth0:
            dhcp4: false
            addresses:
            - <IPアドレス>/<サブネット>
            gateway4: <ゲートウェイIP>
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
    version: 2

各行のスペースは一つあたり4文字分入っています。

この空白が一文字でも違っていると設定できなくなるので、間違えないよう慎重に入力しましょう。

IPアドレス

設定するIPアドレスには、サブネットの範囲内で、他の端末と被らないIPアドレスを設定する必要があります。

難しい話かもしれませんが、以下のようにすれば基本的には大丈夫です。

サブネット、ゲートウェイIPの確認

Windowsを利用して、今使っているIPアドレスのサブネットとゲートウェイIPが確認できます。

コマンドプロンプトを起動して、「ipconfig」と入力すると、このような表示が出てきます。
見る部分は、「サブネットマスク」と「デフォルトゲートウェイ」のみ。

デフォルトゲートウェイは、そのままゲートウェイIPに入力できますが、サブネットマスクに関しては、WindowsとLinuxで入力方法が異なるので、以下のように変換する必要があります。

Windowsでの表示 サブネットに入力する内容
255.255.255.240 28
255.255.255.0 24
255.255.254.0 23
255.255.240.0 20
255.255.0.0 16

代表的にはこれらのサブネットが存在すると思われますので、該当するものを入力してください。

IPアドレスの指定

IPアドレスも無闇に設定することはできませんが、基本的には他の端末で使われていないIPアドレス、かつ、サブネットで指定されたネットワーク範囲内であれば自由に使えます。

例えば、サブネットが「255.255.255.0」の場合、Windowsに割り当てられているIPアドレスのうち、一番後ろの部分は、2から254の間で指定ができます。それ以外の部分はWindowsに表示されているものと同じでないといけません。
基本的には、自動的に割り当てされるIPアドレスは、2から順番に割り当てられるので、番号が後ろの方で、わかりやすいIPアドレスを割り当てると良いと思います。この場合は「250」などですね。

先程のIPアドレスの確認で言うと、「192.168.0.130」がWindowsに割り当てられているIPアドレスだったので、ラズパイに設定するIPアドレスは、「192.168.0.250」にするのが無難かと思われます。


ここまで全て入力したら、「Esc」を押して、「:wq」と入力してEnterを押すと保存されます。

なお、「: (コロン)」を入力するときは、日本語配列のキーボードで、「; (セミコロン)」の部分を押さないといけません。


最後に以下のコマンドでIPアドレスを適用します。

sudo netplan apply

何も表示されなければ、それで適用されています。
もし何か言われてしまったら、入力が間違っていたかもしれないので、もう一度確認してみてください。


IPアドレスが適用されたかどうかは、以下のコマンドで確認できます。

ip a

先程設定したIPアドレスがこのように表示されていれば成功です。

ストレージの設定

ここからは共有するためのHDDの設定をしていきます。

パーティションの設定

まずはHDDに存在しているパーティションを削除して、1つだけのパーティションを作成します。

元々HDDに残っていたデータは消えるのでご注意ください。


最初に今回設定するHDDを確認してみましょう。

sudo fdisk -l

今回は1TBのHDDを使用するので、赤枠のものがHDDとなります。
ここで、容量の前の文字、「/dev/sda」がHDDについている名前となります。


次にHDDのパーティションを書き換えます。

sudo fdisk <HDDの名前>

このコマンドでパーティションの編集モードに入ります。


「d」でパーティションの削除を行います。
どのパーティションを削除するかを聞かれますが、今回はすべて削除してしまうので、何も入力せずに「Enter」で削除します。

これを存在するパーティションの数だけ繰り返します。


「n」で新しいパーティションを作成します。

容量などを聞かれますが、最大容量のものを1つだけ作成するので、すべてデフォルトの設定で作成します。

「Enter」を4回ほど連打して作成します。


最後に「w」でパーティションを書き込みます。

この時点でHDDに残っていたデータは削除されるのでご注意ください。


sudo fdisk -l

再度このコマンドを実行すると、パーティション構成が変わったのが確認できます。


フォーマット

作ったばかりのパーティションですが、このままだと読み書きができないので、フォーマットをします。

今回はext4でフォーマットをすることにします。


パーティションに名前がこのように記載されているので、そこの名前を、以下のようにコマンドに入力します

sudo mkfs.ext4 <パーティションの名前>

これでフォーマットが開始されます。


フォーマットには少し時間がかかるので、気長に待ちましょう。


マウント

フォーマットが終わるとマウントができるようになるので、読み書きできるようにするため、マウントを行います。


今回は「/mnt/main」ディレクトリにマウントをすることにします。

sudo mkdir /mnt/main

先にこのコマンドでマウントする場所にディレクトリを作成します。


sudo mount <パーティションの名前> <マウントするディレクトリ>

このコマンドでパーティションをディレクトリにマウントします。

今回の例では…

sudo mount /dev/sda1 /mnt/main

このようなコマンドになります。

何も表示されなければ正常にマウントされたことになります。


マウントされたディレクトリの中身を見てみましょう。

cd /mnt/main
ls

作成したばかりなので何もありませんが、ちゃんとアクセスできていますね。


自動マウント

次に再起動しても自動でマウントするための設定を行います。

ここからはコピペを伴うので、「Tera Term」を使用します。
Macの場合はターミナルからsshコマンドで接続できます。

最初に固定したIPアドレスでラズパイに接続します。


まずは以下のコマンドでパーティションに割り当てられている固有ID(UUID)を確認します。

blkid

パーティションの名前の後に記載されている「UUID=」の後の中身が固有IDなので、これをマウスをドラッグしてコピーします。


sudo vim /etc/fstab

エディタで「/etc/fstab」を開きます。

vimで開いた場合は、「a」を押して挿入モードに入ります。

一番最後の行に以下のような感じで入力をします。

UUID=<コピーしたUUID> <マウントしたディレクトリ> ext4 defaults 0 0

コピーしたUUIDは、右クリックでペーストできます。


入力し終わると、このような感じになると思います。

入力が終わったら、「Esc」を押して、「:wq + Enter」を入力して保存します。


一度再起動して、起動後に何もしなくてもマウントした場所の中身が表示できれば成功です。


共有ディレクトリの作成

ディレクトリの真下を共有するのはあまりよくないので、共有するためのディレクトリをします。

sudo mkdir /mnt/main/<ユーザー名>

作成するディレクトリの名前は何でもよいですが、個人専用であればユーザー名にしておくのが無難だと思います。


このままだと共有しても書き込みができないので、自分だけが読み書きできるように設定します。

sudo chown <ユーザー名>:<ユーザー名> <ディレクトリ>

例: sudo chown megumiso:megumiso /mnt/main/megumiso
sudo chmod 770 <ディレクトリ>

これで自分専用のディレクトリが作成できました。


共有設定

ストレージの準備が完了したので、いよいよ共有の設定を行っていきます。

今回はSambaを使用して共有することにします。

Sambaインストール

sudo apt install samba

Sambaは、このコマンドでインストールできます。


ユーザー設定

Sambaに接続できるユーザーの設定をします。
最初で追加したユーザーをSambaに接続できるように設定をしていきます。

sudo pdbedit -a <ユーザー名>

このコマンドでユーザーの追加ができます。


コマンド実行後、パスワードを入力するように言われますが、ここで設定したパスワードを使用してSambaに接続するようになります。

Tera Termでサーバーに接続するときのパスワードとは別になるのでご注意ください。
一緒のパスワードを設定しちゃえばぐちゃぐちゃにならないけど非推奨。


Samba設定

次に共有に接続できるようにするための設定を行います。

sudo vim /etc/samba/smb.conf

このコマンドでSambaの設定ファイルを開きます。


一番最後の行に設定を追加するので、「Shift+G」を押して、一番最後の行に移動します。

「o」を押して新しい行を追加して挿入モードに入ります。


[<共有名>]
path = <共有するディレクトリ>
writeable = yes
guest ok = no
create mode = 0755
directory mode = 0755
valid users = @<ユーザー名>

これらを入力します。

入力したら、「Esc」、「:wq + Enter」で保存します。


最後に設定を適用するためにSambaを再起動します。

sudo service smbd restart

これですべての設定が終わりました。

接続

早速パソコンからラズパイに接続してみましょう。

Windowsの場合

エクスプローラーを開いて、「コンピュータ」タブから、今回は「ネットワークドライブの割り当て」を行います。


「フォルダー」に、以下のように入力します。

\\<IPアドレス>\<共有名>

※Windowsでは\を入力すると¥が表示されますが、問題ありません。

ユーザー名とパスワードを入れるように言われるので、先ほど設定したものを入力します。


接続できました!

サーバーの空き容量もちゃんと表示されていますね。


試しにデータも転送してみましたが、ちゃんと転送できているみたいですね。

Macの場合

Finderから、「移動」タブを選択して、「サーバへ接続」を選択します。


アドレスとして、以下のように入力します。

smb://<IPアドレス>

ユーザー名とパスワードを入力する画面が現れたら入力をします。


マウントするボリュームを聞かれるので、選択してOKを押します。


接続できました!ファイルも無事に転送できていますね。


おわり

今回はラズパイにNAS環境を構築してみました。

ネットワークの部分が一番難しいかと思われますが、それ以外は特に難しいこともなく構築できるかと思うので、ラズパイを勉強中という方にはおすすめの使い方です。

ラズパイも4であれば、1Gbps出せるので、予算がある場合は、3よりも4を選ぶのがおすすめです。