Mount

Siehe auch

Zusammengefasst: Mounten heisst, ein externes Dateisystem in ein Verzeichnis des eigenen Dateisystems einzuhängen.

Ist das Dateisystem auf einer (entfernten) Platte oder Partition erstellt, muss es gemountet werden, um produktiv verwendet werden zu können. Dazu braucht man einen „Einhängepunkt“ (mount point), ein vorhandenes oder neu erstelltes Verzeichnis. Dort hängt man das Gerät in das Verzeichnis und damit in den gesamten lokalen Verzeichnisbaum ein. Der Ort des Verzeichnisses spielt keine Rolle, oft werden Mount Points aber unter /mnt erzeugt:

# create mount point
mkdir /mnt/backup
# link device to filesystem mount point
mount /dev/sdb3 /mnt/backup

Mit dem Befehl mount (ohne Parameter) wird eine Liste aller erfolgreichen Mounts ausgegeben - so überprüft man auch, ob der Mount geklappt hat. Das obige Verzeichnis /backup lässt sich jetzt wie alle anderen lokalen Verzeichnisse verwenden.

Wichtig: der gezeigte Mount wird einen Reboot nicht überleben, die Daten in der neuen Partition hingegen schon. Um /backup auch nach einem Neustart dauerhaft mit /dev/sdb3 zu verbinden, muss ein Eintrag in der Datei /etc/fstab hinzugefügt werden:

/dev/sdb3 /backup xfs defaults 0 0

Einträge in der /etc/fstab lassen sich mit

mount --all

aktivieren. Fehlerhaft spzifizierte Mounts werden dabei gleich aufgelistet.

Soll der Mount eines Dateisystems entfernt werden, benötigt man umount. Der Parameter --force forciert den Unmount bei einem nicht erreichbaren NFS-System; --lazy sorgt dafür, dass das Dateisystem sofort ausgehängt und alle Referenzen darauf aufgeräumt werden, sobald es nicht mehr verwendet wird.

Anbei zwei Beispiele mit dem gleichen Effekt:

umount /dev/sdb3
umount /backup

Mount per UUID

Geräteadressen wie /dev/sdc lassen sich genauer über eine UUID oder einen Namen (Label) adressieren. So wird die Partition sicher identifiziert, selbst wenn sich der Geräteadresse beim Startvorgang durch das Hinzufügen oder Entfernen von Platten oder Wechseldatenträgern ändern sollte. Um die UUID’s zu ermitteln, genügt die Ausführung des Kommandos

blkid

Nur die UUID einer Platte erhalten, ohne andere Ausgaben:

blkid --match-tag UUID --output value /dev/vdc

Gewünschte UUID kopieren, /etc/fstab öffnen, und dort z.B.

/dev/sdb /data xfs defaults 0 0

den Eintrag auf

UUID="4a438-4d3a-...bda377" /data xfs defaults 0 0

ändern. Wichtig: die UUID einer Partition ändert sich durch Neuformatierung.

Mount per Label (Ext)

Um ein Ext2/Ext3/Ext4-Dateisystem per Label zu mounten (was eine Alternative zum Mounting per UUID darstellt), muss man diesem zuerst einen Titel verpassen:

e2label /dev/sdb myssd

Der Eintrag in /etc/fstab ändert sich in

LABEL=myssd /home/root/ssd ext4 defaults 0 0

LVM-Mount

/etc/fstab
/dev/vg_backup/lv_daily /backup/daily xfs defaults 0 0
mkdir -p /backup/daily
mount --all
df -hT

Swap-Mount

mkswap /dev/vdc3
swapon /dev/vdc3
blkid /dev/vdc3
/etc/fstab
UUID="ab1PeU-...-OmKggh" swap swap defaults 0 0

NFS-Mount

Um die NFS-Freigabe /data auf dem Rechner fileserver in der aktuellen Session zu mounten, gibt man ein:

dnf -y install nfs-utils

Port 2049/tcp und 2049/udp zum NFS-Server hin öffnen.

Welche NFS-Exporte sind für den Client sichtbar?

showmount --exports fileserver

Das Mounting:

mkdir /mnt/nfs
mount --type nfs4 fileserver:/data /mnt/nfs
mount --type nfs4 --options port=2050 fileserver:/data /mnt/nfs

Der persistente Mount:

/etc/fstab
fileserver:/data /mnt/nfs nfs defaults 0 0
mkdir /mnt/nfs
mount --all
df -hT

Wenn möglich IP-Adressen statt der Hostnamen verwenden, um Problemen einer Namensauflösung von vornherein vorzubeugen.

Tipp

Wer auf dem Client die Meldung mount: wrong fs type, bad option, bad superblock …​ erhält, benötigt möglicherweise noch NFS-Komponenten, die sich mit dnf -y install nfs-utils nachinstallieren lassen.

