Disk baru yang baru dikenali kernel ibarat kertas kosong: kernel sanggup membaca dan menulis byte mentah di dalamnya, tetapi belum ada struktur yang memisahkan area sistem operasi dari area data pribadi. Tabel partisi adalah struktur pertama yang kita tulis ke sebuah disk, dan alat pembuatnya — fdisk, gdisk, dan parted — adalah bintang utama chapter ini. Kita mulai dari aturan penamaan perangkat, membandingkan skema MBR dengan GPT, lalu mengenal tiap alat dari dekat. Karena operasi partisi sungguhan menuntut akses root ke disk nyata, kita akan berlatih dengan file bayangan disk yang aman untuk dieksperimen.

Nama Perangkat Disk: /dev/sda, /dev/vda, dan /dev/nvme0n1 #

Setiap disk muncul sebagai block device di direktori /dev — konsep file perangkat yang telah kita bedah di chapter Device Management . Nama yang diberikan kernel mengikuti bus tempat disk menempel, dan huruf di belakangnya berurut sesuai urutan deteksi:

Pola namaAsal busContoh
sdXSATA, SCSI, USB/dev/sda, /dev/sdb
nvmeXnYSSD NVMe/dev/nvme0n1
vdXvirtio (mesin virtual KVM)/dev/vda
mmcblkXkartu SD, eMMC/dev/mmcblk0
srXdrive optical/dev/sr0

Partisi diberi nomor di belakang nama perangkat: /dev/sda1 adalah partisi pertama dari disk sda. Pada NVMe nomor itu mendapat huruf p karena nama perangkatnya sendiri sudah mengandung angka — /dev/nvme0n1p2 berarti partisi kedua dari namespace pertama controller pertama.

MBR dan GPT: Dua Skema Tabel Partisi #

Sebelum membagi disk, kita harus memilih skema tabel partisi. MBR (Master Boot Record) adalah skema warisan yang menyimpan seluruh tabelnya di sektor pertama disk, sementara GPT (GUID Partition Table) adalah penerusnya yang lebih tangguh:

AspekMBRGPT
Ukuran disk maksimum2 TiB8 ZiB (praktis tanpa batas)
Jumlah partisi4 primary, atau 3 + extended128
Redundansi tabeltidak adaheader dan tabel ditulis dua kali
Pelindung integritastidak adaCRC32 untuk header dan tabel
Firmware pendampingBIOS klasikUEFI

Kedua skema sama-sama menutup sektor pertama dengan tanda tangan dua byte 55 AA — penanda kecil yang diperiksa firmware, fdisk, hingga wipefs. Kita bisa melihat posisi penanda itu langsung dengan membuat sektor palsu berukuran tepat 512 byte:

bash
truncate -s 512 sektor-mbr.img
printf '\125\252' | dd of=sektor-mbr.img bs=1 seek=510 conv=notrunc 2>/dev/null
od -A d -t x1 sektor-mbr.img

Output yang Dihasilkan:

text
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0000496 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa
0000512

Mari kita bedah baris per barisnya:

  1. Baris 1 (truncate -s 512 ...): membuat file sebesar satu sektor — 512 byte, ukuran klasik sektor disk.
  2. Baris 2 (printf '\125\252' | dd ...): printf menghasilkan dua byte 0x55 dan 0xAA (ditulis dalam oktal), lalu dd menaruhnya di offset 510 — dua byte terakhir sektor — tanpa memotong file (conv=notrunc).
  3. Baris 3 (od -A d -t x1 ...): menampilkan isi file dalam heksadesimal dengan alamat desimal.

Pada output, baris * adalah singkatan od untuk baris-baris berulang (semuanya 00), dan pada baris beralamat 0000496 tampak 55 aa menempel tepat di ujung — persis di tempat firmware mencarinya. Baris 0000512 hanyalah penanda alamat akhir file. GPT berbeda penempatan: header GPT berada di sektor kedua dan disalin ke akhir disk — itulah redundansi pada tabel di atas.

Mengintip Struktur Disk dengan lsblk #

Langkah pertama sebelum mempartisi adalah memetakan disk yang sudah ada, dan lsblk adalah cara tercepatnya — perintah ini berjalan tanpa root. Berikut contoh tampilan lsblk pada desktop dengan satu disk SATA dan satu USB:

text
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 465.8G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/efi
├─sda2   8:2    0     1G  0 part /boot
└─sda3   8:3    0 464.3G  0 part /
sdb      8:16   0  14.9G  0 disk 
└─sdb1   8:17   0  14.9G  0 part /media/budi/USB

