Langsung ke konten

Arsip

Storage

9 artikel
Rekayasa Perangkat Lunak 22 Sep 2026 5 min read

Tombstone Mencegah Data Terhapus Muncul Kembali

Tombstone Mencegah Data Terhapus Muncul Kembali Penghapusan bukan sekadar ketiadaan nilai dalam replicated store. Ketiadaan tidak membawa informasi apakah sebuah key sengaja dihapus atau sebuah replica memang belum pernah menerimanya. Ketika replica dapat terputus sementara, perbedaan ini menentukan apakah sinkronisasi mempertahankan penghapusan atau justru mengembalikan data lama. Tombstone mencatat penghapusan sebagai state berversi. Replica dapat membandingkan marker tersebut dengan nilai lama dan mempertahankan penghapusan saat rekonsiliasi. Marker akhirnya dapat dibuang, tetapi hanya setelah sistem memiliki batas yang kuat bahwa nilai lama tidak dapat kembali.

Teknologi 22 Sep 2026 4 min read

Registered Buffer io_uring Menahan Halaman Memori untuk I/O Berulang

Linux io_uring dapat mengirim I/O asynchronous dengan buffer user biasa, tetapi operasi berulang masih dapat membuat kernel harus mencari dan menahan halaman user yang relevan pada setiap request. Registered buffer memindahkan sebagian pekerjaan itu ke fase setup yang eksplisit. Aplikasi mendaftarkan satu atau beberapa region memori ke ring. Kernel mencatat region tersebut dan mempertahankan halaman backing dalam keadaan pinned selama registrasi masih aktif. Request berikutnya dapat merujuk region terdaftar melalui indeks, bukan menyerahkan buffer arbitrer yang harus disiapkan dari awal.

Teknologi 22 Sep 2026 6 min read

Phase Tag Completion Queue NVMe Membedakan Entri Baru Setelah Ring Wrap

Completion queue NVMe adalah struktur memori berbentuk ring yang dipakai bersama oleh controller dan software host. Controller menaruh completion queue entry setelah command selesai, sedangkan host mengonsumsi entry tersebut dan memajukan queue head. Saat salah satu pihak mencapai slot terakhir, indeks kembali ke slot nol. Wrap tersebut menimbulkan persoalan state yang kecil tetapi penting. Memori queue masih menyimpan byte dari completion sebelumnya. Entry yang tidak nol pada posisi head saat ini belum membuktikan bahwa controller sudah menaruh completion baru di sana. NVMe menangani kondisi ini dengan Phase Tag satu bit pada setiap completion queue entry.

Teknologi 22 Sep 2026 5 min read

Buffered Write Linux Memisahkan Selesainya Write dari Persistensi Storage

Keberhasilan buffered write() umumnya tidak berarti data file yang baru sudah mencapai storage non-volatile. Pada Linux, jalur buffered I/O yang umum menempatkan data file di page cache, menandai state cache terkait sebagai dirty, lalu membiarkan I/O ke storage berlangsung kemudian. Pemisahan ini merupakan bagian utama dari I/O filesystem normal. Memori menyerap write aplikasi dengan akses yang cepat bagi CPU, sementara kernel dapat menjadwalkan traffic ke backing device secara terpisah. Mekanisme tersebut memberi fleksibilitas dan dapat mengurangi stall storage secara langsung, tetapi juga membentuk batas antara selesainya syscall dan persistensi.

Teknologi 17 Sep 2026 8 min read

NVMe Queue Pair Memisahkan Submission Command dari Completion

NVMe Queue Pair Memisahkan Submission Command dari Completion SSD NVMe tidak mengharuskan CPU menyerahkan setiap storage command langsung ke register perangkat lalu menunggu command tersebut selesai. Sebaliknya, NVMe menempatkan record command dan completion dalam queue yang berada di memori host. Controller membaca command yang menunggu dari submission queue dan menulis hasil ke completion queue terkait. Susunan ini cocok untuk storage PCIe berkecepatan tinggi. Controller SSD modern dapat memproses banyak operasi sekaligus melalui flash channel, die internal, dan pipeline controller. Model queue memungkinkan software menjaga hardware paralel tersebut tetap sibuk tanpa rangkaian panjang penyerahan command secara sinkron.

