Dalam dua artikel pertama dalam seri ini, saya menjelajahi urutan startup sistem Linux. Pada artikel pertama, saya melihat fungsi dan arsitektur systemd dan kontroversi seputar perannya sebagai pengganti program init SystemV dan skrip startup lama. Dan di artikel kedua, saya memeriksa dua alat systemd penting, systemctl dan journalctl, dan menjelaskan cara beralih dari satu target ke target lainnya dan mengubah target default.
Pada artikel ketiga ini, saya akan melihat unit systemd secara lebih rinci dan cara menggunakan perintah systemctl untuk menjelajahi dan mengelola unit. Saya juga akan menjelaskan cara menghentikan dan menonaktifkan unit dan cara membuat unit pemasangan systemd baru untuk memasang sistem file baru dan mengaktifkannya untuk memulai selama startup.
Persiapan
Selengkapnya tentang sysadmin
- Aktifkan blog Sysadmin
- Perusahaan Otomatis:panduan untuk mengelola TI dengan otomatisasi
- eBook:Kemungkinan Otomatisasi untuk SysAdmins
- Kisah dari lapangan:Panduan administrator sistem untuk otomatisasi TI
- eBook:Panduan Kubernetes untuk SRE dan sysadmin
- Artikel sysadmin terbaru
Semua eksperimen dalam artikel ini harus dilakukan sebagai pengguna root (kecuali ditentukan lain). Beberapa perintah yang hanya mencantumkan berbagai unit systemd dapat dilakukan oleh pengguna non-root, tetapi perintah yang membuat perubahan tidak bisa. Pastikan untuk melakukan semua eksperimen ini hanya pada host non-produksi atau mesin virtual (VM).
Salah satu eksperimen ini memerlukan paket sysstat, jadi instal sebelum Anda melanjutkan. Untuk Fedora dan distribusi berbasis Red Hat lainnya, Anda dapat menginstal sysstat dengan:
dnf -y install sysstat
RPM sysstat menginstal beberapa alat statistik yang dapat digunakan untuk penentuan masalah. Salah satunya adalah System Activity Report (SAR), yang mencatat banyak titik data kinerja sistem secara berkala (setiap 10 menit secara default). Daripada dijalankan sebagai daemon di latar belakang, paket sysstat menginstal dua timer systemd. Satu timer berjalan setiap 10 menit untuk mengumpulkan data, dan yang lainnya berjalan sekali sehari untuk mengumpulkan data harian. Dalam artikel ini, saya akan melihat secara singkat timer ini tetapi menunggu untuk menjelaskan cara membuat timer di artikel mendatang.
systemd suite
Faktanya, systemd lebih dari satu program. Ini adalah rangkaian besar program yang semuanya dirancang untuk bekerja sama untuk mengelola hampir setiap aspek dari sistem Linux yang sedang berjalan. Eksposisi lengkap systemd akan mengambil buku sendiri. Sebagian besar dari kita tidak perlu memahami semua detail tentang bagaimana semua komponen systemd cocok bersama, jadi saya akan fokus pada program dan komponen yang memungkinkan Anda mengelola berbagai layanan Linux dan menangani file log dan jurnal.
Struktur praktis
Struktur systemd—di luar file yang dapat dieksekusi—terdapat dalam banyak file konfigurasinya. Meskipun file-file ini memiliki nama dan ekstensi pengenal yang berbeda, semuanya disebut file "unit". Unit adalah dasar dari segalanya systemd.
File unit adalah file teks biasa ASCII yang dapat diakses dan dapat dibuat atau dimodifikasi oleh sysadmin. Ada sejumlah jenis file unit, dan masing-masing memiliki halaman manualnya sendiri. Gambar 1 mencantumkan beberapa tipe file unit ini berdasarkan ekstensi nama filenya dan deskripsi singkat masing-masing.
systemctl
Saya melihat fungsi startup systemd di artikel kedua, dan di sini saya akan menjelajahi fungsi manajemen layanannya lebih jauh. systemd menyediakan systemctl perintah yang digunakan untuk memulai dan menghentikan layanan, mengonfigurasinya untuk diluncurkan (atau tidak) pada saat startup sistem, dan memantau status layanan yang sedang berjalan.
Dalam sesi terminal sebagai pengguna root, pastikan direktori home root itu ( ~ ) adalah PD. Untuk mulai melihat unit dengan berbagai cara, buat daftar semua unit systemd yang dimuat dan aktif. systemctl secara otomatis menyalurkan aliran data stdoutnya melalui kurang pager, jadi Anda tidak perlu:
[root @ testvm1 ~] # systemctl
Unit beban sub deskripsi aktif
proc-sys-fs-binfmt_misc.Otomount dimuat aktif menjalankan arbitrary executable file>
sys-perangkat-PCI0000:00-0000:00:01.1-ata7-host6-target6:0:0-6:0:0:0-block-sr0.device dimuat a>
sys-devices-pci0000:00-0000:00:03.0-net-enp0s3.device loading active plugged 82540EM Gigabi>
sys-devices-pci0000:00-0000:00:05.0-sound-card0.device load active plugged 82801AA AC'97>
sys- devices-pci0000:00-0000:00:08.0-net-enp0s8.device load 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 =Mencerminkan apakah definisi unit sudah benar dimuat.
AKTIF =Aktivasi unit tingkat tinggi status, yaitu generalisasi SUB.
SUB =Status aktivasi unit tingkat rendah, nilainya bergantung pada jenis unit.
206 unit yang dimuat terdaftar. Lewati --all untuk melihat unit yang dimuat tetapi juga tidak aktif.
Untuk menampilkan semua file unit yang diinstal, gunakan 'systemctl list-unit-files'.
Saat Anda menelusuri data di sesi terminal Anda, cari beberapa hal spesifik. Bagian pertama mencantumkan perangkat seperti hard drive, kartu suara, kartu antarmuka jaringan, dan perangkat TTY. Bagian lain menunjukkan titik pemasangan sistem file. Bagian lain mencakup berbagai layanan dan daftar semua target yang dimuat dan aktif.
Pengatur waktu sysstat di bagian bawah output digunakan untuk mengumpulkan dan menghasilkan ringkasan aktivitas sistem harian untuk SAR. SAR adalah alat pemecahan masalah yang sangat berguna. (Anda dapat mempelajarinya lebih lanjut di Bab 13 buku saya Menggunakan dan Mengelola Linux:Volume 1, Nol hingga SysAdmin:Memulai .)
Di dekat bagian paling bawah, tiga baris menggambarkan arti status (dimuat, aktif, dan sub). Tekan q untuk keluar dari pager.
Gunakan perintah berikut (seperti yang disarankan pada baris terakhir dari output di atas) untuk melihat semua unit yang diinstal, apakah mereka dimuat atau tidak. Saya tidak akan mereproduksi output di sini, karena Anda dapat menggulirnya sendiri. Program systemctl memiliki fasilitas penyelesaian tab yang sangat baik yang memudahkan untuk memasukkan perintah yang rumit tanpa perlu mengingat semua opsi:
[root@testvm1 ~]# systemctl list-unit-files
Anda dapat melihat bahwa beberapa unit dinonaktifkan. Tabel 1 di halaman manual untuk daftar systemctl dan memberikan deskripsi singkat tentang entri yang mungkin Anda lihat dalam daftar ini. Gunakan -t (ketik) opsi untuk hanya melihat unit pengatur waktu:
[root@testvm1 ~]# systemctl list-unit-files -t timer
UNIT FILE STATE
[email protected] dinonaktifkan
dnf-makecache .timer
dnf-makecache.>fstrim.timer dinonaktifkan
logrotate.timer nonaktif
logwatch.timer dinonaktifkan
[email protected]
collect.timer enabled
sysstat-summary.timer enabled
systemd-tmpfiles-clean.timer static
unbound-anchor.timer diaktifkan
Anda dapat melakukan hal yang sama dengan alternatif ini, yang memberikan lebih banyak detail:
[root@testvm1 ~]# systemctl list-timers
Kamis 16-04-2020 09:06:20 EDT Tersisa 3 menit 59 detik n/a n/a systemd-tmpfiles system-d-tmpfiles clean.service
Kamis 16-04-2020 10:02:01 EDT Tersisa 59 menit Kamis 16-04-2020 09:01:32 EDT 49 dtk yang lalu dnf-makecache.timer dnf-makecache.service
Kamis 16-04-2020 13:00:00 EDT Tersisa 3j 57 menit t/a n/a sysstat-collect.timer sysstat-collect.service
Jum 04-17 00:00 WIB 04-17 0:00 -04-16 12:51:37 EDT 3j Tersisa 49 menit mlocate-updatedb.timer mlocate-updatedb.service
Jum 17-04-2020 00:00:00 EDT Tersisa 14 jam Kamis 16-04-2020 12:51 :37 EDT 3j 49 menit tersisa unbound-anchor.timer unbound-anchor.service
Jumat 17-04-2020 00:07:00 EDT Tersisa 15 jam n/a n/a
6 penghitung waktu terdaftar.
Lulus --semua untuk melihat penghitung waktu yang dimuat tetapi juga tidak aktif.
[root@testvm1 ~]#
Meskipun tidak ada opsi untuk melakukan systemctl list-mounts, Anda dapat membuat daftar file unit titik mount:
UNIT FILE NEGARA
-.mount dihasilkan
mount . mount static
dev-mqueue.mount static
home.mount generated
proc-fs-nfsd.mount > mount run-vmblock\x2dfuse.mount dinonaktifkan
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
tmp.mount dihasilkan
usr.mount dihasilkan
var-lib-nfs-rpc_pipefs.mount static
var.mount dihasilkan
var-lib-nfs-rpc_pipefs.mount static
var.mount file yang dihasilkan>[root@testvm1 ~]#
Kolom STATE dalam aliran data ini menarik dan membutuhkan sedikit penjelasan. Status "dihasilkan" menunjukkan bahwa unit pemasangan dibuat dengan cepat selama startup menggunakan informasi di /etc/fstab . Program yang menghasilkan unit pemasangan ini adalah /lib/systemd/system-generators/systemd-fstab-generator, bersama dengan alat lain yang menghasilkan sejumlah tipe unit lainnya. Unit pemasangan "statis" adalah untuk sistem file seperti /proc dan /sys , dan file untuk ini terletak di /usr/lib/systemd/system direktori.
Sekarang, lihat unit layanan. Perintah ini akan menampilkan semua layanan yang terinstal di host, aktif atau tidak:
[root@testvm1 ~]# systemctl --all -t service
Bagian bawah daftar unit layanan ini menampilkan 166 sebagai jumlah total unit yang dimuat di host saya. Nomor Anda mungkin akan berbeda.
File unit tidak memiliki ekstensi nama file (seperti .unit ) untuk membantu mengidentifikasinya, sehingga Anda dapat menggeneralisasi bahwa sebagian besar file konfigurasi milik systemd adalah file unit dari satu jenis atau lainnya. Beberapa file yang tersisa sebagian besar adalah .conf file yang terletak di /etc/systemd .
File unit disimpan di /usr/lib/systemd direktori dan subdirektorinya, sedangkan /etc/systemd/ direktori dan subdirektorinya berisi tautan simbolis ke file unit yang diperlukan untuk konfigurasi lokal host ini.
Untuk menjelajahi ini, buat /etc/systemd PWD dan daftar isinya. Kemudian buat /etc/systemd/system PWD dan daftar isinya, dan daftar isi setidaknya beberapa subdirektori PWD saat ini.
Lihat default.target file, yang menentukan target runlevel mana yang akan di-boot sistem. Pada artikel kedua dalam seri ini, saya menjelaskan cara mengubah target default dari GUI (graphical.target ) ke baris perintah saja (multi-pengguna.target ) sasaran. default.target file pada VM pengujian saya hanyalah sebuah symlink ke /usr/lib/systemd/system/graphical.target .
Luangkan waktu beberapa menit untuk memeriksa konten /etc/systemd/system/default.target berkas:
[root@testvm1 system]# cat default.target
# SPDX-License-Identifier:LGPL-2.1+
#
# File ini adalah bagian dari systemd.
#
# systemd adalah perangkat lunak gratis; Anda dapat mendistribusikan ulang dan/atau memodifikasinya
# di bawah persyaratan GNU Lesser General Public License sebagaimana diterbitkan oleh
# Free Software Foundation; baik versi 2.1 dari Lisensi, atau
# (sesuai pilihan Anda) versi yang lebih baru.
[Unit]
Description=Graphical Interface
Documentation=man:systemd .special(7)
Memerlukan=multi-pengguna.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes
Perhatikan bahwa ini memerlukan multi-pengguna.target; grafis.target tidak dapat dimulai jika multi-pengguna.target belum aktif dan berjalan. Ia juga mengatakan "menginginkan" display-manager.service satuan. Sebuah "keinginan" tidak perlu dipenuhi agar unit dapat memulai dengan sukses. Jika "keinginan" tidak dapat dipenuhi, itu akan diabaikan oleh systemd, dan target lainnya akan mulai terlepas.
Subdirektori di /etc/systemd/system adalah daftar keinginan untuk berbagai target. Luangkan waktu beberapa menit untuk menjelajahi file dan kontennya di /etc/systemd/system/graphical.target.wants direktori.
systemd.unit halaman manual berisi banyak informasi bagus tentang file unit, strukturnya, bagian yang dapat dibagi, dan opsi yang dapat digunakan. Itu juga mencantumkan banyak tipe unit, yang semuanya memiliki halaman manualnya sendiri. Jika Anda ingin menafsirkan file unit, ini adalah tempat yang baik untuk memulai.
Unit layanan
Instalasi Fedora biasanya menginstal dan mengaktifkan layanan yang tidak diperlukan oleh host tertentu untuk operasi normal. Sebaliknya, terkadang tidak menyertakan layanan yang perlu diinstal, diaktifkan, dan dimulai. Layanan yang tidak diperlukan agar host Linux berfungsi seperti yang diinginkan, tetapi diinstal dan mungkin berjalan, mewakili risiko keamanan dan harus—minimal—dihentikan dan dinonaktifkan dan—paling baik—harus dicopot pemasangannya.
Perintah systemctl digunakan untuk mengelola unit systemd, termasuk layanan, target, mount, dan banyak lagi. Lihat lebih dekat daftar layanan untuk mengidentifikasi layanan yang tidak akan pernah digunakan:
[root @ testvm1 ~] # systemCTL - Semua layanan
unit beban sub deskripsi aktif
chronyd.service dimuat aktif menjalankan klien NTP / server
CronT.Service dimuat Scheduler Perintah Berjalan Aktif
Cangkir. ● ip6tables.Service tidak ditemukan ip6tables mati tidak aktif>
firewalld.service loaded active running firewalld - dynamic firew semua daemon
● ntpd.service tidak ditemukan mati tidak aktif ntpd.service
● ntpdate.service tidak ditemukan mati tidak aktif ntpdate.service
pcscd.Service aktif menjalankan PC/SC Smart Card Daemon
Saya telah memangkas sebagian besar output dari perintah untuk menghemat ruang. Layanan yang menunjukkan "loaded active running" sudah jelas. Layanan "tidak ditemukan" adalah layanan yang diketahui oleh systemd tetapi tidak diinstal pada host Linux. Jika Anda ingin menjalankan layanan tersebut, Anda harus menginstal paket yang berisi layanan tersebut.
Perhatikan pcscd.service satuan. Ini adalah daemon kartu pintar PC/SC. Fungsinya untuk berkomunikasi dengan pembaca kartu pintar. Banyak host Linux—termasuk VM—tidak memerlukan pembaca ini atau layanan yang dimuat dan menggunakan memori dan sumber daya CPU. Anda dapat menghentikan layanan ini dan menonaktifkannya, sehingga tidak akan memulai ulang pada boot berikutnya. Pertama, periksa statusnya:
[root@testvm1 ~]# systemctl status pcscd.service
● pcscd.service - PC/SC Smart Card Daemon
Dimuat:dimuat (/usr/lib/systemd/system/pcscd.service; tidak langsung; preset vendor:nonaktif)
Aktif:aktif (berjalan) sejak Jum-10-10 11:28:42 EDT; 3 hari yang lalu
Dokumen:man:pcscd(8)
PID Utama:24706 (pcscd)
Tugas:6 (batas:4694)
Memori:1,6M
CGroup:/system.slice/pcscd.service
└─24706 /usr/sbin/pcscd --foreground --auto-exit
10 Mei 11:28:42 testvm1 systemd[1 ]:Memulai Daemon Kartu Cerdas PC/SC.
Data ini menggambarkan informasi tambahan yang disediakan systemd versus SystemV, yang hanya melaporkan apakah layanan berjalan atau tidak. Perhatikan bahwa menentukan .service jenis unit adalah opsional. Sekarang hentikan dan nonaktifkan layanan, lalu periksa kembali statusnya:
[root@testvm1 ~]# systemctl stop pcscd; systemctl disable pcscd
Peringatan:Menghentikan pcscd.service, tetapi masih dapat diaktifkan dengan:
pcscd.socket
Dihapus /etc/systemd/system/sockets.target.wants/pcscd.socket .
[root@testvm1 ~]# systemctl status pcscd
● pcscd.service - PC/SC Smart Card Daemon
Dimuat:dimuat (/usr/lib/systemd/system/pcscd.service; tidak langsung; prasetel vendor:dinonaktifkan)
Aktif:gagal (Hasil:kode keluar) sejak Senin 13-05-2019 15:23:15 EDT; 48 detik yang lalu
Dokumen:man:pcscd(8)
PID Utama:24706 (code=exited, status=1/FAILURE)
10 Mei 11:28:42 testvm1 systemd [1]:Memulai Daemon Kartu Pintar PC/SC.
13 Mei 15:23:15 testvm1 systemd[1]:Menghentikan Daemon Kartu Pintar PC/SC...
13 Mei 15:23:15 testvm1 systemd[1]:pcscd.service:Proses utama keluar, kode=keluar, status=1/FAIL>
13 Mei 15:23:15 testvm1 systemd[1]:pcscd.service:Gagal dengan hasil 'keluar -code'.
13 Mei 15:23:15 testvm1 systemd[1]:Menghentikan PC/SC Smart Card Daemon.
Tampilan entri log singkat untuk sebagian besar layanan mencegah keharusan mencari melalui berbagai file log untuk menemukan jenis informasi ini. Periksa status target runlevel sistem—menentukan jenis unit "target" diperlukan:
[root@testvm1 ~]# systemctl status multi-user.target
● multi-user.target - Sistem Multi-Pengguna
Dimuat:dimuat (/usr/lib/systemd/system/multi -user.target; static; vendor preset:disabled)
Aktif:aktif sejak Kamis-05-09 13:27:22 EDT; 4 hari yang lalu
Dokumen:man:systemd.special(7)
09 Mei 13:27:22 testvm1 systemd[1]:Mencapai target Sistem Multi-Pengguna.
[ root@testvm1 ~]# systemctl status graphics.target
● graphics.target - Antarmuka Grafis
Dimuat:dimuat (/usr/lib/systemd/system/graphical.target; tidak langsung; preset vendor:dinonaktifkan)
Aktif:aktif sejak Kamis 05-09-2019 13:27:22 EDT; 4 hari yang lalu
Dokumen:man:systemd.special(7)
09 Mei 13:27:22 testvm1 systemd[1]:Mencapai Antarmuka Grafis target.
[root@ testvm1 ~]# systemctl status default.target
● grafis.target - Antarmuka Grafis
Dimuat:dimuat (/usr/lib/systemd/system/graphical.target; tidak langsung; preset vendor:dinonaktifkan)
Aktif:aktif sejak Kamis 05-09-2019 13:27:22 EDT; 4 hari yang lalu
Dokumen:man:systemd.special(7)
09 Mei 13:27:22 testvm1 systemd[1]:Mencapai Antarmuka Grafis target.
Target default adalah target grafis. Status unit apa pun dapat diperiksa dengan cara ini.
Memasang dengan cara lama
Unit pemasangan mendefinisikan semua parameter yang diperlukan untuk memasang sistem file pada titik pemasangan yang ditentukan. systemd dapat mengelola unit pemasangan dengan lebih fleksibel daripada yang menggunakan /etc/fstab file konfigurasi sistem file. Meskipun demikian, systemd masih menggunakan /etc/fstab file untuk konfigurasi sistem file dan tujuan pemasangan. systemd menggunakan systemd-fstab-generator alat untuk membuat unit pemasangan sementara dari data di fstab berkas.
Saya akan membuat sistem file baru dan unit pemasangan systemd untuk memasangnya. Jika Anda memiliki beberapa ruang disk yang tersedia di sistem pengujian Anda, Anda dapat melakukannya bersama saya.
Perhatikan bahwa grup volume dan nama volume logis mungkin berbeda pada sistem pengujian Anda. Pastikan untuk menggunakan nama yang sesuai dengan sistem Anda.
Anda perlu membuat partisi atau volume logis, lalu membuat sistem file EXT4 di dalamnya. Tambahkan label ke sistem file, TestFS , dan buat direktori untuk titik pemasangan /TestFS .
Untuk mencobanya sendiri, pertama-tama, verifikasi bahwa Anda memiliki ruang kosong di grup volume. Inilah yang terlihat di VM saya di mana saya memiliki beberapa ruang yang tersedia di grup volume untuk membuat volume logis baru:
[root@testvm1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 120G 0 disk
├─sda 0 /boot
└─sda2 8:2 0 116G 0 bagian
VG01-root 253:0 0 5G 0 lvm /
VG01-swap 253:1 8G 0 SWAP]
├─VG01-usr 253:2 0 30G 0 lvm /usr
VG01-home 253:3 0 20G 0 lvm /home
├─VG01-var 253:4 0 20G 0 lvm /var
└─VG01-tmp 253:5 0 10G 0 lvm /tmp
sr0 11:0 1 1024M 0 rom
[root@] /> VG #PV #LV #SN Attr VSize VGratis
VG01 1 6 0 wz--n- <116.00g <23.00g
Kemudian buat volume baru di VG01 bernama TestFS . Tidak perlu besar; 1GB baik-baik saja. Kemudian buat sistem file, tambahkan label sistem file, dan buat titik pemasangan:
[root@testvm1 ~]# lvcreate -L 1G -n TestFS VG01
Volume logis "TestFS" dibuat.
[root@testvm1 ~]# mkfs -t ext4 /dev/mapper/VG01 -TestFS
mke2fs 1.45.3 (14-Jul-2019)
Membuat filesystem dengan 262144 4k block dan 65536 inode
Filesystem UUID:8718fba9-419f-4915-ab2d-8edf811b5d23
(cadangan superblok yang disimpan di blok:
32768, 98304, 163840, 229376
Mengalokasikan tabel grup:selesai
Menulis tabel inode:selesai done
Menulis superblok dan informasi akuntansi sistem file:selesai
[root@testvm1 ~]# e2label /dev/mapper/VG01-TestFS TestFS
[root@testvm1 ~]# mkdir /TestFS
Sekarang, pasang sistem file baru:
[root@testvm1 ~]# mount /TestFS/
mount:/TestFS/:tidak dapat ditemukan di /etc/fstab.
Ini tidak akan berfungsi karena Anda tidak memiliki entri di /etc/fstab . Anda dapat memasang sistem file baru bahkan tanpa entri di /etc/fstab menggunakan kedua nama perangkat (seperti yang muncul di /dev ) dan titik pemasangan. Memasang dengan cara ini lebih sederhana daripada sebelumnya— dulunya memerlukan tipe sistem file sebagai argumen. Perintah mount sekarang cukup pintar untuk mendeteksi jenis sistem file dan memasangnya sesuai dengan itu.
Coba lagi:
[root@testvm1 ~]# mount /dev/mapper/VG01-TestFS /TestFS/
[root@testvm1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 120G 0 disk
├─sda1 8:1 0 4G 0 bagian /boot
└─sda2 8 0 16 G 0 0 0 5G 0 lvm /
VG01-swap 253:1 0 8G 0 lvm [SWAP]
VG01-usr 253:2 0 30G /us lvm -home 253:3 0 20G 0 lvm /home
VG01-var 253:4 0 20G 0 lvm /var
VG01-tmp 253:5 0 10G > └─VG01-TestFS 253:6 0 1G 0 lvm /TestFS
sr0 11:00 1 1024M 0 rom
[root@testvm1 ~]#
Sekarang sistem file baru dipasang di lokasi yang tepat. Daftar file unit mount:
[root@testvm1 ~]# systemctl list-unit-files -t mount
Perintah ini tidak menampilkan file untuk /TestFS sistem file karena tidak ada file untuk itu. Perintah systemctl status TestFS.mount juga tidak menampilkan informasi apa pun tentang sistem file baru. Anda dapat mencobanya menggunakan wildcard dengan systemctl status perintah:
[root@testvm1 ~]# systemctl status *mount
● usr.mount - /usr
Dimuat:dimuat (/etc/fstab; dihasilkan)
Aktif:aktif (dipasang)
Di mana:/usr
Apa:/dev/mapper/VG01-usr
Dokumen:man:fstab(5)
man:systemd-fstab-generator(8)
● TestFS.mount - /TestFS
Dimuat:dimuat (/proc/self/mountinfo)
Aktif:aktif (dipasang) sejak Jum 2020-04 -17 16:02:26 WIB; 1 menit 18 detik yang lalu
Di mana:/TestFS
Apa:/dev/mapper/VG01-TestFS
● run-user-0.mount - /run/user/0
Dimuat:dimuat (/proc/self/mountinfo)
Aktif:aktif (dipasang) sejak Kam 16-04-2020 08:52:29 EDT; 1 hari 5 jam yang lalu
Di mana:/run/user/0
Apa:tmpfs
● var.mount - /var
Dimuat:dimuat (/etc/fstab; dihasilkan)
Aktif:aktif (dipasang) sejak Kamis 16-04-2020 12:51:34 EDT; 1 hari 1 jam yang lalu
Di mana:/var
Apa:/dev/mapper/VG01-var
Dokumen:man:fstab(5)
man:systemd-fstab-generator( 8)
Tugas:0 (batas:19166)
Memori:212.0K
CPU:5 md
CGroup:/system.slice/var.mount
Perintah ini memberikan beberapa informasi yang sangat menarik tentang mount sistem Anda, dan sistem file baru Anda muncul. /var dan /usr sistem file diidentifikasi sebagai dihasilkan dari /etc/fstab , sementara sistem file baru Anda hanya menunjukkan bahwa itu dimuat dan menyediakan lokasi file info di /proc/self/mountinfo berkas.
Selanjutnya, otomatisasi mount ini. Pertama, lakukan dengan cara kuno dengan menambahkan entri di /etc/fstab . Nanti, saya akan menunjukkan kepada Anda cara melakukannya dengan cara baru, yang akan mengajarkan Anda tentang membuat unit dan mengintegrasikannya ke dalam urutan startup.
Lepas /TestFS dan tambahkan baris berikut ke /etc/fstab berkas:
/dev/mapper/VG01-TestFS /TestFS ext4 defaults 1 2
Sekarang, pasang sistem file dengan mount yang lebih sederhana perintah dan daftarkan unit mount lagi:
[root@testvm1 ~]# mount /TestFS
[root@testvm1 ~]# systemctl status *mount
● TestFS.mount - /TestFS
Dimuat:dimuat (/proc/self/mountinfo)
Aktif:aktif (dipasang) sejak Jum 17-04-2020 16:26:44 EDT; 1 menit 14 detik yang lalu
Di mana:/TestFS
Apa:/dev/mapper/VG01-TestFS
Ini tidak mengubah informasi untuk pemasangan ini karena sistem berkas dipasang secara manual. Reboot dan jalankan perintah lagi, dan kali ini tentukan TestFS.mount daripada menggunakan wildcard. Hasil mount ini sekarang konsisten dengan mount saat startup:
[root@testvm1 ~]# status systemctl TestFS.mount
● TestFS.mount - /TestFS
Dimuat:dimuat (/etc/fstab; dihasilkan)
Aktif:aktif (dipasang ) sejak Jum 17-04-2020 16:30:21 EDT; 1 menit 38 detik yang lalu
Di mana:/TestFS
Apa:/dev/mapper/VG01-TestFS
Docs:man:fstab(5)
man:systemd-fstab-generator(8 )
Tugas:0 (batas:19166)
Memori:72.0K
CPU:6 md
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 mengajukan. 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 direktori. 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.target
The 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 berkas.
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.
Sumber daya
Ada banyak informasi tentang systemd yang tersedia di internet, tetapi banyak yang singkat, tumpul, atau bahkan menyesatkan. Selain sumber daya yang disebutkan dalam artikel ini, halaman web berikut menawarkan informasi yang lebih mendetail dan andal tentang startup systemd.
- Proyek Fedora memiliki panduan praktis yang baik untuk systemd. Ini memiliki hampir semua yang perlu Anda ketahui untuk mengonfigurasi, mengelola, dan memelihara komputer Fedora menggunakan systemd.
- Proyek Fedora juga memiliki lembar contekan bagus yang merujuk silang perintah SystemV lama ke perintah systemd yang sebanding.
- Untuk informasi teknis terperinci tentang systemd dan alasan pembuatannya, lihat deskripsi Freedesktop.org tentang systemd.
- "Lebih banyak sistem menyenangkan" dari Linux.com menawarkan informasi dan tips sistem yang lebih canggih.
Ada juga serangkaian artikel yang sangat teknis untuk sysadmin Linux oleh Lennart Poettering, perancang dan pengembang utama systemd. Artikel-artikel ini ditulis antara April 2010 dan September 2011, tetapi masih relevan sekarang seperti dulu. Banyak hal bagus lainnya yang telah ditulis tentang systemd dan ekosistemnya didasarkan pada makalah ini.
- Memikirkan kembali PID 1
- systemd untuk Administrator, Bagian I
- systemd untuk Administrator, Bagian II
- systemd untuk Administrator, Bagian III
- systemd untuk Administrator, Bagian IV
- systemd untuk Administrator, Bagian V
- systemd untuk Administrator, Bagian VI
- systemd untuk Administrator, Bagian VII
- systemd untuk Administrator, Bagian VIII
- systemd untuk Administrator, Bagian IX
- systemd untuk Administrator, Bagian X
- systemd untuk Administrator, Bagian XI