Raspberry Pi 4と外付けHDD(USB接続)でNASを作ってみました

こんにちはー、ニアです。

今回は、去年夏頃に購入したRaspberry Pi 4と自宅に余っている外付けHDD(USB接続)でNASを作ってみました。

1. 用意するもの

2. Raspberry Pi 4にOpenMediaVaultをインストール

Raspberry Piに入れているOS(Raspberry Pi OS)がDebianベースなので、今回はOpenMediaVaultというNASシステムをインストールします。

今回は、MacからRaspberry PiにSSH接続してセットアップするため、Raspberry Piのターミナルを開き、ifconfigコマンド実行します。

ifconfig

そこで表示されたIPアドレスに、MacからSSH接続します。

ssh pi@192.168.X.X

# piユーザーのログインパスワードを入力します。

パッケージの一覧リストとインストール済パッケージを更新します。

sudo apt update
sudo apt upgrade

OpenMediaVaultをインストールします。インストールには数十分かかります。

cd /opt/
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

インストールを完了したら、Raspberry Piを再起動します。

Nia-TN-SDfs-panic.png
・・・と思ったら、OpenMediaVaultのインストールの完了時、Raspberry PiのIPアドレスが変わって、SSH接続が切断されてしまいました(汗)
結局Raspberry Piの方で再起動操作しました。

3. OpenMediaVaultを設定する

Raspberry Piを再起動したら、ターミナルからifconfigコマンドでIPアドレスを確認し、ブラウザから「http://{IPアドレス}」でアクセスします。

ユーザー名パスワード
adminopenmediavault

ログインするとダッシュボード画面が表示されます。

3.1. IPアドレスを固定する

Raspberry PiのIPアドレスを設定するために、「システム」→「ネットワーク」画面を開きます。

今回は無線LANを設定するので、「wlan0」のインターフェースを選択し、「編集」ボタンを押します。
(※Raspberry Piを有線LANに接続している場合は、「eth0」のインターフェースを選択します)

IPv4のにある「メソッド」「アドレス」「ネットマスク」「ゲートウェイ」を設定し、「保存」ボタンを押します。

メソッド「スタティック」を選択すると、IPアドレスを指定することができます。
(ちなみに「DHCP」を選択した場合、IPアドレスは自動的に設定されます)
アドレスRaspberry PiのIPアドレスを指定します。
ネットマスクサブネットマスクを指定します。
ゲートウェイRaspberry Piに接続しているルーターのIPアドレスを指定します。

なお、OpenMediaVaultの設定を変更すると、それを適用するかどうかの確認バーが上部に出るので、設定を適用する時は「適用」ボタンを押します。

先ほどはRaspberry PiのIPアドレスを固定したので、適用後Macとのはセッションが切断してしまうので、Raspberry PiのターミナルからifconfigコマンドでIPアドレスの確認し、変更後のIPアドレスでアクセスします。

3.2. 外付けHDDをext4でフォーマットする

今回使用する外付けHDDは、exFATでフォーマットしてあります。

外付けHDDをRaspberry PiのUSB 3.0に接続します。接続したら、dfコマンドで確認します。

df -Th

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/root      ext4       26G  9.7G   15G  40% /
...
/dev/sda1      exfat     1.4T   12M  1.4T   1% /media/pi/USB-HDD

次にfdiskコマンドで、外付けHDDのパーティションを作り直します。

sudo fdisk /dev/sda1

# パーティションの情報を確認します。
Command (m for help): p
Disk /dev/sda1: 1.4 TiB, 1500299395072 bytes, 2930272256 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf4f4f4f4

Device      Boot      Start        End    Sectors  Size Id Type
/dev/sda1p1      4109694196 8219388391 4109694196  1.9T f4 SpeedStor
/dev/sda1p2      4109694196 8219388391 4109694196  1.9T f4 SpeedStor
/dev/sda1p3      4109694196 8219388391 4109694196  1.9T f4 SpeedStor
/dev/sda1p4      4109694196 8219388391 4109694196  1.9T f4 SpeedStor

# 既存のパーティションを削除します。
Command (m for help): d
Partition number (1-4, default 4):

Partition 4 has been deleted.

Command (m for help): d
Partition number (1-3, default 3):

Partition 3 has been deleted.

Command (m for help): d
Partition number (1,2, default 2):

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

# GPT形式のパーティションテーブルを作成します。
Command (m for help): g

Created a new GPT disklabel (GUID: 48F6A820-1291-F142-AEF6-C9BAE7ED7B4C).
The old exfat signature will be removed by a write command.

# パーティションを作成します。
Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-2930272222, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2930272222, default 2930272222):

Created a new partition 1 of type 'Linux filesystem' and of size 1.4 TiB.