Rekayasa Perangkat Lunak 17 Sep 2026 7 min read

Linux Direct I/O Menjadikan Alignment Bagian dari Antarmuka File

Membuka regular file dengan O_DIRECT dapat membuat alamat user-space buffer, file offset, dan panjang transfer menjadi bagian yang terlihat dari antarmuka file. read() atau write() yang secara lain valid dapat gagal dengan EINVAL ketika salah satu nilai tersebut melanggar constraint direct I/O untuk file itu. Pada kombinasi filesystem dan perilaku kernel tertentu, operasi yang misaligned dapat beralih ke buffered I/O. Batas ini mudah terlewat karena buffered file I/O biasa sebagian besar menyembunyikan geometri transfer fisik. Page cache dan filesystem dapat menerima application buffer pada alamat arbitrer lalu memediasi transfer secara internal. Direct I/O mengurangi mediasi tersebut, sehingga constraint yang biasanya berada di bawah batas system call dapat menjadi requirement untuk memory aplikasi dan bentuk request.

Basis Data 16 Sep 2026 5 min read

Truncasi Tail PostgreSQL VACUUM Memerlukan Lock Eksklusif

VACUUM biasa pada PostgreSQL umumnya membiarkan ruang heap yang telah direklamasi tetap berada di dalam relation agar dapat digunakan kembali. Fase tail truncation yang terpisah dapat memperpendek file relation ketika terdapat rangkaian halaman kosong yang berurutan pada ujung fisiknya. Fase tersebut memerlukan lock ACCESS EXCLUSIVE. Batas lock ini membuat tail truncation berbeda secara material dari pembersihan vacuum biasa. Pemeliharaan heap dan index rutin dirancang agar dapat berjalan berdampingan dengan operasi baca dan tulis normal, sedangkan memperpendek relation secara fisik memerlukan periode singkat ketika akses tabel secara bersamaan tidak dapat berlangsung.

Teknologi 16 Sep 2026 6 min read

SATA Native Command Queuing Mengurutkan Ulang Permintaan Storage

Permintaan storage tidak selalu harus selesai dalam urutan yang sama dengan saat software mengirimkannya. SATA Native Command Queuing, yang umum disingkat NCQ, memungkinkan host yang kompatibel mengirim beberapa command tanpa menunggu masing-masing selesai terlebih dahulu. Perangkat kemudian dapat menjadwalkan pekerjaan yang memenuhi syarat dalam urutan yang sesuai dengan operasi internalnya. Mekanisme ini sangat berguna untuk hard disk drive, karena pergerakan head fisik dan posisi rotasi dapat membuat urutan permintaan memengaruhi waktu layanan. Solid-state drive tidak memiliki head bergerak, tetapi beberapa command yang outstanding tetap dapat mengekspos pekerjaan paralel kepada controller dan mengurangi jeda idle.

Teknologi 16 Sep 2026 4 min read

fsync pada File Tidak Memastikan Directory Entry Tersimpan Persisten

fsync() yang berhasil pada regular file tidak, dengan sendirinya, menjamin bahwa directory entry yang memberi nama pada file tersebut sudah mencapai persistent storage. Linux mendokumentasikan boundary ini secara eksplisit: sinkronisasi file mencakup data file dan metadata terkait, sedangkan persistence directory entry yang memuatnya membutuhkan fsync() pada file descriptor untuk direktori tersebut. Perbedaan ini penting ketika software membuat file baru atau mengganti pathname yang sudah ada secara atomik. Konten file dan metadata pathname adalah dua bagian filesystem state yang terpisah, dan crash dapat menguji durability boundary di antara keduanya.