首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"fallocate“命令生成什么样的内容/数据?

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

Unix & Linux用户
提问于 2022-03-31 00:18:30
回答 2查看 1.2K关注 0票数 0

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

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

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2022-03-31 01:10:43

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

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

请注意,交换文件不能包含任何漏洞。使用cp(1)创建文件是不可接受的。在支持预先分配的文件系统(如XFS或ext4 )上,或者在btrfs之类的复制写文件系统上,都不能使用fallocate(1)。建议在这些情况下使用dd(1)/dev/zero。在添加交换文件以复制写入文件系统之前,请阅读swapon(8)的说明。

(并非所有版本的手册都包括以下内容)

此外,swapon说:

内核中的交换文件实现希望能够直接写入文件,而无需文件系统的帮助。这是在诸如XFS或ext4之类的文件系统上预先分配的文件(如fallocate(1))和btrfs之类的复制到写文件系统上的一个问题。

另一个版本的手册上写着

根据文件系统的不同,fallocate(1)创建的预先分配的文件也可以解释为有漏洞的文件。从Linux4.18开始,XFS就支持预先分配的交换文件。

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

相比之下,一个简单的dd就可以工作了。

票数 3
EN

Unix & Linux用户

发布于 2022-03-31 03:02:56

有关fallocate适合交换文件创建的详细信息,请参阅D1

fallocate“创建”的数据而言,技术答案取决于所使用的文件系统,但结果始终是,当fallocate扩展文件的长度时,新分配的文件部分在读取时将产生零(尽管它可能不包含磁盘上的零)。这是在相关系统调用的文档中描述的:

在调用之前未包含数据的偏移量和len指定范围内的任何子区域都将初始化为零。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/697423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档