V prvních dvou článcích této série jsem prozkoumal spouštěcí sekvenci Linux systemd. V prvním článku jsem se zabýval funkcemi a architekturou systemd a kontroverzí kolem jeho role jako náhrady za starý iniciační program SystemV a spouštěcí skripty. A ve druhém článku jsem prozkoumal dva důležité nástroje systemd, systemctl a journalctl, a vysvětlil jsem, jak přepínat z jednoho cíle na druhý a jak změnit výchozí cíl.
V tomto třetím článku se podívám podrobněji na jednotky systemd a na to, jak používat příkaz systemctl k prozkoumávání a správě jednotek. Také vám vysvětlím, jak zastavit a zakázat jednotky a jak vytvořit novou jednotku pro připojení systému pro připojení nového souborového systému a umožnit jeho spuštění během spouštění.
Příprava
Více o sysadmins
- Povolit blog Sysadmin
- Automatizovaný podnik:průvodce řízením IT pomocí automatizace
- eKniha:Ansible Automation for SysAdmins
- Příběhy z terénu:Průvodce správcem systému pro automatizaci IT
- eKniha:Průvodce Kubernetes pro SRE a správce systému
- Nejnovější články správce systému
Všechny experimenty v tomto článku byste měli provádět jako uživatel root (pokud není uvedeno jinak). Některé z příkazů, které jednoduše vypisují různé systémové jednotky, mohou provádět uživatelé bez oprávnění root, ale příkazy, které provádějí změny, nikoli. Ujistěte se, že všechny tyto experimenty provádíte pouze na neprodukčních hostitelích nebo virtuálních počítačích (VM).
Jeden z těchto experimentů vyžaduje balíček sysstat, takže si jej nainstalujte, než budete pokračovat. Pro Fedoru a další distribuce založené na Red Hatu můžete nainstalovat sysstat pomocí:
dnf -y install sysstat
sysstat RPM instaluje několik statistických nástrojů, které lze použít k určení problému. Jedním z nich je System Activity Report (SAR), který zaznamenává mnoho datových bodů o výkonu systému v pravidelných intervalech (ve výchozím nastavení každých 10 minut). Místo spuštění jako démon na pozadí balíček sysstat nainstaluje dva časovače systemd. Jeden časovač se spouští každých 10 minut, aby sbíral data, a druhý se spouští jednou denně, aby agregoval denní data. V tomto článku se krátce podívám na tyto časovače, ale počkám, až vysvětlím, jak vytvořit časovač v budoucím článku.
systémová sada
Faktem je, že systemd je více než jen jeden program. Je to velká sada programů, které jsou všechny navrženy tak, aby spolupracovaly při správě téměř všech aspektů běžícího systému Linux. Úplná expozice systemd by sama o sobě zabrala knihu. Většina z nás nemusí rozumět všem detailům o tom, jak do sebe všechny komponenty systemd zapadají, takže se zaměřím na programy a komponenty, které vám umožňují spravovat různé linuxové služby a pracovat se soubory protokolu a deníky.
Praktická struktura
Struktura systemd – mimo jeho spustitelné soubory – je obsažena v jeho mnoha konfiguračních souborech. Ačkoli tyto soubory mají různé názvy a přípony identifikátorů, všechny se nazývají soubory „jednotky“. Jednotky jsou základem všeho systemd.
Soubory jednotek jsou soubory ve formátu ASCII ve formátu prostého textu, které jsou přístupné a mohou být vytvořeny nebo upraveny správcem systému. Existuje několik typů souborů jednotek a každý má svou vlastní manuálovou stránku. Obrázek 1 uvádí některé z těchto typů souborů jednotek podle jejich přípon souborů a krátký popis každého z nich.
systemd unit | Popis |
---|---|
.automount | Položka .automount jednotky se používají k implementaci na vyžádání (tj. plug and play) a paralelnímu připojení jednotek souborového systému během spouštění. |
.device | Zařízení .device soubory jednotek definují hardware a virtuální zařízení, která jsou vystavena správci systému v adresáři /dev/ . Ne všechna zařízení mají soubory jednotek; typicky bloková zařízení, jako jsou pevné disky, síťová zařízení a některá další, mají soubory jednotek. |
.mount | The .mount unit definuje bod připojení v adresářové struktuře systému souborů Linux. |
.scope | The .scope jednotka definuje a spravuje soubor systémových procesů. Tato jednotka není konfigurována pomocí souborů jednotek, ale je vytvořena programově. Podle systemd.scope manuálová stránka, "Hlavním účelem jednotek rozsahu je seskupování pracovních procesů systémové služby pro organizaci a pro správu zdrojů." |
.služba | Služba .service soubory jednotek definují procesy, které jsou spravovány systémem systemd. Patří sem služby jako crond cups (Common Unix Printing System), iptables, služby správy více logických svazků (LVM), NetworkManager a další. |
.slice | Položka .slice jednotka definuje „slice“, což je koncepční rozdělení systémových prostředků, které souvisejí se skupinou procesů. Všechny systémové prostředky si můžete představit jako koláč a tuto podmnožinu zdrojů jako „výřez“ z tohoto koláče. |
.socket | Zásuvka .socket jednotky definují meziprocesové komunikační sokety, jako jsou síťové sokety. |
.swap | .swap jednotky definují odkládací zařízení nebo soubory. |
.target | .target jednotky definují skupiny souborů jednotek, které definují spouštěcí synchronizační body, úrovně běhu a služby. Cílové jednotky definují služby a další jednotky, které musí být aktivní, aby byly úspěšně spuštěny. |
.timer | .timer jednotka definuje časovače, které mohou zahájit provádění programu v určených časech. |
systemctl
Ve druhém článku jsem se podíval na funkce spouštění systému systemd a zde prozkoumám jeho funkce správy služeb trochu dále. systemd poskytuje systemctl příkaz, který se používá ke spouštění a zastavování služeb, jejich konfiguraci tak, aby se spouštěly (nebo nespouštěly) při startu systému, a sledování aktuálního stavu spuštěných služeb.
V terminálové relaci jako uživatel root se ujistěte, že domovský adresář uživatele root ( ~ ) je OZP. Chcete-li začít prohlížet jednotky různými způsoby, vypište všechny načtené a aktivní systémové jednotky. systemctl automaticky přenáší svůj standardní datový tok přes méně pager, takže nemusíte:
[ROOT @ TESTVM1 ~] # SYSTEMCTL
Jednotka Load Active Sub Popis
proc-sys-fs-binfmt_misc.automount loaded aktivní spuštění libovolného spustitelného souboru>
SYS-Devices-PCI0000:00-0000:00:01.1-ata7-host6-target6:0:0-6:0:0:0-block-sr0.device loading a>
sys-devices-pci0000:00-0000:00:03.0-net-enp0s3.device načteno aktivní zapojeno 82540EM Gigabi>
sys-devices-pci0000:00-0000:00:05.0-sound-card0.device načteno aktivní zapojeno 82801AA AC'97>
sys- devices-pci0000:00-0000:00:08.0-net-enp0s8.device loaded active plugged 82540EM Gigabi>
sys-devices-pci0000:00-0000:00:0d.0-ata1-host0-target0:0 :0-0:0:0:0-block-sda-sda1.device loa>
sys-devices-pci0000:00-0000:00:0d.0-ata1-host0-target0:0:0- 0:0:0:0-block-sda-sda2.device loa>
LOAD =Odráží, zda byla definice jednotky správně načteno.
ACTIVE =Aktivace jednotky na vysoké úrovni stav, tj. zobecnění SUB.
SUB =Stav aktivace nízkoúrovňové jednotky, hodnoty závisí na typu jednotky.
Uvedeno 206 načtených jednotek. Předejte --all, abyste viděli také načtené, ale neaktivní jednotky.
Pro zobrazení všech nainstalovaných souborů jednotek použijte 'systemctl list-unit-files'.
Při procházení dat v relaci terminálu hledejte některé konkrétní věci. První část obsahuje seznam zařízení, jako jsou pevné disky, zvukové karty, karty síťového rozhraní a zařízení TTY. Další část ukazuje přípojné body souborového systému. Další sekce obsahují různé služby a seznam všech načtených a aktivních cílů.
Časovače sysstat ve spodní části výstupu se používají ke shromažďování a generování denních souhrnů aktivity systému pro SAR. SAR je velmi užitečný nástroj pro řešení problémů. (Více se o tom můžete dozvědět v kapitole 13 mé knihy Using and Administering Linux:Volume 1, Zero to SysAdmin:Getting Started .)
Úplně dole tři řádky popisují významy stavů (načteno, aktivní a dílčí). Stiskněte q pro ukončení pageru.
Pomocí následujícího příkazu (jak je navržen na posledním řádku výše uvedeného výstupu) zobrazíte všechny nainstalované jednotky, ať už jsou načteny nebo ne. Výstup zde nebudu reprodukovat, protože jej můžete procházet sami. Program systemctl má vynikající funkci doplňování karet, která usnadňuje zadávání složitých příkazů, aniž byste si museli pamatovat všechny možnosti:
[root@testvm1 ~]# systemctl list-unit-files
Můžete vidět, že některé jednotky jsou zakázány. Tabulka 1 v manuálové stránce pro seznamy systemctl a poskytuje krátké popisy položek, které můžete v tomto seznamu vidět. Použijte -t (type) možnost pro zobrazení pouze jednotek časovače:
[root@testvm1 ~]# systemctl list-unit-files -t timer
UNIT FILE STATE
[email protected] zakázáno
dntimebled r / brecache. . >fstrim.timer vypnuto
logrotate.timer zakázáno
logwatch.timer zakázáno
[email protected]. > / db-timer r collect.timer povoleno
sysstat-summary.timer povoleno
systemd-tmpfiles-clean.timer static
unbound-anchor.timer povoleno
Totéž můžete udělat s touto alternativou, která poskytuje mnohem více podrobností:
[root@testvm1 ~]# systemctl seznam-časovačů
Čt 2020-04-16 09:06:20 EDT 3min 59s left n/a mp mp n/a t. soubor n/a t. soubor - d- d systém clean.service
Čt 2020-04-16 10:02:01 EDT 59 min zbývá Čt 2020-04-16 09:01:32 EDT 49s ago dnf-makecache.timer d brache.timer d > n. 2020-04-16 13:00:00 EDT 3h 57min zbývá n/a n/a sysstat-collect.timer 02T 02:02 020002002002 01 042/01200 -04-16 12:51:37 EDT 3h 49min left mlocate-updatedb.timer mlocate-updatedb.service
Pá 2020-04-17 00:00:00 EDT 14h left 1-04-2025 :37 EDT 3H 49min levý bezvízový-anchor.Timer Bez závazků-kotvíčky
Je uvedeno 6 časovačů.
Projděte --vše, abyste viděli také načtené, ale neaktivní časovače.
[root@testvm1 ~]#
Ačkoli zde není žádná možnost provést připojení seznamu systemctl, můžete vypsat soubory jednotek přípojných bodů:
[ROOT @ TESTVM1 ~] # SystemCll List-Unit-soubor souborů -T Mount
Jednotková souboru Stav
-.Mount Generované
Boot.Mount generované
Dev-HugePages. mount static
dev-mqueue.mount static
home.mount generováno
c-fs-nfsd. s. > bin pro statický sys - bin- mount bin- run-vmblock\x2dfuse.mount vypnuto
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
tmp.mount vygenerováno
usr.mount vygenerováno
var-lib-nfs-rpc_pipefs.mount statické
vygenerováno 5 souborů var.mount / br. 1
[root@testvm1 ~]#
Sloupec STATE v tomto datovém toku je zajímavý a vyžaduje trochu vysvětlení. „Vygenerované“ stavy naznačují, že montážní jednotka byla vygenerována za běhu během spouštění pomocí informací v /etc/fstab . Program, který generuje tyto připojovací jednotky, je /lib/systemd/system-generators/systemd-fstab-generator, spolu s dalšími nástroji, které generují řadu dalších typů jednotek. "Statické" připojovací jednotky jsou pro souborové systémy jako /proc a /sys a jejich soubory jsou umístěny v /usr/lib/systemd/system adresář.
Nyní se podívejte na servisní jednotky. Tento příkaz zobrazí všechny služby nainstalované na hostiteli, ať už jsou nebo nejsou aktivní:
[root@testvm1 ~]# systemctl --all -t service
Spodní část tohoto seznamu servisních jednotek zobrazuje 166 jako celkový počet načtených jednotek na mém hostiteli. Vaše číslo se pravděpodobně bude lišit.
Soubory jednotek nemají příponu názvu souboru (například .unit ), abyste je pomohli identifikovat, takže můžete zobecnit, že většina konfiguračních souborů, které patří k systemd, jsou jednotkové soubory toho či onoho typu. Těch několik zbývajících souborů je většinou .conf soubory umístěné v /etc/systemd .
Soubory jednotek jsou uloženy v /usr/lib/systemd adresář a jeho podadresáře, zatímco /etc/systemd/ adresář a jeho podadresáře obsahují symbolické odkazy na soubory jednotek nezbytné pro místní konfiguraci tohoto hostitele.
Chcete-li to prozkoumat, vytvořte /etc/systemd OZP a seznam jeho obsahu. Poté vytvořte /etc/systemd/system PWD a seznam jeho obsahu a seznam obsahu alespoň několika podadresářů aktuálního PWD.
Podívejte se na default.target soubor, který určuje, ze kterého cíle úrovně běhu se systém spustí. Ve druhém článku této série jsem vysvětlil, jak změnit výchozí cíl z GUI (graphical.target ) pouze na příkazový řádek (multi-user.target ) cílová. default.target soubor na mém testovacím virtuálním počítači je jednoduše symbolický odkaz na /usr/lib/systemd/system/graphical.target .
Věnujte několik minut prozkoumání obsahu /etc/systemd/system/default.target soubor:
[root@testvm1 system]# cat default.target
# SPDX-License-Identifier:LGPL-2.1+
#
# Tento soubor je součástí systemd.
#
# systemd je svobodný software; můžete jej dále distribuovat a/nebo upravovat
# za podmínek GNU Lesser General Public License, jak je zveřejněno
# Free Software Foundation; buď verze 2.1 licence, nebo
# (podle vašeho uvážení) jakákoli pozdější verze.
[Jednotka]
Description=Graphical Interface
Documentation=man:systemd .special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes
Upozorňujeme, že to vyžaduje multi-user.target; graphical.target nelze spustit, pokud multi-user.target ještě není v provozu. Také říká, že „chce“ službu display-manager.service jednotka. K úspěšnému spuštění jednotky nemusí být splněno „přání“. Pokud „přání“ nemůže být splněno, bude systemd ignorováno a zbytek cíle začne bez ohledu na to.
Podadresáře v /etc/systemd/system jsou seznamy přání pro různé cíle. Věnujte několik minut prozkoumání souborů a jejich obsahu v /etc/systemd/system/graphical.target.wants adresář.
systemd.unit manuálová stránka obsahuje mnoho dobrých informací o souborech jednotek, jejich struktuře, sekcích, do kterých lze rozdělit, a možnostech, které lze použít. Uvádí také mnoho typů jednotek, z nichž všechny mají své vlastní manuálové stránky. Pokud chcete interpretovat soubor jednotek, bylo by dobré začít zde.
Servisní jednotky
Instalace Fedory obvykle instaluje a aktivuje služby, které konkrétní hostitelé nepotřebují pro normální provoz. Naopak někdy neobsahuje služby, které je třeba nainstalovat, povolit a spustit. Služby, které nejsou potřebné k požadovanému fungování hostitele Linuxu, ale které jsou nainstalovány a případně spuštěny, představují bezpečnostní riziko a měly by být – minimálně – zastaveny a zakázány a – v nejlepším případě – měly být odinstalovány.
Příkaz systemctl se používá ke správě jednotek systemd, včetně služeb, cílů, připojení a dalších. Podívejte se blíže na seznam služeb a identifikujte služby, které nebudou nikdy použity:
[ROOT @ TESTVM1 ~] # SystemCltl --all -t Service
Jednotka Load Active Sub Popis
Chronyd.Service Loaded Active Běh NTP klient / server
Crond.Service Loaded Aktivní běh plánovač příkazu
Cups.Service Loaded Active Speed Cups Scheduler
DBus-daemon.Service Loaded Aktivní běh D-Bus Systémová zpráva sběrnice
● IP6TABLES.Service Nezobrazeno Neaktivní Dead IP6TABLES.Service
● Ipset.Service Nezobrazeno Neaktivní mrtvý Ipset.Service
● IPTBA.Service Nezobrazeno Neaktivní mrtvé Iptables.Service
firewalld.service načteno aktivní spuštěno firewalld – dynamický firewall Veškerý démon
● NTPD.Service není neaktivní Dead Dead NTPD.Service
● ntpdate.service not-nenajdete neaktivní mrtvý ntpdate.service
pcscd.Service loaded aktivní spuštěn PC/SC Smart Card Daemon
Většinu výstupu z příkazu jsem vymazal, abych ušetřil místo. Služby, které ukazují „načtený aktivní běh“, jsou zřejmé. Služby „nenalezeny“ jsou služby, o kterých systemd ví, ale nejsou nainstalovány na hostiteli Linux. Pokud chcete tyto služby spouštět, musíte nainstalovat balíčky, které je obsahují.
Všimněte si pcscd.service jednotka. Toto je démon PC/SC čipové karty. Jeho funkcí je komunikace se čtečkami čipových karet. Mnoho hostitelů Linuxu – včetně virtuálních počítačů – nepotřebuje tuto čtečku ani službu, která se načítá a zabírá paměť a zdroje CPU. Tuto službu můžete zastavit a zakázat, aby se při příštím spuštění nerestartovala. Nejprve zkontrolujte jeho stav:
[root@testvm1 ~]# systemctl status pcscd.service
● pcscd.service – PC/SC Smart Card Daemon
Načteno:načteno (/usr/lib/systemd/system/pcscd.service; nepřímé; přednastavené dodavatelem:zakázáno)
Aktivní:aktivní (běží) od pá 2019-05-10 11:28:42 EDT; před 3 dny
Dokumenty:man:pcscd(8)
Hlavní PID:24706 (pcscd)
Úkoly:6 (limit:4694)
Paměť:1,6 M
CGroup:/system.slice/pcscd.service
└─24706 /usr/sbin/pcscd --foreground --auto-exit
10. května 11:28:42 testvm1 systemd[1 ]:Spuštěn PC/SC Smart Card Daemon.
Tato data ilustrují další informace, které systém poskytuje oproti systému SystemV, který pouze hlásí, zda je služba spuštěna či nikoli. Upozorňujeme, že zadáním .service typ jednotky je volitelný. Nyní zastavte a deaktivujte službu a poté znovu zkontrolujte její stav:
[root@testvm1 ~]# systemctl stop pcscd; systemctl zakázat pcscd
Upozornění:Zastavuje se pcscd.service, ale stále může být aktivována:
pcscd.socket
Odstraněno /etc/systemd/system/sockets.target.wants/pcscd.socket .
[root@testvm1 ~]# systemctl status pcscd
● pcscd.service – PC/SC Smart Card Daemon
Načteno:načteno (/usr/lib/systemd/system/pcscd.service; nepřímé; přednastavené dodavatelem:zakázáno)
Aktivní:neúspěšné (Výsledek:výstupní kód) od Po 2019-05-13 15:23:15 EDT; před 48 s
Dokumenty:man:pcscd(8)
Hlavní PID:24706 (kód=ukončeno, stav=1/SELHÁNÍ)
10. května 11:28:42 testvm1 systemd [1]:Spuštěn PC/SC Smart Card Daemon.
13. května 15:23:15 testvm1 systemd[1]:Zastavení démona PC/SC Smart Card...
13. května 15:23:15 testvm1 systemd[1]:pcscd.service:Hlavní proces ukončen, kód=ukončen, stav=1/FAIL>
13. května 15:23:15 testvm1 systemd[1]:pcscd.service:Selhal s výsledkem 'exit -code'.
13. května 15:23:15 testvm1 systemd[1]:Zastaven PC/SC Smart Card Daemon.
Krátké zobrazení záznamu protokolu u většiny služeb zabraňuje prohledávání různých souborů protokolu k nalezení tohoto typu informací. Zkontrolujte stav cílů úrovně běhu systému – je vyžadováno zadání typu jednotky „target“:
[root@testvm1 ~]# systemctl status multi-user.target
● multi-user.target – Multi-User System
Načteno:načteno (/usr/lib/systemd/system/multi -user.target; statický; přednastaveno dodavatele:zakázáno)
Aktivní:aktivní od čt 2019-05-09 13:27:22 EDT; před 4 dny
Dokumenty:man:systemd.special(7)
9. května 13:27:22 testvm1 systemd[1]:Dosaženo cíle víceuživatelského systému.
[ root@testvm1 ~]# systemctl status graphical.target
● graphical.target – Grafické rozhraní
Načteno:načteno (/usr/lib/systemd/system/graphical.target; nepřímé; přednastavené dodavatelem:zakázáno)
Aktivní:aktivní od čt 2019-05-09 13:27:22 EDT; před 4 dny
Dokumenty:man:systemd.special(7)
9. května 13:27:22 testvm1 systemd[1]:Dosaženo cílové grafické rozhraní.
[root@ testvm1 ~]# systemctl status default.target
● graphical.target – Grafické rozhraní
Načteno:načteno (/usr/lib/systemd/system/graphical.target; nepřímé; přednastavené dodavatelem:zakázáno)
Aktivní:aktivní od čt 2019-05-09 13:27:22 EDT; před 4 dny
Dokumenty:man:systemd.special(7)
9. května 13:27:22 testvm1 systemd[1]:Dosaženo cílové grafické rozhraní.
Výchozím cílem je grafický cíl. Tímto způsobem lze zkontrolovat stav libovolné jednotky.
Připojí starým způsobem
Jednotka připojení definuje všechny parametry potřebné k připojení souborového systému na určený bod připojení. systemd může spravovat připojovací jednotky flexibilněji než ty pomocí /etc/fstab konfigurační soubor souborového systému. Navzdory tomu systemd stále používá /etc/fstab soubor pro konfiguraci souborového systému a účely připojení. systemd používá systemd-fstab-generator nástroj k vytvoření přechodných montážních jednotek z dat v fstab soubor.
Vytvořím nový souborový systém a jednotku pro připojení systemd k jeho připojení. Pokud máte na svém testovacím systému nějaké volné místo na disku, můžete to udělat společně se mnou.
Uvědomte si, že názvy skupin disků a logických disků se mohou ve vašem testovacím systému lišit. Ujistěte se, že používáte názvy, které se vztahují k vašemu systému.
Budete muset vytvořit oddíl nebo logický svazek a poté na něm vytvořit souborový systém EXT4. Přidejte k systému souborů štítek TestFS a vytvořte adresář pro bod připojení /TestFS .
Chcete-li to vyzkoušet sami, nejprve ověřte, že máte volné místo ve skupině svazků. Takto to vypadá na mém virtuálním počítači, kde mám ve skupině svazků k dispozici místo pro vytvoření nového logického svazku:
[root@testvm1 ~]# lsblk
JMÉNO MAJ:MIN VELIKOST RM VELIKOST RO TYP MONTÁŽNÍHO POINT
sda 8:0 0 120G 0 disk
0 1 část 0 0 část /boot
└─sda2 8:2 0 116G 0 část
├─VG01-root 253:0 0 5G 0 lvm /
├─VG01-usr 253:2 0 30G 0 lvm /usr
├─VG01-home 253:3 0 20G /ho″ 20G / 0 lV G 1 1 0 20g 0 lvm / var
└└vg01-tmp 253:5 0 10 g 0 lvm / tmp
SR0 11:0 1 1024m 0 ROM
[root @ testvm1 ~] # vgs
VG #PV #LV #SN Attr VSize VFree
VG01 1 6 0 wz--n- <116,00 g <23,00 g
Poté vytvořte nový svazek na VG01 s názvem TestFS . Nemusí být velký; 1GB je v pohodě. Poté vytvořte souborový systém, přidejte štítek souborového systému a vytvořte bod připojení:
[root@testvm1 ~]# lvcreate -L 1G -n TestFS VG01
Byl vytvořen logický svazek "TestFS".
[root@testvm1 ~]# mkfs -t ext4 /dev/mapper/VG01 -TestFS
mke2fs 1.45.3 (14. července 2019)
Vytváření souborového systému s 262144 4k bloky a 65536 inody
Souborový systém UUID:8718fba9-419f-4915 /815-ab2d- Superblock Zálohování uložené na blokech:
32768, 98304, 163840, 229376
Přidělení skupinových tabulek:DONE
Psaní inode Tables:Hotovo
Vytvoření časopisu (8192 bloků):hotovo
Zápis superbloků a účetních informací souborového systému:hotovo
[root@testvm1 ~]# e2label /dev/mapper/VG01-TestFS TestFS
[root@testvm1 ~]# mkdir /TestFS
Nyní připojte nový souborový systém:
[root@testvm1 ~]# připojení /TestFS/
připojení:/TestFS/:nelze najít v /etc/fstab.
Toto nebude fungovat, protože nemáte záznam v /etc/fstab . Nový souborový systém můžete připojit i bez položky v /etc/fstab pomocí názvu zařízení (jak je uvedeno v /dev ) a bod připojení. Připojování tímto způsobem je jednodušší než dříve – dříve vyžadovalo typ souborového systému jako argument. Příkaz mount je nyní dostatečně chytrý, aby detekoval typ souborového systému a podle toho jej připojil.
Zkuste to znovu:
[root@testvm1 ~]# mount /dev/mapper/VG01-TestFS /TestFS/
[root@testvm1 ~]# lsblk
NAME MAJ:MIN RM VELIKOST RO TYP MONTÁŽNÍHO POINT
SDA 8:0 0 120g 0 Disk
├├SDA1 8:1 0 4G 0 Část / boot
└└SDA2 8:2 0 116g 0 část
├├vg01-root 253:0 0 5G 0 lvm /
├─VG01-swap 253:1 0 8G 0 lvm [SWAP]
├─VG01-20 3 G -home 253:3 0 20G 0 lvm /home
├─VG01-var 253:4 0 20G 0 lvm /var
├ / mp 3 0 : / mp 3 G 0> └─VG01-TestFS 253:6 0 1G 0 lvm /TestFS
sr0 11:0 1 1024M 0 0 rom
>[root]Nyní je nový souborový systém připojen na správné místo. Vypište soubory připojovací jednotky:
[root@testvm1 ~]# systemctl list-unit-files -t mount
Tento příkaz nezobrazuje soubor pro /TestFS souborový systém, protože pro něj neexistuje žádný soubor. Příkaz systemctl status TestFS.mount také nezobrazuje žádné informace o novém souborovém systému. Můžete to zkusit pomocí zástupných znaků se stavem systemctl příkaz:
[root@testvm1 ~]# systemctl status *mount
● usr.mount - /usr
Načteno:načteno (/etc/fstab; vygenerováno)
Aktivní:aktivní (připojeno)
Kde:/usr
Co:/dev/mapper/VG01-usr
Dokumenty:man:fstab(5)
man:systemd-fstab-generator(8)
● TestFS.mount – /TestFS
Načteno:načteno (/proc/self/mountinfo)
Aktivní:aktivní (připojeno) od pá 2020-04 -17 16:02:26 EDT; před 1 min 18 s
Kde:/TestFS
Co:/dev/mapper/VG01-TestFS
● run-user-0.mount - /run/user/0
Načteno:načteno (/proc/self/mountinfo)
Aktivní:aktivní (připojeno) od čt 2020-04-16 08:52:29 EDT; Před 1 dnem a 5 hodinami
Kde:/run/user/0
Co:tmpfs
● var.mount - /var
Načteno:načteno (/etc/fstab; vygenerováno)
Aktivní:aktivní (připojeno) od čt 2020-04-16 12:51:34 EDT; před 1 dnem před 1 hodinou
Kde:/var
Co:/dev/mapper/VG01-var
Docs:man:fstab(5)
man:systemd-fstab-generator( 8)
Úkoly:0 (limit:19166)
Paměť:212,0 kB
CPU:5 ms
CGroup:/system.slice/var.mountTento příkaz poskytuje některé velmi zajímavé informace o připojení vašeho systému a zobrazí se váš nový souborový systém. /var a /usr souborové systémy jsou identifikovány jako generované z /etc/fstab , zatímco váš nový souborový systém jednoduše ukazuje, že je načten, a poskytuje umístění informačního souboru v /proc/self/mountinfo soubor.
Dále zautomatizujte toto připojení. Nejprve to udělejte staromódním způsobem přidáním položky do /etc/fstab . Později vám ukážu, jak to udělat novým způsobem, který vás naučí vytvářet jednotky a integrovat je do spouštěcí sekvence.
Odpojit /TestFS a přidejte následující řádek do /etc/fstab soubor:
/dev/mapper/VG01-TestFS /TestFS ext4 defaults 1 2
Nyní připojte souborový systém pomocí jednoduššího mount a znovu vypište připojovací jednotky:
[root@testvm1 ~]# připojení /TestFS
[root@testvm1 ~]# stav systemctl *připojení
● TestFS.mount - /TestFS
Načteno:načteno (/proc/self/mountinfo)
Aktivní:aktivní (připojeno) od pá 2020-04-17 16:26:44 EDT; před 1 min 14 s
Kde:/TestFS
Co:/dev/mapper/VG01-TestFSTím se nezměnily informace pro toto připojení, protože souborový systém byl připojen ručně. Restartujte a spusťte příkaz znovu a tentokrát zadejte TestFS.mount místo použití zástupného znaku. Výsledky pro toto připojení jsou nyní konzistentní s připojením při spuštění:
[root@testvm1 ~]# systemctl status TestFS.mount
● TestFS.mount - /TestFS
Načteno:načteno (/etc/fstab; vygenerováno)
Aktivní:aktivní (připojeno ) od pá 2020-04-17 16:30:21 EDT; před 1 min 38 s
Kde:/TestFS
Co:/dev/mapper/VG01-TestFS
Dokumenty:man:fstab(5)
man:systemd-fstab-generator(8 )
Úkoly:0 (limit:19166)
Paměť:72,0 kB
CPU:6 ms
CGroup:/system.slice/TestFS.mount
Apr 17 16:30:21 testvm1 systemd[1]:Mounting /TestFS...
Apr 17 16:30:21 testvm1 systemd[1]:Mounted /TestFS.Creating a mount unit
Mount units may be configured either with the traditional /etc/fstab file or with systemd units. Fedora uses the fstab file as it is created during the installation. However, systemd uses the systemd-fstab-generator program to translate the fstab file into systemd units for each entry in the fstab soubor. Now that you know you can use systemd .mount unit files for filesystem mounting, try it out by creating a mount unit for this filesystem.
First, unmount /TestFS . Edit the /etc/fstab file and delete or comment out the TestFS line. Now, create a new file with the name TestFS.mount in the /etc/systemd/system adresář. Edit it to contain the configuration data below. The unit file name and the name of the mount point must be identical, or the mount will fail:
# This mount unit is for the TestFS filesystem
# By David Both
# Licensed under GPL V2
# This file should be located in the /etc/systemd/system directory
[Unit]
Description=TestFS Mount
[Mount]
What=/dev/mapper/VG01-TestFS
Where=/TestFS
Type=ext4
Options=defaults
[Install]
WantedBy=multi-user.targetThe Description line in the [Unit] section is for us humans, and it provides the name that's shown when you list mount units with systemctl -t mount . The data in the [Mount] section of this file contains essentially the same data that would be found in the fstab soubor.
Now enable the mount unit:
[root@testvm1 etc]# systemctl enable TestFS.mount
Created symlink /etc/systemd/system/multi-user.target.wants/TestFS.mount → /etc/systemd/system/TestFS.mount.This creates the symlink in the /etc/systemd/system directory, which will cause this mount unit to be mounted on all subsequent boots. The filesystem has not yet been mounted, so you must "start" it:
[root@testvm1 ~]# systemctl start TestFS.mount
Verify that the filesystem has been mounted:
[root@testvm1 ~]# systemctl status TestFS.mount
● TestFS.mount - TestFS Mount
Loaded:loaded (/etc/systemd/system/TestFS.mount; enabled; vendor preset:disabled)
Active:active (mounted) since Sat 2020-04-18 09:59:53 EDT; 14s ago
Where:/TestFS
What:/dev/mapper/VG01-TestFS
Tasks:0 (limit:19166)
Memory:76.0K
CPU:3ms
CGroup:/system.slice/TestFS.mount
Apr 18 09:59:53 testvm1 systemd[1]:Mounting TestFS Mount...
Apr 18 09:59:53 testvm1 systemd[1]:Mounted TestFS Mount.This experiment has been specifically about creating a unit file for a mount, but it can be applied to other types of unit files as well. The details will be different, but the concepts are the same. Yes, I know it is still easier to add a line to the /etc/fstab file than it is to create a mount unit. But this is a good example of how to create a unit file because systemd does not have generators for every type of unit.
In summary
This article looked at systemd units in more detail and how to use the systemctl command to explore and manage units. It also showed how to stop and disable units and create a new systemd mount unit to mount a new filesystem and enable it to initiate during startup.
In the next article in this series, I will take you through a recent problem I had during startup and show you how I circumvented it using systemd.
Zdroje
Na internetu je k dispozici velké množství informací o systemd, ale mnohé jsou stručné, tupé nebo dokonce zavádějící. Kromě zdrojů zmíněných v tomto článku nabízejí následující webové stránky podrobnější a spolehlivější informace o spouštění systemd.
- Projekt Fedora má dobrého praktického průvodce systemd. Obsahuje téměř vše, co potřebujete vědět, abyste mohli nakonfigurovat, spravovat a udržovat počítač Fedora pomocí systemd.
- Projekt Fedora má také dobrý cheat sheet, který křížově odkazuje na staré příkazy SystemV se srovnatelnými příkazy systemd.
- Podrobné technické informace o systemd a důvodech pro jeho vytvoření naleznete v popisu systemd na Freedesktop.org.
- Pokročilejší systémové informace a tipy nabízí stránka Linux.com „More systemd fun“.
Existuje také řada hluboce technických článků pro správce systému Linux od Lennarta Poetteringa, návrháře a primárního vývojáře systemd. Tyto články byly napsány mezi dubnem 2010 a zářím 2011, ale nyní jsou stejně aktuální jako tehdy. Většina všeho dobrého, co bylo napsáno o systemd a jeho ekosystému, je založeno na těchto dokumentech.
- Přehodnocení PID 1
- systemd pro administrátory, část I
- systemd pro administrátory, část II
- systemd pro administrátory, část III
- systemd pro administrátory, část IV
- systemd pro administrátory, část V
- systemd pro administrátory, část VI
- systemd pro administrátory, část VII
- systemd pro administrátory, část VIII
- systemd pro administrátory, část IX
- systemd pro administrátory, část X
- systemd pro administrátory, část XI