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 nama | Asal bus | Contoh |
|---|---|---|
sdX | SATA, SCSI, USB | /dev/sda, /dev/sdb |
nvmeXnY | SSD NVMe | /dev/nvme0n1 |
vdX | virtio (mesin virtual KVM) | /dev/vda |
mmcblkX | kartu SD, eMMC | /dev/mmcblk0 |
srX | drive 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:
| Aspek | MBR | GPT |
|---|---|---|
| Ukuran disk maksimum | 2 TiB | 8 ZiB (praktis tanpa batas) |
| Jumlah partisi | 4 primary, atau 3 + extended | 128 |
| Redundansi tabel | tidak ada | header dan tabel ditulis dua kali |
| Pelindung integritas | tidak ada | CRC32 untuk header dan tabel |
| Firmware pendamping | BIOS klasik | UEFI |
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:
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.imgOutput yang Dihasilkan:
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
0000512Mari kita bedah baris per barisnya:
- Baris 1 (
truncate -s 512 ...): membuat file sebesar satu sektor — 512 byte, ukuran klasik sektor disk. - Baris 2 (
printf '\125\252' | dd ...):printfmenghasilkan dua byte0x55dan0xAA(ditulis dalam oktal), laluddmenaruhnya di offset 510 — dua byte terakhir sektor — tanpa memotong file (conv=notrunc). - 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:
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/USBKolom 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:
| Tombol | Aksi |
|---|---|
m | tampilkan bantuan |
p | cetak tabel partisi saat ini |
n | buat partisi baru |
d | hapus partisi |
t | ubah tipe partisi |
g | buat tabel partisi GPT yang kosong |
w | tulis perubahan ke disk dan keluar |
q | keluar tanpa menulis apa pun |
Berikut contoh tampilan sesi singkat fdisk untuk membuat satu partisi 8 GiB pada disk USB /dev/sdb yang berlabel GPT:
# 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:
sudo parted /dev/sdb --script mklabel gpt mkpart data ext4 1MiB 100%
sudo sfdisk --dump /dev/sdb > cadangan-partisi.txtBaris 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:
truncate -s 64M latihan-disk.img
stat -c '%n %s' latihan-disk.img
file latihan-disk.imgOutput yang Dihasilkan:
latihan-disk.img 67108864
latihan-disk.img: datastat 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:
echo "1 MiB = $((2048 * 512)) byte"
echo "64 MiB = $((64 * 1024 * 1024 / 512)) sektor"Output yang Dihasilkan:
1 MiB = 1048576 byte
64 MiB = 131072 sektorAngka 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.