# パーティションの設定を保存します。
Command (m for help): w

The partition table has been altered.
Failed to remove partition 1 from system: Invalid argument
Failed to remove partition 2 from system: Invalid argument
Failed to remove partition 3 from system: Invalid argument
Failed to remove partition 4 from system: Invalid argument
Failed to add partition 1 to system: Invalid argument

The kernel still uses the old partitions. The new table will be used at the next reboot.
Syncing disks.
Nia-TN-SDfs-normal2.png
保存時のメッセージ的に、再起動した方がよさそうだったので、一旦Raspberry Piを再起動しました。
OpenMediaVaultからRaspberry Piの再起動やシャットダウン操作をすることができますよ。

外付けHDDはOpenMediaVaultの操作でマウントする必要があるので、もしRaspberry Pi上でマウントされたままの場合、一旦umountコマンドでアンマウントします。

umount /dev/sda1

mkfs.ext4コマンドで、外付けHDDをext4形式でフォーマットします。

sudo mkfs.ext4 /dev/sda1

mke2fs 1.44.5 (15-Dec-2018)
Found a gpt partition table in /dev/sda1
Proceed anyway? (y,N) y
Creating filesystem with 366284032 4k blocks and 91578368 inodes
Filesystem UUID: d20f306b-2167-4c4d-ac43-d8131612c114
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
    102400000, 214990848

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks):
done
Writing superblocks and filesystem accounting information: done

OpenMediaVaultの「ストレージ」→「ファイルシステム」を開き、外付けHDDを選択して、「マウント」ボタンを押します。

マウントが完了したら、OpenMediaVaultで外付けHDDを利用できるようになります。

3.3. 共有フォルダとユーザーを作成

NASにアクセスするユーザーを作成します。
「アクセス権の管理」→「ユーザー」を開き、「追加」ボタンを押します。

ユーザー情報を入力し、「保存」ボタンを押します。

名前ユーザー名を入力します。
コメントユーザーの説明を入力します(任意)
Emailメールアドレスを入力します(任意)
パスワード、
パスワードの確認
パスワードを入力します。

NAS上のデータにアクセスするだけの場合、シェルとアカウントの変更設定は特に使用しません。

次に、共有フォルダを作成します。
「アクセス権の管理」→「共有フォルダ」を開き、「追加」ボタンを押します。

共有フォルダの情報を入力し、「保存」ボタンを押します。

名前共有フォルダの名前を入力します。
デバイス共有フォルダを設置するストレージを選択します。
ここでは、外付けHDDを選択します。
パス共有フォルダの相対パスを指定します。
パーミッション共有フォルダのパーミッションをドロップダウンから選択します。
管理者、ユーザー、その他に対して設定します。
コメント共有フォルダの説明を入力します(任意)

先ほど作成した共有フォルダを選択し、「特権」ボタンを押して、共有フォルダの権限画面を開きます。
先ほど作成したユーザーの読み/書きのチェックボックスを入れて、「保存」ボタンを押します。

先ほど作成した共有フォルダを選択し、「ACL」ボタンを押して、共有フォルダのACLの変更画面を開きます。
先ほど作成したユーザーの読み/書き、パーミッションの選択を確認し、「既存のすべてのパーミッションを置き換える」のスイッチを入れて、「適用」ボタンを押します。

3.4. SMBの設定

「サービス」→「SMB/CIFS」を開き、一般設定にある「有効」のスイッチを入れます。

「共有」タブを選択し、「追加」ボタンを押します。

先ほど作成した共有フォルダを選択し、「保存」ボタンを押します。

これで、NASの設定はひとまず完了です。

4. WindowsやMacからNASにアクセス

WindowsやMacからNASアクセスしてみます。

4.1. macOSからアクセス

ここでは、macOS 11 BigSurを使用しています。

DockにあるFinderを右クリックし、「サーバーに接続」を選択します。

アドレス欄に「smb://{Raspberry PiのIPアドレス}」を入力し、「接続」ボタンを押します。

最初の接続時、接続するかどうかのダイアログが出るので、「接続」ボタンを押します。

ログインのダイアログが出たら、ユーザの種類から「登録ユーザ」を選択し、3.3.で作成したユーザー名(名前のところに入力)とパスワードを入力して、「接続」ボタンを押します。

NASに接続したら、3.3.で作成した共有フォルダを選択します。
共有フォルダが開けば成功です。

とりあえず、テキストファイルをNASに入れました。

4.2. Windowsからアクセス

ここでは、Windows 10を使用しています。

エクスプローラーのアドレスバーに「\\{Raspberry PiのIPアドレス}\{3.3.で作成した共有フォルダ名}」を入力し、移動ボタンを押します。

