“fallocate”命令生成什么样的内容/数据?

Man*_*dan 1 filesystems swap dd hard-disk fallocate-command

当执行该sudo fallocate -l 2G /swapfile命令时,会创建 2 GB,但包含那种内容或数据?可以定制吗?如果是的话怎么办?我确实做了一些研究,但没有关于这方面的细节。我想知道是否有很好的fallocate用途swap file

例如,sudo dd if=/dev/zero of=/swapfile bs=1024 count=N创建填充零的数据,不确定是否swap file强制要求填充零的数据 - 在swap file教程中没有提到这一点。

Ste*_*ris 7

交换文件不需要全为零。内核跟踪正在使用的块。

但是,man mkswap可能会警告您不要使用fallocate

请注意,交换文件不得包含任何漏洞。使用cp(1)创建文件是不可接受的。fallocate(1)也不能在支持预分配文件的文件系统(例如 XFS 或 ext4)或写时复制文件系统(例如 btrfs)上使用。在这些情况下建议使用 dd(1)and /dev/zeroswapon(8)请在将交换文件添加到写时复制文件系统之前阅读注释。

(并非所有版本的联机帮助页都包含该内容)

进一步swapon说:

内核中的交换文件实现期望能够直接写入文件,而不需要文件系统的帮助。fallocate(1)这是XFS 或 ext4 等文件系统上的预分配文件(例如 )以及 btrfs 等写时复制文件系统上的问题 。

手册页的另一个版本说

创建的预分配文件fallocate(1)也可能被解释为有漏洞的文件,具体取决于文件系统。自 Linux 4.18 起,XFS 支持预分配的交换文件。

因此,是否可以使用创建交换文件的问题fallocate很大程度上取决于您的内核和文件系统。

相比之下,简单的dd就可以了。