テクノロジーガイド

7 /dev/sda の準備

2 min read システム運用 更新されました 10 Oct 2025
7 /dev/sda の準備 — 稼働中の RAID1 を完成させる手順
7 /dev/sda の準備 — 稼働中の RAID1 を完成させる手順

重要: 操作前に必ず現在の構成と重要データのバックアップを取得してください。作業中にディスクが忙しい場合、fdisk の変更は再起動後に反映されます。

概要

この章では、稼働中の CentOS 5.3 システム上でソフトウェア RAID1 を完全化する手順を説明します。主な流れは次の通りです。

  • 現在のマウント状況と mdstat を確認する
  • /dev/sda のパーティションタイプを fd に変更する(Linux raid autodetect)
  • /dev/sda のパーティションを各 md デバイスに追加する
  • 同期終了を待つ
  • /etc/mdadm.conf を再生成する
  • GRUB のエントリを修正して initrd を更新し、再起動する

前提条件と用語定義

  • mdadm: ソフトウェア RAID を管理するツール。md デバイス(例: /dev/md0)を操作します。
  • fdisk: パーティションテーブルを編集する対話型ツール。
  • initrd / initramfs: カーネル起動時に使われる初期 RAM ディスク。

現在の状態の確認

まず、ファイルシステムのマウント状況を確認します。期待される出力例:

df -h
[root@server1 ~]# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/md2              9.2G  1.1G  7.7G  12% /  
/dev/md0              190M   14M  167M   8% /boot  
tmpfs                 252M     0  252M   0% /dev/shm  
[root@server1 ~]#

mdadm の状態は /proc/mdstat で確認します。期待される出力例:

cat /proc/mdstat
[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md0 : active raid1 sdb1[1]  
200704 blocks [2/1] [_U]  
  
md1 : active raid1 sdb2[1]  
522048 blocks [2/1] [_U]  
  
md2 : active raid1 sdb3[1]  
9759360 blocks [2/1] [_U]  
  
unused devices:   
[root@server1 ~]#

出力で md デバイスが存在し、片側(sdb)だけで稼働している状態が確認できます。ここから /dev/sda 側のパーティションを RAID 用に設定して追加します。

/dev/sda のパーティションタイプを変更する

fdisk を使って /dev/sda の各パーティションのタイプを fd(Linux raid autodetect)に変更します。

実行例:

fdisk /dev/sda

対話例(プロンプトのやり取り):

[root@server1 ~]# fdisk /dev/sda  
  
The number of cylinders for this disk is set to 1305.  
There is nothing wrong with that, but this is larger than 1024,  
and could in certain setups cause problems with:  
1) software that runs at boot time (e.g., old versions of LILO)  
2) booting and partitioning software from other OSs  
(e.g., DOS FDISK, OS/2 FDISK)  
  
Command (m for help): <-- t  
Partition number (1-4): <-- 1  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 1 to fd (Linux raid autodetect)  
  
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): <-- t  
Partition number (1-4): <-- 3  
Hex code (type L to list codes): <-- fd  
Changed system type of partition 3 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 ~]#

注意: fdisk の書込み後に “Device or resource busy” の警告が出る場合があります。これはカーネルがまだ旧テーブルを使用しているためで、次回再起動時に新しいテーブルが反映されます。ただし今回はパーティションタイプを変更しただけなので、次の手順で mdadm に直接パーティションを追加できます。

/dev/sdaX を RAID 配列に追加する

各パーティションを対応する md デバイスに追加します。

mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3

追加後、/proc/mdstat を監視すると同期(リビルド)が始まっていることが確認できます。

cat /proc/mdstat

例:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md0 : active raid1 sda1[0] sdb1[1]  
200704 blocks [2/2] [UU]  
  
md1 : active raid1 sda2[0] sdb2[1]  
522048 blocks [2/2] [UU]  
  
md2 : active raid1 sda3[2] sdb3[1]  
9759360 blocks [2/1] [_U]  
[====>................]  recovery = 22.8% (2232576/9759360) finish=2.4min speed=50816K/sec  
  
unused devices:   
[root@server1 ~]#

ヒント: リアルタイムで監視するには次を実行します。

watch cat /proc/mdstat

終了するには Ctrl+C を押します。

同期が完了すると、/proc/mdstat はすべてのデバイスが [UU] になったことを示します:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1]  
md0 : active raid1 sda1[0] sdb1[1]  
200704 blocks [2/2] [UU]  
  
md1 : active raid1 sda2[0] sdb2[1]  
522048 blocks [2/2] [UU]  
  
md2 : active raid1 sda3[0] sdb3[1]  
9759360 blocks [2/2] [UU]  
  
unused devices:   
[root@server1 ~]#

/etc/mdadm.conf の更新

現在のアレイ情報を mdadm によって書き出して /etc/mdadm.conf を更新します。

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

出力例(/etc/mdadm.conf):

cat /etc/mdadm.conf
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=78d582f0:940fabb5:f1c1092a:04a55452
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8db8f7e1:f2a64674:d22afece:4a539aa7
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=1baf282d:17c58efd:a8de6947:b0af9792

