[Linux] USB接続のHDDによるソフトウェアRAID
USB接続のHDDでRAIDを組んだので備忘録です。ハードウェア構成はこんな感じです。
すでにインストールされているFedora Core 4に対してUSBで外付けHDDを2台追加してソフトウェアRAIDでミラーリングしましょうって実験です。
参考サイト: http://www.asahi-net.or.jp/~qi3m-tngw/Linux/KnowHow/HardDisk/HardDisk.htm
今回は/dev/sdaと/dev/sdbとして認識された2台のHDDにそれぞれ1パーティションづつ作成してRAID 1でミラーリング構成とし、/homeにマウントしてみました。
各HDDにfdiskでパーティションを作成します。
[root@localhost ~]# fdisk /dev/sda このディスクのシリンダ数は 4982 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) コマンド (m でヘルプ): d Selected partition 1 コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 1 最初 シリンダ (1-4982, default 1): Using default value 1 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-4982, default 4982): Using default value 4982 コマンド (m でヘルプ): t Selected partition 1 16進数コード (L コマンドでコードリスト表示): L 0 空 1e Hidden W95 FAT1 80 古い Minix be Solaris boot 1 FAT12 24 NEC DOS 81 Minix / 古い Li bf Solaris 2 XENIX root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 84 OS/2 隠し C: ド c6 DRDOS/sec (FAT- 5 拡張領域 41 PPC PReP Boot 85 Linux 拡張領域 c7 Syrinx 6 FAT16 42 SFS 86 NTFS ボリューム da 非 FS データ 7 HPFS/NTFS 4d QNX4.x 87 NTFS ボリューム db CP/M / CTOS / . 8 AIX 4e QNX4.x 2nd part 88 Linux plaintext de Dell ユーティリ 9 AIX ブート可能 4f QNX4.x 3rd part 8e Linux LVM df BootIt a OS/2 ブートマネ 50 OnTrack DM 93 Amoeba e1 DOS access b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad ハ eb BeOS fs f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT 10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 11 隠し FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC 12 Compaq 診断 5c Priam Edisk a8 Darwin UFS f1 SpeedStor 14 隠し FAT16 <32M 61 SpeedStor a9 NetBSD f4 SpeedStor 16 隠し FAT16 63 GNU HURD または ab Darwin boot f2 DOS セカンダリ 17 隠し HPFS/NTFS 64 Novell Netware b7 BSDI fs fd Linux raid 自動 18 AST SmartSleep 65 Novell Netware b8 BSDI スワップ fe LANstep 1b Hidden W95 FAT3 70 DiskSecure Mult bb 隠し Boot Wizar ff BBT 1c Hidden W95 FAT3 75 PC/IX 16進数コード (L コマンドでコードリスト表示): fd 領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました コマンド (m でヘルプ): w 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。
注意点はパーティションタイプにfd Linux raid 自動を選択することです。
同様に/dev/sdbもfdiskします。
RAIDパーティションとして/dev/sda1と/dev/sdb1のRAID 1で構成された/dev/md0を作成します。
[root@localhost ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 mdadm: array /dev/md0 started.
これでRAIDパーティションの作成がバックエンドで開始されます。
パーティションの作成が終了するまで待つ必要があります。確認は
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
40017792 blocks [2/2] [UU]
[===>.................] resync = 16.7% (6694016/40017792) finish=42.5min speed=13064K/sec
unused devices: <none>
もしくは
[root@localhost ~]# mdadm --misc --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Thu Jun 30 14:05:47 2005
Raid Level : raid1
Array Size : 40017792 (38.16 GiB 40.98 GB)
Device Size : 40017792 (38.16 GiB 40.98 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Thu Jun 30 14:05:47 2005
State : clean, resyncing
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Rebuild Status : 0% complete
UUID : 11d20617:9b0715c9:0c03f699:7052efdc
Events : 0.43
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
/dev/md0のパーティション作成が終わったらフォーマットします。
[root@pdc ~]# mkfs.ext3 -c /dev/md0
mke2fs 1.37 (21-Mar-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
5003712 inodes, 10004448 blocks
500222 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=12582912
306 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Checking for bad blocks (read-only test): done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
とりあえずマウントしてみます。
[root@localhost ~]# mkdir /mnt/raid [root@localhost ~]# mount -t ext3 /dev/md0 /mnt/raid [root@localhost ~]# ls -la /mnt/raid [root@localhost ~]# umount /mnt/raid 合計 28 drwxr-xr-x 3 root root 4096 6月 30 15:29 . drwxr-xr-x 3 root root 4096 6月 30 15:33 .. drwx------ 2 root root 16384 6月 30 15:29 lost+found
設定ファイルを作成します。このファイルはmdadm --asemble --scanコマンドが利用します。
[root@localhost ~]# echo 'DEVICE partitions' > /etc/mdadm.conf [root@localhost ~]# mdadm --detail --scan >> /etc/mdadm.conf
このままだとdevices=以降が折り返しになってしまっているので整形します。
[root@localhost ~]# vi /etc/mdadm.conf DEVICE partitions ARRAY /dev/md0 level=raid1 num-devices=2 UUID=11d20617:9b0715c9:0c03f699:7052efdc devices=/dev/sda1,/dev/sdb1
次に起動時に/dev/md0を/homeにマウントしたいところですがUSBのRAID場合、USB HDDの認識より先にRAIDの準備がされてしまうために/etc/fstabに書いてもエラーで起動が止まってしまいます。
起動するたびにコンソールからマウントするのは忍びないので以下のコマンドを/etc/rc.localに書いておきます。
[root@localhost ~]# vi /etc/rc.local mdadm --assemble --scan mount -t ext3 /dev/md0 /home
rc.localは起動時の最後に実行されるのでこれでOKかと思われます。
再起動したらちゃんとマウントされてるかチェックします。
[root@localhost ~]# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
18727372 1371896 16388820 8% /
/dev/hda1 101086 9951 85916 11% /boot
/dev/shm 123852 0 123852 0% /dev/shm
/dev/md0 39389688 81984 37306816 1% /home
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Thu Jun 30 14:05:47 2005
Raid Level : raid1
Array Size : 40017792 (38.16 GiB 40.98 GB)
Device Size : 40017792 (38.16 GiB 40.98 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Thu Jun 30 16:39:54 2005
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 11d20617:9b0715c9:0c03f699:7052efdc
Events : 0.76
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
ちなみにパフォーマンスは
[root@pdc ~]# hdparm -ft /dev/md0 /dev/md0: Timing buffered disk reads: 86 MB in 3.07 seconds = 28.04 MB/sec
こんなもんですかね。