NFS-Mount, Kerberos-abgesichert

dnf -y install nfs-utils
wget ‐‐output-document=/etc/krb5.keytab http://.../keytabs/client.keytab
systemctl enable --now nfs-secure

mkdir /mnt/nfssec
mount --options sec=krb5p fileserver:/data /mnt/nfssec

Der persistente Mount:

/etc/fstab
fileserver:/data /mnt/nfssec nfs defaults,sec=krb5p 0 0
mkdir /mnt/nfssec
mount --all
df -hT

NFS-Mount, Kerberos-abgesichert, SELinux

Der SELinux-Kontext eines NFS-Shares lässt sich nutzen, sobald der NFS-Server unter der Version 4.2 läuft. Dafür benötigt der Client eine spezielle Angabe in den Mount-Optionen:

dnf -y install nfs-utils
wget ‐‐output-document=/etc/krb5.keytab http://.../keytabs/client.keytab
systemctl enable --now nfs-secure

mkdir /mnt/nfssec
mount --options sec=krb5p,v4.2 fileserver:/data /mnt/nfssec

Der persistente Mount:

/etc/fstab
fileserver:/data /mnt/nfssec nfs defaults,sec=krb5p,v4.2 0 0
mkdir /mnt/nfssec
mount --all
df -hT

CIFS-Mount (Samba/SMB)

Tipp

Korrekt ist:

  • SMB (Server Message Block) ist das Protokoll

  • CIFS (Commin Internet File System) ist ein alter Dialekt von SMB

  • Samba ist die Linux/Unix-like Implementierung des SMB-Protokolls

dnf -y install samba-client cifs-utils

Ports: ausgehend SMB/445 tcp und netbios-ssn/139 tcp freigeben.

Die versteckte CIFS-/Windows-Freigabe company_files$ des Windows-Servers winserver mountet man in der aktuellen Session so:

mkdir /mnt/smb
mount --type cifs //winserver/company_files$ --options ver=1.0,username=myuser,password=mypassword /mnt/smb
/etc/fstab
//winserver/company_files$ /mnt/smb cifs vers=3.0,credentials=/root/.smb-passphrase 0 0

Mount als bestimmter Benutzer (hier: wildfly), nicht als root:

/etc/fstab
//winserver/company_files$ /mnt/smb cifs vers=3.0,uid=wildfly,credentials=/root/.smb-passphrase 0 0
/root/.smb-passphrase
username=myuser
password=mypassword
domain=XMPL
mkdir /mnt/smb
mount --all
df -hT

2017 hat Microsoft das Abschalten des SMBv1-Protokoll ermöglicht. Beim Mounten solcher Systeme erhält man die Meldung mount error(112): Host is down Refer to the mount.cifs(8) manual page (e.g. man mount.cifs). Der Test-Aufruf

smbclient --list --user=administrator --debuglevel=3

ergibt protocol negotiation failed: NT_STATUS_CONNECTION_RESET. Das Protokoll kann also nicht ausgehandelt werden, wir müssen durch Angabe der Protokollversion helfen.

smbclient --list --user=administrator --max-protocol=SMB2
smbclient --list --user=administrator --max-protocol=SMB3

Die Protokoll-Versionen:

  • vers=1.0 (default)

  • vers=2.0 (ab Win Vista / Srv 2008)

  • vers=2.1 (ab Win 7 / Srv 2008R2)

  • vers=3.0 (ab Win 8 / Srv 2012)

Ein Mount gegen einen Win Srv 2008 R2:

mkdir -p /mnt/smb
mount --type cifs '//winserver/e$' --options 'vers=2.1,username=administrator,password=password' /mnt/smb

Tipp

SMBClient:

  • Welche Shares werden angeboten? sudo smbclient --debuglevel=3 --max-protocol=SMB3 --user=user --list=netbios-name

  • Inhalt eines Shares anzeigen: sudo smbclient --debuglevel=3 --max-protocol=SMB3 --user=user //lf.ch/path (interaktive Shell), anschliessend ls etc.

  • Share nutzen: sudo smbclient --max-protocol=SMB3 --user=AxenitaShare_svc '//lf.ch/path/to/share' 'password'

  • Welche Dienste sind nutzbar? sudo smbclient --list --ip-address=192.0.2..12

NTFS-Mount

Siehe auch https://wiki.centos.org/de/TipsAndTricks/NTFS

# activate EPEL Repo
dnf -y install ntfs-3g
mount --type ntfs --options uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177 /dev/sda5 /mnt/ntfs

Der persistente Mount:

/etc/fstab
/dev/sda5 /mnt/ntfs ntfs uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177 0 0
mkdir /mnt/ntfs
mount --all
df -hT

