眠っていたラズパイを NAS (RAID, Samba, Git) サーバー化して活用する件。
今回はRAID1 (ミラーリング) 環境を構築してデータを保護します。
[ディスク準備]
今回はUSBメモリーを2本使用します。
ラズパイにはUSBポートが4つありますが、メモリーを挿す場所によっては干渉するので少し工夫が必要です。
本体サイズの小さいスリムなUSBメモリーは大丈夫かも知れません。
<まず最初は使用するディスクの準備から>
① USBポートには何も刺さってない状態で「df」コマンドを使用します。
pi@raspberrypi:~ $ df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/root 14752480 3567180 10532620 26% / devtmpfs 439916 0 439916 0% /dev tmpfs 473196 0 473196 0% /dev/shm tmpfs 473196 13420 459776 3% /run tmpfs 5120 4 5116 1% /run/lock tmpfs 473196 0 473196 0% /sys/fs/cgroup /dev/mmcblk0p1 258095 49440 208656 20% /boot tmpfs 94636 4 94632 1% /run/user/1000
② USBメモリーを2本刺してから再度「df」コマンドを実行
pi@raspberrypi:~ $ df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/root 14752480 3567212 10532588 26% / devtmpfs 439916 0 439916 0% /dev tmpfs 473196 0 473196 0% /dev/shm tmpfs 473196 13460 459736 3% /run tmpfs 5120 4 5116 1% /run/lock tmpfs 473196 0 473196 0% /sys/fs/cgroup /dev/mmcblk0p1 258095 49440 208656 20% /boot tmpfs 94636 4 94632 1% /run/user/1000 /dev/sda1 30029472 11424 30018048 1% /media/pi/1A74-D84F /dev/sdb1 30029472 11424 30018048 1% /media/pi/D13E-B1DF
↑「sda1」と「sdb1」を自動認識し、マウントされました。
③ 自動でマウントされたドライブを解除します。
$ umount /dev/sda1 $ umount /dev/sdb1
④ 最後にもう一度「df」で確認してドライブの準備完了。
pi@raspberrypi:~ $ df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/root 14752480 3625268 10474532 26% / devtmpfs 439916 0 439916 0% /dev tmpfs 473196 0 473196 0% /dev/shm tmpfs 473196 13472 459724 3% /run tmpfs 5120 4 5116 1% /run/lock tmpfs 473196 0 473196 0% /sys/fs/cgroup /dev/mmcblk0p1 258095 49440 208656 20% /boot tmpfs 94636 4 94632 1% /run/user/1000
[RAID 1 の構築]
ここからは RAID の作業になります。 使用するドライブの容量によって、かなり時間がかかる場合があります。 私の場合、32GBのUSBメモリーを使用してTotal 2時間ほどでした。
<ソフトウェアの導入>
① RAIDを実現させる「mdadm」をインストールします。
sudo apt install mdadm -y
② インストールが完了したら RAID を組みます。
sudo mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1
--create /dev/md0
:作成するRAIDドライブ名 (/dev/md0)--level=raid1
:RAIDのモード1(ミラーリング)を指定--raid-devices=2
:RAID用のドライブ数を指定- 続けて使用する2つのドライブ名を指定「/dev/sda1」「/dev/sdb1」
※上記コマンド入力後、質問されたら「yes」と入力してEntar
ここから時間が掛かります!
上記コマンド入力後、裏でRAIDドライブ構成の作業が動いてます。
③ 進捗確認する
「cat /proc/mdstat」コマンドで状態を確認します。
pi@raspberrypi:~ $ cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0] 30026688 blocks super 1.2 [2/2] [UU] [==========>..........] resync = 53.9% (16213504/30026688) finish=18.9min speed=12134K/sec unused devices: <none>
完了するまでコマンドを打ち続けて確認しましょう。
※32GBのUSBメモリーで約40分ほど掛かりました。
④ 完了
以下の様な表示が出来たら完了です。
pi@raspberrypi:~ $ cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0] 30026688 blocks super 1.2 [2/2] [UU] unused devices: <none>
⑤ RAID 情報を取得
pi@raspberrypi:~ $ sudo mdadm --detail --scan ARRAY /dev/md0 metadata=1.2 name=raspberrypi:0 UUID=1bfa74ea:4380fe74:b3f2e046:71c15b36
※ここで出力された情報を次の工程でつかう。
⑥ mdadm の設定ファイルを編集
sudo nano /etc/mdadm/mdadm.conf
※先程の出力結果を最後尾に追加する
⑦ catコマンドで設定内容を確認
pi@raspberrypi:~ $ cat /etc/mdadm/mdadm.conf # mdadm.conf # # !NB! Run update-initramfs -u after updating this file. # !NB! This will ensure that initramfs has an uptodate copy. # # Please refer to mdadm.conf(5) for information about this file. # # by default (built-in), scan all partitions (/proc/partitions) and all # containers for MD superblocks. alternatively, specify devices to scan, using # wildcards if desired. #DEVICE partitions containers # automatically tag new arrays as belonging to the local system HOMEHOST <system> # instruct the monitoring daemon where to send mail alerts MAILADDR root # definitions of existing MD arrays # This configuration was auto-generated on Sat, 10 Jul 2021 12:35:49 +0900 by mkconf ARRAY /dev/md0 metadata=1.2 name=raspberrypi:0 UUID=1bfa74ea:4380fe74:b3f2e046:71c15b36
↑ファイルの最後尾に追加された事を確認。
⑧ initramfs 更新
先ほど追加した情報で initramfs をアップデート
update-initramfs -u
⑨ 最後に作成した RAID のドライブをフォーマットする
ext4形式でフォーマット
pi@raspberrypi:~ $ sudo mkfs -t ext4 /dev/md0 mke2fs 1.44.5 (15-Dec-2018) Creating filesystem with 7506672 4k blocks and 1876800 inodes Filesystem UUID: a94f1466-8199-4978-97f1-31b4dd6a81ad Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
以上でRAIDの準備は完了
[ディスクアレイ(RAID 1)の自動マウント]
ここまで来れば、あと一息!
最後に、ラズパイが起動したら自動でRAIDドライブをマウントして使える様にしましょう。
① 共有フォルダを作成
mkdir ~/Share
※作成場所は自分の好みで
② 起動時に自動マウントする様に設定
sudo nano /etc/fstab
※[上記結果を追加]
/dev/md0 /home/pi/Share ext4 defaults,nofail 0 0
③ 変更内容を確認
pi@raspberrypi:~ $ cat /etc/fstab proc /proc proc defaults 0 0 PARTUUID=c296e378-01 /boot vfat defaults 0 2 PARTUUID=c296e378-02 / ext4 defaults,noatime 0 1 /dev/md0 /home/pi/Share ext4 defaults,nofail 0 0 # a swapfile is not a swap partition, no line here # use dphys-swapfile swap[on|off] for that
④ 全ての準備が整ったので再起動する
sudo reboot
動作確認
① 「df」コマンドで自動マウントが成功したかチェック
pi@raspberrypi:~ $ df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 /dev/root 14752480 3624856 10474944 26% / devtmpfs 439916 0 439916 0% /dev tmpfs 473196 0 473196 0% /dev/shm tmpfs 473196 13336 459860 3% /run tmpfs 5120 4 5116 1% /run/lock tmpfs 473196 0 473196 0% /sys/fs/cgroup /dev/mmcblk0p1 258095 49440 208656 20% /boot /dev/md0 29424356 45080 27861560 1% /home/pi/Share tmpfs 94636 4 94632 1% /run/user/1000
無事に「/dev/md0」が自動マウントされ、位置も設定通り「/home/pi/Share」となっている。
② RAIDの状態を詳細チェック
pi@raspberrypi:~ $ sudo mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Sat Jul 10 12:46:02 2021 Raid Level : raid1 Array Size : 30026688 (28.64 GiB 30.75 GB) Used Dev Size : 30026688 (28.64 GiB 30.75 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Sat Jul 10 14:09:12 2021 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Consistency Policy : resync Name : raspberrypi:0 (local to host raspberrypi) UUID : 1bfa74ea:4380fe74:b3f2e046:71c15b36 Events : 22 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1
RAID の状態を定期チェック
最低限、以下のコマンドで状態をチェックしておいた方が吉。
pi@raspberrypi:~ $ cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sda1[0] sdb1[1] 30026688 blocks super 1.2 [2/2] [UU] unused devices: <none>
※「[2/2] [UU]」の状態を定期的に確認しましょう