Debian 8でsfdiskを使用してパーティションを拡張しようとしています。次のコマンドを実行しています:
sfdisk -H 255 -S 63 --quiet --Linux --leave-last -uM --force --no-reread /dev/md1 -N4 < /tmp/abc
コマンドを実行すると、次のエラーが発生します。
Successfully wrote the new partition table
Re-reading the partition table ...
sfdisk: BLKRRPART: Device or resource busy
sfdisk: The command to re-read the partition table failed.
Run partprobe(8), kpartx(8) or reboot your system now,before using mkfs
sfdisk: If you created or changed a DOS partition, /dev/foo7, say, then use dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (See fdisk(8).)
--no-reread
について言及したのに、なぜ再読み取りが発生するのですか? util-linux2.25.2のsfdisk
でこれを実行しています。 sfdisk(util-linux-ng 2.17.2)からsfdisk
で同じコマンドを実行しても、このエラーは発生しません。このエラーの原因となっている2つの違いはありますか?
--no-reread
オプションは、デバイスが使用中であるかどうか(マウントまたはスワップなど)をチェックしないようにsfdisk
に指示します。
発生しているエラーは、パーティション情報が変更されたことをkernelに通知するsfdisk
からのものです。カーネルは「ねえ、このデバイスはすでに使用されています。新しいパーティションデータを読み取るつもりはありません」と応答しています。
そのため、パーティションデータのカーネルコピーは、ディスク上の実際のデータとは異なります。
--no-reread
がないと、sfdisk
ではパーティショニングをまったく実行できません。