↓ Skip to main content
RH134 Red Hat System Administration II - Command Notes (Part II)
  1. doc/

RH134 Red Hat System Administration II - Command Notes (Part II)

·13 mins·

Dokumen ini melanjutkan catatan RH134 (Red Hat System Administration II) pada Part I. Pembahasan mencakup pengelolaan storage dengan LVM, proses boot dan pemulihan sistem, firewall, NFS, instalasi otomatis menggunakan Kickstart, container dengan Podman, serta image mode untuk Red Hat Enterprise Linux.

Contoh perintah pada dokumen ini mengasumsikan penggunaan RHEL dan hak administrator. Nama perangkat, alamat IP, nama volume, dan image harus disesuaikan dengan lingkungan yang digunakan. Perintah yang mengubah partisi, filesystem, boot loader, atau firewall perlu diverifikasi terlebih dahulu karena kesalahan konfigurasi dapat menyebabkan kehilangan data atau sistem tidak dapat melakukan boot.

Daftar Isi
#

1. Logical Volume Manager
#

Konsep PV, VG, dan LV
#

Logical Volume Manager (LVM) menyediakan lapisan abstraksi di antara perangkat block dan filesystem. Tiga komponen utamanya adalah:

  • Physical volume (PV): disk atau partisi yang diinisialisasi untuk digunakan oleh LVM.
  • Volume group (VG): kumpulan satu atau beberapa PV yang menyediakan ruang penyimpanan bersama.
  • Logical volume (LV): volume virtual yang dialokasikan dari VG dan biasanya diformat dengan filesystem.

Struktur tersebut memungkinkan kapasitas LV diperbesar tanpa harus memindahkan data ke partisi baru. Sebelum mengubah storage, identifikasi perangkat dengan lsblk, blkid, dan /proc/partitions.

lsblk -f
blkid
cat /proc/partitions

Membuat dan Memasang Logical Volume
#

Contoh berikut menggunakan /dev/sdb1 sebagai PV, membuat VG bernama vgdata, lalu membuat LV bernama lvapp.

sudo pvcreate /dev/sdb1
sudo vgcreate vgdata /dev/sdb1
sudo lvcreate -n lvapp -L 10G vgdata
sudo mkfs.xfs /dev/vgdata/lvapp
sudo mkdir -p /srv/app
sudo mount /dev/vgdata/lvapp /srv/app

pvcreate menginisialisasi perangkat untuk LVM, vgcreate membuat volume group, dan lvcreate mengalokasikan logical volume. Opsi -L menentukan ukuran, sedangkan -l dapat digunakan untuk menentukan jumlah extent atau persentase ruang VG.

Informasi komponen LVM dapat dilihat menggunakan perintah berikut.

pvs
vgs
lvs
sudo pvdisplay
sudo vgdisplay
sudo lvdisplay

Untuk mount persisten, gunakan UUID atau device mapper path pada /etc/fstab, lalu uji konfigurasi sebelum reboot.

sudo blkid /dev/vgdata/lvapp
sudo systemctl daemon-reload
sudo mount -a
findmnt /srv/app

Memperbesar Logical Volume
#

Tambahkan ruang dari VG ke LV dengan lvextend. Opsi -r meminta LVM memperbesar filesystem secara otomatis jika didukung.

sudo lvextend -L +5G /dev/vgdata/lvapp

Untuk filesystem XFS, filesystem hanya dapat diperbesar dan harus dalam keadaan ter-mount ketika diperbesar.

sudo xfs_growfs /srv/app

Untuk ext4, gunakan resize2fs setelah LV diperbesar.

sudo lvextend -L +5G /dev/vgdata/lvapp
sudo resize2fs /dev/vgdata/lvapp

Periksa ukuran akhir dengan lvs dan df -h. Jangan menjalankan mkfs pada LV yang sudah berisi data karena perintah tersebut membuat filesystem baru dan menghapus isi volume.

