Topik ini membahas tata letak penyimpanan dari sisi perangkat, yaitu bagaimana sebuah disk dibagi menjadi partisi, bagaimana nama perangkat dibentuk, dan di mana LVM berada di antara partisi dan sistem berkas. Pembacaan peta partisi dilakukan dari keluaran lsblk dan berkas /proc/partitions yang nyata pada container latihan. Perintah pemartisian dan pemformatan tidak dijalankan di sini karena membutuhkan hak root dan disk yang dapat disunting, sehingga bloknya hanya ditampilkan sebagai gambaran.
Disk, partisi, dan nama perangkatnya#
Partisi (partition) adalah pembagian logis atas sebuah disk yang diperlakukan kernel sebagai perangkat blok tersendiri. Satu disk dapat berisi beberapa partisi, dan setiap partisi menerima nama perangkatnya sendiri di bawah /dev. Kernel mengenali disk dan partisinya melalui sepasang nomor. Nomor mayor menunjuk driver yang menangani jenis perangkat tersebut, sedangkan nomor minor menunjuk perangkat spesifiknya.
Pola penamaan mengikuti jenis pengendali disk, bukan pilihan bebas.
| Pola nama | Contoh | Jenis disk |
|---|---|---|
/dev/sdXN | /dev/sdb1 | Disk SATA, SCSI, atau USB, dengan huruf sda, sdb, sdc |
/dev/vdXN | /dev/vda1 | Disk virtio pada mesin virtual |
/dev/nvme0n1pN | /dev/nvme0n1p1 | SSD NVMe |
/dev/mmcblk0pN | /dev/mmcblk0p2 | Kartu SD dan memori eMMC |
Huruf pada pola sd dan vd menunjuk urutan disk, sedangkan angka di belakangnya menunjuk urutan partisi, sehingga sdb1 adalah partisi pertama pada disk kedua. Pola NVMe lebih panjang karena memuat tiga lapis nomor, yaitu nvme0 untuk pengendali, n1 untuk namespace atau ruang penyimpanan yang dikelola satu pengendali, dan p1 untuk partisi. Perhatikan bahwa angka partisi selalu mengikuti huruf p pada pola NVMe dan mmcblk, karena nama disknya sendiri sudah diakhiri angka.
Bentuk paling ringkas untuk membaca hubungan tersebut adalah lsblk dengan pemilihan kolom.
# pohon perangkat dengan kolom nama, ukuran, dan tipe
lsblk -o NAME,SIZE,TYPENAME SIZE TYPE
zram0 0B disk
vda 10G disk
pmem0 384M disk
└─pmem0p1 383M partKeluaran ini menampilkan satu pasangan disk dan partisi yang nyata. Baris pmem0p1 berlekuk di bawah pmem0 dan bertipe part, sehingga terbaca sebagai partisi pertama milik disk pmem0. Perangkat zram0 dan vda tidak memiliki partisi pada container ini, sehingga keduanya tampil sebagai disk polos tanpa anak.
Membaca peta partisi dari kernel#
Kernel merangkum seluruh perangkat blok beserta partisinya dalam berkas virtual /proc/partitions. Kolom major dan minor menunjuk perangkat yang sama dengan kolom MAJ:MIN pada lsblk, sedangkan kolom #blocks menyatakan ukuran dalam satuan blok 1 KiB. Berkas ini membantu ketika keluaran lsblk perlu diproses oleh skrip, karena bentuknya tabel polos tanpa pohon.
# peta perangkat blok menurut kernel
cat /proc/partitionsmajor minor #blocks name
254 0 10485760 vda
259 0 393216 pmem0
259 1 392192 pmem0p1Angkanya dapat dihitung ulang dengan mudah. Nilai 10485760 blok dikali 1 KiB menghasilkan 10 GiB, sesuai ukuran vda pada lsblk. Selisih pmem0 terhadap pmem0p1 adalah 1024 blok, yaitu 1 MiB di awal disk yang lazim disisakan untuk tabel partisi. Kolom name menegaskan pola penamaan yang sama, yaitu partisi pmem0p1 selalu tampil sebagai turunan langsung dari disk pmem0.
Memformat dan memasang partisi#
Partisi yang baru dibuat masih kosong sampai sebuah sistem berkas dituliskan ke dalamnya. Perintah mkfs.ext4 menuliskan struktur sistem berkas ext4 ke sebuah partisi, dan setelah itu partisi dapat dipasang ke satu titik kait dengan mount. Urutan kerjanya bergerak dari memeriksa disk, membuat partisi, memformat, sampai memasang.
# tidak-dijalankan
# fdisk memerlukan hak root dan disk yang benar-benar dapat disunting
sudo fdisk -l# tidak-dijalankan
# memformat dan memasang partisi memerlukan hak root serta disk nyata
sudo mkfs.ext4 /dev/sdb1
sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/dataPerintah fdisk -l dalam rangkaian pertama hanya membaca dan menampilkan tabel partisi seluruh disk, sedangkan mkfs.ext4 dalam rangkaian kedua menulis data baru ke sebuah partisi. Keduanya ditandai tidak-dijalankan karena container latihan tidak memberikan hak root, dan perintah yang menulis ke perangkat memang tidak boleh dicoba sembarangan. Pada mesin latihan milik sendiri, urutan yang sama dijalankan dengan hati-hati setelah nama perangkat diperiksa dua kali.
Jenis sistem berkasnya menyesuaikan tujuan partisi, misalnya ext4 untuk partisi Linux umum, xfs untuk data berkapasitas besar, dan vfat untuk partisi boot yang perlu dibaca lebih dari satu sistem operasi. Struktur yang baru ditulis dapat diverifikasi dengan lsblk -f, yang menampilkan kolom FSTYPE beserta label dan UUID-nya.
Posisi LVM#
LVM (Logical Volume Manager) menambahkan satu lapisan abstraksi di antara partisi dan sistem berkas. Partisi yang dipilih ditetapkan menjadi physical volume (PV), lalu kumpulan PV digabungkan ke dalam satu volume group (VG), dan kapasitas VG dipotong menjadi logical volume (LV) yang diperlakukan seperti partisi biasa. Sistem berkas kemudian dibuat di atas LV, bukan langsung di atas partisi.
Manfaat lapisan ini muncul ketika kebutuhan berubah. LV dapat diperbesar dengan lvextend tanpa memindahkan data, kapasitas VG dapat ditambah dari disk baru dengan vgextend, dan satu LV bahkan dapat mengambil ruang dari beberapa disk sekaligus. Nama perangkat LV berbentuk /dev/vg-data/lv-1, dan perangkat yang sama juga terdaftar di direktori /dev/mapper/. Karena itu, sistem berkas di atas LVM mudah dikenali pada keluaran df dari awalan jalur /dev/mapper/.
# tidak-dijalankan
# LVM memerlukan hak root, paket lvm2, dan disk nyata
sudo pvcreate /dev/sdb1 /dev/sdc1
sudo vgcreate vg-data /dev/sdb1 /dev/sdc1
sudo lvcreate -n lv-1 -L 10G vg-dataRantai lengkap dari disk mentah sampai titik kait dirangkum diagram berikut, mulai dari pembagian disk menjadi partisi, pembentukan volume logis oleh LVM, penulisan sistem berkas, sampai pemasangan ke titik kait.
Kesalahan umum#
Tiga kesalahan berikut berdampak besar dan patut diwaspadai sejak awal.
- Menjalankan
mkfspada perangkat yang salah. Perintah itu menghapus seluruh isi perangkat tujuannya tanpa konfirmasi, sehingga nama perangkat diperiksa ulang denganlsblksebelum dieksekusi. Partisi yang dituju, misalnya/dev/sdb1, berbeda dari disk utuhnya, yaitu/dev/sdb. - Memasang partisi yang belum diformat.
mountmenolak dengan pesanwrong fs type, bad optionkarena struktur sistem berkasnya belum ada. Buat sistem berkasnya terlebih dahulu denganmkfs.ext4. - Mengira disk baru langsung menambah ruang VG. Disk yang baru terpasang masih perlu dijadikan PV dengan
pvcreate, lalu digabungkan denganvgextend. Kapasitas VG yang bertambah itu baru dipakai oleh LV setelah LV diperbesar denganlvextend.
Ringkasan#
- Partisi membagi disk menjadi perangkat blok tersendiri dengan pola nama yang mengikuti jenis pengendalinya, seperti
sdb1,vda1, dannvme0n1p1. - Peta partisi terbaca dari
/proc/partitionsdengan satuan blok 1 KiB, atau darilsblkdalam bentuk pohon. - LVM berada di antara partisi dan sistem berkas, dengan rantai PV, VG, dan LV, sehingga kapasitas dapat digabung dan diperbesar tanpa memindahkan data.
Referensi#
- fdisk(8) — Ubuntu Manpages — Membaca dan menyunting tabel partisi.
- mkfs.ext4(8) — Ubuntu Manpages — Opsi pembuatan sistem berkas ext4.
- lvm(8) — Ubuntu Manpages — Struktur PV, VG, dan LV beserta perintahnya.
- LVM — Arch Wiki — Ikhtisar lapisan LVM dan contoh pemakaiannya.