Translated message

A translation of this page exists in English.

Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

Red Hat Enterprise Linux 6 に新しく作成したパーティションにアクセスすることができません

Solution Verified - Updated -

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" メッセージを表示します。最初に partxfdisk および 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

  1. 以下のコマンドを実行して、現在のパーティションを確認します。

        # 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)
    
  2. 以下のコマンドを実行して、新しいパーティションを作成します。

        # parted -s /dev/sda mkpart primary 44502MiB 100000MiB
    
  3. 以下のコマンドを実行して、新しいパーティションを確認します。

        # 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)
        ....
    

補足情報:

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