用件
- Ubuntu 6.06 LTS (kernel は raid 対応らしく特に設定なし)
- dell SC430 (簡単にとりつけられるHDDスペースが二個)
- 既存の 80GB シングルを 250GB RAID1 にする。
- ハードディスクは最大で2個までしかつなげない (わけじゃないけどケーブルがない)
- ソフトウェア RAID 化し、どちらも起動可能にする
- ハードディスクの実容量が若干異なることを考え、末尾いくらかそれぞれを swap にする (swap は冗長化しない)。
ステップ
- 新しいハードディスク 250GB をとりつける
- パーティションを切り、RAID1 を一個 missing で構築する
- grub をインストールする
- grub の kernel 起動オプションを変更しとく
- 既存ファイルのコピー
- 古いハードディスクをとりはずし、新しいハードディスクに入れ替える。
- 同じようにパーティションをきり、RAID1 に参加させる。
最終的に思ったポイント:実際ファイルコピーするのは最後にしよう。grub インストール前にファイルをコピーしてしまってハマった。
まず BIOS (起動時に F2 で入る) で新しく接続したドライブを認識するようにする。SATA の on/off
sudo fdisk /dev/sdb
> p
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
> n
> p
> 1 #パーテーション番号
> 1 #最初のシリンダ
> +249500M
> t # タイプ変更
> fd # Linux raid auto detect
> a # ブートフラグ
> n
> p
> 2
> [RET]
> [RET]
> t
> 2
> 82
> p
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/sdb1 * 1 30334 243657823+ fd Linux raid 自動検出
/dev/sdb2 30335 30401 538177+ 82 Linux swap / Solaris
> w
とりあえず swap を有効にしてみる
$ sudo mkswap /dev/sdb2
Setting up swapspace version 1, size = 225545396 kB
no label, UUID=269dcbba-b161-4002-9a4d-29fe964d61b6
$ sudo swapon /dev/sdb2
$ swapon -s
RAID1 を一つのデバイスを missing にして作成する
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing
mdadm: array /dev/md0 started.
ファイルシステム作成 ext3
sudo mkfs.ext3 /dev/md0
grub install
sudo grub
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
grub> quit
vim /etc/fstab で md0 をマウントするように
/dev/md0 / ext3 defaults,errors=remount-ro 0 1
proc /proc proc defaults 0 0
/dev/sdb2 none swap sw 0 0
/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0
vim /boot/grub/menu.list の上の方に追加。md0 を root とするように
title Ubuntu, kernel 2.6.15-27-386 (raid)
root (hd0,0)
kernel /boot/vmlinuz-2.6.15-27-386 root=/dev/md0 ro quiet splash
initrd /boot/initrd.img-2.6.15-27-386
savedefault
boot
作ったファイルシステムに現行システムをコピー
cd /
sudo mkdir new-disk
sudo mount -t ext3 /dev/md0 /new-disk
sudo telinit 1
# syslog とか全部止めたりしてファイルシステムの使用を最小限に
# ここからは ssh できないのでちまちまうってく
# パーティションは一つしかないため簡単に
cd /
cp -ax / /new-disk
mkdir /new-disk/proc
シャットダウンして付け替える。ここから sda は新しい 250G のディスク
/dev/sda にたいして、fdisk して、mdadm -a で RAID に追加
sudo fdisk
# 上と同じ
sudo mdadm /dev/md0 -a /dev/sda1
cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[2] sdb1[0]
243657728 blocks [2/1] [U_]
[>....................] recovery = 2.8% (6982720/243657728) finish=70.8min speed=55698K/sec
unused devices: <none>
こっちのディスクにも grub をインストール
sudo grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
grub> quit
設定を保存して、メールの送信先を設定しとく
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
dpkg-reconfigure mdadm
で終わり。のはず。実際構築したときはいろいろハマって起動しなかったりした。grub のインストール手順がおかしかったのと、grub が渡す kernel 引数が悪かったせい。
それと頭悪くて fdisk の桁を一個間違えて RAID missing 構築までやってしまった。やりなおすために
sudo umount /new-disk
sudo mdadm --misc --stop /dev/md0
sudo swapoff /dev/sdb2
とかやって、fdisk しなおした。
root ファイルシステムがないとか言われて起動しなかったときは、ずっと待ってると BusyBox shell に落ちるのでそこでなおしたりした。 これは kernel 引数が RAID デバイスになっておらず /dev/sda を参照していて、sda は RAID に参加するまえでミラーリングされていなかったで、ファイルシステムが存在せずエラー、とかいうやつ。
mount /dev/md0 /tmp; chroot tmp
fstab の修正をして、/boot/grub/menu.list を修正した。
けど、menu.list のほうが、title がかぶっていてはダメらしく、めんどいので grub 中に edit して起動して、起動してから書き換えた。
そんなわけで RAID1 になりました。一度つけて外して resync の様子とか見たりしたり。RAID になったからって、別に表面所何かが変わるわけではなく、ハードディスク変えて容量が増えただけという感じ。
まだ慣れてないので、「バックアップとらないとなぁ」と不安になってしまったりする。「そういえば RAID 組んだんだからそんなに気にしなくても」とか打ち消したりとかなんとかとかとかとか。とかばっかりだなねる