シングルドライブ環境を RAID に変換
このガイドでは機能中のシングルドライブ環境にドライブを追加して RAID 1 構成にする方法を説明します。一時的にデータを他のドライブに保存する必要はありません。多少手順を変更することで root 以外のパーティションや他の RAID レベルの変換をすることも可能です。
シナリオ
以下の例では /dev/sda
を既存のディスクとし、システム全体が入っている /dev/sda1
パーティションだけが存在すると仮定しています。新しく追加するディスクは /dev/sdb
です。
新しいディスクの準備
ディスクのパーティション
最初に RAID アレイのミラーとして使用する新しいディスク /dev/sdb1
にパーティションを作成します。通常、この段階では既存のドライブのパーティションを再作成する必要はありません。RAID はディスク全体や後で作成した パーティション あるいは論理ボリュームに設定できます。
パーティションのタイプは FD
に設定してください。詳しくは RAID#デバイスの準備や RAID#パーティションテーブルの作成を参照。
RAID デバイスの作成
次に、縮退状態で新しいディスクだけを使って RAID アレイを作成します。後で追加するデバイスに対して missing
キーワードを指定します。
# mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
Syslinux を使用したい場合、(ブートパーティションに) --metadata=1.0
を指定してください。Syslinux 6.03 現在、mdadm 1.2 は Syslinux でサポートされていません。ソフトウェア RAID と LVM も参照。
/proc/mdstat
をチェックしてアレイが正しく作成されたことを確認してください:
# Personalities : [raid1] md0 : active raid1 sdb1[1] 2930034432 blocks super 1.2 [2/1] [_U] bitmap: 22/22 pages [88KB], 65536KB chunk unused devices: <none>
ファイルシステムの作成
/dev/md0
デバイスに必要なファイルシステムを作成してください。
アレイにデータをコピー
アレイをマウント:
# mkdir /mnt/new-raid # mount /dev/md0 /mnt/new-raid
rsync などを使って /dev/sda1
から /mnt/new-raid
にデータをコピーしてください。
新しいディスクで起動
ブートローダーのアップデート
ブートローダーに新しいエントリを作成して新しいディスクの RAID アレイから環境をロードしてください。
GRUB Legacy
お好きなテキストエディタで /mnt/new-raid/boot/grub/menu.lst
を開いてください。
--- SNIP --- default 0 color light-blue/black light-cyan/blue ## fallback fallback 1 # (0) Arch Linux title Arch Linux - Original Disc root (hd0,0) kernel /vmlinuz-linux root=/dev/sda1 # (1) Arch Linux title Arch Linux - New RAID root (hd1,0) #kernel /vmlinuz-linux root=/dev/sda1 ro kernel /vmlinuz-linux root=/dev/md0 md=0,/dev/sda1,/dev/sdb1 --- SNIP ---
fallback
行を追加して Arch Linux エントリを複製し kernel 行で別の root
ディレクティブを使っています。
/mnt/new-raid/boot/grub/menu.lst
ファイルに "kopt" と "groot" セクションが存在する場合、以下のように更新してください:
- # kopt=root=UUID=fbafab1a-18f5-4bb9-9e66-a71c1b00977e ro + # kopt=root=/dev/md0 ro md=0,/dev/sda1,/dev/sdb1 ## default GRUB root device ## e.g. groot=(hd0,0) - # groot=(hd0,0) + # groot=(hd0,1)
詳しくは GRUB Legacy を参照してください。
GRUB
GRUB の記事を参照してください。
縮退状態のアレイからシステムを起動するには、/etc/mkinitcpio.conf
の HOOKS 行に (block
エントリの後に) mdadm_udev
フックを追加して、initramfs を再生成して新しく grub.cfg
を生成してください。/boot/grub/grub.cfg
にメニューエントリを追加して起動する RAID パーティションを指定してください。デフォルトの設定生成ではプライマリのブートエントリが利用され、サブメニューに他のブートエントリが配置されます。シングルエントリの生成に戻すには /etc/default/grub
に以下を追加:
GRUB_DISABLE_SUBMENU=y
その後 grub.cfg
を再生成してください。そしてデバイスファイルを指定したエントリを追加してください (例: /dev/md0
, /dev/md1
, あるいは RAID ファイルシステムの UUID
)。縮退状態のアレイから起動するエントリを追加する一番簡単な方法は "Arch Linux, with Linux linux" エントリをコピーして UUID を /dev/disk/by-uuid
で確認できる ID に変更することです。
fstab の変更
新しいディスクの fstab を編集してデバイスを探す場所を指定する必要があります。永続的なブロックデバイスの命名を使用することを推奨します。
/mnt/new-raid/etc/fstab
/dev/md0 / ext4 defaults 0 1
initramfs の再生成
RAID 環境に chroot
# mount --bind /sys /mnt/new-raid/sys # mount --bind /proc /mnt/new-raid/proc # mount --bind /dev /mnt/new-raid/dev # chroot /mnt/new-raid/
chroot コマンドで chroot: failed to run command `/bin/zsh': No such file or directory
のようなエラーが表示される場合、chroot /mnt/new-raid/ /bin/bash
を使ってください。
mdadm の設定
RAID 1 に問題が発生したときにメールで警告を受け取りたい場合、/etc/mdadm.conf
を編集して MAILADDR
行をあなたのメールアドレスに置き換えてください。
UUID でアレイの設定を保存して起動時にシステムが /dev/md0
が見つけられるようにします。保存しなかった場合、起動時に ALERT! /dev/md0 does not exist
エラーが表示されることがあります:
# mdadm --detail --scan >> /etc/mdadm.conf
initcpio のリビルド
RAID#mdadm フックを mkinitcpio.conf に追加するに従ってください。
RAID アレイにブートローダーをインストール
GRUB Legacy
GRUB を起動してください:
# grub --no-floppy
2つのパーティション (hd0,0) (1番目のディスク、1番目のパーティション) と (hd1,1) (先に追加したパーティション、2番目のドライブの2番目のパーティション) が確認できます。以下のようにパーティションが2つ表示されることを確認してください:
grub> find /boot/grub/stage1 (hd0,0) (hd1,1)
新しいセカンドドライブをシステムの最初のディスクである (hd0) として GRUB に設定します。ディスクが故障しても、ディスクを取り外したり BIOS で起動順序を変更することでセカンドディスクから起動することができます。
grub> device (hd0) /dev/sdb
GRUB を新しいセカンドドライブの MBR にインストールします。以下のように "partition type" が "0xfd" と認識されていることを確認してください:
grub> root (hd0,1) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,1)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded Done grub> quit
新しい環境を確認
コンピュータを再起動して元のディスク (/dev/sda
) ではなく新しい RAID ディスク (/dev/sdb
) から起動することを確認してください。BIOS でデバイスの起動順序を変更する必要があるかもしれません。
新しいディスクでブートローダーがロードされたら、先に作成したシステムエントリを選択して起動してください。
mount コマンドの出力を確認することで RAID アレイから起動していることを確認できます。また、mdstat を確認してアレイに含まれているディスクを確認してください。
# mount
/dev/md0 on / type ext4 (rw)
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6] [raid10] md0 : active raid1 sdb1[1] 40064 blocks [2/1] [_U] unused devices: <none>
システムの起動が問題なく、上記のコマンドの出力が正しい場合、順調に縮退状態の RAID アレイで起動できています。
アレイに元のディスクを追加
元のディスクのパーティション
/dev/sdb
(新しい RAID ディスク) から /dev/sda
(アレイに追加するディスク) にパーティションテーブルをコピーして両方のディスクのレイアウトが同じになるようにしてください:
# sfdisk -d /dev/sdb | sfdisk /dev/sda
もしくは以下のように /dev/sdb
のパーティションレイアウトをファイルに書き出して、ファイルから入力して /dev/sda
をパーティショニングすることもできます:
# sfdisk -d /dev/sdb > raidinfo-partitions.sdb # sfdisk /dev/sda < raidinfo-partitions.sdb
パーティションが同じであることを確認:
# fdisk -l
アレイにディスクパーティションを追加
# mdadm /dev/md0 -a /dev/sda1
mdadm: hot added /dev/sda1
RAID アレイが再構築されていることを確認:
# cat /proc/mdstat
Personalities : [raid1] md0 : active raid1 sda1[2] sdb1[1] 2930034432 blocks super 1.2 [2/1] [_U] [>....................] recovery = 0.2% (5973824/2930034432) finish=332.5min speed=146528K/sec bitmap: 22/22 pages [88KB], 65536KB chunk unused devices: <none>
参照
- Convert running system to RAID 5 — RAID 5 を使用する例