FreeBSD ZFS: Alle Snapshots eines zfs Filesystems löschen

Nutzt man automatisch erzeugte Snapshots mit ZFS kann es schon vorkommen, dass davon sehr viele entstehen. Aus diesem oder auch anderen Gründen kann es notwendig werden, alle Snapshots eines Filesystems zu löschen.
Wie geht man dabei vor? Es geht kompliziert und mit Shell-Zauberei (siehe meine Quelle) oder ganz einfach mit

zfs destroy -r tank/FILESYSTEM@%

Quelle: https://sysadminman.net/blog/2008/remove-all-zfs-snapshots-50

FreeBSD: Dateiduplikate finden

Beschreibung

Wie findet man in einem Filesystem bzw. einem oder mehreren Verzeichnissen Dateien, die nicht unbedingt den gleichen Namen tragen oder im selben Verzeichnis liegen?

Hier kann das Tool fdupes (fdupes in der Wikipedia.org) helfen. Dieses existiert sowohl für FreeBSD, als auch für Linux. Das Tool bietet noch ein paar Besonderheiten:

  • Es vergleicht Dateien nicht nur anhand der Größe, sondern bildet über die Datei eine Checksumme und vergleicht diese. Anschließend erfolgt ein byte-to-byte Vergleich
  • Suchergebnisse können aufgelistet oder auch gleich gelöscht werden
  • Es besteht auch die Möglichkeit,  Duplikate per Hardlink (Hardlink in der Wikipedia.de) auf nur eine existierende Datei zu verlinken (Notwendig ist Option „-L“, welche ich nur unter Debian gefunden habe)

Installation

Unter FreeBSD kann es entweder mittels pkg oder über die Ports Collection (/usr/ports/sysutils/fdupes) installiert werden:

PKG: pkg install fdupes
PORTS: cd /usr/ports/sysutils/fdupes && make install clean

Anwendung

Als Beispiel nehme ich das Verzeichnis /usr/ports/lang auf einem FreeBSD System und wende die Parameter -r (rekursiv), -S (zeige Dateigröße) und -n (keine leeren Dateien) auf das aktuelle Verzeichnis (./) an:

root@bsd:/usr/ports/lang/ > fdupes -r -S -n ./
6308 bytes each:
./php5/files/extra-patch-php-fpm-ipv6
./php55/files/extra-patch-php-fpm-ipv6
./php56/files/extra-patch-php-fpm-ipv6

915 bytes each:
./pypy/files/patch-lib-python__2.7__distutils__sysconfig_pypy.py
./pypy-devel/files/patch-lib-python__2.7__distutils__sysconfig_pypy.py

1691 bytes each:
./pypy/files/patch-lib-python__2.7__distutils__command__install.py
./pypy-devel/files/patch-lib-python__2.7__distutils__command__install.py

178 bytes each:
./php52-extensions/pkg-descr
./php53-extensions/pkg-descr
./php5-extensions/pkg-descr

Zu erkennen ist, dass es in unterschiedlichen Verzeichnissen Dateien mit gleicher Größe und in diesem Fall mit gleichem Namen gibt.
Vergleicht man nun den Dateiinhalt (von Textdateien) miteinander, kann man verifizieren, ob es sich tatsächlich um die gleichen Files handelt:

root@bsd:/usr/ports/lang/ > diff -y --suppress-common-lines ./php55/pkg-message.mod ./php56/pkg-message.mod
root@bsd:/usr/ports/lang/ >

Diff wird mit den Parametern -y (zwei Spalten) und –suppress-common-lines (unterdrücke gleiche Inhalte) aufgerufen. Das Ergebnis des Vergleiches mit DIFF ist, dass es keine Unterschiede gibt.

 

Natürlich gibt es noch mehr Parameter, mit denen man fdupes aufrufen kann.

 

Was kann man nun damit machen?

Ein schönes Beispiel ist z. B. Backup mit fdupes und rsync (http://krausens-online.de/fdupes-hardlinks-und-backup-mit-rsync/).
Oder man sucht einfach nur nach gleichen Dateien.

Shell: Leere Zeilen bei der Suche mit grep weg lassen

Dateien mit grep durchsuchen und dabei leere Zeilen weg lassen.

Manchmal ist es so einfach: Wie kann ich eine Datei, die viele mit „#“ kommentierte Zeilen hat, so ausgeben, dass nur die unkommentierten Zeilen ausgegeben werden?

grep -v ^# DATEINAME

Damit werden allerdings alle Zeilen mit „#“ am Anfang als leere Zeilen mit ausgegeben. Um dies zu verhindern kann man den Befehl noch erweitern:

grep -v ^# DATEINAME | grep -v ^$

FreeBSD: PlexMediaServer aus Ports installieren

Kurzbeschreibung, wie man den PlexMediaServer auf einem FreeBSD System aus der Ports Collection heraus installieren kann.

Seit kurzem gibt es den PlexMediaServer auch über die Ports Collection von FreeBSD. Diese Art der Installation ist bei weitem einfacher, als über ein Archiv aus evtl. unbekannten Quellen. Sicherlicht ist Plex auch unter Windows und Linux lauffähig und noch einfacher zu installieren, aber wie greift man dann auf ein ZFS Dateisystem zu? 😉

PlexMediaServer ist unter /usr/ports/multimedia/plexmediaserver zu finden. Ist das nicht der Fall, kann mittels „portsnap fetch extraxt“ die lokale Ports Collection auf den neuesten Stand gebracht werden.

Die Installation des PlexMediaServers ist dann recht einfach:

cd /usr/ports/multimedia/plexmediaserver
make install clean

Damit wird zuerst die ca. 58MB große Installationsdatei „PlexMediaServer-0.9.8.10.215-020456b-freebsd-amd64.tar.bz2“ heruntergeladen und danach installiert.

Um Plex dann zum ersten Mal zu starten und den Service auch nach einem Reboot automatisch wieder zur Verfügung zu haben, muss noch die Datei /etc/rc.conf angepasst werden:

echo "enable_plexmediaserver=YES" >> /etc/rc.conf

Jetzt könnte man einen Reboot des Systems durchführen oder den Service manuell starten:

/usr/local/etc/rc.d/plexmediaserver start

Der Zugriff über die WebUI geht dann über http://<Adresse-des-Rechners>:32400/web

Sollte die Datei mittels „make install clean“ nicht vollständig geladen werden können, gibt es noch die Möglichkeit, über die Plex Download Webseite  die Datei manuell zu holen und in das Verzeichnis „/usr/ports/distfiles/“ zu speichern. Danach kann wieder im Verzeichnis „/usr/ports/multimedia/plexmediaserver“ mittels „make install clean“ die Installation erneut gestartet werden. Der Download entfällt und die Datei aus dem disfiles Verzeichnis wird verwendet.

Hier noch der direkte Downloadlink:

http://downloads.plexapp.com/plex-media-server/0.9.8.10.215-020456b/PlexMediaServer-0.9.8.10.215-020456b-freebsd-amd64.tar.bz2

FreeBSD: VMWARE-Tools in einer virtuellen FreeBSD Maschine installieren

Kurze Beschreibung, wie die VMware-Tools in einer virtuellen FreeBSD Maschine installiert werden können.

Die VMWARE Tools sind notwendig, um die ideale Leistung aus einer virtuellen Maschine herauszuholen. Dazu gehören auch noch erweitere Möglichkeiten, die virtuellen Maschinen eines ESX Servers zu steuern, zu überwachen und zu verwalten.

Unter Windows startet die Installation der Tools automatisch, sobald man die Installation der Tools aufruft. Unter FreeBSD ist es nicht ganz so komfortabel. Hier die notwendigen Schritte, um die Tools zum Laufen zu bekommen:

  1. Die Installation der Tools starten
  2. Die Datei “ vmware-freebsd-tools.tar.gz“ in ein lokales Verzeichnis kopieren, beispielsweise /tmp
  3. Folgender Befehl entpackt die Datei: „tar zxpf /cdrom/vmware-freebsd-tools.tar.gz“
  4. Ins neue Verzeichnis wechseln „cd vmware-tools-distrib“
  5. Den Installer aufrufen „./vmware-install.pl“
    !! Wie die Endung „.pl“ zeigt, handelt es sich um ein Perl-Skript. Fehlt Perl auf dem System, kann es mit „pkg_add -rv perl“ sehr einfach nachgeholt werden!!
  6. Die folgenden Schritte können weitestgehend der Vorgabe entsprechend akzeptiert werden
    !! Ausnahme: Es könnte das Paket „compat6x-amd64“ fehlen, welches auch mit „pkg_add -rv compat6x-amd64“ installiert werden kann. Danach müsste der Installer der vmware-tools ernaut aufgerufen werden. !!
  7. Endet das Ganze mit folgender Ausgabe, ist alles prima 😉
Enjoy, 

--the VMware team

 

Meine Quelle: http://www.vmware.com/support/ws55/doc/ws_newguest_tools_freebsd.html

FreeBSD: CDROM Laufwerk mounten

Eine kurze Beschreibung, wie eine CD oder DVD unter FreeBSD auf der Kommandozeile eingebunden werden kann.

Egal ob am phy. Server oder in einer virtuellen Maschine, es wird immer wieder notwendig, an einem FreeBSD System eine CD oder DVD einzubinden um Daten von dort zu kopieren. Anders als unter Windows oder den grafischen Frontends wie Gnome muss auf der Kommandozeile das entsprechende Geräte manuell eingebunden werden (im Normalfall).

Um das CD/DVD Gerät herauszufinden:

# dmesg | egrep -i 'cd|dvd'

Eine mögliche Ausgabe in einer virtuellen Maschine unter VMWARE wäre:

$ dmesg | egrep -i 'cd|dvd'
cd0 at ata1 bus 0 scbus1 target 0 lun 0
cd0: <NECVMWar VMware IDE CDR10 1.00> Removable CD-ROM SCSI-0 device
cd0: 33.300MB/s transfers (UDMA2, ATAPI 12bytes, PIO 65534bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present

Hier ist das Gerät „cd0“ zu erkennen um das es geht. Mit folgendem Befehl lässt sich ein dort eingelegter Datenträger einbinden:

mount_cd9660 /dev/cd0 /cdrom     # Das Verzeichnis /cdrom muss natürlich existieren

Die Vorgehensweise ähnelt natürlich der unter Linux oder anderen *nix Systemen.

Meine Quelle: http://www.cyberciti.biz/faq/freebsd-accessing-the-cdrom-drive-from-the-command-line/

FreeBSD 9.0 erschienen

Free BSD ist in der Version 9.0 erschienen

Seit 12.01.2012 ist FreeBSD in der Version 9.0 erschienen -Link-

Einige der interessantesten Veränderungen sind sicher
– das Update auf ZFS Version 28, welches nun auch Deduplizierung unterstützt. Außerdem gibt es jetzt die Möglichkeit, einen ZFS Mirror gezielt aufzuspalten (split) und auch im Nachhinein aus einem einzelnen, nicht redundanten ZFS Volume ein RAIDZ zu basteln.
– Update auf NFS v4
– Der überarbeitete Installer

Erhältlich ist FreeBSD für alle relevanten Plattformen (x86 32bit und 64bit, PowerPC, Itanium ia64 und SPARC).

Mehr dazu auch:FreeBSD is a registered trademark of The FreeBSD Foundation. The FreeBSD logo and The Power to Serve are trademarks of The FreeBSD Foundation.

Wikipedia 

Offizielle Freebsd Release Notes 

– Ausgabe 01/2012 des BSD Magazine

 

Howto: FreeBSD mit ZFS und Verschlüsselung

Im Wiki auf BSDForen.de bin ich auf den Beitrag „ZFS (raidz), Geli und USB Boot“ gestoßen. Hier wird sehr gut und Schritt für Schritt erklärt, wie FreeBSD installiert werden kann, um von USB zu booten und wie man ZFS auf einem durchgehend verschlüsseltem System nutzen kann.

Hat mir sehr geholfen, die Eigenschaften von FreeBSD besser zu verstehen.