手元には、IDE の分岐ケーブルがあるし、
FUJITSU M1636TAU という 1.2GB の HDD が2つあるので、
これを用いて /mnt をミラーリングすることにする。
以下の作業では、 JF の The Software-RAID HOWTOを参考にした
hdb のパーティションを切り、フォーマット、 動いている(汗)hda のハックキットをコピーする
[root@hackkit /root]# fdisk /dev/hdb このディスクのシリンダ数は 2491 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) コマンド (m でヘルプ): p ディスク /dev/hdb: ヘッド 16, セクタ 63, シリンダ 2491 ユニット = シリンダ数 of 1008 * 512 バイト デバイス ブート 始点 終点 ブロック ID システム コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 1 最初 シリンダ (1-2491, 初期値 1): 初期値 1 を使います 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-2491, 初期値 2491): +600M コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 2 最初 シリンダ (1221-2491, 初期値 1221): 初期値 1221 を使います 終点 シリンダ または +サイズ または +サイズM または +サイズK (1221-2491, 初期値 2491): +128M コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 3 最初 シリンダ (1482-2491, 初期値 1482): 初期値 1482 を使います 終点 シリンダ または +サイズ または +サイズM または +サイズK (1482-2491, 初期値 2491): 初期値 2491 を使います コマンド (m でヘルプ): p ディスク /dev/hdb: ヘッド 16, セクタ 63, シリンダ 2491 ユニット = シリンダ数 of 1008 * 512 バイト デバイス ブート 始点 終点 ブロック ID システム /dev/hdb1 1 1220 614848+ 83 Linux /dev/hdb2 1221 1481 131544 83 Linux /dev/hdb3 1482 2491 509040 83 Linux コマンド (m でヘルプ): t 領域番号 (1-4): 2 16進数コード (L コマンドでコードリスト表示): 82 領域のシステムタイプを 2 から 82 (Linux スワップ) に変更しました コマンド (m でヘルプ): p ディスク /dev/hdb: ヘッド 16, セクタ 63, シリンダ 2491 ユニット = シリンダ数 of 1008 * 512 バイト デバイス ブート 始点 終点 ブロック ID システム /dev/hdb1 1 1220 614848+ 83 Linux /dev/hdb2 1221 1481 131544 82 Linux スワップ /dev/hdb3 1482 2491 509040 83 Linux コマンド (m でヘルプ): w 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。 [root@hackkit /root]#
[root@hackkit /root]# mkfs -j /dev/hdb1
mke2fs 1.29 (24-Sep-2002)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
76960 inodes, 153712 blocks
7685 blocks (5.00%) reserved for the super user
First data block=0
5 block groups
32768 blocks per group, 32768 fragments per group
15392 inodes per group
Superblock backups stored on blocks:
        32768, 98304
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@hackkit /root]# mkfs -j /dev/hdb3
mke2fs 1.29 (24-Sep-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
127512 inodes, 509040 blocks
25452 blocks (5.00%) reserved for the super user
First data block=1
63 block groups
8192 blocks per group, 8192 fragments per group
2024 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@hackkit /root]# mkswap /dev/hdb2
Setting up swapspace version 1, size = 131540K
[root@hackkit /root]#
[root@hackkit /root]# mkdir /tmp/root [root@hackkit /root]# mount /dev/hdb1 /tmp/root [root@hackkit /root]# mkdir /tmp/root/mnt [root@hackkit /root]# mount /dev/hdb3 /tmp/root/mnt
[root@hackkit /root]# cd / [root@hackkit /]# ls bin boot dev etc home initrd lib lost+found mnt opt proc root sbin tmp usr var www [root@hackkit /]# tar cf - bin boot dev etc home initrd lib nt opt root sbin usr var www |(cd /tmp/root; tar xvf -) [root@hackkit /]# mkdir /tmp/root/proc [root@hackkit /]# mkdir /tmp/root/tmp [root@hackkit /]# chmod 1777 /tmp/root/tmp
1つ目のディスクとまったく同じようにパーティションを切り、 フォーマットする。
(略)
* * Multi-device support (RAID and LVM) * Multiple devices driver support (RAID and LVM) (CONFIG_MD) [N/y/?] y RAID support (CONFIG_BLK_DEV_MD) [N/y/m/?] m Linear (append) mode (CONFIG_MD_LINEAR) [N/m/?] n RAID-0 (striping) mode (CONFIG_MD_RAID0) [N/m/?] n RAID-1 (mirroring) mode (CONFIG_MD_RAID1) [N/m/?] m RAID-4/RAID-5 mode (CONFIG_MD_RAID5) [N/m/?] n Multipath I/O support (CONFIG_MD_MULTIPATH) [N/m/?] n Logical volume manager (LVM) support (CONFIG_BLK_DEV_LVM) [N/y/m/?]とする。
make dep
make modules
make modules_install
実行
[root@hackkit /root]# depmod -a [root@hackkit /root]# insmod md Using /lib/modules/2.4.17_kuro-box/kernel/drivers/md/md.o [root@hackkit /root]# insmod raid1 Using /lib/modules/2.4.17_kuro-box/kernel/drivers/md/raid1.o [root@hackkit /root]# lsmod Module Size Used by Not tainted raid1 16372 0 (unused) md 53740 0 [raid1]
[root@hackkit /root]# apt-get install raidtools パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下のパッケージが新たにインストールされます: raidtools 0 個のアップグレードパッケージ, 1 個の新規パッケージ, 0 個の削除/リプレースパッケージ, 1 個の保留パッケージがあります。 取得パッケージ: 230kB のアーカイブを取得します。インストール後は 495kB が使用されます。 取得:1 http://www.t.ring.gr.jp 2.6/ppc/plus raidtools 1.00.2-1.3vl3 [230kB] 取得完了: 230kB を 0s (235kB/秒) RPM コマンドを実行しています (-U)... raidtools ################################################## [root@hackkit /root]#
[root@hackkit /root]# cat /etc/raidtab
raiddev /dev/md0
        raid-level      1
        nr-raid-disks   2
        nr-spare-disks  0
        chunk-size      4
        persistent-superblock   1
        device  /dev/sda3
        raid-disk       0
        device  /dev/sdb3
        raid-disk       1
