Pernahkah Anda mengamati perbedaan penggunaan disk dari beberapa file saat menggunakan perintah du dan ls. Misalnya:
$ du -sh /u02/ticoprd/redo/* 515M redo1a.rdo 524M redo3b.rdo 518M redo4a.rdo
$ ls -ltrh /u02/ticoprd/redo/* -rw-r----- 1 oticoprd dba 1.1G Aug 4 01:09 redo1a.rdo -rw-r----- 1 oticoprd dba 1.1G Aug 4 02:32 redo3b.rdo -rw-r----- 1 oticoprd dba 1.1G Aug 4 03:51 redo4a.rdo
Kita bisa melihat perintah “ls” menampilkan ukuran file menjadi 1.1GB sedangkan ukuran file perintah “du” menjadi hanya 515MB. File-file ini adalah file yang jarang. "ls" menampilkan ukuran file yang tampak dan "du" menampilkan ukuran sebenarnya dari file yang berada di disk.
File jarang adalah jenis file komputer yang mencoba menggunakan ruang sistem file lebih efisien ketika blok yang dialokasikan ke file sebagian besar kosong. Hal ini dicapai dengan menulis informasi singkat (metadata) yang mewakili blok kosong ke disk alih-alih ruang "kosong" aktual yang membentuk blok, menggunakan lebih sedikit ruang disk (yaitu file sparse berisi blok nol yang keberadaannya dicatat, tetapi tidak memiliki ruang yang dialokasikan pada disk). Ukuran blok penuh ditulis ke disk sebagai ukuran sebenarnya hanya jika blok berisi data "nyata" (tidak kosong).
Saat membaca file yang jarang, sistem file secara transparan mengubah metadata yang mewakili blok kosong menjadi blok "nyata" yang diisi dengan nol byte saat run-time. Aplikasi tidak menyadari konversi ini. File jarang biasanya digunakan untuk image disk, snapshot database, file log, dll.
Keuntungan dari sparse files adalah penyimpanan hanya dialokasikan ketika benar-benar dibutuhkan:ruang disk disimpan, dan file besar dapat dibuat bahkan jika tidak ada cukup ruang kosong pada sistem file.
Kekurangannya adalah file yang jarang dapat menjadi terfragmentasi. Laporan ruang kosong sistem file mungkin menyesatkan dan menyalin file yang jarang dengan program yang tidak secara eksplisit mendukungnya dapat menyalin seluruh ukuran file yang tidak terkompresi, termasuk bagian yang jarang, sebagian besar nol yang tidak ada di disk — kehilangan manfaat dari properti sparse dalam file.
Kita dapat melihat perilaku ini dengan file /var/log/lastlog.
# ls -lh /var/log/lastlog -rw-r--r--. 1 root root 144K Sep 8 22:45 /var/log/lastlog
# du -sh /var/log/lastlog 40K /var/log/lastlog
Membuat File Jarang
Kita dapat membuat file sparse menggunakan perintah dd:
# dd if=/dev/zero of=sparse_file bs=1 count=0 seek=512M 0+0 records in 0+0 records out 0 bytes (0 B) copied, 0.000381714 s, 0.0 kB/s
# ls -hl sparse_file -rw-r--r--. 1 root root 512M Sep 9 00:13 sparse_file
# du -sh sparse_file 0 sparse_file
Untuk melihat penggunaan disk file dengan perintah “ls” kita dapat menggunakan opsi “-s”:
# ls -lhs sparse_file 0 -rw-r--r--. 1 root root 512M Sep 9 00:13 sparse_file
Untuk melihat ukuran file yang jelas menggunakan “du” kita dapat menggunakan opsi –apparent-size:
# du -h --apparent-size sparse_file 512M sparse_file
Salin file sparse dengan perintah “cp”
'cp' mendukung file yang jarang dan bagus dalam mendeteksi itu, jadi cukup untuk menjalankan "cp". Tetapi cp memang memiliki opsi –sparse=WHEN.
# cp --sparse=always sparse_file sparse_file.2