NTFS-Partitionen eines Windows-Systems (z.B. Laufwerk C:) lassen sich nur mounten, wenn Windows die Partition in einem „safe“-Zustand hinterlässt - was bei einem Hibernate oder Fast Restart nicht der Fall ist.

iSCSI-Mount

/etc/fstab
/dev/iscsidisk /mnt/iscsi xfs _netdev 0 0
mkdir /mnt/iscsi
mount --all
df -hT

ISO-Mount, CD-ROM Mount

/etc/fstab
/path/to/my/file.iso /mnt/iso iso9660 defaults,loop 0 0
mkdir /mnt/iso
mount --all
df -hT

Mount eines CD-ROMs (/dev/sr0):

mkdir /mnt/iso
mount --type iso9660 /dev/sr0 /mnt/iso

SSHFS-Mount

Verzeichnisse lassen sich auch verschlüsselt und abhörsicher über SSH mounten. Alles, was dazu benötigt wird, ist das sshfs-Package. Auf dem Client installiert man:

# RHEL 7
yum -y install sshfs
# RHEL 8+
dnf -y install fuse-sshfs
mkdir /mnt/sshfs
# as root or as user (proper permissions needed)
sshfs username@remoteserver:/path/to/remote/dir /mnt/sshfs

Das Kommando verlangt nun das Passwort des Benutzers username, falls keine SSH-Zertifikate hinterlegt sind. Eine Passwortübergabe per Parameter kennt sshfs nicht. Falls nötig, behilft man sich in dem Fall so:

echo mypassword | sshfs username@remoteserver:/path/to/remote/dir /mnt/sshfs -o password_stdin

Eine Passwortübergabe in der /etc/fstab ist nicht möglich. Um einen automatisierten, persistenten Mount zu erreichen, muss mit einem Private-/Public SSH-Schlüsselpaar gearbeitet werden.

Wer den Zugriff auf den sshfs-Share auch für andere ausser root erlauben möchte:

/etc/fstab
root@server:/data /mnt/sshfs fuse.sshfs defaults,allow_other,_netdev 0 0

LUKS-Mount

Voraussetzung: die Festplatte/Partition ist bereits LUKS-verschlüsselt und das Dateisystem erstellt.

mkdir /mnt/luks
mount /dev/mapper/secrets /mnt/luks
/etc/fstab
/dev/mapper/secrets /mnt/luks xfs defaults 0 0
/etc/crypttab
mysecrets /dev/sdb1

Bind-Mount

Siehe auch https://access.redhat.com/solutions/1985643

Ein Bind-Mount ist ein spezieller Mount-Typ: damit wird ein gespiegeltes Verzeichnis oder Mount-Point hin zu einem anderen Endpunkt angelegt. Beispiel: Das Verzeichnis /home soll erhalten bleiben, aber auf /data/home mit mehr Platz zeigen?

rsync --archive --verbose /home/* /data/home/
mount --bind --verbose /home /data/home
/etc/fstab
/home /data/home none defaults,bind 0 0

tmpfs-Mount

Unterhalb von /tmp/cache ein In-Memory-Verzeichnis mit 1G Grösse vorhalten:

mount -t tmpfs -o size=1000M,mode=0755 tmpfs /tmp/cache

Remount eines read-only Dateisystems

Wer Meldungen à la filesystem has switched to read only and is probably corrupted erhält, kann nach Ermittlung der Ursache und einer Prüfung des Dateisystems dieses wie folgt beschreibbar einhängen:

mount --no-mtab --options remount /

Dieses Problem tritt manchmal auf VMware ESXi-Systemen auf, die mit einem SAN-Storage als Backend arbeiten. Ist das SAN allgemein hohen I/O-Belastungen ausgesetzt, kann es vorkommen, dass CentOS in einen Disk Timeout rennt und daher, um eine Korruption des Dateisystems zu vermeiden, die eigene (virtuelle VMware-)Disk auf read-only schaltet. In so einer Situation hilft nur ein Dateisystem-Check und Reboot. Alternativ kann man versuchen, den Disk Timeout bzw. die Latenz in /sys/block/sd*/device/timeout zu erhöhen (Standard: 180) - mit dem Nebeneffekt, dass das Dateisystem des Linux-Gastes bei hohen SAN-I/O-Belastungen mit noch höherer Wahrscheinlichkeit read-only geschaltet wird.

Falls die Meldung jedoch durch eine fehlerhafte /etc/fstab verursacht wurde, hilft folgender Aufruf, um im Beispiel die root-Partition einer CentOS-Installation beschreibbar einzuhängen:

mount --no-mtab --options remount --type xfs /dev/mapper/centos-root /

Built on 2022-06-03