再起動せずに新しいfdiskテーブルを使用するにはどうすればよいですか(kpartx)?


11

fdiskを実行してパーティションのサイズを変更すると、fdiskの出力の最後に次のように表示されます。

The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)

再起動せずにそれを実行したい(そしてそれを実行するスクリプトを作成したい)kpartxを使用してこれを正しく行うにはどうすればよいですか?私はもう試した:

kpartx -f -v /dev/mmcblk0

どの出力:

mmcblk0p1 : 0 102400 /dev/mmcblk0 2048
mmcblk0p2 : 0 7657472 /dev/mmcblk0 104448

そして:

kpartx -a -v /dev/mmcblk0

出力:

device-mapper: reload ioctl on mmcblk0p1 failed: Invalid argument
create/reload failed on mmcblk0p1
add map mmcblk0p1 (0:0): 0 102400 linear /dev/mmcblk0 2048
device-mapper: reload ioctl on mmcblk0p2 failed: Invalid argument
create/reload failed on mmcblk0p2
add map mmcblk0p2 (0:0): 0 7657472 linear /dev/mmcblk0 104448

これは、Debianを実行しているraspiのSDカード用です。

編集:私がやろうとしていることを明確にするため。SDカードから未使用のp3を削除し、p2をサイズ変更してカードを埋めます。カードには現在小さなブートパーティションp1が含まれており、p2はOSが置かれている場所です。


SDカードは現在使用されていますか?(たとえば、ファイルシステムがマウントされていますか?)
derobert

@derobert、そうです。これには2つのパーティションがあります。小さなブートパーティションと、OSの大部分が配置される大きなメインパーティションです。カードを埋めるために2番目のパーティションを拡張しようとしています。
タコ

2
私はそれが答えだと確信しています—あなたはできません。デバイスが使用されていない限り、カーネルはパーティションテーブルを再読み込みしません...
derobert

DOESのpartprobeヘルプ?
Gilles「SO-邪悪なこと

回答:


7

必要partx -uではありませんkpartx(デバイスマッパーデバイスで動作します)。


-uフラグの目的は何ですか?
IgorGanapolsky 2016年

1
@IgorGanapolsky、カーネルパーティションテーブルを更新して、ディスク上のと一致させます。簡単man partxにこれに答えたでしょう。
psusi 2017年

@タコこれは私のためにそれをしました、partprobeはしませんでした。その後、Partprobeはそのエラーなしで戻りました。
Duncan X Simpson

6

@derobert(元の質問にコメントした人)はおそらく正しいと思います。現在使用されているパーティションをfdiskする場合、再起動する以外に選択肢がないようです。

partprobe(で取得したapt-get install parted)を使用しても、次の出力が得られます。

Error: Partition(s) 2, 3 on /dev/mmcblk0 have been written, but we have 
been unable to inform the kernel of the change, probably because it/they 
are in use.  As a result, the old partition(s) will remain in use.  You 
should reboot now before making further changes.

私は同じことをしました、良いニュースは、アンマウントして、partprobe <device>を実行し、再起動せずに両方のパーティションを再マウントできたことです。残念ながら、サービスをシャットダウンしたため、依然としてダウンタイムが必要でした。
Rahly

3
parted/の最新バージョンでpartprobeは、このようなエラーは発生せず、再起動せずにマウントされたパーティションで使用できます。
psusi

@psusi、私は最近のバージョンを使用してpartedいますが、それでも同じエラーが発生します。解決策は、デバイスで実行する前にデバイスをアンマウントするpartedことです。古いパーティションの代わりに新しいパーティションを使用するようにカーネルに通知するためにシステムを再起動する必要はありません
MyWrathAcademia

1

デバイスをアンマウントするのを忘れたため、この問題が発生していました。後:

sudo umount /dev/sdb

fdiskは正しく動作しました。


1
それでもエラーが発生する:ioctl()を呼び出してパーティションテーブルを再度読み取ります。パーティションテーブルの再読み取りに失敗しました。:デバイスまたはリソースがビジーです
IgorGanapolsky 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.