テクノロジーガイド

RAIDアレイの作成とデータ移行

3 min read システム管理 更新されました 28 Sep 2025
RAIDアレイ作成とデータ移行手順
RAIDアレイ作成とデータ移行手順

重要: 実機で操作する前に必ず現在の設定と重要データのバックアップを取ってください。RAID 操作やパーティション操作はデータ損失のリスクがあります。

目的と前提

この手順は次を行います:

  • /dev/sdb1 を /dev/md0(非LVM、/boot 用 RAID1)として作成
  • /dev/sdb2 を /dev/md1(LVM 用 RAID1)として作成
  • /dev/md0 に ext3 を作成して /boot を移行
  • /dev/md1 を pvcreate→vgextend して既存の VolGroup00 に追加
  • /dev/sda2 上の LVM データを pvmove で /dev/md1 に移動
  • /dev/sda1 の内容を /dev/md0 にコピー
  • GRUB と initrd を調整して、万一のときは fallback で元のディスクから起動する

前提:

  • root 権限で実行すること
  • /dev/sda が現在稼働中のディスクであること(すぐには追加できないため missing を使う)
  • mdadm、lvm、mkinitrd、fdisk、mkfs.ext3 が利用可能であること

RAIDアレイの作成

まず /dev/md0 と /dev/md1 を作成します。/dev/sdb1 を /dev/md0 に、/dev/sdb2 を /dev/md1 に割り当てます。現在システムが /dev/sda 上で稼働しているため、最初は missing を使ってデグレード(欠損)状態で作成します:

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1  
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2

作成後、/proc/mdstat を確認してデグレード状態([U] または [U])であることを確認します。[UU] は正常です。

cat /proc/mdstat

期待される出力例:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sdb2[1]  
      5036288 blocks [2/1] [_U]  
  
md0 : active raid1 sdb1[1]  
      200704 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

非LVM RAID にファイルシステムを作成

/boot 用の /dev/md0 に ext3 を作成します:

mkfs.ext3 /dev/md0

LVM 用 RAID の準備とボリュームグループへの追加

LVM 用 RAID (/dev/md1) を物理ボリュームとして初期化します:

pvcreate /dev/md1

次に /dev/md1 を既存のボリュームグループ VolGroup00 に追加します:

vgextend VolGroup00 /dev/md1

pvdisplay の出力は次のようになります(例):

[root@server1 ~]# pvdisplay  
  --- Physical volume ---  
  PV Name               /dev/sda2  
  VG Name               VolGroup00  
  PV Size               4.80 GB / not usable 22.34 MB  
  Allocatable           yes  
  PE Size (KByte)       32768  
  Total PE              153  
  Free PE               1  
  Allocated PE          152  
  PV UUID               op2n3N-rck1-Pywc-9wTY-EUxQ-KUcr-2YeRJ0  
  
  --- Physical volume ---  
  PV Name               /dev/md1  
  VG Name               VolGroup00  
  PV Size               4.80 GB / not usable 22.25 MB  
  Allocatable           yes  
  PE Size (KByte)       32768  
  Total PE              153  
  Free PE               153  
  Allocated PE          0  
  PV UUID               pS3xiy-AEnZ-p3Wf-qY2D-cGus-eyGl-03mWyg  
  
[root@server1 ~]#

vgdisplay の例:

[root@server1 ~]# vgdisplay  
  --- Volume group ---  
  VG Name               VolGroup00  
  System ID  
  Format                lvm2  
  Metadata Areas        2  
  Metadata Sequence No  4  
  VG Access             read/write  
  VG Status             resizable  
  MAX LV                0  
  Cur LV                2  
  Open LV               2  
  Max PV                0  
  Cur PV                2  
  Act PV                2  
  VG Size               9.56 GB  
  PE Size               32.00 MB  
  Total PE              306  
  Alloc PE / Size       152 / 4.75 GB  
  Free  PE / Size       154 / 4.81 GB  
  VG UUID               jJj1DQ-SvKY-6hdr-3MMS-8NOd-pb3l-lS7TA1  
  
[root@server1 ~]#

mdadm 設定ファイルと fstab / mtab の更新

mdadm の現在のアレイ情報を /etc/mdadm.conf に出力します:

mdadm --examine --scan > /etc/mdadm.conf

