Das folgende Beispiel zeigt, wie Sie ein systemd-Skript erstellen, um eine Festplatte beim Neustart automatisch unter einem bestimmten Pfad zu mounten.
1. Überprüfen Sie die UUID des Dateisystems mit dem Befehl „blkid“.
# blkid /dev/sdb /dev/sdb: UUID="5813cd72-ff30-44bc-a7a3-27c68fe3e6c7" UUID_SUB="ccd243dc-1481-403f-aa51-1502a95cdf2f" TYPE="btrfs"
2. Wir müssen eine neue Einhängeeinheit erstellen, um das Dateisystem einzuhängen. Einhängeeinheiten müssen nach den Einhängepunktverzeichnissen benannt werden, die sie kontrollieren. Beispiel:Der Einhängepunkt /var/lib/docker muss in einer Unit-Datei var-lib-docker.mount konfiguriert werden. Einzelheiten über die Escape-Logik, die verwendet wird, um einen Dateisystempfad in einen Unit-Namen umzuwandeln, finden Sie auf der Manpage von systemd.unit.
# vi /etc/systemd/system/var-lib-docker.mount [Unit] Description=Docker mount [Mount] What=/dev/disk/by-uuid/5813cd72-ff30-44bc-a7a3-27c68fe3e6c7 Where=/var/lib/docker Type=btrfs Options=defaults [Install] WantedBy=multi-user.target
Die Option für „Was“ kann UUID, LABEL, Pfad zur Festplatte sein
3. Aktivieren Sie die Einheit systemd, die nach dem Booten gestartet werden soll.
# systemctl enable var-lib-docker.mount
4. Das folgende Docker-Service-Skript wird modifiziert, um sicherzustellen, dass der Service erst gestartet werden soll, nachdem der Mount-Service aufgerufen wurde.
# cat /usr/lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network.target docker.socket var-lib-docker.mount ### Added mount unit for docker service to wait Requires=docker.socket ...
5. Starten Sie den Knoten neu und überprüfen Sie den Status der Mount Service Unit.
# shutdown -r now
# systemctl status var-lib-docker.mount ● var-lib-docker.mount - Docker mount Loaded: loaded (/etc/systemd/system/var-lib-docker.mount; enabled; vendor preset: disabled) Active: active (mounted) since Tue 2016-06-07 02:06:07 IST; 54s ago Where: /var/lib/docker What: /dev/sdb Process: 416 ExecMount=/bin/mount /dev/disk/by-uuid/5813cd72-ff30-44bc-a7a3-27c68fe3e6c7 /var/lib/docker -n -t btrfs -o defaults (code=exited, status=0/SUCCESS) Jun 07 02:06:07 OL7-docker-TD systemd[1]: Mounting Docker mount... Jun 07 02:06:07 OL7-docker-TD systemd[1]: Mounted Docker mount.
6. Überprüfen Sie den Einhängepunkt im „mount“-Befehl.
# mount | grep docker /dev/sdb on /var/lib/docker type btrfs (rw,relatime,seclabel,space_cache)
Die Bereitstellungseinheit kann nicht hinzugefügt werden, um Teil einer anderen Dienstoperation zu sein. Verfügbare Typen von systemd-Einheiten:
Einheitentypdatei | Erweiterung | Beschreibung |
---|---|---|
Serviceeinheit | .service | Ein Systemdienst. |
Zieleinheit | .ziel | Eine Gruppe von systemd-Einheiten. |
Automount-Einheit | .automount | Ein Automount-Punkt des Dateisystems. |
Geräteeinheit | .Gerät | Eine vom Kernel erkannte Gerätedatei. |
Montageeinheit | .mount | Ein Dateisystem-Einhängepunkt. |
Pfadeinheit | .Pfad | Eine Datei oder ein Verzeichnis in einem Dateisystem. |
Umfangseinheit | .scope | Ein extern erstellter Prozess. |
Slice-Einheit | .slice | Eine Gruppe hierarchisch organisierter Einheiten, die Systemprozesse verwalten. |
Snapshot-Einheit | .snapshot | Ein gespeicherter Zustand des systemd-Managers. |
Sockeleinheit | .socket | Ein Interprozess-Kommunikations-Socket. |
Einheit austauschen | .swap | Ein Auslagerungsgerät oder eine Auslagerungsdatei. |
Timereinheit | .timer | Ein systemd-Timer. |