ネットワーク資格情報の入力のダイアログが出たら、3.3.で作成したユーザー名とパスワードを入力して、「OK」ボタンを押します。

NASに接続し、共有フォルダが開けば成功です。

先ほどMacからアップロードしたテキストファイルを無事に開けました。

ここでちょっと、NASのストレージのベンチマークを測定してみます。共有フォルダをネットワークドライブとしてマウントし、CrystalDiskMarkを管理者権限なしで起動して、測定してみました。

Nia-TN-SDfs-sweet.png
昔のUSBメモリの速度かな?

USB 3.0接続の外付けHDDなので、理論上はシーケンシャル速度が100MB/s以上出せるのですが、PC↔ルーター↔Raspberry Pi間が無線LAN接続なのが原因なのか、速度はかなり遅めでした。せめてRaspberry Pi↔ルーター間を有線接続した方がよいかもです。

4.3. Linux(Ubuntu)からアクセス

ここでは、Ubuntu 20.04 LTSを使用しています。

Ubuntuのファイルマネージャー(Nautilus(ノーチラスと読みます))を開き、「他の場所」を選択します。

サーバーへの接続にあるアドレス欄に「smb://{Raspberry PiのIPアドレス}/{3.3.で作成した共有フォルダ名}」を入力し、「接続」ボタンを押します。

Nia-TN-SDfs-wink.png
もしくは、ネットワークの一覧からNAS(ここでは「rasberrypi – SMB/CIFS」)を選択してアクセスすることができます。

接続のダイアログが出たら、接続方法から「登録ユーザー」を選択し、3.3.で作成したユーザー名とパスワードを入力して、「接続」ボタンを押します。
(ドメインはOpenMediaVaultの「サービス」→「SMB/CIFS」の一般設定にある「ワークグループ」の値です。デフォルトでは「WORKGROUP」です。)

NASに接続し、共有フォルダが開けば成功です。

4.4. Chrome OS(Chromium OS、Chrome OS Flex(旧: CloudReady))からアクセス

ここでは、CloudReadyを使用しています。

ファイルアプリを開き、右上のメニューから「新しいサービスを追加」→「SMBファイル共有」を選択します。

ファイル共有URLに「\\{Raspberry PiのIPアドレス}\{3.3.で作成した共有フォルダ名}」を入力し、3.3.で作成したユーザー名とパスワードを入力し、「追加」ボタンを押します。

NASに接続し、共有フォルダが開けば成功です。

4.5. iOS / iPadOSからアクセス

ここでは、iPhone SE 2のiOS 14を使用しています。

ファイルアプリを開き、右上のメニューから「サーバーへ接続」を選択します。

サーバのアドレス欄に「smb://{Raspberry PiのIPアドレス}」を入力し、「接続」ボタンをタップします。

ユーザの種類から「登録ユーザ」を選択し、3.3.で作成したユーザー名(名前のところに入力)とパスワードを入力して、「接続」ボタンを押します。

NASに接続したら、3.3.で作成した共有フォルダを選択します。
共有フォルダが開けば成功です。

4.6. Androidからアクセス

ここでは、ASUS Zenfone Max (M2)のAndroid 9.0を使用しています。

Androidの場合、サードパーティ製のSMBクライアントが必要になります。ここでは「X-plore File Manager」を使ってNASに接続します。

LANにある「サーバー追加」をタップします。

サーバーのアドレス欄にRaspberry PiのIPアドレス、パスに3.3.で作成した共有フォルダ名を入力し、ユーザー名とパスワードを入力して、「保存」ボタンを押します。
(ドメインはOpenMediaVaultの「サービス」→「SMB/CIFS」の一般設定にある「ワークグループ」の値です。デフォルトでは「WORKGROUP」です。)

NASに接続し、共有フォルダが開けば成功です。

4.7. Windows 10 Mobileからアクセス(NG)

Windows 10 mobileは2019年12月10日(米国時間)にサポート終了しています。

残念ながら、Windows 10 MobileではSMBプロトコルに非対応なので、今回作成したNASにアクセスできませんでした。

5. おわりに

今回はRaspberry Pi 4と自宅に余っている外付けHDD(USB接続)でNASを作り、PCやスマホからアクセスしてみました。

OpenMediaVaultのインストールは簡単にできました。セットアップでは、はじめはUIに少し戸惑ったけど、操作していく内に、昔の業務で使っていたNAS(NETGEARのReadyNAS)を操作していた頃を思い出し、あまり躓かずにできました。

最近では多くのデバイスを扱うようになったので、機会があれば本格的に自宅専用のNASを作って、画像ファイルなどを格納して管理できればなと思っています。

[END]

参考サイト

タイトルとURLをコピーしました