Linux Install Memo

サーバー管理者によるLinux関連ソフトのインストールメモ

Home » □Linux 2.4系で Software-RAID その1

□Linux 2.4系で Software-RAID その1

参考URL:
「mdadm」を使った構築方法
http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html(NEW!!)
http://www.cse.unsw.edu.au/~neilb/source/mdadm/

「raidtools」を使った構築方法
http://www.linux.or.jp/JF/JFdocs/The-Software-RAID-HOWTO.html
http://www-6.ibm.com/jp/developerworks/linux/010427/j_l-raid1.html

どーにも安いハードウェアRAIDでは限界を感じていたので、速度第一で
Software-RAID を組んでみることにした。

巷では5万円も出せば、ミラーリングできたり、最近ではRAID-5にも対応
したハードウェアRAID装置が手に入る。これらの装置はOSから見ると1つ
のドライブとして見えるし手間も掛からないので楽なのだが、安いが故に
パフォーマンスは今ひとつというのが実情。

なので、どちらを取るかということで、やはり馬鹿でかいファイルを扱う
には容量もそうだけど速度が重要、という事でソフトウェアRAID-0で構築
してみる。

ついこの間までは「raidtools」というRAID管理用ソフトを使っていたの
だが、最近になって「mdadm」や「mdctl」というソフトに変わった。

参考URLのIBMのページやメジャーどころでのソフトウェアRAIDの説明で
すらいまだに「raidtools」なのだけど、これはもうどこにもないです。
少なくとも「kernel.org」にはないです。

そんなんで自力で持ってくる。

ちなみにどっちかをインストールすればOK。何が違うかというと「mdctl」
の方は「MULTI-PATH」という奴をサポートしていないらしい。「mdadm」は
限定的ながらサポートしているらしい。何がどう違うかは全く判りません。

tar xvzf package/mdadm-2.6.7.tgz
cd mdadm-2.6.7/
make
make install

tar xvzf package/mdctl-0.6.tgz
cd mdctl-0.6/
make
make install

どちらもこんな感じでインストール。

補足:Plamo-3.x より前では install のある場所が違う

Plamo-3.x より前では install が /usr/bin/install にあることになって
いることがあるので、/bin/install に Makefile を書き換える。

で、インストールすると

/bin/install -D -m 755 mdadm /sbin/mdadm
/bin/install -D -m 644 mdadm.8 /usr/share/man/man8/mdadm.8
/bin/install -D -m 644 md.4 /usr/share/man/man4/md.4
/bin/install -D -m 644 mdadm.conf.5 /usr/share/man/man5/mdadm.conf.5

こんなところにファイルがそれぞれ入るらしい。って、これじゃ man が
まともに見れねーよ、というわけで、



> #INSTALL = /usr/bin/install
> INSTALL = /bin/install
> DESTDIR =
> BINDIR = /sbin
> #MANDIR = /usr/share/man
> MANDIR = /usr/man
> MAN4DIR = $(MANDIR)/man4
> MAN5DIR = $(MANDIR)/man5
> MAN8DIR = $(MANDIR)/man8

と、man 関連のインストール先もちゃんと書き直してインストールしなおし。

補足:Plamo は install コマンドがふるい!

mdadm は install-4.0 以上が必要なので、fileutils-4.0 を入れないとだめ。
上記の install のありかを現在のシステムにあわせて ./configure して
インストール

tar xvzf package/fileutils-4.1.tar.gz
cd fileutils-4.1/
./configure –prefix=/usr
make
make check
make install

http://www.gnu.org/directory/fileutils.html

と思ったら、いつの間にやらパッケージが統合されてしまったらしい。

http://ftp.gnu.org/gnu/coreutils/coreutils-6.12.tar.gz

こちらをインストールしてみる。

tar xvzf package/coreutils-6.12.tar.gz
cd coreutils-6.12/
./configure –prefix=/usr
make
make check
make install
さて本題に戻る。

「raidtools」の時には予め /etc/raidtab 見たいなのを設定しましたが
「mdadm(mdctl)」(以下面倒なので mdadm で話を進める)の場合には、
「/etc/mdadm.conf」というファイルがRAID構築をすると勝手にできる
らしい。(うーん、という事はどないせぇっちゅうんじゃ?)

