Raspberry Pi 4 + OpenMediaVaultでNASを構築する
PCのデータのバックアップを全くしていないのは流石にまずいと思いHDDの増設を検討したのですが、USBポートが常時埋まっているのでバックアップを取るためにわざわざ付け替えるのは面倒なのでNASを検討しました。ですがふと「これ自分で作れるのでは...?」と思いついたので、ラズパイを買っていろいろ調べながら自作しました。
OpenMediaVaultとは
NASの構築に特化したDebianベースのディストリビューションです。ブラウザから管理画面で各種設定が出来るのと、ラズパイでも導入している人が多かったので採用しました。
用意した機材
- Raspberry Pi 4 スターターキット(メモリ4GB)
ラズパイ本体、ケース、AC電源アダプター、Raspberry Pi OSが書き込まれたmicroSDカードのセットです。後で説明しますがsdカードは使いません。 - YottaMaster HDDケース
HDDが2枚入るケース。見た目がいいのと、後々RAID1構成にしたいので購入
https://amzn.asia/d/5Wr9jq0 - WD Blue HDD
あらかじめwindowsマシンでNTFSにフォーマットしています。
https://amzn.asia/d/2KftduD - コンビニで買ったUSBメモリ
OS起動ディスクになります。
環境について
メインPCとしてwindows 10が入ったPCを使用しており、ラズパイもメインPCもルーターに有線でLANケーブルを接続した状態で構築しています。
構築
- USBメモリをRaspberry Pi Liteの起動ディスクにする
スターターキットに同梱されているsdカードにはGUIがあるデスクトップ版のRaspberry Pi OSが焼かれているのですが、OpenMediaVaultはGUIが無いRaspberry Pi Liteでないとインストール出来ません。sdカードに新しいOSを焼き直せばよいのですが、sdカードリーダーを買い忘れたのでUSBメモリで代用しました。
windowsマシンで以下のリンクから「Raspberry Pi Imager」をインストールします。
https://www.raspberrypi.com/software/
起動したらOSを「Raspberry Pi OS Lite(64bit)」、ストレージをUSBメモリの名前に設定します。
右下の歯車マークから設定画面を開き、ユーザーを設定します。
昔のRaspberry Piの記事を見るとユーザー名がpi、パスワードがraspberryのデフォルトユーザーがすでに登録されているという記載が多いですが、現在のOSバージョンBullseye以降廃止されたようです。SSH接続するには自分でユーザーを作成する必要があります。
保存して「書き込む」をクリックするとUSBメモリにOSが書き込まれ起動ディスクが作成されます。
- config.txtの設定変更
ラズパイをモニターに接続して動作確認する際、自分のモニターだと起動中真っ暗の画面でフリーズしてしまい進行状況が分からなくなってしまう現象が発生しました。
はっきりとした原因は分からないのですが以下の記事を参考にconfig.txtの
#hdmi_safe=1
のコメントアウトを外すことで解消しました。OSを書き込み終わったUSBの一番上のディレクトリにconfig.txtがあるので編集します。
- ラズパイにOpenMediaVaultをインストール
ラズパイをモニターに繋ぎ、先ほど作成したユーザー名とパスワードでログインします。
以下のコマンドを実行します。
sudo -i
sudo apt update
sudo apt upgrade
sudo apt upgrade
はめちゃくちゃ時間かかりました。数時間待っても終わらなかったので寝て、起きたら終わってました。
以下のコマンドでOpenMediaVaultをインストールします。
cd /opt/
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
こちらは1時間くらいかかったと思います。インストールが終わると自動的に再起動されます。
- windowsマシンからOpenMediaVaultの設定をする
ラズパイ側でifconfig
を実行しIPアドレスを確認した後、windows側でブラウザからhttp://(ラズパイのIP)
に接続します。
ログイン画面が開くので、ユーザー名admin、パスワードopenmediavaultでログインします。
ネットワーク→インターフェースからeth0を選択し、鉛筆マークをクリックして編集画面を開きます。もしwifi接続であればwlan0など別の名前になっていると思います。
ラズパイを起動するたびにIPアドレスが変わってしまわないよう、IPを固定します。
メソッドはスタティック、アドレスはラズパイのIP、ネットマスクはサブネットマスク、ゲートウェイはルーターのIPアドレスを設定します。
最初に作成したユーザーでssh接続する場合、OpenMediaVaultをインストールした後sshでログインできなくなっていると思います。ユーザー設定から編集して「グループ」にsshを入れます。
自分は事前にNTFSフォーマットしたHDDを使用したいので、ラズパイにntfs-3gをインストールします。ssh接続するか直接ラズパイにログインするかして以下のコマンドを実行します。
sudo apt install ntfs-3g
HDDをラズパイに接続し、ストレージ→ファイルシステムの画面からファイルシステムを作成します。これによりHDDをラズパイにマウントすることが出来ます。(以降の画面は気まぐれでダークモードに設定しているので気にしないでください)
NASに接続した端末が中身を見ることができる共有フォルダを作成します。
ストレージ→共有フォルダから作成画面を開き、名前を「nas」(これはフォルダ名になるので何でもよいです)、ファイルシステムは先ほど作成したファイルシステムを選択して保存します。
NAS接続用のユーザーを作成します。ユーザー登録画面から好きな名前とパスワードで登録し、その他は変更せず作成します。ここで設定したユーザー名とパスワードはwindowsマシンから接続する際に必要となります。
ストレージ→共有フォルダ→特権を開き、NAS接続用ユーザーの「Read/Write」パーミッションをONにして保存します。
サービス→SMB/CIFS→設定を開き、一番上の「有効」にチェックを入れます。
サービス→SMB/CIFS→共有を開き、Shared folderに先ほど作成した共有フォルダを設定し、その他「参照可能」「ACLを継承」「パーミッションを継承」にチェックを入れます。
これでOpenMediaVaultの設定は完了です。
windowsマシンのエクスプローラーで「\(ラズパイのIPアドレス)\nas」を入力するとログインが求められます。ログインが成功しnasフォルダ(共有フォルダ)内を見ることが出来ればNAS構築完了です。
試しに数GBの動画ファイルをNASに転送してみましたが、おおよそ100MB/s弱のスピードでした。実用的な速度になっていると思います。メインPCもラズパイもどちらも有線でルーターに接続しているため、wifiだともっと遅くなると思います。
また、HDDはファイルシステムを作成する段階でラズパイの/srv/dev-disk-by-uuid-〇〇〇というディレクトリにマウントされました。構築前からすでにHDD内に存在するデータを参照する場合は先のディレクトリから共有フォルダに移動する必要があります。
参考
Discussion