Menambah PV dan Memindahkan Data
#

Tambahkan PV baru ke VG menggunakan vgextend.

sudo pvcreate /dev/sdc1
sudo vgextend vgdata /dev/sdc1

pvmove memindahkan physical extents dari PV lama ke PV lain tanpa menghapus LV.

sudo pvmove /dev/sdb1 /dev/sdc1
sudo vgreduce vgdata /dev/sdb1
sudo pvremove /dev/sdb1

Pastikan tidak ada extents yang tersisa pada PV lama sebelum vgreduce dan pvremove. Perintah pvmove dapat berjalan lama dan sebaiknya tidak dihentikan secara paksa.

Menghapus Komponen LVM
#

Hapus LV, VG, dan PV hanya setelah data dipindahkan atau dicadangkan.

sudo umount /srv/app
sudo lvremove /dev/vgdata/lvapp
sudo vgremove vgdata
sudo pvremove /dev/sdc1

Jika LV digunakan sebagai swap, nonaktifkan terlebih dahulu dengan swapoff, kemudian buat ulang atau hapus referensinya dari /etc/fstab.

sudo swapoff /dev/vgdata/lvswap
sudo mkswap /dev/vgdata/lvswap
sudo swapon /dev/vgdata/lvswap

2. Boot Loader dan Pemulihan Sistem
#

Alur Boot RHEL
#

Pada sistem BIOS atau UEFI, firmware memilih boot loader. GRUB2 kemudian memuat kernel dan initramfs, meneruskan kernel command line, dan memulai systemd. Systemd menjalankan target boot default beserta dependency-nya.

Informasi kernel dan initramfs dapat diperiksa dengan grubby dan lsinitrd.

sudo grubby --info=ALL
lsinitrd /boot/initramfs-$(uname -r).img

Mengubah Kernel Argument dengan grubby
#

grubby digunakan untuk melihat atau mengubah konfigurasi boot entry tanpa mengedit file GRUB secara manual. --info menampilkan entry, --set-default-index mengatur entry default, --update-kernel menentukan kernel yang diubah, --args menambahkan argumen, dan --remove-args menghapus argumen.

sudo grubby --info=ALL
sudo grubby --update-kernel=ALL --args="audit=1"
sudo grubby --update-kernel=ALL --remove-args="rhgb quiet"
sudo grubby --set-default-index=0

Periksa kembali hasil perubahan menggunakan grubby --info=ALL sebelum melakukan reboot.

Target Systemd
#

Lihat target default dan dependency yang tersedia dengan perintah berikut.

systemctl get-default
systemctl list-units --type=target
systemctl list-dependencies graphical.target

systemctl set-default mengubah target yang digunakan pada boot berikutnya. systemctl isolate berpindah ke target tertentu pada runtime dan menghentikan unit yang tidak menjadi dependency target tersebut.

sudo systemctl set-default multi-user.target
sudo systemctl isolate rescue.target

Gunakan systemctl cat untuk melihat unit yang aktif beserta sumber konfigurasi drop-in.

systemctl cat sshd.service

Perintah poweroff, reboot, dan halt dapat digunakan untuk mengubah status sistem. Padanan systemd yang umum adalah systemctl poweroff, systemctl reboot, dan systemctl halt.

Memperbaiki Filesystem
#

Filesystem yang rusak atau salah konfigurasi dapat menghentikan proses boot. Periksa pesan error pada emergency shell sebelum menjalankan perbaikan.

Untuk XFS, gunakan xfs_repair pada block device yang tidak sedang ter-mount.

sudo umount /dev/sdb1
sudo xfs_repair /dev/sdb1

Untuk ext4, fsck.ext4 -p dapat memperbaiki masalah secara otomatis jika memungkinkan.

sudo umount /dev/sdb1
sudo fsck.ext4 -p /dev/sdb1

