Linux

通過 resize2fs 擴展分區

  • May 16, 2013

我有一張 4 GB 的 SD 卡。圖片載入前

root@ubuntu# fdisk -l
Disk /dev/sdb: 3965 MB, 3965190144 bytes
49 heads, 48 sectors/track, 3292 cylinders, total 7744512 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
Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            8192     7744511     3868160    b  W95 FAT32

我將 2gb SD 圖像載入到卡上dd if=2gbsd-noeclipse-latest.dd of=/dev/sdb bs=4M conv=fsyncfdisk -l輸出:

root@ubuntu# fdisk -l
Disk /dev/sdb: 3965 MB, 3965190144 bytes
122 heads, 62 sectors/track, 1023 cylinders, total 7744512 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
Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       16063        8031+   b  W95 FAT32
/dev/sdb2           16064       20158        2047+  da  Non-FS data
/dev/sdb3           20162       24257        2048   da  Non-FS data
/dev/sdb4           24260     3678207     1826974   83  Linux

所以我有 2GB 沒有使用。我想擴展sdb4以便我可以使用未包含的 2GB 空間。

所以我將未使用的空間計算為(7744512-3678207)*512= 2081948160 byte2081948160 / 1048576 = 1985.50048828 MB。所以大致我將擴展 1900 MB。我曾經resize2fs這樣做:

resize2fs /dev/sdb4 1900M

但是,它輸出

resize2fs 1.42.5 (29-Jul-2012)
open: No such file or directory while opening /dev/sdb4

誰能告訴我應該如何使用上面的命令或者我可以如何擴展sdb4

您必須將塊設備的大小調整(此處/dev/sdb4為:)與文件系統的大小調整區分開來。文件系統可以小於但不能大於底層塊設備。

您應該備份分區表:

sfdisk -d /dev/sdb > ~/sfdisk_sdb.txt

然後,您製作該文件的副本並修改與此類似的行:

/dev/sdb4 : start=24260, size=3653948, Id= 83

您希望該分區在設備的最後一個扇區結束(即 7744511;第一個是 0 而不是 1)。大小是這個數字減去開始扇區加一(開始和結束扇區計數)。然後你替換分區表:

sfdisk /dev/sdb <~/sfdisk_sdb.mod.txt

之後,您可以在resize2fs沒有大小參數的情況下使用。它將使用/dev/sdb4then 的整個大小。您必須e2fsck -f /dev/sdb4在使用前立即執行resize2fs

引用自:https://unix.stackexchange.com/questions/76101