Kolom NAME memperlihatkan pohon: baris bertakuk di bawah sda adalah partisi dari disk itu, dan TYPE membedakan disk dari part. Kolom SIZE menampilkan kapasitas, sementara MOUNTPOINTS menunjukkan di mana partisi terpasang — topik chapter Mount Configuration . Isi tabel ini berbeda-beda tiap mesin, jadi selalu periksa sendiri sebelum menyentuh perangkat mana pun.

fdisk: Partisi Interaktif dari Terminal #

fdisk adalah alat partisi paling dikenal dan menjadi bawaan keluarga Debian. Alat ini bekerja interaktif: perubahan ditahan di memori dan baru benar-benar ditulis ke disk ketika kita menekan tombol w. Tombol-tombol utamanya:

TombolAksi
mtampilkan bantuan
pcetak tabel partisi saat ini
nbuat partisi baru
dhapus partisi
tubah tipe partisi
gbuat tabel partisi GPT yang kosong
wtulis perubahan ke disk dan keluar
qkeluar tanpa menulis apa pun

Berikut contoh tampilan sesi singkat fdisk untuk membuat satu partisi 8 GiB pada disk USB /dev/sdb yang berlabel GPT:

text
# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.40.4).
Changes will stay in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): n
Partition number (1-128, default 1): 1
First sector (2048-31129566, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-31129566, default 31129566): +8G

Created a new partition 1 of type 'Linux filesystem' and of size 8 GiB.

Command (m for help): w
The partition table has been altered.
Syncing disks.

Setelah w, kernel biasanya membaca ulang tabel partisi otomatis. Dua jaring pengaman membuat sesi seperti ini tidak menakutkan: jawaban kosong (langsung menekan Enter) menerima nilai default yang dihitung fdisk, dan q membatalkan seluruh perubahan karena belum pernah ditulis.

gdisk dan parted: Alternatif untuk GPT #

gdisk (nama asli GPT fdisk) memakai antarmuka tombol yang nyaris sama dengan fdisk, tetapi bekerja penuh pada skema GPT — pilihan nyaman bagi yang hafal fdisk. Sebaliknya parted mengambil pendekatan berbeda: satu perintah untuk satu aksi, ukuran ditulis manusiawi, dan mudah dimasukkan ke skrip:

bash
sudo parted /dev/sdb --script mklabel gpt mkpart data ext4 1MiB 100%
sudo sfdisk --dump /dev/sdb > cadangan-partisi.txt

Baris pertama memberi /dev/sdb label GPT lalu membuat satu partisi bernama data dari offset 1 MiB sampai ujung disk (100%). Baris kedua adalah kebiasaan sebelum operasi berisiko: sfdisk --dump menyimpan tabel partisi sebagai teks yang bisa dipulihkan kapan pun. sfdisk juga satu-satunya yang senang bekerja pada file image biasa — sifat yang kita manfaatkan sebentar lagi.

Latihan Aman dengan File Bayangan Disk #

Menulis tabel partisi ke /dev/sdX menuntut root, dan lingkungan latihan kita memang tidak memilikinya — itu berkah, bukan hambatan. Banyak alat partisi menerima file biasa sebagai pengganti perangkat, jadi kita siapkan file bayangan disk 64 MiB:

bash
truncate -s 64M latihan-disk.img
stat -c '%n %s' latihan-disk.img
file latihan-disk.img

Output yang Dihasilkan:

text
latihan-disk.img 67108864
latihan-disk.img: data

stat melaporkan ukurannya: 67.108.864 byte — tepat 64 × 1024 × 1024 — sementara file menjawab data: belum ada signature yang dikenal, sama seperti partisi yang baru jadi dan belum diformat. Aritmetika sektor seperti ini sebaiknya biasa kita hitung cepat:

bash
echo "1 MiB  = $((2048 * 512)) byte"
echo "64 MiB = $((64 * 1024 * 1024 / 512)) sektor"

Output yang Dihasilkan:

text
1 MiB  = 1048576 byte
64 MiB = 131072 sektor

Angka 2048 bukan pilihan acak: partisi modern diletakkan mulai sektor 2048 supaya rata dengan batas 1 MiB, dan itulah default yang fdisk tawarkan pada sesi di atas. File 64 MiB setara 131.072 sektor. Pada mesin Anda yang memasang util-linux lengkap, echo 'label: gpt' | sfdisk latihan-disk.img akan menulis label GPT ke file image tanpa root; sandbox latihan ini tidak memasang sfdisk, jadi contoh kita berhenti di menyiapkan image-nya. Detail lengkap ada di fdisk(8) dan halaman Partitioning wiki Arch.

Partisi yang rapi baru berupa ruang-ruang bertanda batas. Sebelum bisa menyimpan satu file pun, setiap partisi perlu ditumbuhi filesystem — dan itulah pekerjaan mkfs pada chapter berikutnya.