Jangan menjalankan pemeriksaan filesystem yang bersifat destruktif pada filesystem yang sedang digunakan. Jika root filesystem ter-mount read-only dalam emergency mode, remount setelah penyebab masalah dipahami.

mount -o remount,rw /
mount --all
systemctl daemon-reload
systemctl reboot

3. Akses Administrator dan chroot
#

Jika password root tidak diketahui atau akun root terkunci, akses pemulihan dapat dilakukan melalui boot entry dengan mengubah kernel command line. Prosedur ini memerlukan akses konsol atau akses fisik dan harus mengikuti kebijakan keamanan organisasi.

Alur umum pemulihan adalah:

  1. Edit boot entry GRUB dan tambahkan rd.break pada kernel command line.
  2. Setelah masuk ke emergency shell, remount /sysroot dalam mode baca-tulis.
  3. Masuk ke root filesystem dengan chroot.
  4. Atur password root, lalu buat file /.autorelabel agar label SELinux diterapkan ulang pada boot berikutnya.
  5. Keluar dari chroot dan reboot.
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel
exit
reboot

Lokasi root filesystem dapat berbeda bergantung pada konfigurasi storage. Dalam beberapa recovery shell, perintah remount dilakukan pada / setelah chroot.

mount -o remount,rw /
passwd
exec /sbin/init

Setelah reset password, pastikan proses pelabelan ulang selesai sebelum menganggap sistem siap digunakan. Jangan menghapus /.autorelabel sebelum reboot jika context SELinux memang perlu diperbaiki.

4. Firewall dan Label Port SELinux
#

firewalld dan firewall-cmd
#

firewalld mengelola aturan firewall menggunakan zone. Zone menentukan tingkat kepercayaan dan aturan yang berlaku pada interface atau source tertentu. Periksa service dan zone aktif sebelum mengubah konfigurasi.

sudo systemctl enable --now firewalld
firewall-cmd --get-default-zone
firewall-cmd --get-zones
firewall-cmd --get-active-zones
firewall-cmd --get-services

Konfigurasi runtime berlaku sampai reload atau reboot, sedangkan konfigurasi permanent disimpan untuk penggunaan berikutnya. Tambahkan service atau port ke zone yang sesuai.

sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-port=8443/tcp
sudo firewall-cmd --add-source=192.0.2.0/24

Jika zone tidak ditentukan, firewalld menggunakan default zone. Untuk menghindari perubahan pada zone yang keliru, tuliskan --zone=ZONE secara eksplisit.

sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --add-port=8443/tcp --permanent
sudo firewall-cmd --reload

Periksa konfigurasi dengan --list-all atau seluruh zone dengan --list-all-zones. --remove-service dan --remove-port menghapus aturan, sedangkan --runtime-to-permanent menyimpan konfigurasi runtime saat ini ke konfigurasi permanent.

firewall-cmd --zone=public --list-all
sudo firewall-cmd --remove-port=8443/tcp
sudo firewall-cmd --runtime-to-permanent

iptables-translate dan ip6tables-translate membantu menerjemahkan aturan iptables lama ke sintaks nftables yang digunakan oleh firewalld pada sistem modern.

Label Port SELinux
#

Firewall hanya mengizinkan paket masuk. SELinux juga harus mengizinkan service untuk bind pada port tersebut. Lihat port yang telah diberi label dengan semanage port -l dan tambahkan port nonstandar menggunakan tipe yang sesuai dengan service.

sudo semanage port -l | grep http
sudo semanage port -a -t http_port_t -p tcp 8443

Jika port sudah terdaftar dengan tipe lain, gunakan -m untuk memodifikasinya. Hapus aturan tambahan dengan -d hanya setelah memastikan port tersebut tidak digunakan.

sudo semanage port -m -t http_port_t -p tcp 8443
sudo semanage port -d -t http_port_t -p tcp 8443

