web-dev-qa-db-ja.com

無効な引数でパーティションfdiskのサイズ変更が失敗する

最近、ホストのコントロールパネルを使用して、VPSを50 GB SSDから300 GB SSDにサイズ変更しました。新しいパーティションをすべて使用できるように、fdiskでメインパーティションのサイズを変更しようとしています。ただし、fdiskを起動すると警告が表示されます。

GPT PMBR size mismatch (104857599 != 629145599) will be corrected by w(rite).
GPT PMBR size mismatch (104857599 != 629145599) will be corrected by w(rite).

50GBから300GBに変更したため、以前のサイズの6倍であることは明らかです。だから、私はヒントに従ってテーブルを書くことにしました...

Command (m for help): w
GPT PMBR size mismatch (104857599 != 629145599) will be corrected by w(rite).
fdisk: failed to write disklabel: Invalid argument

..機能しません。多くの検索クエリにもかかわらず、どこでエラーが発生するのかを見つけることができません。私はLVMを使用せず、パーティションテーブルは次のようになります。

Disk /dev/vda: 300 GiB, 322122547200 bytes, 629145600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 30D92031-0C13-42FF-AC16-D34F36DD3907

Device        Start       End  Sectors Size Type
/dev/vda1      2048     32767    30720  15M BIOS boot
/dev/vda2     32768  16809983 16777216   8G Linux swap
/dev/vda3  16809984 104857566 88047583  42G Linux filesystem

ディスクがそれを300GiBと表示しているため、サイズの変化を認識しています。

6
Bart Pelle

私はこれをかなり簡単に解決することができました。 partedをインストールしましたが、実行すると、パーティションテーブルがディスク全体をカバーしていないことが通知されたため、Fix/CancelFixと応答しました。どうやら、Sudo fdisk /dev/vdaを使用してパーティションをフルサイズに変更できるため、これでうまくいきましたが、その後、変更を適用するためにSudo resize2fs /dev/vda3を実行する必要がありました。

16
Bart Pelle

問題は、保護MBR(PMBR)が小さすぎることです。以下を使用して、保護MBRを変更できます。

  1. x追加機能
  2. M保護/ハイブリッドMBRに入るには
  3. pでは、保護MBRを表示できます)
  4. rメインメニューに戻ります(まだ保護MBRモードです!)
  5. dは、誤ったサイズの保護MBRパーティションを削除します
  6. n新しいパーティションを作成し、4xenter デフォルト設定(プライマリ、パーティション番号1、フルサイズ)を受け入れる
  7. タイプをGPTに変更するには、tおよびee
  8. x追加機能
  9. M保護/ハイブリッドMBRモードを終了するには
  10. rはメインメニューに戻ります(現在は再びGPTモードです)
  11. w書き込む

これで、GPT PMBRサイズの不一致を修正できました。

Disklabelの問題を修正するには、Oを使用してパーティションテーブルをダンプし、エクスポートされたスクリプトのla​​st-lbaをfdiskで報告されているディスクサイズからマイナス34(セカンダリGPTの場合)に変更する必要がありました。次に、Iを使用してスクリプトを再インポートしました。

2
falstaff

これは、GPTパーティションを拡大しようとしたときに私にとってうまくいきました。いつものように、パーティションテーブルを変更する場合、バックアップが予定どおりに機能しない場合に備えて、バックアップが不可欠です。

まず、すべてのfdiskが同じように作成されるわけではありません。 Ubuntu 18.04では、これは私が使用しているfdiskのバージョンです。

$ fdisk -v
fdisk from util-linux 2.31.1

Fdiskを起動します。 'p'を使用してパーティションテーブルを印刷し、既存のパーティションテーブルがGPTであることを確認します。

Disklabel type: gpt

パーティション情報をコピーして別のウィンドウに貼り付けると、開始セクターがまったく同じパーティションを再作成できます。

「g」を押して、古いGPTパーティションテーブルを新しいGPTパーティションテーブルに置き換えます。

もう一度「p」を押して新しいテーブル情報を印刷し、大きいサイズが表示されることを確認します。

「n」を押してパーティションを再作成します。すべてのパーティションは、開始セクターと終了セクターがまったく同じである必要がある最後のパーティションを除いて、開始セクターと最終セクターがまったく同じで再作成する必要があります。

パーティションにファイルシステムがある場合は、次のように表示されます。

Partition #1 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: N

ファイルシステムの署名を保持したい場合は、「N」で応答します。

Fdiskプロンプトに戻り、もう一度「p」を入力してテーブルを調べ、すべてが正しく表示されていることを確認します。

変更を書き込む(コミットする)には「w」と入力します。

そこからfdiskを終了し、標準の手順に従ってファイルシステムのサイズを変更します(例:e2fsck -f、次にresize2fs(ext4の場合)。生のディスクイメージファイルで作業している場合(つまり、QEMUの場合)、kpartx -av disk.imgを実行して、パーティションのループデバイスを取得し、e2fsckおよびresize2fsこれらのループデバイス。

1
acker9

データを失うことがないように、「w」を押してパーティションテーブルに変更を書き込まずにパーティションvda3を削除してから、新しいセクターサイズでパーティションを再作成する必要がある場合があります。以下を実行する前に、パーティションをアンマウントしてe2fsckを実行する必要がある場合があります。

例:fdisk/dev/vda

Enter p
Delete the partition 'd' (Partition number is 3)'
Create new partition 'n'
Select the Start sector:
Select the end sector:(New Size)
Write the changes to the disk:
Update the partition table: (partprobe /dev/vda)
#resize2fs /dev/vda3
#mount the partition
1
ZVIK