Stato nel 2019
Lo sviluppo di Btrfs e del kernel Linux ha reso la mia risposta originale obsoleta . Si prega di vedere quest'altra risposta.
Risposta originale del 2016
Dalle domande frequenti su btrfs:
btrfs supporta i file di scambio?Attualmente no. La semplice creazione di un file NOCOW non aiuta, il supporto del file di scambio si basa su una funzione che btrfs non implementa intenzionalmente a causa di potenziali corruzioni. (...) Una soluzione alternativa, anche se con scarse prestazioni, è montare un file di scambio tramite un dispositivo di loop.
Quindi non esiste ancora un buon modo per creare un file di scambio sulla partizione btrfs.
Come accennato in precedenza, a partire da Linux 5.0 è ora possibile creare file di scambio su BTRFS. Ma dovrebbero essere non compressi e NoCOW. Ecco come si crea effettivamente un file del genere:
- Crea un file vuoto:
touch /swap
- Usa
chattr
per impostareNoCOW
attributo ad esso:chattr +C /swap
- Verifica che
C
attributo apparso:lsattr /swap
- Compila:
dd if=/dev/zero of=/swap bs=1M count=1024
# per 1 gigabyte mkswap /swap && chmod 600 /swap && swapon /swap
In alternativa, puoi creare una directory, imposta chattr +C
in quella directory e quindi creare un file di scambio sotto di essa.
Nota che non puoi eseguire chattr +C
a un file non vuoto già esistente. È documentato come comportamento indefinito (in realtà semplicemente non cambia gli attributi). Quindi dovresti creare un file vuoto e poi chattr
o crea una directory con chattr
e quindi creare un file al suo interno (in tal caso tutti i file creati dopo chattr
ing la directory avrà l'attributo nocow).
Avvertenza: come accennato, ciò richiede la versione del kernel 5.0 o successiva. Raspberry Pi, ad esempio, utilizza i kernel 4.19.*, quindi non potrai utilizzare questa tecnica su di esso.
Il supporto per i file di scambio è stato aggiunto alla versione 5.0 del kernel, come si può vedere su commit https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed46ff3d423780fa5173b38a844bf0fdb210a2a7Per attivare lo scambio file su btrfs, il file deve essere completamente allocato come NOCOW senza compressione su un dispositivo.