[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
こんなもんですかね。