Anmeldung

Benutzername: Passwort:
Haben Sie Ihre Zugangsdaten vergessen?


IT and more

Willkommen auf der IT Seite. 
Hier möchte ich einige Howtos, Anleitungen und andere IT-Relevante Dinge zum Download bereitstellen.

Bitte beim Download zur weiteren Verwendung aber auf das Copyright achten!

Bei weiteren Fragen könnt ihr mir auch eine Mail zukommen lassen.

Linux: Samba, BTRFS und Snapshots

Posted by Benjamin Wagner (benjamin) on Feb 16 2019

Samba, BTRFS und Shadow copies


Hallo, im folgenden Beitrag möchte ich kurz zeigen, wie man auf einem Linuxserver in einer Demoumgebung auf einer zusätzlichen Festplatte mit BTRFS Snapshots erstellt, und anschließend via Samba auch über Windows auf die Snapshots via "Vorgängerversionen" zugreifen kann.


Voraussetzung:
Aktuelles Windows (Getestet wurde mit Windows 7 x64)
Aktueller Kernel, der BTRFS unterstützt (Getestet wurde mit Debian 8 und Kernel 3.16.7)
installiertes und konfiguriertes Samba (Getestet wurde mit Samba 4.1.17)

Getestet wurde das ganze in einer virtuellen Maschine. Hier wurde ein Debian 8 auf einer ext4 Partition installiert.
Jetzt soll eine zusätzliche Festplatte eingebunden werden, und mit BTRFS und Samba den Usern zur Verfügung gestellt werden.

1.) vorbereiten der Festplatte

Als erstes wird der virtuellen Maschine eine zusätzliche virtuelle Festplatte hinzugefügt, für unsere Tests reichen 40 GB aus.
Danach wird das System gestartet, und als User root eingeloggt.

Anschließend wird überprüft, ob die neue Festplatte im system erkannt wird:

fdisk -l

Disk /dev/sdc: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


2.) Konfiguration von BTRFS

Zuerst muss btrfs installiert werden:
apt-get install btrfs-tools


Als user Root wird nun die neu hinzugefügte Festplatte mit dem btrfs-Dateisystem formatiert.
mkfs.btrfs /dev/sdc

In diesem Dateisystem soll nun ein erstes Subvolume erstellt werden, in welchen auch die eigentlichen Daten landen. Diese Daten

sollen später über den Mountpoint /samba/Filespace erreichbar sein, den wir auch noch anlegen:

Anlegen des Mountpoints
mkdir -p /samba/Filespace

Danach wird die neue Festplatte einmalig temporär im System unter /mnt eingebunden
mount /dev/sdc /mnt/

Hier erzeugen wir nun das erste Subvolumes
btrfs subvolume create /mnt/Filespace

Anschließend legen wir ein zusätzliches Subvolume für Snapshots an:
btrfs subvolume create /mnt/Filespace/.snapshots

Abschließend können wir die Partition wieder umounten:
umount /mnt

Damit nach einen Reboot die Partitionen automatisch eingebunden werden, müssen wir die /etc/fstab noch anpassen. Dazu benötigen wir noch die UUID der neuen Festplatte. Diese bekommen wir über den Befehl blkid heraus:

blkid /dev/sdc
/dev/sdc: UUID="e1b98619-41e4-4e32-b20b-181883221a98" UUID_SUB="0c0ea01a-77d2-4b26-b88e-d2fce305dce4" TYPE="btrfs"

Diese UUID fügen wir nun in die /etc/fstab hinzu, und definieren dabei, welchen subvolume in dieser Festplatte eingebunden werden soll:

/etc/fstab:
UUID=d69e6b68-6789-4cbe-9f20-fc27049ef457 /samba/Filespace btrfs subvol=Filespace 0 0
UUID=d69e6b68-6789-4cbe-9f20-fc27049ef457 /samba/Filespace/.snapshots  btrfs subvol=Filespace/.snapshots 0 0

Das ganze überprüfen durch ein manuelles mounten:
mount -a
mount

/dev/sdc on /samba/Filespace type btrfs (rw,relatime,space_cache)
/dev/sdc on /samba/Filespace/.snapshots type btrfs (rw,relatime,space_cache)

Damit haben wir nun ein Verzeichnis unter /samba/Filespace eingebunden.

3.) Konfiguration von Samba

Jetzt möchten wir Samba dazu bringen, diesen Ordner zu sharen, und auch die Snapshots als Vorgängerversion anzuzeigen. Dazu öffnen wir die /etc/samba/smb.conf, und fügen folgenden Block dazu:


[Samba-BTRFS-Test]
comment = Samba BTRFS test folder
path = /samba/Filesystem
vfs objects = shadow_copy2
shadow:format = @GMT_%Y.%m.%d-%H.%M.%S  
shadow:sort = desc
shadow:snapdir=.snapshots
writable = yes
browseable = yes
guest ok = yes

Für unsere Tests versehen wir den Folder /samba/Filespace noch mit *offeneren* Schreibrechten. In einem produktiven System muss hier natürlich auf die richtigen Sicherheitseinstellungen geachtet werden:
chmod 777 /samba/Filespace

Anschließend starten wir Samba neu:
/etc/init.d/samba restart

Über Samba ist der nun erstellte Ordner nun von Windows aus sichtbar. Wir können dort nun ein paar Testdateien, z.B. Textdateien anlegen.

Jetzt erstellen wir einen ersten Snapshot:
btrfs subvolume snapshot /samba/Filespace/ /samba/Filespace/.snapshots/@GMT_`date +%Y.%m.%d-%H.%M.%S`

Damit Windows die Snapshot erkennt, ist es notwendig, dass der Parameter shadow:format = @GMT_%Y.%m.%d-%H.%M.%S auch zu den erstellten snapshots passt.

Weitere Informationen zu den Namenskonventionen finden sich hier:
https://www.samba.org/samba/docs/man/manpages/vfs_shadow_copy2.8.html

Wenn wir nun in den oben erstellten Textdateien Änderungen vornehmen, können wir im Windows Explorer über Vorgängerverson die Textdatei zum Zeitpunkt des Snapshots anzeigen oder wiederherstellen lassen.

Last changed: Feb 16 2019 at 01:12

Back