fallocate vs dd para swapfile?

10

Eu estou querendo saber qual é a diferença entre criar um swapfile com

fallocate -l 1G /swapfile

e

dd if=/dev/zero of=/swapfile bs=1024 count=1024

ambos parecem funcionar bem, mas um tem uma vantagem sobre o outro?

A única coisa que pude encontrar on-line foi que fallocate não funciona em todos os sistemas de arquivos.

    
por NerdOfLinux 19.03.2018 / 14:37

2 respostas

13

Em a mkswap manpage :

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.

E em a swapon manpage :

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.

Segue-se que, embora fallocate possa ser mais rápido que dd , não é adequado para criar arquivos de troca e não é suportado por ferramentas relacionadas a troca.

    
por muru 19.03.2018 / 14:48
2

Fallocate é mais rápido, da página de manual do fallocate:

fallocate é usado para manipular o espaço em disco alocado para um arquivo, quer desalocá-lo ou pré-alocá-lo. Para sistemas de arquivos que suportam a chamada do sistema fallocate, a pré-alocação é feita rapidamente alocando blocos e marcá-los como não inicializados, não exigindo IO para os dados blocos. Isso é muito mais rápido do que criar um arquivo preenchendo-o com zeros.

fallocate(1)

    
por stumblebee 19.03.2018 / 14:40