仮想マシンのディスクサイズが増加しましたが、gdisk は新しい領域を使用しません

仮想マシンのディスクサイズが増加しましたが、gdisk は新しい領域を使用しません

/dev/sdb10G のサイズの仮想ディスク ( として表示) を持つ VM があります。

管理者は仮想ディスクのサイズを 60G に増やしました。

マシンを再起動すると、ディスクが大きくなっていることがわかりました。

root@DMZMHLX3:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
...
sdb      8:16   0   60G  0 disk 
└─sdb1   8:17   0   10G  0 part /app
...

ここで、別のパーティションを追加したいと思います。

gdisk は、ディスクのサイズが 60G であることを示していますが、最後の使用可能なセクターは、古い 10G ディスク イメージ サイズに対応するセクターです。

root@DMZMHLX3:~# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 125829120 sectors, 60.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): FCE659D1-3690-4C3C-93EC-79B51EE8556D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        20969471   10.0 GiB    8300  

最後に使用可能なセクターは 20971486 ではなく 125829120 のような値になります。

そのため、ディスク イメージのサイズが増加し、VM でその変更が認識されますが、新しく使用可能になったスペースをどのように使用すればよいかわかりません。

fdisk は次のように表示します:

root@DMZMHLX3:~# fdisk -l /dev/sdb
GPT PMBR size mismatch (20971519 != 125829119) will be corrected by w(rite).
Disk /dev/sdb: 60 GiB, 64424509440 bytes, 125829120 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: FCE659D1-3690-4C3C-93EC-79B51EE8556D

Device     Start      End  Sectors Size Type
/dev/sdb1   2048 20969471 20967424  10G Linux filesystem

不一致を認識します:

GPT PMBR サイズの不一致 (20971519 != 125829119) は w(rite) によって修正されます。ただし、fdisk への書き込みを試みると失敗します。

Command (m for help): w
GPT PMBR size mismatch (20971519 != 125829119) will be corrected by w(rite).
fdisk: failed to write disklabel: Invalid argument
root@xxx:~# 

この問題を解決するにはどうすればいいでしょうか?

最終的な目標は既存のパーティションのサイズを増やすことですが、新しいパーティションを追加できればそれで十分です。

答え1

によるパーティションのサイズ変更 fdisk が無効な引数で失敗する投稿では、あなたが使用しているようです別れた(例sudo parted -l)そしてそれを「修理「パーティション テーブルがディスク全体をカバーしていないなどの問題。

そのツールで修正を適用して問題を解決したら、コマンドを続行しsudo fdisk /dev/sdb1sudo resize2fs /dev/sdb1その後実行して変更を適用するだけです。

重要: ディスク パーティションを変更する前に、必ず完全なシステム バックアップを作成してください。

私はこれをかなり簡単に解決することができました。parted をインストールして実行すると、パーティション テーブルがディスク全体をカバーしていない (当然) というメッセージが表示され、修正/キャンセルを尋ねられたので、修正と答えました。

どうやら、これでうまくいったようで、 を使用してパーティションをフルサイズに変更できましたが、その後、変更を適用するには をsudo fdisk /dev/vda実行する必要がありました。sudo resize2fs /dev/vda3

ソース

さらに、他の人からのアドバイスもありますパーティションのサイズ変更 fdisk が無効な引数で失敗するあなたにとっても役に立つ、有益な回答やコメントの形で投稿してください。


サポートリソース

答え2

ポスト Linux で VMware ディスクのパーティションを拡張する この手順は次のとおりです。

  • parted を使用して GPT テーブルを修復します。sudo parted -l
  • これらのディスクにアクセスするすべてのサービスを停止し、ディスクをアンマウントします。例:

    sudo systemctl stop jenkins.service
    sudo systemctl stop apache2.service
    sudo umount /dev/sdb1
    

    この手順は、以下に説明するように、GParted ディスクから起動することで回避できます。

  • fdisk からパーティションを拡張します。sudo fdisk /dev/sdb


VM内からディスクを拡張するには、ディスクを使用している可能性のあるサービスを停止する必要があるため、VMを次のように起動することでこれを回避できます。 GParted

記事 GPartedを使用してLinuxネイティブパーティションのディスクサイズを増やす 全体の手順を詳細に説明します。

答え3

その理由は、GPT ではパーティション テーブルのバックアップ コピーがディスクの末尾に配置されるため、ディスクに「新しい末尾」があっても、バックアップは自動的にそこに移動せず、使用可能なブロックが古い「領域」に制限されるためです。

GPT を単に「消去」 (xそして)zgdisk、同じパーティション エントリ (同じ開始と、オプションで同じ終了を入力する) を持つ新しい GPT を作成できます。

UEFI ブートを実行している場合は、保持する必要のあるブート コードは存在しないため、保護 MBR も削除しても問題ありません。

x編集: 実際には、単にとe入力して を実行すればよいようですgdisk

関連情報