Я задаюсь вопросом, с чем различие между созданием своп-файла
fallocate -l 1G /swapfile
и
dd if=/dev/zero of=/swapfile bs=1024 count=1024
оба, кажется, хорошо работают, но каждый имеет преимущество перед другим?
Единственная вещь, которую я мог найти онлайн, была этим fallocate
не работает над всеми файловыми системами.
От mkswap
страница справочника:
Note that a swap file must not contain any holes. Using cp(1) to
create the file is not acceptable. Neither is use of fallocate(1) on
file systems that support preallocated files, such as XFS or ext4, or
on copy-on-write filesystems like btrfs. It is recommended to use
dd(1) and /dev/zero in these cases. Please read notes from swapon(8)
before adding a swap file to copy-on-write filesystems.
И от swapon
страница справочника:
You should not use swapon on a file with holes. This can be seen in
the system log as
swapon: swapfile has holes.
The swap file implementation in the kernel expects to be able to write
to the file directly, without the assistance of the filesystem. This
is a problem on preallocated files (e.g. fallocate(1)) on filesystems
like XFS or ext4, and on copy-on-write filesystems like btrfs.
Из этого следует, что, в то время как fallocate
может быть быстрее, чем dd
, это не подходит для создания файлов подкачки и не поддерживаемое связанными с подкачкой инструментами.
Fallocate быстрее Из fallocate страницы справочника:
fallocate используется, чтобы управлять выделенным дисковым пространством для файла, или освободить или предварительно выделить его. Для файловых систем, которые поддерживают fallocate системный вызов, предварительное выделение сделано быстро, выделив блоки и отметив их как неинициализированных, не требуя никакого IO к блокам данных. Это намного быстрее, чем создание файла путем заполнения его нулями.