Filesystems

“fallocate”命令生成什麼樣的內容/數據?

  • March 31, 2022

何時執行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教程中沒有提到這一點。

交換文件不需要充滿零。核心跟踪正在使用的塊。

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

請注意,交換文件不得包含任何漏洞。使用cp(1)創建文件是不可接受的。fallocate(1)在支持預分配文件的文件系統(如 XFS 或 ext4)或寫時復製文件系統(如 btrfs)上也不使用。建議 在這些情況下使用dd(1)和 。在將交換文件添加到寫時復製文件系統之前,/dev/zero請閱讀注意事項。swapon(8)

(並非所有版本的手冊頁都包含該內容)

進一步swapon說:

核心中的交換文件實現期望能夠直接寫入文件,而無需文件系統的幫助。這是 fallocate(1)XFS 或 ext4 等文件系統上的預分配文件(例如 )和 btrfs 等寫時復製文件系統上的問題。

手冊頁的另一個版本說

根據文件系統,由創建的預分配文件fallocate(1)也可能被解釋為帶有漏洞的文件。自 Linux 4.18 起,XFS 支持預分配的交換文件。

所以關於你是否可以fallocate用來創建交換文件的問題很大程度上取決於你的核心和你的文件系統。

相比之下,一個簡單的dd就行了。

引用自:https://unix.stackexchange.com/questions/697423