Red Hat Enterprise Linux 6 に新しく作成したパーティションにアクセスすることができません
Environment
- Red Hat Enterprise Linux 6 (RHEL6)
- parted v2.1
Issue
-
parted コマンドを使用して新しいパーティションをシステムボリュームに作成すると、以下のエラーが表示されます。
# parted -s /dev/sda mkpart primary 44502MiB 100000MiB Warning:WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy).As a result, it may not reflect all of your changes until after reboot.
-
fdisk を使用して新しいパーティションを作成すると、(上と同じ) 警告メッセージが表示されます。
-
partprobe
して RHEL5 で機能するパーティションを新規作成すると、上の警告メッセージが表示されます。 -
parted を使用してディスクのパーティションテーブルを修正し、パーティションの追加、削除、またはサイズ変更を行うと、/dev entries を作成することができません。
-
partprobe を使用して、カーネルが識別するパーティションテーブル情報の更新に失敗しました。
-
partprobe
コマンドは、パーティションテーブルを再度読み込むことができません。 -
RHEL6 にディスクパーティションを新しく作成する方法は?
Resolution
-
新しいパーティションが既存のパーティションと重複しない限り、
partx -a
コマンドを使用して新しいデバイスを追加します。- 既存のパーティションのサイズを削除または修正することができません。
partx -a
が、依然 "BLKPG: Device or resource busy, error adding partition N" メッセージを表示します。最初にpartx
がfdisk
およびpartprobe
と同じメソッドを試みていて、次に 2 番目のメソッドを試みます。
-
パーティションが新規で重複していないパーティションではなく、以下のメッセージを受け取った場合は、サーバーを再起動すると新しいパーティションを確実に安全に使用することができます。
Warning:The kernel was unable to re-read the partition table on /dev/sda (Device or resource busy).This means Linux won't know anything about the modifications you made until you reboot.You should reboot your computer before doing anything with /dev/sda.
詳細については、How can I add a new partition to a disk and then use it in RHEL6 without reboot? を参照してください。
Root Cause
- Red Hat Enterprise Linux 5 では、使用中のパーティションを変更することができ、
parted
が変更点をカーネルに報告します。ただし、報告されない場合もあります。- RHEL5 にはエラーチェックがないため、それが機能するかどうかに関わらず、それが報告されないという問題があります。
- そのため、不正確な操作とサイレントなデータロスが発生する場合があります。
- Parted 2.1 以降では、エラーコードをキャプチャーし、
fdisk
と同じように動作するようにコードが変更されました。これは、シングル ioctl によってカーネルがパーティションテーブルを再度読み込むことを意味しています。パーティションが使用中の場合は失敗し -EBUSY となります。 - 間違ったサイズで間違ったパーティションにファイルシステムを作成するサイレント障害か、ボックスを再起動してパーティションの変更を検出するかを選択してください。現時点では再起動することが最適なソリューションとなります。
Diagnostic Steps
-
以下のコマンドを実行して、現在のパーティションを確認します。
# parted -s /dev/sda unit MiB printModel:LSI MegaRAID SAS RMB (scsi) Disk /dev/sda:100000MiB Sector size (logical/physical):512B/512B Partition Table: msdosNumber Start End Size Type File system Flags 1 0.03MiB 500MiB 500MiB primary ext3 boot 2 500MiB 40500MiB 40000MiB primary ext3 3 40500MiB 44500MiB 4000MiB primary linux-swap(v1)
-
以下のコマンドを実行して、新しいパーティションを作成します。
# parted -s /dev/sda mkpart primary 44502MiB 100000MiB
-
以下のコマンドを実行して、新しいパーティションを確認します。
# ll /dev/sda* brw-rw---- 1 root disk 8, 0 Jul 7 14:54 /dev/sda brw-rw---- 1 root root 8, 1 Jun 28 12:12 /dev/sda1 brw-rw---- 1 root root 8, 2 Jun 28 12:12 /dev/sda2 brw-rw---- 1 root disk 8, 3 Jun 28 12:12 /dev/sda3
- 実際の結果: parted コマンドが作成したパーティションにアクセスすることができません。
- 予想した結果: parted コマンドが作成したパーティションにアクセスすることができます。
-
parted コマンドの strace が以下のエラーを返します。
# strace -ffxo parted -s /dev/sda mkpart primary 44502MiB 100000MiB .... 20492 14:39:57.848952 ioctl(3, BLKRRPART, 0x1) = -1 EBUSY (Device or resource busy) ....
補足情報:
- 次の upstream パッチはこの問題を解決するためのものですが、このパッチは現在安定していないため問題が発生し、簡単にバックポートすることができません。
http://git.debian.org/?p=parted/parted.git;a=commitdiff;h=0e04d17386274fc218a9e6f9ae17d75510e632a3 - この bugzilla のアップデート によると、parted-2.3 upstream にはこの問題に対する修正がありますが、この時点では問題が発生するため、parted-2.1 (the version used in RHEL6) にバックポートができないとされています。
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments