Samba unter Linux einrichten

Wir wollen unter Linux eine Freigabe für Dateien einrichten, damit von Windows oder Linux daraug zugeriffen werden kann.

Dafür brauchen wir den Samba Server, welchen wir zuerst installieren müssen.

sudo apt install samba

Wir richten den Benutzer „Otto“ ein, welche Teil der Gruppe „sambashare“ wird, sich aber nicht an dem Linux anmelden darf. Ein Home-Verzeichnis (/home/otto) braucht der Benutzer nicht. Diese Verzeichnis legen wir auf seine zukünftiges Freigabeverzeichnis.

sudo useradd -M -d /mnt/data/nas -s /usr/sbin/nologin -G sambashare otto

Damit der Benutzer „Otto“ auf seine Freigabe zugreifen kann, müssen wir noch ein Kennwort vergeben. Der Benutzer muss in Linux hinterlegt sein, sonst gibt es jetzt einen Fehler.

sudo smbpasswd -a otto

Die Freigabe mit dem Namen „nas“ für Benutzer „Otto“ und Gruppe „sambashare“ auf Verzeichnis „/mnt/data/nas“ wird in der Datei „smb.conf“ hinzugefügt.

sudo vim /etc/samba/smb.conf

[nas]
comment = NAS black box
path = /mnt/data/nas
read only = no
browsable = yes
force create mode = 0600
force directory mode = 0700
valid users = otto @sambashare

Nun noch ein Neustart der Samba Dienste „smbd“ und Netbios Dienste „nmbd“.

sudo systemctl restart smbd nmbd

Weiterlesen

BtrFS – Erste Schritte

Btrfs (B-tree FS) ist ein neuen Dateisystem für Linux und möchte den gleichen Funktionsumfang wie ZFS bieten. Ein Vorteil von Btrfs ist, dass es Teil jedes aktuellen Linux Kernel ist. Ziel ist es, einen Überblick der wichtigen Kommandos zu erhalten.

sudo apt install btrfs-tools

RAID 1 (Spieglung) ist mit Btrfs sehr einfach möglich. Man gibt einfach die Partitionen der Festplatten (sdb1,sdc1) an.

sudo mkfs.btrfs -m raid1 -d raid1 -L "BTRFS_RAID" /dev/sdb1 /dev/sdc1

Damit ist die Spieglung der Festplatten erstellt. Die BlockID kann man sich mit ganz einfach anzeigen lassen.

sudo blkid

Die UUID von dem RAID1 tragen wir in die Startdatei ein.

sudoedit /etc/fstab

UUID=2f633613-45b4-36cf-b4be-90a1748f4753   /mnt/data   btrfs  defaults,subvol=/,compress,autodefrag,inode_cache   0  0

Weiterlesen

High Availability Storage GlusterFS

Mit GlusterFS kann man einen Hochverfügbaren Speicher aufbauen. Für den Versuch brauchen wir drei Server mit Ubuntu 18.04 (bionic). Ubuntu ist auf Laufwerk /dev/sda1 installiert und eine Datenpartition /dev/sdb1.

Wir erstellen eine GPT Partitionstabelle.

sudo parted /dev/sdb mklabel gpt

Legen ein Primäre Patition an.

sudo parted -a opt /dev/sdb mkpart primary ext4 0% 100%

Formatieren diese mit dem Dateisystem Ext4.

sudo mkfs.ext4 /dev/sdb1

Legen zwei Verzeichnisse an.

sudo mkdir /mnt/{data,gluster}

Fügen den Mount hinzu.

echo "/dev/sdb1 /mnt/data ext4 defaults 0 0" | sudo tee -a /etc/fstab

Unsere drei Server können wir in der Hosts Datei hinterlegen.

sudoedit /etc/hosts

192.168.56.101	hostA
192.168.56.102	hostB
192.168.56.103	hostC

Weiterlesen

DRBD – Distributed Replicated Block Device

Das Distributed Replicated Block Device (DRBD) ist ein verteiltes Blockdevice mit Spiegelung (RAID1) auf zwei unterschiedliche Server. Für die Installation verwenden wir zwei Server (hostA,hostB) mit Ubuntu 18.04 (bionic) auf Laufwerk (/dev/sda1) und einer Datenplatte (/dev/sdb1).

Wir setzten jeweil den Hostnamen auf hostA und hostB.

echo 'hostA' |sudo tee /etc/hostname

Wir können die Hostnamen auf beiden Servern hinterlegen.

sudo vim /etc/hosts

192.168.56.104 hostA
192.168.56.109 hostB

Die Installation von DRBD ist einfach.

sudo apt-get install drbd-utils

Jetzt sollen wir das Kernel Modul laden.

sudo modprobe drbd

Das DRBD Modul sollte erfolgreich geladen sein.

lsmod |grep drbd

Nach einem Neustart soll das Modul automatisch geladen werden.

echo 'drbd' | sudo tee -a /etc/modules

Beispiele für die Konfiguration liegen hier:

– /etc/drbd.d/global_common.conf
– /usr/share/doc/drbd-utils/examples/drbd.conf.example.gz

Weiterlesen

Docker mit Cockpit steuern

Mit dem Cockpit hat man die Möglichkeit, die Auslastung eines Server zu prüfen. Über zusätzliche Module kann man auch Docker steuern.

