Raspberry Pi 3B+に4本のUSBストレージで構成されたソフトウェアRAIDアレイを、まっさらなRaspberry Pi OS (bookworm)上で元通りに再構築します。
まっさらのRaspberry Pi OS (bookworm)上で再構築開始
Raspberry Pi 3B+に4本の128GB USBストレージを挿し、RAID6アレイを組んでファイルサーバとして運用してきましたが、
ある日、Raspberry Pi OSのアップグレードに失敗、さらに不注意にもシステムの入ったmicro SDメディアを破損してしまいました。
新しいメディアでbookwormベースのRaspberry Pi OSでシステムを作り直すも、ソフトウェアRAIDは自分で組み直す必要があります。
|
1 2 3 4 5 6 7 8 9 |
pi@homepi2:~ $ uname -a Linux homepi2 6.6.31+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64 GNU/Linux pi@homepi2:~ $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm |
ソフトウェアRAIDの再構築
システムクラッシュ後もそのまま挿したままにしていた、USBストレージのデバイス情報を確認。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
pi@homepi2:~ $ lsusb Bus 001 Device 007: ID 0781:5591 SanDisk Corp. Ultra Flair Bus 001 Device 006: ID 0781:5591 SanDisk Corp. Ultra Flair Bus 001 Device 005: ID 0781:5591 SanDisk Corp. Ultra Flair Bus 001 Device 004: ID 0781:5591 SanDisk Corp. Ultra Flair Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Microchip Technology, Inc. (formerly SMSC) SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub pi@homepi2:~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 1 115.7G 0 disk └─sda1 8:1 1 112.2G 0 part sdb 8:16 1 115.7G 0 disk └─sdb1 8:17 1 112.2G 0 part sdc 8:32 1 115.7G 0 disk └─sdc1 8:33 1 112.2G 0 part sdd 8:48 1 115.7G 0 disk └─sdd1 8:49 1 112.2G 0 part mmcblk0 179:0 0 14.5G 0 disk ├─mmcblk0p1 179:1 0 512M 0 part /boot/firmware └─mmcblk0p2 179:2 0 14G 0 part / |
mdadm --examine で、4本のUSBストレージに含まれるRAID情報を参照してみます。まず1本目。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
pi@homepi2:~ $ sudo mdadm --examine /dev/sda1 /dev/sda1: Magic : a92b4efc Version : 1.2 Feature Map : 0x1 Array UUID : fbec2900:49aac64f:fcb8ca39:50908e10 Name : homepi2:6 (local to host homepi2) Creation Time : Thu Mar 23 13:12:18 2023 Raid Level : raid6 Raid Devices : 4 Avail Dev Size : 235202560 sectors (112.15 GiB 120.42 GB) Array Size : 235202560 KiB (224.31 GiB 240.85 GB) Data Offset : 131072 sectors Super Offset : 8 sectors Unused Space : before=130984 sectors, after=0 sectors State : clean Device UUID : d4fcc66b:89f008e0:99bd059d:f5fbd1bd Internal Bitmap : 8 sectors from superblock Update Time : Thu Jul 18 08:17:27 2024 Bad Block Log : 512 entries available at offset 72 sectors Checksum : 7088c5c9 - correct Events : 7854 Layout : left-symmetric Chunk Size : 512K Device Role : Active device 0 Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing) |
知りたいのは、状態とArray UUIDの同一性なので、2本目以降は出力を絞り込んで確認。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
pi@homepi2:~ $ sudo mdadm --examine /dev/sdb1 | grep -e 'Array UUID' -e 'State' Array UUID : fbec2900:49aac64f:fcb8ca39:50908e10 State : clean Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing) pi@homepi2:~ $ sudo mdadm --examine /dev/sdc1 | grep -e 'Array UUID' -e 'State' Array UUID : fbec2900:49aac64f:fcb8ca39:50908e10 State : clean Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing) pi@homepi2:~ $ sudo mdadm --examine /dev/sdd1 | grep -e 'Array UUID' -e 'State' Array UUID : fbec2900:49aac64f:fcb8ca39:50908e10 State : clean Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing) |
ソフトウェアRAIDアレイを構成していたディスクは全て健康的な状態にあることが確認できたので、あとは mdadm --assemble で再構築するのみ。
|
1 2 3 4 5 6 7 8 9 10 11 |
pi@homepi2:~ $ sudo mdadm --assemble --uuid=fbec2900:49aac64f:fcb8ca39:50908e10 --verbose /dev/md6 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 mdadm: looking for devices for /dev/md6 mdadm: /dev/sda1 is identified as a member of /dev/md6, slot 0. mdadm: /dev/sdb1 is identified as a member of /dev/md6, slot 1. mdadm: /dev/sdc1 is identified as a member of /dev/md6, slot 2. mdadm: /dev/sdd1 is identified as a member of /dev/md6, slot 3. mdadm: added /dev/sdb1 to /dev/md6 as 1 mdadm: added /dev/sdc1 to /dev/md6 as 2 mdadm: added /dev/sdd1 to /dev/md6 as 3 mdadm: added /dev/sda1 to /dev/md6 as 0 mdadm: /dev/md6 has been started with 4 drives. |
あっけなく再構築が終わったので、RAIDアレイの状態を確認。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
pi@homepi2:~ $ sudo mdadm --detail /dev/md6 /dev/md6: Version : 1.2 Creation Time : Thu Mar 23 13:12:18 2023 Raid Level : raid6 Array Size : 235202560 (224.31 GiB 240.85 GB) Used Dev Size : 117601280 (112.15 GiB 120.42 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Thu Jul 18 08:17:27 2024 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : bitmap Name : homepi2:6 (local to host homepi2) UUID : fbec2900:49aac64f:fcb8ca39:50908e10 Events : 7854 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 2 8 33 2 active sync /dev/sdc1 3 8 49 3 active sync /dev/sdd1 pi@homepi2:~ $ cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md6 : active (auto-read-only) raid6 sda1[0] sdd1[3] sdc1[2] sdb1[1] 235202560 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU] bitmap: 0/1 pages [0KB], 65536KB chunk unused devices: <none> pi@homepi2:~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 1 115.7G 0 disk └─sda1 8:1 1 112.2G 0 part └─md6 9:6 0 224.3G 0 raid6 sdb 8:16 1 115.7G 0 disk └─sdb1 8:17 1 112.2G 0 part └─md6 9:6 0 224.3G 0 raid6 sdc 8:32 1 115.7G 0 disk └─sdc1 8:33 1 112.2G 0 part └─md6 9:6 0 224.3G 0 raid6 sdd 8:48 1 115.7G 0 disk └─sdd1 8:49 1 112.2G 0 part └─md6 9:6 0 224.3G 0 raid6 mmcblk0 179:0 0 14.5G 0 disk ├─mmcblk0p1 179:1 0 512M 0 part /boot/firmware └─mmcblk0p2 179:2 0 14G 0 part / |
RAIDアレイのマウントと設定の保存
マウントポイントを作成してマウント、中身の無事を確認できました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pi@homepi2:~ $ sudo mount /dev/md6 /mnt/md6 pi@homepi2:~ $ sudo chown pi:pi /mnt/md6 pi@homepi2:~ $ sudo chmod 775 /mnt/md6 pi@homepi2:~ $ df -h Filesystem Size Used Avail Use% Mounted on udev 343M 0 343M 0% /dev tmpfs 96M 1008K 95M 2% /run /dev/mmcblk0p2 14G 2.9G 11G 22% / tmpfs 479M 0 479M 0% /dev/shm tmpfs 5.0M 8.0K 5.0M 1% /run/lock /dev/mmcblk0p1 510M 65M 446M 13% /boot/firmware tmpfs 96M 0 96M 0% /run/user/1000 /dev/md6 220G 65G 144G 31% /mnt/md6 pi@homepi2:~ $ ls -l /mnt/md6 |
忘れずにRAIDアレイ情報を設定ファイル mdadm.conf に保存。
|
1 2 |
pi@homepi2:~ $ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf ARRAY /dev/md6 metadata=1.2 name=homepi2:6 UUID=fbec2900:49aac64f:fcb8ca39:50908e10 |
fstab へマウント情報を設定して作業完了です。
|
1 |
/dev/md6 /mnt/md6 ext4 defaults,nofail,noatime 0 3 |
ssmtpでRAID状態レポートメールを行儀よく送るには
以前の記事に沿って、RAID状態のレポートメールを送るスクリプトを実行してみるも、メールが宛先に届きません。
前回と異なり、今回はロリポップのSMTPサーバを使用しています。試行時の設定は以下の通り。
|
1 2 3 4 5 6 7 |
root=EMAIL_ADDRESS mailhub=smtp.lolipop.jp:465 AuthUser=MAIL_ADDRESS AuthPass=PASSWORD UseTLS=Yes UseSTARTTLS=No hostname=homepi2.local |
SMTPサーバとのやり取りを確認すると、サーバログインして送信元アドレスをセットする時に、ホスト名から生成されたメールアドレスのような文字列を渡してしまっています。
|
1 2 3 4 |
[->] EHLO homepi2.local [<-] 250 2.1.0 Ok [->] MAIL FROM:<root@homepi2.local> [<-] 250 2.1.5 Ok |
mail -r オプションで送信元アドレスを指定しても、ここの挙動には反映されないようです(メールヘッダのオーバーライドのみ)。
調べてみると、実行時のローカルユーザに対応したエイリアスを設定する必要があるのだそう。
エイリアス設定ファイルを以下の通り、新たに記述してみました。
|
1 2 3 4 5 6 |
# sSMTP aliases # Format: local_account:outgoing_address:mailhub # Example: root:your_login@your.domain:mailhub.your.domain[:port] # where [:port] is an optional port number that defaults to 25. root:EMAIL_ADDRESS:smtp.lolipop.jp:465 pi:EMAIL_ADDRESS:smtp.lolipop.jp:465 |
ssmtp.conf はそのままで再試行してみると、正しい送信元アドレスがセットされるようになり、実際メールが宛先まで正常に届くようになりました。
|
1 2 3 4 |
[->] EHLO homepi2.local [<-] 250 2.1.0 Ok [->] MAIL FROM:<EMAIL_ADDRESS> [<-] 250 2.1.5 Ok |