Pastikan paket policycoreutils-python-utils tersedia jika semanage belum terpasang. Konfigurasi port dan service harus diperiksa bersama; membuka port di firewall tidak berarti service sudah berjalan atau SELinux mengizinkan aksesnya.

5. NFS dan Automounter
#

Mount NFS Secara Manual
#

Paket nfs-utils menyediakan utilitas client NFS. Daftar export yang ditawarkan server dapat dilihat dengan showmount.

sudo dnf install nfs-utils
showmount --exports nfs.example.com
sudo mkdir -p /mnt/shared
sudo mount -t nfs -o rw,sync nfs.example.com:/srv/shared /mnt/shared

Periksa mount dengan findmnt atau mount. Lepas filesystem menggunakan umount setelah memastikan tidak ada proses yang sedang menggunakannya.

findmnt /mnt/shared
lsof +D /mnt/shared
sudo umount /mnt/shared

Opsi rw memasang export dalam mode baca-tulis jika server mengizinkannya, sedangkan sync meminta operasi ditulis secara sinkron. Opsi dan versi NFS harus disesuaikan dengan kebijakan server.

Automounter dengan autofs
#

Automounter memasang export ketika path diakses dan melepasnya setelah tidak aktif. Instal paket yang diperlukan, lalu aktifkan service autofs.

sudo dnf install autofs nfs-utils
sudo systemctl enable --now autofs

Konfigurasi master map dapat ditempatkan pada /etc/auto.master.d/. Contoh berikut menggunakan indirect map.

# /etc/auto.master.d/indirect.autofs
/shares /etc/auto.indirect
# /etc/auto.indirect
project -fstype=nfs,rw,sync nfs.example.com:/srv/project

Dengan konfigurasi tersebut, export diakses melalui /shares/project. Untuk direct map, gunakan file master dan map seperti berikut.

# /etc/auto.master.d/direct.autofs
/- /etc/auto.direct
# /etc/auto.direct
/mnt/shared -fstype=nfs,rw,sync nfs.example.com:/srv/shared

Setelah konfigurasi diubah, muat ulang service dan uji path mount.

sudo systemctl daemon-reload
sudo systemctl restart autofs
ls /shares/project
mount

Periksa sintaks dan path dengan teliti. Kesalahan pada map dapat membuat direktori tampak kosong atau menyebabkan akses tertunda ketika automounter mencoba menghubungi server.

6. Instalasi Interaktif dan Kickstart
#

Instalasi Interaktif
#

Installer RHEL dapat dijalankan melalui antarmuka grafis atau mode teks. Mode teks dipilih menggunakan kernel argument inst.text. Sumber paket dapat ditentukan dengan url --url atau repo tambahan dengan repo --name=NAME --baseurl=URL pada konfigurasi Kickstart.

Pada instalasi interaktif, komponen yang perlu dikonfigurasi meliputi sumber instalasi, storage, network, hostname, timezone, user, security policy, dan software selection. Periksa kembali target disk sebelum memulai instalasi karena pemilihan automatic partitioning dapat menghapus partisi yang ada.

composer-cli digunakan pada alur image builder untuk membuat dan mengelola blueprint atau image, bukan sebagai pengganti seluruh alur instalasi Anaconda.

Struktur Kickstart
#

Kickstart menyimpan jawaban instalasi dalam berkas teks sehingga instalasi dapat diulang secara konsisten. Contoh berikut menunjukkan bagian-bagian yang umum digunakan.

text
url --url="https://mirror.example.com/rhel/9/BaseOS/x86_64/os/"
repo --name="AppStream" --baseurl="https://mirror.example.com/rhel/9/AppStream/x86_64/os/"

lang en_US.UTF-8
keyboard --vckeymap=us
timezone Asia/Jakarta --utc
timesource --ntp-server=pool.ntp.org

zerombr
clearpart --all --drives=sda
autopart
bootloader --location=mbr --boot-drive=sda

