GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan perintah systemctl untuk mengelola unit systemd

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.

unit sistem Deskripsi .automount .automount unit digunakan untuk mengimplementasikan on-demand (yaitu, plug and play) dan pemasangan unit filesystem secara paralel selama startup. .device .perangkat file unit mendefinisikan perangkat keras dan perangkat virtual yang diekspos ke sysadmin di /dev/direktori . Tidak semua perangkat memiliki file unit; biasanya, memblokir perangkat seperti hard drive, perangkat jaringan, dan beberapa lainnya memiliki file unit. .mount .mount unit mendefinisikan titik mount pada struktur direktori sistem file Linux. .scope .scope unit mendefinisikan dan mengelola satu set proses sistem. Unit ini tidak dikonfigurasi menggunakan file unit, melainkan dibuat secara terprogram. Per systemd.scope halaman manual, “Tujuan utama unit ruang lingkup adalah mengelompokkan proses pekerja dari layanan sistem untuk organisasi dan untuk mengelola sumber daya.” .service .layanan file unit mendefinisikan proses yang dikelola oleh systemd. Ini termasuk layanan seperti crond cups (Common Unix Printing System), iptables, layanan multiple logical volume management (LVM), NetworkManager, dan banyak lagi. .slice .irisan unit mendefinisikan "slice," yang merupakan divisi konseptual dari sumber daya sistem yang terkait dengan sekelompok proses. Anda dapat menganggap semua sumber daya sistem sebagai pai dan subset sumber daya ini sebagai "potongan" dari pai itu. .socket .soket unit mendefinisikan soket komunikasi antarproses, seperti soket jaringan. .swap .swap unit mendefinisikan perangkat atau file swap. .target .target unit mendefinisikan grup file unit yang menentukan titik sinkronisasi startup, runlevel, dan layanan. Unit target menentukan layanan dan unit lain yang harus aktif agar dapat memulai dengan sukses. .timer .timer unit mendefinisikan timer yang dapat memulai eksekusi program pada waktu yang ditentukan.

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:

[root@testvm1 ~]# systemctl list-unit-files -t 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

Linux
  1. Pengantar menggunakan tcpdump di baris perintah Linux

  2. Kelola startup menggunakan systemd

  3. Menggunakan –exclude Dengan Perintah Du?

  1. Menggunakan kekuatan di baris perintah Linux

  2. Menggunakan Stratis untuk mengelola penyimpanan Linux dari baris perintah

  3. Cara Mengelola Layanan Systemd dengan Systemctl di Linux

  1. Cara Membuat Database di MySQL Menggunakan Command Line

  2. Bagaimana mengelola unit systemd saat start-up

  3. Cara Menggunakan Perintah Systemctl untuk Mengelola Layanan Systemd