Der Cockpit ist Teil von Ubuntu 18.04 (bionic).

sudo apt install -t bionic-backports cockpit cockpit-docker

Damit der Benutzer „USER“ auch Zugriff auf Docker erhält, muss er in die Gruppe von Docker hinzugefügt werden.

sudo usermod -aG docker USER

Der Zugriff auf das Cockpit erfolgt per Internet unter Port 9090.

http://localhost:9090/

Quelle: UbuntuBackports

Docker mit Proxy

Kommt Docker in einer Umgebung mit HTTP Proxy Server zum Einsatz, so muss der Proxy vor dem Start von Docker in den Umgebungsvariablen gesetzt werden.

Dazu erweitern wir Systemd von Docker um ein Drop-In.

Wir legen ein Verzeichnis an in dem das Drop-In hinterlegt werden soll.

sudo mkdir /etc/systemd/system/docker.service.d

Wir erzeugen eine Drop-In für die Proxy Einstellungen.

sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

[Service]
Environment="HTTP_PROXY=http://otto:pass123@proxy-server:8080/"

Der Aufbau von der Proxy URL lautet http://[user]:[password]@[hostname]:[port]/.

Diese Werte können gesetzt werden.

HTTP_PROXY „http://127.0.0.1:8080“
HTTPS_PROXY „https://127.0.0.1:8080“
NO_PROXY „*.test.example,*.example“

Festplatte kopieren

Aktuelle Festplatten haben einen Selbstmonitoring (S.M.A.R.T) eingebaut. Mit den SMART-Tools kann man die Informationen abfragen.

sudo apt install smartmontools

Nach der Installtion können wir die akutellen Werte von SMART abfragen.

sudo smartctl -A /dev/sda

Meine Festplatte zeigt an, das es zu einem Fehler kommen wird. So ein Hinweis sollte ein Weckruf sein. Es wird höchste Zeit, die Festplatte zu gegen ein neueres Modell zu tauschen.

Wenn man eine Festplatte kopieren möchte, kann man natürlich dd if=/dev/sda of=/dev/sdb verwenden. Besser geht es mit dem Programm ddrescue.

sudo apt install ddrescue

Wir kopieren von der Quelle /dev/sda auf das Ziel /dev/sdb.

sudo ddrescue /dev/sda /dev/sdb

Quellen: SMART Wiki, Wiki gddrescue

Ungenutzte Pakete entfernen

Über die Zeit können sich unter Ubuntu einige überflüssige Paket ansammeln. Mit dem Programm Deborphan kann man die verweisten Bibliotheken anzeigen.

Die Installation ist mit einem Kommando erledigt.

sudo apt install deborphan

Mit dem Aufruf werden alle Paket ohne Verwendung angezeigt.

deborphan

Es gibt auch ein Programm zu Löschung dieser Pakete.

sudo orphaner

Kernel Module entfernen und RAM sparen

Mit einer kleinen Änderung kann man „etwas“ Speicher einsparen. Wer einen Raspberry Pi mit dem Ubuntu Image betreibt, kann ein paar Megabyte RAM sparen. Im normalen Betrieb von Ubuntu spiel diese Änderung keine Rolle.

In der Datei initramfs.conf wird einen Wert geändert.

sudo vim /etc/initramfs-tools/initramfs.conf

Den Defaultwert wird von MODULES=most in MODULES=dep geändert.

Anschließend wird ein Update des initramfs-Image erstellt.

Wir können es für den aktuellen Kernel erstellen.

sudo update-initramfs -u

Oder für alle vorhandenen Kernel ein neues Image erstellen.

sudo update-initramfs -uk 'all'

Nach einem Neustart werden nur alle notwendigen Kernel Module geladen.

Ubuntu Mainline Kernel 5.0.4 installation

Für Ubuntu gibt es die aktuellen Kernel als Package. Wir wollen den aktuellen Kernel 5.0.4 auf einem Xenial Xerus (Ubuntu 16.04) mit 64 Bit CPU installieren. Im Verzeichnis von Ubuntu finden wir weitere Plattformen (AMD64, i386, armhf, arm64, usw).

Für die Installion brauchen wir die Pakete für den Kernel (linux-image-unsigned) und die Modulle (linux-modules).

Mit diesem Script installieren wir Kernel 5.0.4 auf einem Ubuntu mit 64Bit CPU.

#!/bin/sh
URL=https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.0.4/
KERNEL=linux-image-unsigned-5.0.4-050004-generic_5.0.4-050004.201903231634_amd64.deb
MODULES=linux-modules-5.0.4-050004-generic_5.0.4-050004.201903231634_amd64.deb
 
wget -P /tmp $URL/$MODULES
wget -P /tmp $URL/$KERNEL
 
sudo dpkg -i /tmp/$MODULES
sudo dpkg -i /tmp/$KERNEL

Nach dem Neustart wird der Kernel 5.0.4 verwendet, obwohl Ubuntu 16.04 (LTS) nur den Kernel 4.15 (linux-generic) enthält. Achtung, der Mainline Kernel 5.0.4 erhält keine Sicherheitspatches. Die Portierung von Sicherheitspatches in Xenial erfolgt nur im offiziellen Kernel mit Long Term Support (LTS).

Quelle: Kernel Wiki, Mainline Kernel, Changelog Kernel 5.0