network --device=link --bootproto=dhcp --activate
firewall --enabled --service=ssh
selinux --enforcing
services --enabled=sshd --disabled=cockpit

rootpw --lock
user --name=operator --gecos="System Operator" --groups=wheel
firstboot --disable
reboot

clearpart --all menghapus partisi pada disk yang ditentukan dan harus digunakan dengan sangat hati-hati. Alternatif yang lebih terkontrol adalah mendefinisikan partisi dengan part atau menggunakan LVM melalui volgroup dan logvol.

part /boot --fstype=xfs --label=BOOT --size=1024
volgroup vg_system pv.01
logvol / --vgname=vg_system --fstype=xfs --size=10240 --name=root --grow

Parameter storage yang umum meliputi --fstype, --label, --size, --maxsize, dan --grow. Gunakan ignoredisk --drives=DISK jika installer harus mengabaikan disk tertentu.

Opsi autentikasi dan user harus mengikuti kebijakan keamanan. rootpw --plaintext mengekspos password di berkas Kickstart, sedangkan --iscrypted menggunakan nilai hash.

authselect --useshadow --passalgo=sha512
rootpw --iscrypted HASHED_PASSWORD
group --name=developers --gid=2000
user --name=developer --groups=wheel,developers --gecos="Developer"

Validasi Kickstart sebelum digunakan dengan ksvalidator. Gunakan ksverdiff untuk melihat perbedaan sintaks antar versi RHEL.

ksvalidator ks.cfg
ksverdiff -f RHEL9 -t RHEL10

7. Container dengan Podman
#

Konsep Dasar
#

Container menjalankan proses dalam lingkungan terisolasi dengan memanfaatkan kernel host. Container bukan virtual machine penuh; container berbagi kernel host, sedangkan image berisi filesystem dan metadata yang diperlukan aplikasi.

Podman dapat digunakan tanpa daemon pusat dan mendukung rootless container. Gunakan registry tepercaya dan periksa image sebelum menjalankannya.

Image dan Registry
#

Cari image, autentikasi ke registry, unduh image, dan lihat image lokal dengan perintah berikut.

podman search registry.example.com/app
podman login registry.example.com
podman pull registry.example.com/app:latest
podman images
podman image inspect registry.example.com/app:latest

podman tag memberi nama atau tag tambahan pada image. podman rmi menghapus image yang tidak digunakan, sedangkan podman image prune menghapus image dangling.

podman tag app:latest registry.example.com/team/app:1.0
podman rmi app:old
podman image prune

Menjalankan dan Mengelola Container
#

podman run membuat dan menjalankan container. Opsi -d menjalankannya di background, -p memetakan port host ke port container, dan --name memberi nama yang mudah dirujuk.

podman run -d --name web -p 8080:80 registry.example.com/httpd:latest
podman ps
podman ps -a
curl http://localhost:8080

Perintah pengelolaan yang umum adalah podman restart, podman stop, podman kill, dan podman rm. stop mengirimkan sinyal penghentian secara normal, sedangkan kill menghentikan proses secara paksa.

podman restart web
podman stop web
podman rm web

Gunakan podman exec untuk menjalankan perintah di dalam container yang sedang berjalan. Gunakan podman logs dan podman inspect saat troubleshooting.

podman exec -it web /bin/sh
podman logs web
podman inspect web

Membuat Image dengan Containerfile
#

Containerfile berisi instruksi pembuatan image. Contoh minimal berikut memasang web server dalam image berbasis UBI.

FROM registry.access.redhat.com/ubi9/ubi
RUN dnf install -y httpd && dnf clean all
EXPOSE 8080
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]

Buat image dengan podman build, kemudian beri tag dan push ke registry.

podman build -t localhost/web:1.0 .
podman tag localhost/web:1.0 registry.example.com/team/web:1.0
podman push registry.example.com/team/web:1.0