えー、さてこれからがRAIDの構築です。今回は IBM IC35L080AVVA07-0
(80GB)を2台(hde,hdg)使用してRAIDを構築します。

その前にディスクの速度を測定しておきましょう。「hdparm」でもいいの
ですが、今回はさらに厳密?に Bonnie を使ってみましょう。

http://www.coker.com.au/bonnie++/

まずはパーティションを切る前の「hdparm」での測定結果
> /dev/hde:
> Timing buffered disk reads: 64 MB in 1.40 seconds = 45.71 MB/sec
> /dev/hdg:
> Timing buffered disk reads: 64 MB in 1.40 seconds = 45.71 MB/sec

つづいて「bonnie++」での測定
> ——-Sequential Output——– —Sequential Input– –Random–
> -Per Char- –Block— -Rewrite– -Per Char- –Block— –Seeks—
> Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
> 100 14004 100.1 137903 101.0 112232 99.7 14591 99.9 240333 100.9 12610.1 100.9
> ——-Sequential Output——– —Sequential Input– –Random–
> -Per Char- –Block— -Rewrite– -Per Char- –Block— –Seeks—
> Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
> 100 13995 99.8 137088 100.4 112590 100.1 14615 99.9 240702 101.1 12766.6 102.1

ちなみにこちらは同型HDDの reiserfs のパーティション
> ——-Sequential Output——– —Sequential Input– –Random–
> -Per Char- –Block— -Rewrite– -Per Char- –Block— –Seeks—
> Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
> 100 13910 99.7 136887 100.3 111653 99.2 14526 99.7 240059 98.5 12752.1 98.8

まぁどっちもさしてかわりませんね。

さて、では mdadm で構築です。

mdadm の使い方は man をよーく読んでもらうしかありません。

今回は /dev/hde5 と /dev/hdg5 を使って RAID-0 を作ります。
オプションは -l がRAIDレベル、-n が使うディスク(パーティション)の数、
-C はクリエイト(新規作成)です。
ここでは -B(構築)をしていませんが、なにせRAID-0なので、必要ないです。
やっても怒られるだけです。RAID-1以上の場合には必要だと思いますが。

では作ってみましょ。

> # /sbin/mdadm -C /dev/md0 -l0 -n2 /dev/hd[eg]
> mdadm: /dev/hde5 appears to contain an ext2fs file system
> size=80418176K mtime=Sat Nov 16 21:59:26 2002
> mdadm: /dev/hdg5 appears to contain an ext2fs file system
> size=80418176K mtime=Sat Nov 16 22:02:05 2002
> Continue creating array?

と聞かれるので y とすると

> mdadm: array /dev/md0 started.

といわれて終わります。簡単ですね。

さて、これでRAIDデバイスが出来たのでマウントすればいいのかな?
とやってみたら、

> # mount /dev/md0 /mnt
> # df
> Filesystem 1k-blocks Used Available Use% Mounted on
> /dev/hda1??????????? 1015704? 323028?? 640068???? 34% /
> /dev/hda5??????????? 2104408?? 86528? 2017880????? 5% /var
> /dev/hda6??????????? 4200828 1940744? 2260084???? 47% /usr
> /dev/hda7??????????? 72916768 61516700? 11400068???? 85% /samba
> /dev/md0???????????? 79155480? 32828? 75101744????? 1% /mnt

といわれてしまいました。何ですでにパーティションが…あ、これは
もともと「Bonnie」をやるときに仮に作ったパーティションの情報の
ままですね。

というわけで、/sbin/fdisk でパーティション情報を一旦捨ててから、
/sbin/mkfs で ext3 でフォーマットです。それにしても領域がでかい!
というわけで、-c は面倒なのでつけません。(前にやってたから省略)

