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 コマンドで、認識されたデバイス名を確認します。
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 |
# 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回実施してください。
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 |
# 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です。
1 2 3 4 5 6 7 8 9 |
# 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というパッケージをインストールします。
1 |
# apt-get install mdadm |
インストール途中で設定画面が表示されてしまった場合は、キーボードのESCキーを押してキャンセルします。
余談ですが、mdadmコマンドは、過去にNASのRAID5ダブルフェイルが発生した際に大変お世話になりました。
参考:RAID5のHDD2本障害が発生したのでデータ復旧を試みた
RAID構築コマンドを実行
mdadmコマンドでRAIDを構築します。
1 2 3 |
# 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アレイ構築の進捗が確認できます。
1 2 3 4 5 6 7 8 |
# 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> |
完了するまで待たずに次の作業に移れますので、気にせず進めましょう。
ちなみに、構築が完了すると、以下のようになります。
1 2 3 4 5 |
# 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で作成します。
1 |
# mkfs -t ext4 /dev/md0 |
少し時間がかかりますが、気長に待ちましょう。
起動時に自動でRAIDが組まれる設定
以下のコマンドで設定を入れておきましょう。
1 |
# mdadm --detail --scan >> /etc/mdadm/mdadm.conf |
起動時の自動マウント設定
/etc/fstabに追記しておきましょう。
/dev/md0 を/usbmemというディレクトにマウントする場合の例です。
1 2 3 |
# 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 を再起動して、マウントされるか確認しましょう。
1 |
# reboot |
マウント確認
df -h コマンドで確認してみましょう。
きちんとマウントされていますね。
1 2 3 4 |
# df -h
Filesystem Size Used Avail Use%
Mounted on
/dev/md0
342G
67M
325G
1%
/usbmem |
RAID5構築後のサイズは342GB程度のようです。
ファイルサーバ領域のディスク(USBメモリ)が冗長化された、省エネ静音サーバとして、これだけの容量があれば、まぁまあ上出来でしょう。
SSD複数台でRAID組むより安くて低消費電力と思いますよ。
おまけ:RAID状態確認
以下のコマンドで、作成した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 |
# 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 |
今回もお疲れさまでした。
ディスカッション
コメント一覧
まだ、コメントがありません