18 February 2012

(Linux) 領域テーブル項目がディスクの順序と一致しません

パーティションの削除・コピーを行ったりすると、パーティションテーブルの中でパーティション番号がディスク内の論理的な位置と順番が違ってきたりする場合がある。そういうときに、fdiskでパーティション一覧を表示したりすると、『領域テーブル項目がディスクの順序と一致しません』と警告が表示される。

たとえば…


# fdisk -l

ディスク /dev/sda: 250.1 GB, 250059350016 バイト
ヘッド 255, セクタ 63, シリンダ 30401
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
ディスク識別子: 0x7e51282e

デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 2550 20482843+ 7 HPFS/NTFS
/dev/sda2 2551 30401 223713157+ 5 拡張領域
/dev/sda5 2551 5100 20482843+ 83 Linux
/dev/sda6 7713 10324 20980858+ 83 Linux
/dev/sda7 10325 10456 1060258+ 82 Linux スワップ / Solaris
/dev/sda8 10457 30401 160208181 7 HPFS/NTFS
/dev/sda9 5101 7712 20980858+ 83 Linux

領域テーブル項目がディスクの順序と一致しません

パーティションの「並び」はfdiskコマンドの拡張メニューにある「領域の順序を適正化する」機能で簡単に修正できる。


# fdisk /dev/sda

コマンド (m でヘルプ): x

上級者コマンド (m でヘルプ): f
終了

上級者コマンド (m でヘルプ): r

コマンド (m でヘルプ): p

ディスク /dev/sda: 250.1 GB, 250059350016 バイト
ヘッド 255, セクタ 63, シリンダ 30401
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
ディスク識別子: 0x7e51282e

デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 2550 20482843+ 7 HPFS/NTFS
/dev/sda2 2551 30401 223713157+ 5 拡張領域
/dev/sda5 2551 5100 20482843+ 83 Linux
/dev/sda6 5101 7712 20980858+ 83 Linux
/dev/sda7 7713 10324 20980858+ 83 Linux
/dev/sda8 10325 10456 1060258+ 82 Linux スワップ / Solaris
/dev/sda9 10457 30401 160208181 7 HPFS/NTFS

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: Device or resource busy。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。