通过 resize2fs 扩展分区

sve*_*ven 4 storage linux partition sd-card resize2fs

我有一个 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
Run Code Online (Sandbox Code Playgroud)

我通过dd if=2gbsd-noeclipse-latest.dd of=/dev/sdb bs=4M conv=fsync. 的fdisk -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
Run Code Online (Sandbox Code Playgroud)

所以我有 2GB 没有使用。我想扩展sdb4以便我可以使用未包含的 2GB 空间。

所以我将未使用的空间计算为(7744512-3678207)*512= 2081948160 byteand 2081948160 / 1048576 = 1985.50048828 MB。所以粗略地我将扩展 1900 MB。我resize2fs过去常常这样做:

resize2fs /dev/sdb4 1900M
Run Code Online (Sandbox Code Playgroud)

然而,它输出

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

谁能告诉我我应该如何使用上面的命令或者我可以如何扩展sdb4

Hau*_*ing 5

您必须将块设备(此处/dev/sdb4:)的大小调整与文件系统的大小调整区分开来。文件系统可以比底层块设备小但不能大。

您应该备份分区表:

sfdisk -d /dev/sdb > ~/sfdisk_sdb.txt
Run Code Online (Sandbox Code Playgroud)

然后复制该文件并修改与此类似的行:

/dev/sdb4 : start=24260, size=3653948, Id= 83
Run Code Online (Sandbox Code Playgroud)

您希望该分区在设备的最后一个扇区结束(即 7744511;第一个扇区是 0 而不是 1)。大小是这个数字减去开始扇区加一(开始和结束扇区计数)。然后替换分区表:

sfdisk /dev/sdb <~/sfdisk_sdb.mod.txt
Run Code Online (Sandbox Code Playgroud)

之后,您可以在resize2fs没有大小参数的情况下使用。它将使用/dev/sdb4then的整个大小。您必须e2fsck -f /dev/sdb4在使用前立即运行resize2fs