磁盘大小可变

磁盘大小可变

我正在向设备刷新新操作系统,但该过程完成后,我无法启动它。然后我检查了磁盘,发现了一些奇怪的事情。

不同的工具报告的磁盘大小不同,尽管其大小应该约为 120GB。

所以,我决定:

dd if=/dev/zero of=/dev/sda

但结果几乎是一样的。

lsblk

$ lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda            8:0    1 115.2G  0 disk
├─sda1         8:1    1   243M  0 part
└─sda2         8:2    1   2.2G  0 part

fdisk

$ fdisk -l /dev/sda
Disk /dev/sda: 7.66 GiB, 8225689600 bytes, 16065800 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: dos
Disk identifier: 0xaeaa381a

cfdisk

                          Disk: /dev/sda
        Size: 7.66 GiB, 8225689600 bytes, 16065800 sectors
                Label: dos, identifier: 0xaeaa381a

    Device      Boot   Start       End   Sectors   Size  Id Type
>>  Free space          2048  16065799  16063752   7.7G

我没有接触过硬件。所以磁盘可能仍然在~120G。

我应该怎么做才能收回可用空间?

答案1

通过“将新操作系统刷新到设备”,您的意思是写入完整的磁盘映像,包括分区表吗?

请注意,您dd if=/dev/zero of=/dev/sda当然应该覆盖 DOS 类型的分区表,但如果您之后没有触发磁盘重新扫描,系统仍将使用旧分区表中的信息。

由于缓存的分区表信息还包括创建映像的原始磁盘的大小,因此它会欺骗fdiskcfdisk工具。另一方面,lsusb查看磁盘的实际大小,忽略分区表中报告的总大小。

partprobe /dev/sda如果可用,请尝试,或者echo 1 > /sys/block/sda/device/rescan(两个命令都需要 root 权限)。

如果您需要非破坏性地更新现有分区表,例如在映像操作后识别磁盘的完整大小,那么该growpart工具可能是最简单的方法。

相关内容