Ruang yang disediakan untuk root pada sistem file - mengapa?

105

Saya mengerti bahwa secara default, sistem file yang baru dibuat akan dibuat dengan 5% dari ruang yang dialokasikan untuk root. Saya juga tahu Anda dapat mengubah ruang yang ditentukan dengan:

tune2fs -m 1 /dev/sdXY

Yang membuat saya penasaran, adalah apa tujuan sebenarnya dari ruang yang dipesan ini. Apakah itu melayani tujuan praktis yang akan mendapat ruang lebih dari 5% dalam beberapa keadaan?

Alasan saya menemukan pertanyaan ini adalah bahwa kami baru-baru ini membangun filestore 1TB, dan tidak bisa mengetahui mengapa df -h membuat kami kehilangan 5% dari kapasitas kami.

cocokupgeek
sumber
1
Oke, sekarang itu pemborosan besar ruang 'tidak tersedia'. Mungkin 5% harus dibatasi untuk ukuran drive yang lebih kecil dari X (mis. 5% ruang disk hingga maksimum 100MB).
tshepang
3
Pada sistem file 8 TB saya 400 GB baru saja hilang - ini adalah pemborosan ruang nyata !! :)
Ilia Rostovtsev

Jawaban:

101

Menyimpan ruang untuk proses root yang penting (dan kemungkinan tindakan penyelamatan) adalah salah satu alasannya.

Tapi ada lagi. Ext3 cukup bagus untuk menghindari fragmentasi sistem file, tetapi begitu Anda mendapatkan di atas sekitar 95% penuh, perilaku itu jatuh dari tebing, dan tiba-tiba kinerja sistem file menjadi berantakan. Jadi meninggalkan 5% dicadangkan memberi Anda penyangga terhadap ini.

Ext4 harus lebih baik dalam hal ini, seperti yang dijelaskan oleh pengembang / guru sistem file Linux Theodore Ts'o :

Jika Anda menetapkan jumlah blok yang dicadangkan ke nol, itu tidak akan mempengaruhi banyak kinerja kecuali jika Anda menjalankan untuk jangka waktu yang lama (dengan banyak file yang dibuat dan dihapus) sementara sistem file hampir penuh (yaitu, katakan di atas 95%), pada titik mana Anda akan mengalami masalah fragmentasi. Pengalokasi multi-blok Ext4 jauh lebih tahan fragmentasi, karena ia berusaha lebih keras untuk menemukan blok yang berdekatan, jadi bahkan jika Anda tidak mengaktifkan fitur ext4 lainnya, Anda akan melihat hasil yang lebih baik hanya dengan memasang sistem file ext3 menggunakan ext4 sebelum sistem file sepenuhnya penuh.

Jika Anda hanya menggunakan sistem file untuk arsip jangka panjang, di mana file tidak terlalu sering berubah (yaitu, toko mp3 atau video besar), itu jelas tidak masalah.

mattdm
sumber
3
Seperti dicatat di superuser.com/a/1257550/38062 , angka-angka "90%" dan "95%" ini berasal dari pengukuran terhadap Berkeley FFS yang dilakukan pada 1980-an. Dalam beberapa dekade sejak itu, orang lain telah menantang kebijaksanaan yang diterima berulang kali ini.
JdeBP
1
Tidak ada pengurangan kinerja untuk pengguna normal dengan ruang yang dipesan ini. Mereka tidak akan mendapatkan ruang pada perangkat lebih awal dari yang diharapkan. Namun root akan memiliki cukup ruang untuk memperbaiki masalah apa pun yang mengisi disk.
crististm
44

Jika Anda mengizinkan orang lain masuk ke sistem Anda, melalui ssh, misalnya, memiliki 5% blok yang dicadangkan ini memastikan pengguna eksternal tidak dapat mengisi disk. Bahkan jika Anda tidak mengizinkan orang lain masuk ke sistem Anda, blok yang disediakan mencegah program tidak berjalan sebagai root dari mengisi disk Anda.

LawrenceC
sumber
Terima kasih untuk ini, benar-benar bergumul dengan jawaban mana yang harus diberi tanda benar - jawaban diputuskan seperti yang pertama dan tepat, mattdm ditandai sebagai benar karena latar belakang dan detail tambahan yang membantu saya memahami "Mengapa" lebih lanjut.
cocokupgeek
22

Dengan blok yang dicadangkan pengguna Anda, dan layanan yang berjalan sebagai pengguna spesifik daripada berjalan sebagai root, tidak dapat mengisi filesystemsem dan berpotensi memecah hal-hal lain yang perlu ditulis ke sistem file tersebut - meskipun layanan yang berjalan sebagai root masih dapat membuatnya sepenuhnya penuh tentu saja.

Ini juga memberi Anda beberapa ruang untuk bekerja dengan ketika pengguna mengeluh bahwa disk penuh, atau layanan mulai gagal karena sistem file penuh. Sebagai contoh, Anda dapat mengarsipkan beberapa file ke arsip zip / gz / 7zip sebelum menghapusnya (walaupun jika sistem file benar-benar penuh, kemungkinan Anda memiliki beberapa sistem file lain yang tersedia sehingga Anda dapat membuat file arsip sebagai gantinya).

5% telah menjadi default untuk waktu yang lama , sejak saat disk jauh lebih kecil (puluhan megabita daripada ratusan gigabita) jadi 5% tidak terlalu banyak. Untungnya dengan mudah dapat disetel ke persentase yang lebih kecil seperti yang Anda katakan, atau set ke nomor tertentu blok jika Anda menggunakan tune2fs's -rpilihan bukan -m. Dalam kedua kasus, Anda dapat memberikan parameter 0 untuk mengubah reservasi off sepenuhnya - saya tidak akan melakukan ini untuk /, /tmp, /vardan sebagainya, tetapi Anda mungkin ingin untuk filesystem yang hanya bertindak sebagai penyimpanan pengguna (mengatakan file- global yang berbagi) atau yang hanya menyimpan file ukuran tetap (seperti VM berukuran tetap) yang hanya akan tumbuh ketika Anda membuat yang baru.

David Spillett
sumber
22

Default 5% dimaksudkan untuk partisi sistem. Misalnya, jika ruang disk Anda terisi, sistem log ( /var/log) dan kotak surat root ( /var/mail/root) masih dapat menerima informasi penting. Untuk /homepartisi penyimpanan data umum atau, tidak perlu meninggalkan ruang untuk root. Untuk kebutuhan khusus, Anda dapat mengubah pengguna yang mendapat ruang darurat ( tune2fs -u 1234).

Ada alasan lain untuk tidak membuat sistem file ext [234] menjadi penuh, yang merupakan fragmentasi .

Gilles
sumber