USBメモリの本気

/ Linux/Unix / Comment[2]
mdadmでUSBメモリでRAID0を組んでみた

mdadmコマンドのオプションが多すぎて覚えられんから基本的なコマンドをまとめたフロントエンドシェルスクリプトを書いた
#!/bin/sh
create(){
printf "RAIDデバイスファイル(/dev/md0): "
read raiddev
printf "RAIDレベル: "
read level
printf "デバイス数: "
read devnum
printf "スペアデバイス数: "
read spare

case $spare in
0) sparenum="" ;;
*) sparenum="-x $spare" ;;
esac

printf "デバイスファイル(例: /dev/sdb1 /dev/sdc1): "
read devfile

sudo mdadm -C $raiddev -l $level -n $devnum $sparenum $devfile
}

misc(){
printf "モード: "
read mode

case $mode in
q) option="-Q" ;;
d) option="-D" ;;
stop) option="--stop" ;;
allstop) option="--stop --scan" ;;
help) echo -e "q RAIDアレイの情報\nd RAIDアレイの詳細情報\nstop 選択したRAIDアレイを停止\nallstop 全てのRAIDアレイを停止";misc ;;
*) echo -e "q RAIDアレイの情報\nd RAIDアレイの詳細情報\nstop 選択したRAIDアレイを停止\nallstop 全てのRAIDアレイを停止";misc ;;
esac

printf "RAIDデバイス: "
read raiddev

dev(){
printf "デバイス: "
read devfile
}

case $option in
--stop) dev ;;
*) sudo mdadm --misc $raiddev $option;exit ;;
esac

sudo mdadm --misc $raiddev $option $devfile
}

manage(){
printf "モード: "
read mode

case $mode in
add) option="-a" ;;
remove) option="-r" ;;
fail) option="-f" ;;
run) option="-R" ;;
stop) option="-S" ;;
readonly) option="-o" ;;
readwrite) option="-w" ;;
help) echo -e "add アレイにデバイスを追加\nremove アレイからデバイスを除外\nfail 不良フラグを付ける\nrun\nstop アレイを非アクティブにして全リソースをリリース\nreadonly 読み込みのみ\readwrite 読み書き許可\n";manage ;;
*) echo -e "add アレイにデバイスを追加\nremove アレイからデバイスを除外\nfail 不良フラグを付ける\nrun\nstop アレイを非アクティブにして全リソースをリリース\nreadonly 読み込みのみ\readwrite 読み書き許可\n";manage ;;
esac


printf "RAIDデバイス: "
read raiddev

dev(){
printf "デバイス: "
read devfile
}

case $option in
-a) dev ;;
-r) dev ;;
-f) dev ;;
-R) dev ;;
-S) dev ;;
*) sudo mdadm --manage $raiddev $option;exit ;;
esac

sudo mdadm --manage $raiddev $option $devfile
}

case $1 in
--create) create ;;
--misc ) misc ;;
--manage) manage ;;
--help ) echo "usage: $0 --create|--misc|--manage" ;;
*) echo "usage: $0 --create|--misc|--manage" ;;
esac
さっき適当に書いただけだからcreate()以外は正常に動くかどうか分からない

USBメモリ達


まず、RAID構築前のUSBメモリ達の速度を測ってみた
$ sudo hdparm -tT /dev/sdb /dev/sdc /dev/sdd /dev/sde
/dev/sdb:
Timing cached reads: 1678 MB in 2.00 seconds = 838.95 MB/sec
Timing buffered disk reads: 56 MB in 3.02 seconds = 18.54 MB/sec

/dev/sdc:
Timing cached reads: 1702 MB in 2.00 seconds = 851.42 MB/sec
Timing buffered disk reads: 42 MB in 3.10 seconds = 13.56 MB/sec

/dev/sdd:
Timing cached reads: 1708 MB in 2.00 seconds = 853.98 MB/sec
Timing buffered disk reads: 70 MB in 3.09 seconds = 22.63 MB/sec

/dev/sde:
Timing cached reads: 1778 MB in 2.00 seconds = 888.85 MB/sec
Timing buffered disk reads: 64 MB in 3.09 seconds = 20.74 MB/sec

どこにでもある普通のUSBメモリのスペック


RAIDを組む

↑のシェルスクリプトが実行したコマンドmdadm -C /dev/md0 -l 0 -n 4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

# mkfs -t ext4 /dev/md0
# mdadm --misc -D /dev/md0

/dev/md0:
Version : 00.90
Creation Time : Thu Dec 9 16:10:29 2010
Raid Level : raid0
Array Size : 21633792 (20.63 GiB 22.15 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Thu Dec 9 16:10:29 2010
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Chunk Size : 64K

UUID : 1573a8a4:0597a3f6:0b419a56:65f7883c (local to host Phantom0)
Events : 0.1

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde

完成

スピードを測ってみる
# hdparm -tT /dev/md0
/dev/md0:
Timing cached reads: 2960 MB in 2.00 seconds = 1479.91 MB/sec
Timing buffered disk reads: 120 MB in 3.02 seconds = 39.80 MB/sec

なんということでしょう
3.5inchHDDのUSB接続時くらいの速度が出ています
USB3.0ならもっと速いのかな

ちなみに↓はUSB接続の外付けHDD(2.5inch,5400rpm)の速度です
/dev/sdb:
Timing cached reads: 3232 MB in 2.00 seconds = 1616.51 MB/sec
Timing buffered disk reads: 92 MB in 3.03 seconds = 30.39 MB/sec




このUSBメモリRAIDなんか組まなくてもめがっさ速い



関連記事

コメント

Windowsには成せぬ技です

| URL | 長倉 怜二#DWa7YIhw

なにこれすごい

| URL | Anonymous#-

:
:
:
:
:
管理人のみ表示を許可