
体調が悪くてあまり難しいことを考えられない時には、こういう単純作業にもってこい。というわけで、 Ubuntu 9.10 とドライブドアで、型落ちの MacBook Pro 2,2 を 8TB RAID-5 Serverに仕立てたので備忘録。
理由
2TBのHDDが15kで売ってたらいつの魔に買っていたので。
ここではなりゆき上お古の MacBook Pro 2,2 を使っているが、port multiplier 対応の e-SATA 付きの Ubuntu BOX ならなんでも使えるはず。

材料
- HDS722020ALA330 x 6
- Amazonでは2万円ちょっと超えてますが、私はビックカメラで買って1万5000円台。1本は予備
- EX35ES5 x 1
- これに HDS722020ALA330 を詰め込みます
- 34REX-EX30S x 1
- 現時点において、Mac Pro以外のMacにeSataを持たせる唯一の手段が ExpressCard/34 経由。そのこともあってかちょっと高め。でも1万円しない
OSの選択 - Ubuntuな理由
- Mac OS X
- 残念ながら、Software RAID 5 がない。 RAID 0/1/10 であればこれが一番楽だと思う
- FreeBSD
- 実は一番使いたかったのがこれ。本当は RAIDZ にしたかったのだけど、ExpressCard を指すと MacBook 内蔵HDDが ad5 から ad9 になり、そしてドライブドア(ベタな名前だなあ)の HDD が ad6 から ad10 と認識され、内蔵HDD が見えなくなるというのでは実用にはならない。
- 一応 PXE Boot でなんとかと動くようにもしてみたが、ファイルサーバーのために NetBoot サーバーが必要なんてわけわかんないし。
- Ubuntu
- mdadm が RAID 5 対応している。 Kernel の remake は不要
- Windows
- 論外
というわけであっさり Ubuntu に決定。余談であるが、蓋を閉じたまま運用できるのもうれしい。OS Xでは外部ディスプレイとキーボードにつないでない限り問答無用でsleepしてしまうので。
レシピ
- ふつうに Ubuntu-9.10-desktop-amd64 をインストール
いちおうdual bootにしてみたが、シングルでもよかったかも。
- mdadmを以下のとおりインストール
sudo apt-get install mdadm
- RAID 5を構築
sudo mdadm --create --verbose --assume-clean /dev/md0 \ --level=5 --raid-devices=5 \ /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
よほどのことがない限り、
--assume-clean
を指定すること。さもないと必要もないのにRAIDを再構築しようとしやがります。When creating a RAID5 array, mdadm will automatically create a degraded array with an extra spare drive. This is because building the spare into a degraded array is in general faster than resyncing the parity on a non-degraded, but not clean, array. This feature can be overridden with the --force option.
なんでこんな仕様になっているか、謎。そして
--force
も間違い。これまたresyncしようとしやがります。 - 以下のようにして様子を確認
sudo mdadm --detail /dev/md0
こんな感じになっていればおK
/dev/md0: Version : 00.90 Creation Time : Thu Jan 7 01:11:48 2010 Raid Level : raid5 Array Size : 7814057984 (7452.07 GiB 8001.60 GB) Used Dev Size : 1953514496 (1863.02 GiB 2000.40 GB) Raid Devices : 5 Total Devices : 5 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Sun Jan 10 01:44:50 2010 State : clean Active Devices : 5 Working Devices : 5 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K UUID : deadbeef... Events : 0.213283 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 4 8 80 4 active sync /dev/sdf
- 設定ファイルの作成
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
とした後、適当に編集。metadata=の下りは削除した方がよい。私は以下のようにした。
DEVICE /dev/sd[bcdef] ARRAY /dev/md0 level=raid5 num-devices=5 UUID=deadbeef...
- newfs
newfs -t ext4 /dev/md4
ZFSと違って、こちらは newfs が必要。むちゃくちゃ時間がかかる。10分以上
ext4 で本当によかったのかな、ま、いっか。
- テスト
- /etc/fstabに登録
mkdir /drivedoor mount -t ext4 /dev/md0 /drivedoor
/dev/md0 /drivedoor ext4 defaults 0 0
性能
すばらしい。Software RAID とは思えない。
- Write
dankogai@mbp22-ubuntu:~$ dd if=/dev/zero of=/drivedoor/8tb/4gb.img bs=1M count=4096 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB) copied, 43.5056 s, 98.7 MB/s
- Read
dankogai@mbp22-ubuntu:~$ dd if=/drivedoor/8tb/4gb.img of=/dev/null bs=1M 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB) copied, 38.4559 s, 112 MB/s
NASとして使う場合、これ以上の性能は望んでも仕方がない。なにせGbEが真っ黒になるのだから。
ファイル共有
いろいろ試してみたのだが、結局 netatalk で AFP に落ち着いた。
- SMB
- Ubuntu、というか Gnome ではこれが標準のようで、GUIで設定できたりもするのだが、いかんせん smbd が重い。これがCPUを食いつぶす。
- SFTP
openssh-server
さえ入れておけばSFTPが使えるので実は一番楽ではあるが、OS XはGUI未対応(sftpコマンドは標準である)。逆に Ubuntu から OS X のファイルにアクセスするには、これが Protocol of Choice- AFP
- 軽い。速い。ファイル名問題も皆無
というわけで netatalk を
apt-get install netatalk
した後、AppleTalkを殺す。欲しいのはAFPというファイル共有プロトコルであって、AppleTalkというネットワークプロトコルではないのだし。
--- /etc/default/netatalk.dist 2010-01-09 09:19:29.957065966 +0900 +++ /etc/default/netatalk 2010-01-09 09:20:07.117079593 +0900 @@ -29,8 +29,8 @@ AFPD_GUEST=nobody # Set which daemons to run (papd is dependent upon atalkd): -ATALKD_RUN=yes -PAPD_RUN=yes +#ATALKD_RUN=yes +#PAPD_RUN=yes CNID_METAD_RUN=no AFPD_RUN=yes TIMELORD_RUN=no
としてから、
sudo sh /etc/init.d/netatalk restart
で、性能だが、Ubuntuでローカルに試したときとほとんど同じ性能が出ている。
- Write
% dd if=/dev/zero of=/Volumes/8tb@mbp22-ubuntu/4gb.img bs=1048576 count=4096 4096+0 records in 4096+0 records out 4294967296 bytes transferred in 54.775344 secs (78410595 bytes/sec)
- Read
% dd if=/Volumes/8tb@mbp22-ubuntu/4gb.img of=/dev/null bs=1048576 count=4096 4096+0 records in 4096+0 records out 4294967296 bytes transferred in 49.609720 secs (86575117 bytes/sec)
ちなみに iMac 27インチの内蔵HDD はローカルでこう。
- Write
% dd if=/dev/zero of=4gb.img bs=1048576 count=4096 4096+0 records in 4096+0 records out 4294967296 bytes transferred in 39.975188 secs (107440828 bytes/sec)
- Read
% dd if=4gb.img of=/dev/null bs=1048576 4096+0 records in 4096+0 records out 4294967296 bytes transferred in 37.424465 secs (114763626 bytes/sec)
ほとんど変わらない。そして MacBook の内蔵HDDより確実に高速。
まとめ
10万円ちょっとで 8TB の RAID5 Server を持てるとは、おそろしい時代になったものである。しかしふと自分のファイルを見ていると、 iPhone の母艦であり、 iPhoto のマスターでもある私の MacBook に入っているファイルはせいぜい 40GB ほど。「なくしてはならない」データはこれくらいしかない。後は仮想マシンの仮想ディスクだの、過去のマシンたちのフルバックアップだの、なくしたらなくしたで何とかなるものばかり。
そして、パソコンの性能はすでに「使いこなす」という点では型落ちの MacBook Pro、すなわち3年以上前から飽和しているといってもいい。NICはGbEで足りてしまう、というかUSB 2.0よりずっと高速で、それすら「火を噴く」のはバックアップの時ぐらいで、ネットサーフィンなら1080pの動画を見る時ですら100Mbpsでおつりがどっさり来る。そして4GiBというのがCPUの32/64bit境界であるように、2TiB というのは 512 Byte/Sector で 32bit Addressing する場合の限界でもある(29 * 232 = 241 = 2 * (210)4)。
そう考えると、単独容量 2TB の時代というのは、相当長く続くのではないだろうか。2.5インチまで2TBになっても、3.5インチが容量を増やすのではなく、むしろ3.5インチがフェーズアウトしていくのかも知れない。それより容量が欲しい人はRAIDでも組め、と。
となると、RAIDを組むという作業が「普通化」する可能性はかなりあるかも知れない。そんな時こんな記事が役に立ってくれたら幸い、という落ちがついたところで本entryのまとめとしましょう。
Dan the Man with Too Many Platforms to Babysit
追記:2010.07.27
http://ht.ly/2gEvG の鯖を #ubuntu 10.04 LTS にうpぐれーどだん。留意点二カ所。最初の再起動で mdadm が停止状態→一度だけ手動で mdadm --runする;netatalkがへくる→.AppleDBと.AppleDesktopを削除
これはそうかもしれんなー 2.5HDDって、昔はもっと高かったいうか
眼中になかったいうか、3.5と差あった思うのですが。
アルミ等の素材は相変わらず高いようだし。
モーターはネオジムとか使ってんだっけ? 小さい方が原価安いからなー。
究極は、半導体でのHDDと、どっちが安いのかな?
>>めっきり更新がなくなったような気がするけれども
コメントは、12/11のOpenID以降は、減ってるかなー
書籍は最近良い本ないかなー。昨年買った本が、もう時代に合ってない。
世の変遷が速い。予想超えた速度で悪化してるかな?
企画立て、書いて出版でしょ? 出版する頃には世間が変化している