treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

RaspberryPiの外付けHDDでソフトウェアRAID1

外付けHDDでソフトウェアRAID1を構成しましたので、未来の自分に向けた作業備忘録も兼ねてご報告します。

OSはRaspberryPi標準というべきRaspbian jessie=8.0です。

RaspberryPiとUSB HDDの接続

※写真:

f:id:treedown:20160906172716p:plain

接続は非常に単純、RaspberryPiにUSBの外付けHDDを繋げただけです。

図:接続の図

f:id:treedown:20160906172732p:plain

「fdisk -l」コマンドでディスクの存在を確認します。

Disk /dev/sda: 74.5 GiB, 80032038912 bytes, 156312576 sectors
と言う表記と
Disk /dev/sdb: 74.5 GiB, 80032038912 bytes, 156312576 sectors
と言う表記が画面に出てきます。それぞれ/dev/sdaと/dev/sdbでディスクが計二台認識しているのが分かります。

ここまでで接続されていることが確認されたので、ディスクに必要な設定を実行していきます。

ディスクの構成

まずは/dev/sdaを設定していきます。

# fdisk /dev/sda

を実行すると設定スタート。
----------------------------------------------
Command (m for help): n
Partition type

Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-156312575, default 2048):2048
Last sector, +sectors or +size{K,M,G,T,P} (2048-156312575, default 156312575):156312575

Created a new partition 1 of type 'Linux' and of size 74.5 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
----------------------------------------------
二台目も同様に「fdisk /dev/sdb」コマンドを実行してパーティション作成を実行します。(画面は同じだから省略)

続けてファイルシステムも指定してしまいます。
今回RAID1のアレイをmd0として作成します。
----------------------------------------------
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): l
Hex code (type L to list all codes): fd

※コードはfdでLinux raid autoを選択します。(下図)

f:id:treedown:20160906172950p:plain

Changed type of partition 'Linux' to 'Linux raid autodetect'.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
----------------------------------------------
二台目も同様に「fdisk /dev/sdb」コマンド内でファイルシステムも指定してしまいます。パーティション作成と同時に実行するべきでしたね。うっかりしてました。すいません。

ここまで実行して「fdisk –l」で確認すると、
----------------------------------------------
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 156312575 156310528 74.5G fd Linux raid autodetect
/dev/sdb1 2048 156312575 156310528 74.5G fd Linux raid autodetect
----------------------------------------------
こういう感じの表記が増えます。「Linux raid autodetect」で/dev/sda1と/dev/sdb1が用意されたことになります。

RAID構成のためのパッケージインストール

コマンドでインストールします。
# apt-get install mdadm
依存パッケージであるeximあたりが同時にインストールされます。
インストールしたあと、アレイを作成します。
コマンドは、
mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1
と入力します。
メッセージがサラサラっと表示されて「Continue creating array?」と表示、作っていい?と聞かれるので「yes」と入力してEnterします。
----------------------------------------------
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
----------------------------------------------
無事「mdadm: array /dev/md0 started.」となりましたのでアレイ作成が完了しました。
ここからRAID1の構成が開始します。バックグラウンドプロセスです。
ちょいちょい進捗確認します。
----------------------------------------------
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
78089728 blocks super 1.2 [2/2] [UU]
[=>...................] resync = 9.3% (7297600/78089728) finish=80.2min speed=14703K/sec

unused devices: <none>
----------------------------------------------
いま全体の9.3%までが終わったみたいです。
待つしかないので、ほっといて次の操作を。
RAID情報を取っておき、再起動時にでもmd0アレイを見失わないようUUIDとの紐づけをしておきます。
----------------------------------------------
# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
# update-initramfs -u
----------------------------------------------
続けて作成したアレイ上にファイルシステムをext4でフォーマットします。
----------------------------------------------
# mkfs -t ext4 /dev/md0
mke2fs 1.42.12 (29-Aug-2014)
/dev/md0 contains a adaptec_raid_member file system
Proceed anyway? (y,n) y
(以下略)
Writing superblocks and filesystem accounting information: done
----------------------------------------------
正常終了したようですね。
アレコレやっているうちに、RAID1の構成も完了しました。
----------------------------------------------
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
78089728 blocks super 1.2 [2/2] [UU]

unused devices: <none>
----------------------------------------------

あとはこれを使えるようにするために、マウントポイントを作成しないといけないので、ディレクトリ(今回は/home/sambaとして利用する)を作成して、
----------------------------------------------
# mkdir /home/samba
# mount /dev/md0 /home/samba
----------------------------------------------
マウント、マウント成功してデータ保存可能な状態まで到達しました。
dfコマンドで
----------------------------------------------
# df -m
ファイルシス 1M-ブロック 使用 使用可 使用% マウント位置
/dev/root 15056 3828 10563 27% /
devtmpfs 459 0 459 0% /dev
tmpfs 463 0 463 0% /dev/shm
tmpfs 463 7 457 2% /run
tmpfs 5 1 5 1% /run/lock
tmpfs 463 0 463 0% /sys/fs/cgroup
/dev/mmcblk0p1 63 21 43 33% /boot
tmpfs 93 1 93 1% /run/user/1000
tmpfs 93 0 93 0% /run/user/1001
/dev/md0 74935 52 71054 1% /home/samba
----------------------------------------------
/dev/md0が74935MB=80GBのHDDとして/home/sambaにマウントされている、ということが分かります。

後は自動起動を設定する、と言いたいところなのですが、
これがうまくいきませんでした。

詳しくは次回に。