raspberry piでソフトウェアRAID | no news.

raspberry piでソフトウェアRAID

glusterfsで冗長化したストレージシステムを作るとして、肝心のサーバ本体のディスクが冗長化されていないのはいかがなものかと思った。そこでUSBメモリを2個買ってきてソフトウェアRAIDを構築した上でglusterfsのbrickとして使ったら素敵なんじゃないかと思ったのです。

現状のディスクはというとこんな感じです。ごちゃごちゃ長いですが、/dev/sdaと/dev/sdcが追加したUSBメモリーです。/dev/sdbどこいった。

# fdisk -l

Disk /dev/mmcblk0: 15.8 GB, 15811477504 bytes
省略

Disk /dev/sda: 16.0 GB, 15997075456 bytes
省略
Device Boot Start End Blocks Id System
/dev/sda1 * 8064 31244287 15618112 7 HPFS/NTFS/exFAT

Disk /dev/sdc: 15.5 GB, 15479597056 bytes
省略
Disk identifier: 0x1ea60172

Device Boot Start End Blocks Id System
/dev/sdc1 * 63 30231935 15115936+ b W95 FAT32
#

それではパーティションの操作をします。

  • 既存のパーティションを削除(d)※
  • 新規でUSBメモリ全体を使って基本パーティションを作成(n)
  • パーティションタイプを「Linux raid autodetect」に変更(t,fd)

これを/dev/sdaと/dev/sdc両方に対して行います。
※もちろんデータを消して良ければです。大切なデータが入っている場合は行わないこと。
※/dev/sdaは通常はLinuxがインストールされているパーティションなので注意すること。raspberry piはSDカードから起動するから/dev/sdaは使わないのです。

# fdisk /dev/sdc

Command (m for help): d
Selected partition 1

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-30233587, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-30233587, default 30233587):
Using default value 30233587

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/sdc: 15.5 GB, 15479597056 bytes
32 heads, 63 sectors/track, 14996 cylinders, total 30233588 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
Disk identifier: 0x1ea60172

Device Boot Start End Blocks Id System
/dev/sdc1 2048 30233587 15115770 fd Linux raid autodetect

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
#

さて下ごしらえも終わったのでmdadmと。

# mdadm
-su: mdadm: コマンドが見つかりません
#

まあないわな。ということでインストール。

# apt-get install mdadm
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
exim4-base exim4-config exim4-daemon-light heirloom-mailx
提案パッケージ:
mail-reader eximon4 exim4-doc-html exim4-doc-info spf-tools-perl swaks exim4
mail-transport-agent
推奨パッケージ:
mailx
以下のパッケージが新たにインストールされます:
exim4-base exim4-config exim4-daemon-light heirloom-mailx mdadm
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 13 個。
1 個のパッケージが完全にインストールまたは削除されていません。
2,940 kB のアーカイブを取得する必要があります。
この操作後に追加で 5,353 kB のディスク容量が消費されます。
続行しますか [Y/n]? n
中断しました。
#

・・・なんかパッケージがおかしくないですかね?メールに関するものばかりなんだが。。。パッケージの情報を見てみる。

# apt-cache show mdadm
Package: mdadm
Version: 3.2.5-5
Architecture: armhf
Maintainer: Debian mdadm maintainers <pkg-mdadm-devel@lists.alioth.debian.org> Installed-Size: 1113
Depends: libc6 (>= 2.13-28), libgcc1 (>= 1:4.4.0), udev | makedev, debconf (>= 1.4.72), lsb-base (>= 3.1-6), initscripts (>= 2.88dsf-13.3)
Recommends: default-mta | mail-transport-agent, module-init-tools
Breaks: initramfs-tools (<< 0.65), mdctl (<< 0.7.2), raidtools2 (<< 1.00.3-12.1)
Replaces: mdctl
Homepage: http://neil.brown.name/blog/mdadm
Priority: optional
Section: admin
Filename: pool/main/m/mdadm/mdadm_3.2.5-5_armhf.deb
Size: 541936
SHA256: ede666675eb4b26d073b46f747447f675d1849529a92a54184f2d5c072d31819
SHA1: 1a55cc9cd860010898134c19197d3342118ff5b5
MD5sum: 441f6588e060b3a546dcd48ea50b73d7
Description: tool to administer Linux MD arrays (software RAID)
The mdadm utility can be used to create, manage, and monitor MD
(multi-disk) arrays for software RAID or multipath I/O.
.
This package automatically configures mdadm to assemble arrays during the
system startup process. If not needed, this functionality can be disabled.

#

description見る限り間違ってなさそう。ではインストールします。

