如果已通过 fdisk 创建交换空间,为什么还需要 mkswap?

如果已通过 fdisk 创建交换空间,为什么还需要 mkswap?

我创建了一个名为 /dev/sda3 的分区作为交换分区,并通过 fdisk 将 ID 更改为 82(Linux Swap)。如果该分区被识别为交换分区(在 fdisk -l 和 blkid 的输出中看到),那么为什么我不能直接进入 swapon /dev/sda3?为什么我必须执行 mkswap /dev/sda3?还有一个问题,分区信息是独立于数据的吗?那么如果我通过 fdisk 更改文件系统类型,数据会受到影响吗?

fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008d6ed

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          32      256000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              32        1566    12317696   83  Linux
/dev/sda3            1566        2610     8390105   82  Linux swap / Solaris

黑子

/dev/sda3: LABEL="SWAP" UUID="63f1807e-7cc6-4339-92b2-b1958fcf285e" TYPE="swap"

答案1

fdisk 创建分区但不格式化它。在使用交换分区之前,您需要先对其进行格式化。这是通过 mkswap 完成的。

相同的规则适用于任何其他文件系统。使用前需要创建分区并格式化。

答案2

mkswap命令将一个标头(从 开始,0x400以便跳过任何磁盘标签等)写入交换分区或交换文件,以进行一些内务管理,如版本、最后一页等。它以魔术字符串SWAP-SPACESWAPSPACE2末尾将其标识为这样的。 (来源

它并没有真正格式化,就像文件系统分区一样,只是一个标头,然后是放置要换出的内存页面的空间。

相关内容