ラズパイ5にM.2 SSD二枚を刺してRAID組んでNASを作る
はじめに
皆さん、普段使いのデバイスはどのくらいありますか?
私はメインPC、サブPC、スマホ、タブレット、そして会社用PCの合計5台を主に使用しています。
そうやって複数デバイスを触っているとやはりこう思いますよね。
「やっぱローカルネットワークに共有ディスク欲しいわ・・・」と。
というわけで、その辺に転がってたラズパイ5でRAIDを組んでNASにしてみようと思います。
材料
・Raspberry Pi5 (8GB) 1台
・Pimoroni NVMe Base Duo 1個
・crucial P3 Plus 500GB 2枚
・Waveshare PoE HAT 1個 (なければ不要です)
組み立て
まずPimoroni NVMe Base Duoとラズパイを付属のPCIe FFCケーブルで接続します。
先にSSDをセットしてしまうと作業がしづらくなるため、SSDは後からセットすることをお勧めします。
その後、SSDをPimoroni NVMe Base Duoにセットして組み立て完了です。
(ケーブルの向きはこの画像のようにします。1枚目は間違っているので注意してください)
自分はこの上にPoE HATを乗っけました。
HAT-pi-NVMe Base Duoを固定するための長ネジも「Pimoroni NVMe Base Duo」に付属してました。
電源を入れると、以下のように光ります。
ラズパイ側の設定
今回は共有ディスクとして使用するため、耐障害性を高めるためにRAID1を組みます。
(1TBになるところが、500GBになるのは痛いですが・・・)
事前準備
まずはアップデートします。
sudo apt update && sudo apt upgrade
SSDの確認
続いてSSDの接続確認をします。
lsblk -l
接続したSSDが認識されていることを確認してください。また、そのSSDの名前(NAME)も確認します。今回は「nvme0n1」と「nvme1n1」として認識されていました。
必要なソフトのインストール
sudo apt install mdadm samba
RAIDを組む
「nvme0n1」と「nvme1n1」を使用し、RAID1を組みます。
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme0n1 /dev/nvme1n1
実行後、lsblk
コマンドでRAIDが組めているか確認します。
次に、mdadm.confファイルを更新し、RAIDの設定を永続化します。
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u
RAID構成のSSDをマウント
ファイルシステムを作製し、任意の箇所にマウントします。
作成するディレクトリとマウントは自由に変更してください。
sudo mkfs.ext4 /dev/md0
sudo mkdir -p /mnt/raid
sudo mount /dev/md0 /mnt/raid
また、/etc/fstab
に情報を追記し、再起動後も自動でマウントされるようにしておきましょう。
/dev/md0 /mnt/raid ext4 defaults 0 0
最後にdfコマンドでマウントできているか確認します。
ファイル共有の設定
次に共有用ソフトのsambaの設定をします。
/etc/samba/smb.confに以下のような設定を追記します。
詳細な設定項目はドキュメントを確認してください。
※ここで指定するユーザー名は、Linuxに存在するユーザー名を使用してください。また、そのユーザーはマウントしたディレクトリにアクセスする権限が必要です。
[Share]
path = /mnt/raid/share
available = yes
valid users = [ユーザ名]
read only = no
browsable = yes
public = no
writable = yes
create mask = 0775
directory mask = 0775
force user = [ユーザ名]
次にsambaで指定したユーザのパスワードを設定します。
他端末からアクセスする際のログイン情報になるため、覚えておいてください。
sudo smbpasswd -a [ユーザ名]
最後にsambaのリスタートをすれば設定完了です。
任意の端末から、ラズパイのipに接続できるか確認してみてください。
sudo systemctl restart smbd
Discussion