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
- 2. Boot Loader dan Pemulihan Sistem
- 3. Akses Administrator dan
chroot - 4. Firewall dan Label Port SELinux
- 5. NFS dan Automounter
- 6. Instalasi Interaktif dan Kickstart
- 7. Container dengan Podman
- 8. Image Mode untuk RHEL
- Referensi
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/partitionsMembuat 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/apppvcreate 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 lvdisplayUntuk 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/appMemperbesar 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/lvappUntuk filesystem XFS, filesystem hanya dapat diperbesar dan harus dalam keadaan ter-mount ketika diperbesar.
sudo xfs_growfs /srv/appUntuk ext4, gunakan resize2fs setelah LV diperbesar.
sudo lvextend -L +5G /dev/vgdata/lvapp
sudo resize2fs /dev/vgdata/lvappPeriksa 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/sdc1pvmove 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/sdb1Pastikan 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/sdc1Jika 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/lvswap2. 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).imgMengubah 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=0Periksa 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.targetsystemctl 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.targetGunakan systemctl cat untuk melihat unit yang aktif beserta sumber konfigurasi drop-in.
systemctl cat sshd.servicePerintah 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/sdb1Untuk ext4, fsck.ext4 -p dapat memperbaiki masalah secara otomatis jika memungkinkan.
sudo umount /dev/sdb1
sudo fsck.ext4 -p /dev/sdb1Jangan 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 reboot3. 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:
- Edit boot entry GRUB dan tambahkan
rd.breakpada kernel command line. - Setelah masuk ke emergency shell, remount
/sysrootdalam mode baca-tulis. - Masuk ke root filesystem dengan
chroot. - Atur password root, lalu buat file
/.autorelabelagar label SELinux diterapkan ulang pada boot berikutnya. - Keluar dari
chrootdan reboot.
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel
exit
rebootLokasi 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/initSetelah 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-servicesKonfigurasi 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/24Jika 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 --reloadPeriksa 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-permanentiptables-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 8443Jika 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 8443Pastikan 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/sharedPeriksa 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/sharedOpsi 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 autofsKonfigurasi 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/projectDengan 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/sharedSetelah konfigurasi diubah, muat ulang service dan uji path mount.
sudo systemctl daemon-reload
sudo systemctl restart autofs
ls /shares/project
mountPeriksa 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
rebootclearpart --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 --growParameter 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 RHEL107. 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:latestpodman 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 pruneMenjalankan 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:8080Perintah 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 webGunakan 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 webMembuat 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.0Gunakan 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 nginxUntuk 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 --allMengelola Host dengan bootc#
Periksa status image mode dan timer update dengan perintah berikut.
bootc status
systemctl status bootc-fetch-apply-updates.timerbootc 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 -hJika deployment baru bermasalah, bootc rollback menyiapkan deployment sebelumnya sebagai target rollback.
sudo bootc rollback
sudo systemctl rebootTimer update dapat dimatikan sementara dengan systemctl mask, tetapi perubahan tersebut harus didokumentasikan karena memengaruhi siklus patching host.
sudo systemctl mask bootc-fetch-apply-updates.timerSebelum 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
manuntuklvm,firewall-cmd,mount,autofs,podman, danbootc - Dokumentasi Red Hat untuk RHEL Storage, Boot Loader, Security, NFS, Kickstart, Containers, dan Image Mode

