SanDisk Ultra Fit 128GB 4個でRAID5を構築してみた
先日、Raspberry Pi 2 Model B 用に、SanDisk Ultra Fit 128GB
を購入しまして、ファイルサーバやミュージックサーバのデータ領域として使っているところですが、
参考記事:
Raspberry Pi 2 Model B用にUSBメモリ(SanDisk Ultra Fit 128GB)を購入してみた
Raspberry Pi 2 Model Bでファイルサーバを構築してみた
エンジニアとしては、「冗長化されていないけど大丈夫?」と心配になるわけです。
一度心配になると、日に日に心配度が増していって精神衛生上良くないので、SanDisk Ultra Fit 128GBを追加購入し、USBメモリ4台(4個)でRAID5を構築し、心の平穏を取り戻すことにしました。
Raspbian jessieでのRAID5構築手順などなどは以下のとおり。(debian というか、Linux全般のソフトウェアRAID構築手順です)
ポート数について
SanDisk Ultra Fit 128GBの4台構成のため、USBのポートが4つ必要です。
Raspberry Pi 2 Model Bには標準でUSB2.0ポートが4つ搭載されていますが、私は既にUSBポートにS/PDIF出力BEHRINGER UCA202
を装着したりしており、ポート数が足りません。
従いまして、USBハブを使うことでポート数を増やすことにしました。
消費電力について
今のところ、バスパワーで何とかなっているようですが、「ものすごく負荷がかかったりしたら、さすがに無理なんじゃないだろうか?」と思っています。
従いまして、USBハブはセルフパワー対応のものを選定しています。自宅にあったBuffaloのBSH4A02シリーズ
というものを使いましたが、こちらの商品は既に販売終了していますので、もしも面白半分で真似をされる方がおられましたら、念のために、セルフパワーのUSBハブを選定された方が良いと思います。
RAID5の構築
SanDisk Ultra Fit 128GBを4つ装着したUSBハブをRaspberry Pi 2 Model B
に接続します。
fdisk -l コマンドで、認識されたデバイス名を確認します。
# fdisk -l ★1台目がsda Disk /dev/sda: 115.7 GiB, 124218507264 bytes, 242614272 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: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sda1 32 242614271 242614240 115.7G 7 HPFS/NTFS/exFAT ★2台目がsdb Disk /dev/sdb: 115.7 GiB, 124218507264 bytes, 242614272 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: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sdb1 32 242614271 242614240 115.7G 7 HPFS/NTFS/exFAT ★3台目がsdc Disk /dev/sdc: 115.7 GiB, 124218507264 bytes, 242614272 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: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sdc1 32 242614271 242614240 115.7G 7 HPFS/NTFS/exFAT ★4台目がsdd Disk /dev/sdd: 115.7 GiB, 124218507264 bytes, 242614272 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: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sdd1 32 242614271 242614240 115.7G 7 HPFS/NTFS/exFAT
RAID用ファイルシステムの作成
認識された4つのデバイス
- /dev/sda
- /dev/sdb
- /dev/sdc
- /dev/sdd
に対して、fdisk `デバイス名`コマンドで既存のファイルシステムの削除と、RAID用ファイルシステムの作成を実施します。
以下は/dev/sdaに対しての実施例ですので、sda,sdb,sdc,sddの4回実施してください。
# fdisk /dev/sda★sdaに対して実施 Welcome to fdisk (util-linux 2.25.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): d★既存のファイルシステムを削除する。deleteの意味のdを入力 Selected partition 1 Partition 1 has been deleted. Command (m for help): n★新しいファイルシステムを作成する。newの意味のnを入力 Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p★primaryパーティションを作るので、pを入力 Partition number (1-4, default 1): ★何も入力せずEnterでOK First sector (32-242614272, default 32):★何も入力せずEnterでOK Last sector, +sectors or +size{K,M,G,T,P} (32-242614272, default 242614272):★何も入力せずEnterでOK Created a new partition 1 of type 'Linux' and of size 115.7 GiB. Command (m for help): t★RAID用ファイルシステムタイプを選ぶので typeの意味のtを入力 Selected partition 1 Hex code (type L to list all codes): fd★RAID用ファイルシステムはfdと入力すればOK Changed type of partition 'Linux' to 'Linux raid autodetect'. Command (m for help): p★できた内容を表示する。printの意味のpを入力 Disk /dev/sda: 115.7 GiB, 124218507264 bytes, 242614272 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: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sda1 32 242614271 242614240 115.7G fd Linux raid autodetect★作成されたRAID用のファイルシステム Command (m for help): w★最後に保存する。writeの意味のwを入力 The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
確認
ls -l コマンドで、/dev/sd*ファイルを確認します。
最後に1が付いたものができていればOKです。
# ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 1月 29 23:18 /dev/sda brw-rw---- 1 root disk 8, 1 1月 29 23:18 /dev/sda1★ brw-rw---- 1 root disk 8, 0 1月 29 23:23 /dev/sdb brw-rw---- 1 root disk 8, 1 1月 29 23:23 /dev/sdb1★ brw-rw---- 1 root disk 8, 0 1月 29 23:33 /dev/sdc brw-rw---- 1 root disk 8, 1 1月 29 23:33 /dev/sdc1★ brw-rw---- 1 root disk 8, 0 1月 29 23:38 /dev/sdd brw-rw---- 1 root disk 8, 1 1月 29 23:38 /dev/sdd1★
RAID用のパッケージをインストール
mdadmというパッケージをインストールします。
# apt-get install mdadm
インストール途中で設定画面が表示されてしまった場合は、キーボードのESCキーを押してキャンセルします。
余談ですが、mdadmコマンドは、過去にNASのRAID5ダブルフェイルが発生した際に大変お世話になりました。
参考:RAID5のHDD2本障害が発生したのでデータ復旧を試みた
RAID構築コマンドを実行
mdadmコマンドでRAIDを構築します。
# mdadm -C /dev/md0 -l 5 -n 4 /dev/sd[abcd]1 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
パラメータの意味
- -C `RAIDのデバイス名`:RAIDアレイ名を指定する。マルチプルデバイスなので、mdです。
- -l `数字`:RAIDのレベルを指定。今回はRAID5です。
- -n `数字`:RAIDのデバイス数を指定。今回は4台です。
- /dev/sd[abcd]1:/dev/sda1,sdb1,sdc1,sdd1を使うという意味です。
進捗確認
cat /proc/mdstat にてRAIDアレイ構築の進捗が確認できます。
# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd1[4] sdc1[2] sdb1[1] sda1[0] 363747840 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_] [>....................] recovery = 0.3% (449024/121249280) finish=107.6min speed=18709K/sec bitmap: 0/1 pages [0KB], 65536KB chunk unused devices: <none>
完了するまで待たずに次の作業に移れますので、気にせず進めましょう。
ちなみに、構築が完了すると、以下のようになります。
# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdd1[4] sdc1[2] sdb1[1] sda1[0] 363747840 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]★全部UになればOK unused devices: <none>
ファイルシステムの作成
作成したRAIDアレイ(/dev/md0)にファイルシステムを作成します。
ext4で作成します。
# mkfs -t ext4 /dev/md0
少し時間がかかりますが、気長に待ちましょう。
起動時に自動でRAIDが組まれる設定
以下のコマンドで設定を入れておきましょう。
# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
起動時の自動マウント設定
/etc/fstabに追記しておきましょう。
/dev/md0 を/usbmemというディレクトにマウントする場合の例です。
# vi /etc/fstab /dev/md0 /usbmem ext4 defaults,noatime,uid=65534,gid=65534 0 0
私の場合は、ローカルIPアドレスからのアクセスは誰でも書込み可能なファイルサーバ(samba)での共有フォルダとして、/usbmem にマウントして使うため、uidとgidの指定をしています。
参考:Raspberry Pi 2 Model Bでファイルサーバを構築してみた
動作確認
Raspbian jessie を再起動して、マウントされるか確認しましょう。
# reboot
マウント確認
df -h コマンドで確認してみましょう。
きちんとマウントされていますね。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/md0 342G 67M 325G 1% /usbmem
RAID5構築後のサイズは342GB程度のようです。
ファイルサーバ領域のディスク(USBメモリ)が冗長化された、省エネ静音サーバとして、これだけの容量があれば、まぁまあ上出来でしょう。
SSD複数台でRAID組むより安くて低消費電力と思いますよ。
おまけ:RAID状態確認
以下のコマンドで、作成したRAIDアレイの構成・状態・容量を確認できます。
# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Fri Jan 29 23:47:21 2016 Raid Level : raid5 Array Size : 363747840 (346.90 GiB 372.48 GB) Used Dev Size : 121249280 (115.63 GiB 124.16 GB) Raid Devices : 4 Total Devices : 4 Persistence : Superblock is persistent Update Time : Fri Jan 29 23:50:06 2016 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Name : raspberry:0 (local to host raspberry) UUID : 59bf2bc1:bb5bc233:a2b258f1:bcf9c835 Events : 20 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sda1 1 8 33 1 active sync /dev/sdb1 2 8 49 2 active sync /dev/sdc1 4 8 65 3 active sync /dev/sdd1
今回もお疲れさまでした。
ディスカッション
コメント一覧
まだ、コメントがありません