Nur mv
es. Das ist der empfohlene Weg in der Ubuntu-Community-Dokumentation.
Und um weiter zu verdeutlichen, warum dies der richtige Weg ist, hier ein Zitat aus dem btrfs-Leitfaden für Systemadministratoren:
Schnappschüsse
Ein Snapshot ist einfach ein Subvolume, das seine Daten (und Metadaten) mit einem anderen Subvolume teilt, indem es die COW-Fähigkeiten von btrfs verwendet. Sobald ein [beschreibbarer] Snapshot erstellt wurde, gibt es keinen Unterschied im Status zwischen dem ursprünglichen Subvolume und dem neuen Snapshot-Subvolume. Um zu einem Snapshot zurückzukehren, unmounten Sie das geänderte ursprüngliche Subvolume und mounten Sie den Snapshot an seiner Stelle. An diesem Punkt kann das ursprüngliche Teilvolumen gelöscht werden, falls gewünscht. Da ein Snapshot ein Subvolume ist, sind auch Snapshots von Snapshots möglich.
Es gibt einige wichtige Dinge zu beachten. Die Namen:
btrfs Subvolume - unabhängiger Datencontainer inside
Dateisystem. Es wird als Verzeichnis dargestellt des bestehenden FS. Wenn Sie ein neues Subvolume erstellen, ist es leer und bereit, den logischen Datenblock im Dateisystem zu verwenden. Sehr praktisch dort, wo Daten logisch getrennt werden sollen, z. unterschiedliche VMs oder unterschiedliche Clients auf unterschiedlichen Subvolumes. Dies erlaubt very fast
Entfernung von alle logischer Datenblock mit nur dem Subvolume-Löschbefehl.
btrfs Snapshot - eine Kopie von existing
Subvolume mit all seinen Daten in dem Moment, in dem der Snapshot erstellt wurde. Kann als Betriebssicherung zum Zurücksetzen von Einstellungen oder Änderungen verwendet werden, z. Subvolume-Snapshot erstellen, Änderungen vornehmen (VM oder Daten), testen, ob alles in Ordnung ist, nach einer gewissen Frist Snapshot entfernen.Wichtig zu beachten:Snapshots können nur gelesen werden (-r
Schalter) und können somit als Inkrementblöcke von FS-Änderungen verwendet und möglicherweise auf ein absolut anderes BTRFS übertragen werden!
Aktuelle (2016-12-30) BTRFS-Einschränkungen:
Kopieren oder Verschieben von Daten zwischen Subvolumes, z. mv dir1/dataset1 dir_subvolume1/
erzeugt alle realen io, um Daten auf ein anderes Subvolume zu kopieren und im Falle einer Verschiebung vom Original zu entfernen. Und sehr Effizientes Kopieren von Tonnen von Daten durch einfaches Erstellen von Verweisen und somit Verwendung der COW-Funktion von BTRFS:
cp -a --reflink=always dir1/dataset1 dir_subvolume1/
und bei Bedarf:
rm -rf dir1/dataset1
Read only Subvolume-Snapshot kann umbenannt werden (verschoben mit mv
) auf der vorhandenen Verzeichnisebene, kann jedoch nicht umbenannt/in eine andere Unterverzeichnisebene verschoben werden. z.B. mv /btrfs/subvol_snap1 /btrfs/.snaphots
ist nicht möglich, erzeugt wenig erklärten Fehler:mv: cannot move 'subvol_snap1' to '.snapshots/subvol_snap1': Read-only file system
.Um einen solchen Snapshot verschieben zu können, müssen Sie einen neuen schreibgeschützten Snapshot eines vorhandenen schreibgeschützten Snapshots an den neuen bevorzugten Speicherort erstellen und dann den alten entfernen:
btrfs sub snap -r /btrfs/subvol_snap1 /btrfs/.snaphots/subvol_snap1
btrfs sub del /btrfs/subvol_snap1
Nur für einfacheres Leben:
btrfs sub list /btrfs
Ich hoffe, dass dies allen neuen btrfs-Fans jede Menge Zeit sparen wird :)
Wenn Sie das Root-Volume in ein verschachteltes Subvolume umbenennen möchten, müssen Sie einen Snapshot erstellen und dann find $ROOT_VOL -xdev -delete
ausführen um den vorherigen Inhalt des Root-Volumes zu entfernen. Die umgekehrte Manipulation (Umbenennung eines Subvolumes in das Root-Volume) scheint nicht möglich.