# apt-get install mdadm
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
exim4-base exim4-config exim4-daemon-light heirloom-mailx
提案パッケージ:
mail-reader eximon4 exim4-doc-html exim4-doc-info spf-tools-perl swaks exim4
mail-transport-agent
推奨パッケージ:
mailx
以下のパッケージが新たにインストールされます:
exim4-base exim4-config exim4-daemon-light heirloom-mailx mdadm
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 13 個。
1 個のパッケージが完全にインストールまたは削除されていません。
2,940 kB のアーカイブを取得する必要があります。
この操作後に追加で 5,353 kB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main exim4-config all 4.80-7 [478 kB]
取得:2 http://mirrordirector.raspbian.org/raspbian/ wheezy/main exim4-base armhf 4.80-7 [1,033 kB]
取得:3 http://mirrordirector.raspbian.org/raspbian/ wheezy/main exim4-daemon-light armhf 4.80-7 [635 kB]
取得:4 http://mirrordirector.raspbian.org/raspbian/ wheezy/main heirloom-mailx armhf 12.5-2 [253 kB]取得:5 http://mirrordirector.raspbian.org/raspbian/ wheezy/main mdadm armhf 3.2.5-5 [542 kB]
2,940 kB を 43秒 で取得しました (66.8 kB/s)
パッケージを事前設定しています ...
以前に未選択のパッケージ exim4-config を選択しています。
(データベースを読み込んでいます ... 現在 74081 個のファイルとディレクトリがインストールされています。)
(.../exim4-config_4.80-7_all.deb から) exim4-config を展開しています...
以前に未選択のパッケージ exim4-base を選択しています。
(.../exim4-base_4.80-7_armhf.deb から) exim4-base を展開しています...
以前に未選択のパッケージ exim4-daemon-light を選択しています。
(.../exim4-daemon-light_4.80-7_armhf.deb から) exim4-daemon-light を展開しています...
以前に未選択のパッケージ heirloom-mailx を選択しています。
(.../heirloom-mailx_12.5-2_armhf.deb から) heirloom-mailx を展開しています...
以前に未選択のパッケージ mdadm を選択しています。
(.../mdadm_3.2.5-5_armhf.deb から) mdadm を展開しています...
man-db のトリガを処理しています ...
menu のトリガを処理しています ...
lvm2 (2.02.95-8+rpi1) を設定しています ...
[....] Setting up LVM Volume Groups... No volume groups found
No volume groups found
done.
update-initramfs: deferring update (trigger activated)
exim4-config (4.80-7) を設定しています ...
Adding system-user for exim (v4)
exim4-base (4.80-7) を設定しています ...
exim: DB upgrade, deleting hints-db
exim4-daemon-light (4.80-7) を設定しています ...
[ ok ] Starting MTA: exim4.
ALERT: exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken
heirloom-mailx (12.5-2) を設定しています ...
update-alternatives: /usr/bin/mailx (mailx) を提供するために 自動モード で /usr/bin/heirloom-mailx を使います
mdadm (3.2.5-5) を設定しています ...
Generating array device nodes... done.
Generating mdadm.conf... done.
update-initramfs: deferring update (trigger activated)
[ ok ] Assembling MD arrays...done (no arrays found in config file or automatically).
[ ok ] Starting MD monitoring service: mdadm --monitor.
initramfs-tools のトリガを処理しています ...
menu のトリガを処理しています ...
#

インストール中に2回メッセージが出ます。とりあえずEnter押して進めました。

QS_20140913-145950

QS_20140913-150311

ではmdadmが有効かもう一度確認してみましょう。

# mdadm
Usage: mdadm --help
for help
#

ではRAIDの構成をします。RAID1(ミラーリング)で/dev/md0として使えるようにします。もちろんさっき準備した/dev/sda1と/dev/sdc1を使います。

# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdc1
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: largest drive (/dev/sda1) exceeds size (15107456K) by more than 1%
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
#

最後ごちゃごちゃ言われてますがext4でフォーマットしてやる!

# mkfs -t ext4 /dev/md0
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
944704 inodes, 3776864 blocks
188843 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3871342592
116 block groups
32768 blocks per group, 32768 fragments per group
8144 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

#

それではマウントポイント作って(/export/md0)マウントしましょう。

# mkdir /export/md0
# mount /dev/md0 /export/md0/
# mount
/dev/root on / type ext4 (rw,noatime,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=219780k,nr_inodes=54945,mode=755)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=44792k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=89560k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
/dev/mmcblk0p5 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
lxc on /sys/fs/cgroup type cgroup (rw,relatime,blkio,freezer,devices,cpuacct,cpu)
/dev/md0 on /export/md0 type ext4 (rw,relatime,data=ordered)
#

一番下に表示されているように、無事にマウントされてますね。

# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
rootfs 13G 3.2G 9.1G 26% /
/dev/root 13G 3.2G 9.1G 26% /
devtmpfs 215M 0 215M 0% /dev
tmpfs 44M 264K 44M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 88M 0 88M 0% /run/shm
/dev/mmcblk0p5 60M 9.6M 50M 17% /boot
/dev/md0 15G 37M 14G 1% /export/md0
#

RAID1で構成しているので/dev/md0の容量は15Gになっています。では進捗状況をチェック。

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sda1[0]
15107456 blocks super 1.2 [2/2] [UU]
[=>...................] resync = 5.9% (902080/15107456) finish=118.6min speed=1994K/sec

unused devices:
#

数時間後終わりました。

$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sda1[0]
15107456 blocks super 1.2 [2/2] [UU]

unused devices:
$

なお、RAIDの設定などはこちらを参考にしました。

HDDを2台追加してRAID 1を構成するには

スポンサーリンク
レクタングル大

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル大