Satu disk baru yang dibeli dari toko pada dasarnya adalah satu bidang kosong tanpa batas wilayah. Agar bisa dipakai, bidang itu dipotong menjadi partisi — wilayah berukuran pasti yang masing-masing menampung filesystem, sistem operasi, atau area swap. Peta pemotongannya disimpan di tabel partisi yang berformat MBR atau GPT, dan Linux membacanya melalui nama seperti /dev/sda1. Pada Chapter ini kita bedah dua generasi tabel partisi tersebut, pola penamaan perangkatnya, cara kerja alat pemotong fdisk dan parted, lalu berlatih membaca layout partisi langsung dari angkanya.
Mengapa Memotong Disk Menjadi Partisi #
Pemotongan bukan keharusan teknis — filesystem modern sanggup mengisi satu disk penuh — tetapi memotong disk memberi manfaat praktis. Pertama, isolasi: partisi /boot atau /home yang penuh tidak menyeret partisi lain ikut gagal. Kedua, multi-OS: Windows dan Linux bisa tinggal di partisi berbeda pada satu disk. Ketiga, swap: area bantu memori ini paling rapi dikelola sebagai partisi khusus. Keempat, fleksibilitas: tiap wilayah bisa memakai filesystem berbeda — ext4 untuk sistem, xfs untuk data besar, FAT32 untuk berbagi file lintas platform.
Dua Generasi Tabel Partisi: MBR dan GPT #
Tabel partisi menentukan berapa banyak dan seberapa besar wilayah yang bisa dipotong. Ada dua format yang masih hidup berdampingan:
| Aspek | MBR (1983) | GPT (sekitar 2000, bagian UEFI) |
|---|---|---|
| Jumlah partisi primary | 4 (atau 3 + 1 extended berisi partisi logis) | 128 |
| Ukuran disk maksimum | 2 TiB | 9,4 ZiB |
| Penyimpanan metadata | satu sektor pertama disk | awal disk plus cadangan di akhir disk |
| Pemulihan bila rusak | sulit — tak ada cadangan | header cadangan + checksum CRC |
| Boot | BIOS klasik | UEFI |
MBR menaruh seluruh peta di sektor pertama disk: 446 byte kode boot disusul 16 byte deskripsi untuk masing-masing dari empat partisi. Batas 2 TiB lahir dari pengalamatan logical block 32-bit; disk yang lebih besar hanya terbaca sebagian. GPT membuang kedua keterbatasan itu sekaligus menyalin tabelnya ke ujung akhir disk — jika header di awal terkorup oleh tulisan yang salah alamat, utilitas masih bisa membangun ulang dari cadangannya. Disk baru hari ini sebaiknya memakai GPT.
Membaca Pola Nama /dev/sda1 dan /dev/nvme0n1p1 #
Nomor pada nama perangkat adalah alamat partisi, dan polanya beda antar jenis bus:
| Nama | Bedah pola |
|---|---|
/dev/sda | disk SATA/SCSI/USB pertama; huruf naik per disk: sdb, sdc, … |
/dev/sda1 | partisi ke-1 dari disk sda |
/dev/nvme0n1p2 | controller NVMe ke-0, namespace ke-1, partisi ke-2 |
/dev/mmcblk0p1 | kartu SD/eMMC pertama, partisi ke-1 |
Perhatikan bahwa disk NVMe menyisipkan n (namespace) sebelum nomor partisi, sehingga partisinya ditulis nvme0n1p2, bukan nvme0n12. Huruf dan angka ini ditentukan urutan penemuan perangkat saat boot — bisa berpindah bila kabel dicolok ulang — sehingga /etc/fstab sebaiknya memakai UUID seperti yang kita diskusikan di Chapter Mount dan Unmount
.
fdisk: Memotong Secara Interaktif #
fdisk adalah alat pemotong klasik berbentuk dialog: kita membuka sebuah disk, menjawab pertanyaan satu huruf demi satu huruf, dan semua keputusan ditahan di memori sampai kita menuliskannya secara sengaja. Beginilah tampilan pembukanya:
$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.41).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
Alur kerja tipikalnya dirangkum tabel perintah berikut:
| Tombol | Perintah | Peran |
|---|---|---|
p | tampilkan tabel partisi yang ada saat ini | |
n | new | buat partisi baru (nomor, sektor awal, ukuran) |
t | type | ubah type code partisi |
a | toggle bootable | tandai partisi boot (MBR) |
w | write | tulis tabel ke disk dan keluar |
q | quit | keluar tanpa menyimpan perubahan apa pun |
Untuk disk GPT, fdisk versi terbaru sudah mendukungnya, dan alat spesialisnya bernama gdisk. Type code yang paling sering ditemui: 83 (Linux filesystem), 82 (swap), 8e (Linux LVM), fd (RAID Linux), dan ef (sistem EFI) — kode ini memberi tahu utilitas dan installer maksud tiap partisi, walau isi sebenarnya tetap ditentukan oleh filesystem yang diformat ke dalamnya.
parted dan partprobe #
parted adalah generasi alat yang bisa dijalankan tanpa dialog, sehingga cocok untuk skrip instalasi. Contohnya: parted /dev/sdb --script mklabel gpt membuat tabel GPT kosong, lalu parted -a optimal /dev/sdb --script mkpart data ext4 1MiB 100% memotong satu partisi mulai sektor 1 MiB sampai ujung disk. Opsi -a optimal meminta agar awal partisi sejajar dengan batas yang disarankan perangkat — detail yang penting untuk performa SSD dan array RAID.
Setelah tabel ditulis ulang, kernel yang sedang berjalan belum tentu membacanya kembali secara otomatis. Perintah partprobe /dev/sdb meminta kernel memuat ulang tabel partisi tanpa reboot, dan partx -u /dev/sdb melakukan hal serupa untuk satu disk. Kedua perintah inilah yang menyelamatkan kita dari “partisi baru kok tidak muncul di /dev”.
Melihat Layout dalam Angka #
Utilitas sfdisk --dump /dev/sda mencetak tabel partisi dalam format yang bisa dibaca ulang oleh sfdisk sendiri — pola ini sering dipakai untuk backup tabel. Karena tidak bisa menyentuh disk sungguhan di lingkungan latihan, kita pakai fixture layout-sda.dump yang meniru hasil dump sebuah disk 3 GB berisi tiga partisi:
mkdir -p latihan
cd latihan
cat > layout-sda.dump << 'EOF'
label: dos
label-id: 0x1a2b3c4d
device: /dev/sda
unit: sectors
/dev/sda1 : start= 63, size= 524288, type=83, bootable
/dev/sda2 : start= 526336, size= 1048576, type=82
/dev/sda3 : start= 1574912, size= 4194304, type=8e
EOF
cat layout-sda.dumpOutput yang Dihasilkan:
label: dos
label-id: 0x1a2b3c4d
device: /dev/sda
unit: sectors
/dev/sda1 : start= 63, size= 524288, type=83, bootable
/dev/sda2 : start= 526336, size= 1048576, type=82
/dev/sda3 : start= 1574912, size= 4194304, type=8eFormatnya satu baris per partisi: nama perangkat, sektor awal (start), jumlah sektor (size), lalu type code. Angka-angka inilah bahan baku semua perhitungan — ukuran sebenarnya dari sebuah partisi adalah size × 512 byte sektor. Skrip awk berikut mengubahnya jadi megabyte sekaligus memeriksa satu kualitas penting: apakah sektor awalnya sejajar kelipatan 1 MiB (2048 sektor):
mkdir -p latihan
cd latihan
cat > layout-sda.dump << 'EOF'
label: dos
label-id: 0x1a2b3c4d
device: /dev/sda
unit: sectors
/dev/sda1 : start= 63, size= 524288, type=83, bootable
/dev/sda2 : start= 526336, size= 1048576, type=82
/dev/sda3 : start= 1574912, size= 4194304, type=8e
EOF
awk -F '[:,]' '/^\/dev/ {
dev = $1; s = $2; z = $3
gsub(/ /, "", dev)
gsub(/[^0-9]/, "", s); gsub(/[^0-9]/, "", z)
mb = z * 512 / 1048576
printf "%-10s %8.1f MB sektor awal %-8d sejajar 1MiB: %s\n", dev, mb, s, (s % 2048 == 0 ? "ya" : "TIDAK")
}' layout-sda.dumpOutput yang Dihasilkan:
/dev/sda1 256.0 MB sektor awal 63 sejajar 1MiB: TIDAK
/dev/sda2 512.0 MB sektor awal 526336 sejajar 1MiB: ya
/dev/sda3 2048.0 MB sektor awal 1574912 sejajar 1MiB: yaMari kita telaah isi skrip di atas:
- Baris 2–13 (heredoc): membangun ulang fixture yang sama — setiap blok latihan selalu mandiri sehingga bisa diulang sendiri-sendiri.
- Baris 14 (
awk -F '[:,]' ...): memotong tiap baris pada tanda titik dua dan koma, sehingga$1berisi nama perangkat,$2teksstart=..., dan$3tekssize=.... - Baris 15–17 (
gsub): menggosok semua karakter bukan angka darisdanz—start= 63mengerucut menjadi63yang siap dihitung. - Baris 18–19 (
mbdanprintf): menghitung megabyte dari jumlah sektor (z × 512 / 1048576) dan mengeceks % 2048 == 0— sisa nol berarti partisi dimulai tepat di kelipatan 1 MiB.
Hasilnya memperlihatkan dua jaman dalam satu disk: /dev/sda1 mulai di sektor 63 — warisan tools lama yang berpatokan pada kepala silinder disk mekanis, dan kini dianggap tidak sejajar; dua partisi lainnya dimulai di sektor 526336 dan 1574912, keduanya kelipatan 2048. Partisi yang tidak sejajar membuat SSD dan RAID membaca lebih banyak blok dari yang dibutuhkan, sehingga tools modern selalu membulatkan ke 1 MiB. Pola awal berikutnya = awal sebelumnya + size juga terlihat di sini: partisi pertama menghabiskan sektor 63 sampai 524.350, dan partisi kedua baru mulai di 526.336 — celah 1.985 sektor di antaranya memang sengaja dibiarkan agar sejajar.
Partisi yang telah terpotong masih berupa wadah kosong — belum ada direktori, belum ada journal, belum ada apa pun di dalamnya. Mengisi wadah itu dengan struktur data filesystem adalah topik Chapter Filesystem Types .
Referensi lanjut: fdisk(8)
, sfdisk(8)
, dan parted(8)
; praktik langsung fdisk interaktif dibahas di Chapter Disk Partitioning Tools
.