保存された UUID を確認しておけば、将来デバイス名が変わっても配列を復元しやすくなります。

GRUB(ブートローダ)の更新

システムが /dev/sdb からしかブートしない設定になっている場合、/dev/sda にも同等のエントリを作成しておきます。/boot/grub/menu.lst を編集します。

vi /boot/grub/menu.lst

目的: 現在の最初のカーネルスタンザ(hd1)を複製して hd0 に置き換え、他のカーネルスタンザをコメントアウトしておくこと。

例(編集後):

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
fallback=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.el5)
        root (hd1,0)
        kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2
        initrd /initrd-2.6.18-128.el5.img

title CentOS (2.6.18-128.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2
        initrd /initrd-2.6.18-128.el5.img

#title CentOS (2.6.18-128.el5)
#       root (hd0,0)
#       kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/
#       initrd /initrd-2.6.18-128.el5.img

次に initrd を更新します。現在のカーネルバージョンに合わせて実行してください。

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

上記で initrd を再生成したらシステムを再起動します。

reboot

再起動後、期待どおりブートすれば完了です。

重要: GRUB を両方のディスクにインストールしておくと、片方のディスク故障時にもブート可能性が高まります(例: grub-install を利用)。

いつもうまくいかないか(想定される失敗例と対処)

  • 同期が始まらない: /dev/sdaX のパーティションが正しく作成・タイプ設定されているかを確認。parted や fdisk で確認。
  • 同期が非常に遅い: ディスクの I/O 負荷、ケーブル不良、または読み書き速度の低いディスクである可能性。smartctl でディスク健康を確認。
  • GRUB が指定ディスクから起動しない: grub-install を使って /dev/sda と /dev/sdb 両方にブートローダをインストールする。/boot が独立パーティションであれば、それぞれに GRUB を書く必要がある。

テストケース / 受入れ基準(Критерии приёмки)

  • 全ての md デバイスが /proc/mdstat で [UU] を示すこと。
  • /etc/mdadm.conf にすべての ARRAY 行が出力されていること。
  • システムを /dev/sdb から起動および /dev/sda から起動(片方を取り外して検証)できること。
  • 再起動後にシステムが正常に立ち上がること。

管理者向けチェックリスト

  • バックアップを取得した
  • df -h と cat /proc/mdstat を取得して保存した
  • /dev/sda のパーティションを fd に変更した
  • mdadm –add を実行し、同期が完了したことを確認した
  • /etc/mdadm.conf を再生成した
  • /boot/grub/menu.lst を更新し、initrd を再生成した
  • 両方のディスクに GRUB をインストールした(推奨)
  • 再起動してブートを確認した

再現手順(ミニ SOP / プレイブック)

  1. 作業前に重要データのバックアップを取得する。
  2. df -h と cat /proc/mdstat を保存してベースラインを記録する。
  3. fdisk /dev/sda を実行し、パーティションタイプを fd に変更する。
  4. mdadm –add コマンドで各パーティションを配列に追加する。
  5. watch cat /proc/mdstat で同期を監視する。
  6. mdadm –examine –scan > /etc/mdadm.conf で設定を更新する。
  7. /boot/grub/menu.lst を編集して hd0 エントリを用意し、initrd を再生成する。
  8. (推奨)grub-install を使って両ディスクに GRUB をインストールする。
  9. 再起動してシステムが起動することを確認する。

参考となる判断基準(簡易マトリクス: 影響×工数)

  • 重要(高): /etc/mdadm.conf 更新、GRUB 変更、initrd 再生成 — 手順必須、工数中
  • 中: ディスクの健全性チェック(smartctl) — 推奨、工数小
  • 低: パーティションアライメント調整 — 必要に応じて

1行用語集

  • mdadm: Linux ソフトウェア RAID 管理ツール
  • initrd: カーネル起動時に展開される初期 RAM イメージ
  • fd (partition type): Linux raid autodetect のコード

まとめ: この手順に従うことで、稼働中の CentOS 5.3 システム上でソフトウェア RAID1 の片側を追加し、両側でミラーリングされた状態に復元できます。作業前のバックアップと同期終了の確認、GRUB の両ディスクへのインストールを忘れないでください。

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

類似の素材

Windows 11 スニッピングツールが壊れたときの修復手順
トラブルシューティング

Windows 11 スニッピングツールが壊れたときの修復手順

iPhoneの写真を削除してもiCloudに残す方法
使い方

iPhoneの写真を削除してもiCloudに残す方法

Windows ExplorerでSFTPを統合する方法
チュートリアル

Windows ExplorerでSFTPを統合する方法

Facebook写真をGoogle+へ移行する方法
ガイド

Facebook写真をGoogle+へ移行する方法

Netflixの映画・シリーズをダウンロードする方法
ストリーミング

Netflixの映画・シリーズをダウンロードする方法

7 /dev/sda の準備 — 稼働中の RAID1 を完成させる手順
システム運用

7 /dev/sda の準備 — 稼働中の RAID1 を完成させる手順