我有一個虛擬機,其虛擬磁碟(顯示為/dev/sdb
)大小為 10G
管理員將虛擬磁碟的大小增加到 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
最後一個可用扇區應該類似於 125829120 而不是 20971486。
因此,儘管磁碟映像大小已增加並且虛擬機器看到了變化,但我不知道如何使用新的可用空間。
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/sdb1
命令,然後顯然運行sudo 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
由於從虛擬機器內擴大磁碟需要停止任何可能正在使用該磁碟的服務,因此可以透過使用以下命令啟動虛擬機器來避免這種情況 格帕特。
文章 使用 GParted 增加 Linux 本機分割區的磁碟大小 詳細描述了整個過程。
答案3
原因是GPT將分割表的備份副本放置在磁碟的末尾,因此即使磁碟有“新端”,備份也不會自動轉到它並將可用區塊限制為舊的區塊“區域”。
您可以簡單地“zap”(擦除)GPT(x
然後z
在 中gdisk
),然後建立具有相同分割區條目的新分割區(透過輸入相同的開頭和可選的相同結尾)。
如果您正在進行 UEFI 引導,那麼也可以刪除保護性 MBR,因為不應該保留任何引導程式碼。
編輯:實際上,您似乎可以簡單地x
然後e
在gdisk
.