Gunakan podman build --help, podman run --help, atau podman -v untuk memeriksa opsi yang tersedia pada versi Podman yang terpasang. Opsi build dan format image dapat berbeda antar versi.

8. Image Mode untuk RHEL
#

Perbedaan Package Mode dan Image Mode
#

Pada package mode, sistem diinstal dan diperbarui sebagai kumpulan paket RPM. Pada image mode, sistem operasi dipaketkan sebagai bootable container image dan diperbarui sebagai image yang dapat diganti secara atomik. Image mode menggunakan bootc untuk status, upgrade, dan rollback sistem.

Image mode sesuai untuk lingkungan yang membutuhkan deployment berulang dan konsisten. Perubahan manual pada host sebaiknya dihindari atau dimasukkan ke proses build image agar tidak hilang saat image berikutnya diterapkan.

Membuat Bootable Container Image
#

Bootable image menggunakan Containerfile yang sesuai dengan dukungan image mode. Struktur dan base image harus mengikuti dokumentasi RHEL yang digunakan.

FROM registry.redhat.io/rhel9/rhel-bootc

RUN dnf -y install nginx && dnf clean all
COPY nginx.conf /etc/nginx/nginx.conf

CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

Build image, jalankan pengujian dasar, lalu push ke registry.

podman build --squash -t registry.example.com/team/rhel-web:1.0 .
podman login registry.example.com
podman push registry.example.com/team/rhel-web:1.0

--squash menggabungkan layer image jika didukung oleh versi Podman dan workflow yang digunakan. Pastikan image dapat diakses oleh host target dan registry memiliki sertifikat serta kredensial yang benar.

Pengujian dan Instalasi
#

Image dapat diuji sebagai container untuk memeriksa konfigurasi aplikasi, meskipun container tidak sepenuhnya menggantikan pengujian boot sebagai sistem operasi.

podman run -d --name rhel-web -p 8080:80 registry.example.com/team/rhel-web:1.0
curl http://localhost:8080
podman exec rhel-web systemctl status nginx

Untuk pengujian virtual machine, virt-install dapat digunakan untuk membuat VM dan virsh untuk mengelolanya. Detail parameter bergantung pada installer, disk, firmware, dan jaringan yang digunakan.

virt-install --name rhel-image-mode --memory 4096 --vcpus 2 \
  --disk size=20 --network network=default --boot uefi
virsh list --all

Mengelola Host dengan bootc
#

Periksa status image mode dan timer update dengan perintah berikut.

bootc status
systemctl status bootc-fetch-apply-updates.timer

bootc upgrade memeriksa image baru dan menyiapkan deployment berikutnya. Opsi --check melakukan pemeriksaan tanpa menerapkan perubahan, sedangkan --apply menerapkan update sesuai workflow yang didukung.

bootc upgrade --check
bootc upgrade --apply
df -h

Jika deployment baru bermasalah, bootc rollback menyiapkan deployment sebelumnya sebagai target rollback.

sudo bootc rollback
sudo systemctl reboot

Timer update dapat dimatikan sementara dengan systemctl mask, tetapi perubahan tersebut harus didokumentasikan karena memengaruhi siklus patching host.

sudo systemctl mask bootc-fetch-apply-updates.timer

Sebelum menggunakan bootc upgrade atau bootc rollback pada sistem produksi, periksa status deployment, ketersediaan image registry, ruang disk, dan prosedur reboot. Simpan konfigurasi host yang memang harus bertahan di luar lifecycle image melalui mekanisme yang didukung, bukan dengan modifikasi ad hoc pada filesystem root.

Referensi
#

  • RH134 Command Notes - Part I
  • Dokumentasi man untuk lvm, firewall-cmd, mount, autofs, podman, dan bootc
  • Dokumentasi Red Hat untuk RHEL Storage, Boot Loader, Security, NFS, Kickstart, Containers, dan Image Mode
Askarhabibulloh
Author
Askarhabibulloh