CentOS

HDD2本追加してRAID1構築

VMWare上に用意したCentOS5.2の仮想マシンに、IDEディスク2本を追加して、それをミラーリングさせてみた。

参考にした記事

HDDを追加してブートする。

最初から搭載しているのはSCSIで、追加2本はIDE。

dmesgを確認すると、hda, hdbとなっているようだ。

Probing IDE interface ide0...
hda: VMware Virtual IDE Hard Drive, ATA DISK drive
hdb: VMware Virtual IDE Hard Drive, ATA DISK drive

続いてfdisk

# fdisk /dev/hda
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更はメモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。

このディスクのシリンダ数は 2080 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
  (例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって正常になります
コマンド (m でヘルプ): n
コマンドアクション
  e   拡張
  p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-2080, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-2080, default 2080):
Using default value 2080

コマンド (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 / 古い  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 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  隠し FAT16    63  GNU HURD また ab  Darwin boot     f2  DOS セカン
17  隠し HPFS/NTF 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 Wiz ff  BBT
1c  Hidden W95 FAT3 75  PC/IX
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
#

続いて、2本目のhdbの操作。

# fdisk /dev/hdb
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。

このディスクのシリンダ数は 2080 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
 p
領域番号 (1-4): 1
最初 シリンダ (1-2080, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-2080, default 2080):
Using default value 2080

コマンド (m でヘルプ): t
Selected partition 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
#

ディスクの状態を確認してみる。

# fdisk -l /dev/hda

Disk /dev/hda: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders
Units = シリンダ数 of 1008 * 512 = 516096 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1               1        2080     1048288+  fd  Linux raid 自動検出
[root@centmini ~]# fdisk -l /dev/hdb

Disk /dev/hdb: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders
Units = シリンダ数 of 1008 * 512 = 516096 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hdb1               1        2080     1048288+  fd  Linux raid 自動検出
#

次に、2本のディスクでRAID-1を構成する。

# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/hda /dev/hdb
mdadm: array /dev/md0 started.

えらい簡単やな。

作成したミラーリングディスクをフォーマット。

# mkfs -j /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
131072 inodes, 262128 blocks
13106 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
       32768, 98304, 163840, 229376

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

状態確認。

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdb[1] hda[0]
     1048512 blocks [2/2] [UU]

unused devices: <none>

試しにマウントしてみる。

# mkdir /www
# mount /dev/md0 /www

/etc/mdadm.confを作成

DEVICE /dev/hd[ab]
ARRAY /dev/md0 devices=/dev/hda,/dev/hdb

/etc/fstabに定義を追加

/dev/md0                /www                    ext3    defaults        1 1

再起動して、/dev/md0が/wwwにマウントされていればOK。

これで構築は終わり。

本当はこの後で、hdaかhdbどちらかをオンライン中に取り外すと言うテストをしてみたかったんだが、VMWareではオンライン中にHDDを引っこ抜くと言う技はできないようだ。

仕方ないので、いったんシャットダウンしてから、hdbを取り外して、ブートさせてみた。

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hda[0]
     1048512 blocks [2/1] [U_]

unused devices: <none>

# df -k
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                      6983168   1705200   4917520  26% /
/dev/sda1               101086     17836     78031  19% /boot
tmpfs                   259584         0    259584   0% /dev/shm
/dev/md0               1032024     17696    961904   2% /www

1本ディスクがない状態で、でも/wwwはマウントされてて、書き込みもできた。

次に、シャットダウンさせて、hdbを再度くっつけてからブートさせてみた。

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hda[0]
     1048512 blocks [2/1] [U_]

unused devices: <none>
# fdisk -l /dev/hdb

Disk /dev/hdb: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders
Units = シリンダ数 of 1008 * 512 = 516096 bytes

ディスク /dev/hdb は正常な領域テーブルを含んでいません

復帰しない。

ディスクの状態もおかしい。

再度RAIDパーティションをhdbに作る。

# fdisk /dev/hdb
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更はメモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
このディスクのシリンダ数は 2080 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
  (例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): n
コマンドアクション
  e   拡張
  p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-2080, default 1):
Using default value 1 
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-2080, default 2080):
Using default value 2080

コマンド (m でヘルプ): t
Selected partition 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

この状態でリブート。

しかし、今度はエラーで停止…

mdadm: /dev/hdb has no superblock - assembly aborted
Setting up Logical Volume Management: 2 logical volume(s) in volume group "VolGroup00" now active

Checking filesystems
/dev/VolGroup00/LogVol00: clean, 61928/1802240 files, 482738/1802240 blocks
fsck.ext3: Ivalid argument while trying to open /dev/md0
/dev/md0:
The superblock could not be read or does not descrive a correct ext2
filesystem. If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>
/boot: clean, 39/26104 files, 21138/104388 blocks
                                                  [FAILED]
*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
*** Warning -- SELinux is active
*** Disabling security enforcement for system recovery
*** Run 'setenforce 1' to reenable.
Give root password for maintenance
(or type Control-D to continue):

仕方なく、追加HDD2本をはずしてリブートしても変わらず。

わかんなくなったので、VMWareのスナップショット機能を利用して、元に戻した。敗退。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS