我有一张 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=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
所以我有 2GB 未使用。我想扩展sdb4
以便可以使用不包含的 2GB 空间。
所以我将未使用的空间计算为(7744512-3678207)*512= 2081948160 byte
和2081948160 / 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
?
答案1
您必须区分块设备(此处:/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/sdb4
then 的整个大小。您必须e2fsck -f /dev/sdb4
在使用之前立即运行resize2fs
。