Estado en 2019
El desarrollo de Btrfs y el kernel de Linux dejó mi respuesta original obsoleta . Por favor vea esta otra respuesta.
Respuesta original de 2016
De las preguntas frecuentes de btrfs:
¿Btrfs admite archivos de intercambio? Actualmente no. Simplemente hacer un archivo NOCOW no ayuda, el soporte de archivos de intercambio se basa en una función que btrfs no implementa intencionalmente debido a posibles corrupciones. (...) Una solución alternativa, aunque con bajo rendimiento, es montar un archivo de intercambio a través de un dispositivo de bucle.
Por lo tanto, todavía no hay una buena forma de crear un archivo de intercambio en la partición btrfs.
Como se mencionó anteriormente, desde Linux 5.0 ahora es posible crear archivos de intercambio en BTRFS. Pero deben estar sin comprimir y NoCOW. Así es como se crea realmente un archivo de este tipo:
- Cree un archivo vacío:
touch /swap
- Usar
chattr
para configurarNoCOW
atribuirle:chattr +C /swap
- Verifique que
C
apareció el atributo:lsattr /swap
- Llénalo:
dd if=/dev/zero of=/swap bs=1M count=1024
# por 1 gigabyte mkswap /swap && chmod 600 /swap && swapon /swap
Alternativamente, puede crear un directorio, configurar chattr +C
a ese directorio y luego cree un archivo de intercambio debajo de él.
Tenga en cuenta que no puede hacer chattr +C
a un archivo no vacío ya existente. Está documentado como un comportamiento indefinido (de hecho, simplemente no cambia los atributos). Por lo tanto, debe crear un archivo vacío y luego chattr
, o crea un directorio con chattr
y luego cree un archivo en él (en tal caso, todos los archivos creados después de chattr
abrir el directorio tendrá el atributo nocow).
Advertencia: como se mencionó, esto requiere la versión del kernel 5.0 o superior. Raspberry Pi, por ejemplo, usa kernels 4.19.*, por lo que no podrá usar esta técnica en él.
Se agregó compatibilidad con archivos de intercambio a la versión 5.0 del kernel, como se puede ver en la confirmación https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed46ff3d423780fa5173b38a844bf0fdb210a2a7Para activar el intercambio archivo en btrfs, el archivo debe estar completamente asignado como NOCOW sin compresión en un dispositivo.