Mengapa ext2 dan penerus tidak perlu defragmentasi?

8

Keluarga sistem file ext2 / ext3 / ext4 tidak perlu defragmentasi.

Desain dasar apa yang membantu sistem file ini agar tidak terfragmentasi?

Atur
sumber
Tolong jangan gunakan sistem file ext tag , itu sistem file Linux yang sudah lama usang .
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

9

Salah satu cara di mana sistem file ext4 menjaga fragmentasi di-cek, adalah dengan proses alokasi tertunda (mode alokasi default ext4).

Alokasi yang tertunda berfungsi dengan menunda pemetaan blok data file yang baru ditulis ke blok disk dalam sistem file hingga waktu mundur.

Ini berfungsi dengan mengalokasikan sebagian besar blok untuk file pada saat yang sama, ketika jumlah total blok (atau setidaknya rata-rata) di setiap file diketahui. Ini memungkinkan pengalokasi blok (yang mballocdisebutkan dalam jawaban MMK) untuk melakukan pekerjaan yang lebih baik untuk menemukan area ruang bebas berukuran tepat untuk meletakkan file.

Harun
sumber
Perlu diingat ini memang hanya fitur driver ext4 . Sekarang, saya tidak tahu apakah yang sangat teknis berbicara yang tidak bisa me-mount fs tua dengan opsi tersebut (setidaknya sebagian ). Sampai sekarang DELALLOC hanya ditandai sebagai ext4 .
mirh
8

Dalam sistem file ext3, ada pengalokasi blok untuk disk untuk setiap blok, dan, sangat mungkin terjadi fragmentasi.

Namun, dalam sistem file ext4 ada pengalokasi multi-blok yang dapat menunda penulisan blok ke disk, sehingga properti dapat mengalokasikan beberapa blok sekaligus dalam satu potongan disk untuk memungkinkan penulisan yang bersebelahan - dan, kecil kemungkinan fragmentasi dapat terjadi (masih mungkin, hanya saja kecil kemungkinannya)

mmk
sumber
6

Setidaknya untuk Ext2 (dan Ext3 saya pikir, meskipun saya kurang yakin), tidak ada dalam format / struktur on-disk yang akan mencegah defragmentasi.

Kurangnya kebutuhan untuk defragmentasi akan berada pada tingkat implementasi, yang akan bervariasi dari OS ke OS. Artinya, tergantung pada implementasinya, file dalam Ext2 mungkin atau mungkin tidak terfragmentasi.

Jika fragmentasi dihindari, itu kemungkinan akan disebabkan oleh alokasi blok fisik yang tertunda. Yaitu, pada tingkat implementasi tertentu, sistem file akan men-cache data (dan mengaksesnya melalui nomor blok logis) sampai waktu seperti itu ditulis / dikomit ke disk. Ketika data akhirnya ditulis ke disk, blok fisik harus dialokasikan. Algoritma alokasi dapat (atau mungkin tidak) mengalokasikan sejumlah blok fisik yang tersedia berdekatan untuk data.

Semoga ini membantu.


sumber
Sebenarnya ada utilitas e2defrag, dan itu bisa diperlukan (pada disk yang agak penuh dengan banyak file yang ditulis secara acak). Alokasi pengalokasi ext4 yang tertunda membuatnya semakin kecil kemungkinannya. Tetapi bahkan ext2 memiliki semacam alokasi / penulisan yang tertunda, membuatnya kurang perlu untuk menjalankan utilitas defragmentasi daripada pengalokasi primitif MS-DOS®.
mirabilos