> # /sbin/mkfs -t ext3 /dev/md0
> mke2fs 1.27 (8-Mar-2002)
> Filesystem label=
> OS type: Linux
> Block size=4096 (log=2)
> Fragment size=4096 (log=2)
> 20119552 inodes, 40209056 blocks
> 2010452 blocks (5.00%) reserved for the super user
> First data block=0
> 1228 block groups
> 32768 blocks per group, 32768 fragments per group
> 16384 inodes per group
> Superblock backups stored on blocks:
> 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
> 4096000, 7962624, 11239424, 20480000, 23887872
>
> Writing inode tables: done
> Creating journal (8192 blocks): done
> Writing superblocks and filesystem accounting information: done
>
> This filesystem will be automatically checked every 28 mounts or
> 180 days, whichever comes first. Use tune2fs -c or -i to override.
> #

と終わりましたので、tune2fs でディスクのfsckの間隔をちょっと短めに
設定しなおして起きます。(だって怖いし!)

> # /sbin/tune2fs -i 7d -c 10 /dev/md0
> tune2fs 1.27 (8-Mar-2002)
> Setting maximal mount count to 16
> Setting interval between check 1209600 seconds

さーて、これでマウントしたら出来上がり。

> # mount -t ext3 /dev/md0 /mnt
> # df
> Filesystem 1k-blocks Used Available Use% Mounted on
> /dev/hda1??????????? 1015704? 323028?? 640068???? 34% /
> /dev/hda5??????????? 2104408?? 86528? 2017880????? 5% /var
> /dev/hda6??????????? 4200828 1940744? 2260084???? 47% /usr
> /dev/hda7??????????? 72916768 61516700? 11400068???? 85% /samba
> /dev/md0???????????? 158310796 32828? 150236160???? 1% /mnt
> #

うわー、でかい領域が出来た。ぶっ飛んだらどうしよう? (^^;

まずは「hdparm」での測定結果
> /dev/md0:
> Timing buffered disk reads: 64 MB in 0.83 seconds = 77.11 MB/sec

はや!

ちなみに「Bonnie」での測定結果は下記のとおりでした。
> ——-Sequential Output——– —Sequential Input– –Random–
> -Per Char- –Block— -Rewrite– -Per Char- –Block— –Seeks—
> Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
> 100 12739 97.9 93821 99.0 98763 96.4 14061 98.6 240270 98.5 12320.3 98.6

ちょっと遅くなったかな、という程度ですね。

ちなみに下のようにすると、RAIDの状態を見ることが出来ます。

> # /sbin/mdadm –query –detail –scan /dev/md0
> /dev/md0:
>???????? Version : 00.90.00
>?? Creation Time : Sat Nov 16 22:12:27 2002
>????? Raid Level : raid0
>????? Array Size : 160836224 (153.39 GiB 164.74 GB)
>??? Raid Devices : 2
>?? Total Devices : 2
> Preferred Minor : 0
>???? Persistence : Superblock is persistent
>
>???? Update Time : Sat Nov 16 22:12:27 2002
>?????????? State : dirty, no-errors
>? Active Devices : 2
> Working Devices : 2
>? Failed Devices : 0
>?? Spare Devices : 0
>
>????? Chunk Size : 64K
>
>??????????? UUID : a0bae35c:92b4eb69:cb7d3af2:5e0fdc4a
>????????? Events : 0.11
>
> Number Major Minor RaidDevice State
>??? 0??? 33????? 5????? 0????? active sync?? /dev/hde5
>??? 1??? 34????? 5????? 1????? active sync?? /dev/hdg5

さて、これを起動時にマウントして… と思ったら、マウントできません。
何でかなーと思ったら、その都度 mdadm でRAIDを認識させてあげないと
いけません。なので、/etc/rc.d/rc.S に追記します。


> # enable SoftwareRAID
> /sbin/mdadm -As

と、こんな感じでマウントする前にRAIDをスタートさせましょう。

これで、あとは /etc/fstab に下記のように書いておけば

> /dev/md0 /samba ext3 defaults 1 1

ちゃんとマウントしてくれました。

そうそう /etc/mdadm.conf に下記のように書いておかないと、リブート時に
認識しません。

> DEVICE /dev/hd[eg]5
> ARRAY /dev/md0 level=raid0 num-devices=2 UUID=a0bae35c:92b4eb69:cb7d3af2:5e0fdc4a

以上。

Name of author

Name: admin

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です