内容を確認:

cat /etc/mdadm.conf

ファイルには作成したアレイの UUID 情報などが記録されます。例:

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=7d2bf9c3:7cd9df21:f782dab8:9212d7cb
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=d93a2387:6355b5c5:25ed3e50:2a0e4f96

次に /etc/fstab を編集し、LABEL=/boot を /dev/md0 に置き換えます:

vi /etc/fstab

例:

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
/dev/md0             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

同様に /etc/mtab の /dev/sda1 を /dev/md0 に差し替えます:

vi /etc/mtab

例:

/dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/md0 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0

GRUB の調整(fallback を利用した冗長化)

/boot/grub/menu.lst を編集して fallback=1 を追加します(default=0 の直後)。これで第1カーネルが失敗した場合に次のエントリが起動されます:

vi /boot/grub/menu.lst

例:

default=0
fallback=1

ファイルのカーネルスタンザを複製し、先頭に /dev/sdb を参照する root (hd1,0) の行を追加します。例:

title Fedora (2.6.23.1-42.fc8)
        root (hd1,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.23.1-42.fc8.img
title Fedora (2.6.23.1-42.fc8)
        root (hd0,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.23.1-42.fc8.img

root (hd1,0) は /dev/sdb を指し、これはすでに RAID に含まれている側です。fallback 設定により、RAID からの起動が失敗した場合は /dev/sda から起動されます。

initrd の再生成

現在の initrd をリネームして新しい initrd を作成します:

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig  
mkinitrd /boot/initrd-`uname -r`.img `uname -r`

これにより、新しい initrd が RAID 構成を考慮して生成されます。

データ移行: pvmove で LVM を移動

設定ファイルを更新したら、/dev/sda2 上の LVM データを /dev/md1 に移動します:

pvmove /dev/sda2 /dev/md1

移動には時間がかかります。完了後、/dev/sda2 をボリュームグループから削除します:

vgreduce VolGroup00 /dev/sda2

その後、システムに /dev/sda2 を LVM として使用しないよう通知します:

pvremove /dev/sda2

pvdisplay は最終的に次のようになります(例):

[root@server1 ~]# pvdisplay  
  --- Physical volume ---  
  PV Name               /dev/md1  
  VG Name               VolGroup00  
  PV Size               4.80 GB / not usable 22.25 MB  
  Allocatable           yes  
  PE Size (KByte)       32768  
  Total PE              153  
  Free PE               1  
  Allocated PE          152  
  PV UUID               pS3xiy-AEnZ-p3Wf-qY2D-cGus-eyGl-03mWyg  
  
[root@server1 ~]#

/dev/sda2 を RAID タイプへ変更して配列に追加

パーティションタイプを Linux raid autodetect (fd) に変更します:

fdisk /dev/sda

対話例:

Command (m for help): <- t  
Partition number (1-4): <- 2  
Hex code (type L to list codes): <- fd  
Changed system type of partition 2 to fd (Linux raid autodetect)  

Command (m for help): <- w  
The partition table has been altered!  

Calling ioctl() to re-read partition table.  

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.  
The kernel still uses the old table.  
The new table will be used at the next reboot.  
Syncing disks.  
[root@server1 ~]#

その後、/dev/sda2 を /dev/md1 に追加します:

mdadm --add /dev/md1 /dev/sda2

/proc/mdstat を見て同期状況を確認します:

cat /proc/mdstat

同期中の例:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sda2[2] sdb2[1]  
      5036288 blocks [2/1] [_U]  
      [=====>...............]  recovery = 28.8% (1454272/5036288) finish=2.8min speed=21132K/sec  
  
md0 : active raid1 sdb1[1]  
      200704 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

進行状況を監視するには:

watch cat /proc/mdstat

完了後の例:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]  
md1 : active raid1 sda2[0] sdb2[1]  
      5036288 blocks [2/2] [UU]  
  
md0 : active raid1 sdb1[1]  
      200704 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

/dev/md0 をマウントして /boot をコピー

まずマウントポイントを作成してマウントします:

mkdir /mnt/md0
mount /dev/md0 /mnt/md0

mount 出力例:

[root@server1 ~]# mount  
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)  
proc on /proc type proc (rw)  
sysfs on /sys type sysfs (rw)  
devpts on /dev/pts type devpts (rw,gid=5,mode=620)  
/dev/md0 on /boot type ext3 (rw)  
tmpfs on /dev/shm type tmpfs (rw)  
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)  
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)  
/dev/md0 on /mnt/md0 type ext3 (rw)  
[root@server1 ~]#

