![如果已通过 fdisk 创建交换空间,为什么还需要 mkswap?](https://linux22.com/image/56739/%E5%A6%82%E6%9E%9C%E5%B7%B2%E9%80%9A%E8%BF%87%20fdisk%20%E5%88%9B%E5%BB%BA%E4%BA%A4%E6%8D%A2%E7%A9%BA%E9%97%B4%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%98%E9%9C%80%E8%A6%81%20mkswap%EF%BC%9F.png)
我创建了一个名为 /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-SPACE
或SWAPSPACE2
末尾将其标识为这样的。 (来源)
它并没有真正格式化,就像文件系统分区一样,只是一个标头,然后是放置要换出的内存页面的空间。