Stand 2019
Die Entwicklung von Btrfs und dem Linux-Kernel machte meine ursprüngliche Antwort obsolet . Bitte sehen Sie sich diese andere Antwort an.
Originalantwort von 2016
Aus btrfs-FAQ:
Unterstützt btrfs Auslagerungsdateien? Derzeit nein. Nur eine Datei NOCOW zu erstellen, hilft nicht, die Unterstützung für Auslagerungsdateien beruht auf einer Funktion, die btrfs aufgrund möglicher Beschädigungen absichtlich nicht implementiert. (...) Eine Problemumgehung, wenn auch mit schlechter Leistung, besteht darin, eine Auslagerungsdatei über ein Loop-Gerät einzuhängen.
Es gibt also noch keine gute Möglichkeit, eine Auslagerungsdatei auf einer btrfs-Partition zu erstellen.
Wie oben erwähnt, seit Linux 5.0 Es ist jetzt möglich, Auslagerungsdateien auf BTRFS zu erstellen. Aber sie sollten nicht komprimiert und NoCOW sein. So erstellen Sie eine solche Datei tatsächlich:
- Leere Datei erstellen:
touch /swap
- Verwenden Sie
chattr
umNoCOW
einzustellen Attribut dazu:chattr +C /swap
- Bestätigen Sie, dass
C
Attribut erschienen:lsattr /swap
- Ausfüllen:
dd if=/dev/zero of=/swap bs=1M count=1024
# für 1 Gigabyte mkswap /swap && chmod 600 /swap && swapon /swap
Alternativ können Sie ein Verzeichnis erstellen, setzen Sie chattr +C
in dieses Verzeichnis und erstellen Sie dann eine Auslagerungsdatei darunter.
Beachten Sie, dass Sie chattr +C
nicht ausführen können zu bereits vorhandener nicht leerer Datei. Es ist dokumentiert, dass es sich um ein undefiniertes Verhalten handelt (tatsächlich ändert es einfach keine Attribute). Sie sollten also entweder eine leere Datei erstellen und dann chattr
, oder erstellen Sie ein Verzeichnis mit chattr
und dann eine Datei darin erstellen (in diesem Fall alle Dateien, die nach chattr
erstellt wurden ing des Verzeichnisses wird das nocow-Attribut haben).
Vorsicht: Wie bereits erwähnt, erfordert dies die Kernel-Version 5.0 oder höher. Raspberry Pi verwendet zum Beispiel 4.19.*-Kernel, sodass Sie diese Technik darauf nicht anwenden können.
Unterstützung für Auslagerungsdateien wurde der Kernel-Version 5.0 hinzugefügt, wie unter Commit https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed46ff3d423780fa5173b38a844bf0fdb210a2a7 zu sehen ist Datei auf btrfs, Datei muss vollständig als NOCOW ohne Komprimierung auf einem Gerät zugewiesen werden.