[root@hackkit /root]#
[root@hackkit /root]# umount /mnt
[root@hackkit /root]# mkraid /dev/md0 handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda3, 509040kB, raid superblock at 508928kB /dev/hda3 appears to contain an ext2 filesystem -- use -f to override mkraid: aborted. (In addition to the above messages, see the syslog and /proc/mdstat as well for potential clues.) [root@hackkit /root]#といわれたので、-R オプションを付加して再実行
[root@hackkit /root]# mkraid -R /dev/md0 DESTROYING the contents of /dev/md0 in 5 seconds, Ctrl-C if unsure! handling MD device /dev/md0 analyzing super-blomd: md0: raid array is not clean -- starting background reconstruction ck disk 0: /dev/hda3, 509040kB, raid superblock at 508928kB disk 1: /dev/hdb3, 506016kB, raid superblock at 505920kB raid1: raid set md0 not clean; reconstructing mirrors [root@hackkit /root]#あれ?何で、サイズが違うの?まあいいか。
[root@hackkit /root]# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdb3[1] hda3[0]
      505920 blocks [2/2] [UU]
      [======>..............]  resync = 34.7% (176824/505920) finish=2.2min speed=2462K/sec
unused devices: 
[root@hackkit /root]#
 
同期している様子が見える。
[root@hackkit /root]# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdb3[1] hda3[0]
      505920 blocks [2/2] [UU]
      [================>....]  resync = 82.0% (415936/505920) finish=0.6min speed=2299K/sec
unused devices: 
[root@hackkit /root]#
 
やってる、やってる
[root@hackkit /root]# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdb3[1] hda3[0]
      505920 blocks [2/2] [UU]
unused devices: 
 
完了
[root@hackkit /root]# mkfs -j /dev/md0
mke2fs 1.29 (24-Sep-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
126480 inodes, 505920 blocks
25296 blocks (5.00%) reserved for the super user
First data block=1
62 block groups
8192 blocks per group, 8192 fragments per group
2040 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
/dev/hda3 /mnt ext3 defaults,noatime 0 0を
/dev/md0 /mnt ext3 defaults,noatime 0 0に書き換え、
[root@hackkit /root]# mount /mnt [root@hackkit /root]# df ファイルシステム 1k-ブロック 使用中 空き 使用% マウント場所 /dev/hda1 605164 399532 174892 70% / /dev/md0 492947 8239 459256 2% /mntOK
| ← | ハックの記録 | → ramdisk.image のシュリンク(2) |