/boot の内容をコピーします:

cd /boot
cp -dpRx . /mnt/md0

受け入れ基準

  • /proc/mdstat で各 RAID の状態が期待通り([UU] または [_U])であること
  • /etc/fstab と /etc/mtab が /dev/md0 を参照していること
  • initrd が再生成され、/boot に正しく保存されていること
  • pvmove が完了し、pvdisplay に /dev/md1 のみが残っていること
  • システムを再起動して RAID から正常に起動できること(fallback 動作を含む)

トラブルシューティング(よくある問題と対処)

  • 同期が遅い/停止している: I/O 負荷や不良セクタが原因のことがあります。dmesg を確認してエラーを探し、該当ディスクを –fail でマークしてから再試行します。
  • mdadm –add が失敗する: パーティションタイプが正しく fd に設定されているかを確認し、カーネルのパーティションテーブル再読み込み(再起動が必要な場合あり)を検討してください。
  • GRUB が RAID 上の /boot を見つけられない: initrd の再生成と /boot の内容が新しい md0 に正しくコピーされているか確認します。必要なら手動で grub インストールを実行します(grub-install など)。
  • pvmove が途中で止まった: pvdisplay、vgdisplay、lvdisplay で状態を確認。必要であれば LVM のログや dmesg を参照します。

コマンド例(不良ディスクのマークと削除):

mdadm --fail /dev/md1 /dev/sda2
mdadm --remove /dev/md1 /dev/sda2
mdadm --add /dev/md1 /dev/sda2

実務チェックリスト(ロール別)

  • システム管理者(実行前):
    • フルバックアップを取得
    • 現在の /etc/fstab, /etc/mtab, /boot/grub/menu.lst, /etc/mdadm.conf をバックアップ
    • mdadm, lvm2 ツールがインストール済みか確認
  • システム管理者(実行中):
    • 各コマンド実行後に /proc/mdstat, pvdisplay, vgdisplay を確認
    • pvmove 実行中は負荷を監視
  • システム管理者(再起動前):
    • initrd の再生成完了を確認
    • /boot の内容が /dev/md0 に正しくコピーされていることを確認
    • GRUB 設定で fallback=1 が設定されていることを確認
  • システム管理者(再起動後):
    • RAID 起動成功を確認
    • ログ (dmesg, /var/log/messages) を確認して異常がないことを確認

ミニ・メソドロジー(5ステップ)

  1. 設備と依存を確認(ツール・バックアップ)
  2. degraded 状態で md デバイスを作成
  3. 非LVM と LVM の準備(mkfs, pvcreate, vgextend)
  4. pvmove でデータ移行、mdadm で残りのディスクを追加して同期
  5. initrd と GRUB を更新して再起動テスト

まとめ

  • missing を使って一時的にデグレード状態の RAID を作成し、安全に /dev/sda から /dev/sdb へ移行できます。
  • LVM と mdadm を組み合わせることでオンラインでデータ移動が可能です。
  • 操作前のバックアップ、各種表示コマンドでの確認、再起動時の動作確認が成功の鍵です。

Notes: 記載したサンプル出力は環境例です。実環境のデバイス名やサイズ、UUID は異なります。作業前に必ず自環境を確かめてください。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

MacでHigh Sierraの通知を完全に止める方法
Mac

MacでHigh Sierraの通知を完全に止める方法

6ステップで作るノックアウトポスター
デザイン

6ステップで作るノックアウトポスター

YouTubeの低評価数を表示する方法と注意点
テクノロジー

YouTubeの低評価数を表示する方法と注意点

SpotifyをMP3に変換してオフライン再生する方法
ガイド

SpotifyをMP3に変換してオフライン再生する方法

RAIDアレイ作成とデータ移行手順
システム管理

RAIDアレイ作成とデータ移行手順

2023年にアプリを作る方法:完全ステップガイド
モバイル開発

2023年にアプリを作る方法:完全ステップガイド