Jika saya membaca dokumentasi Ext4 dengan benar, mulai dari Linux 3.8 harus dimungkinkan untuk menyimpan data secara langsung di inode dalam vas file yang sangat kecil.
Saya mengharapkan file seperti itu memiliki ukuran 0 blok, tetapi bukan itu masalahnya.
#creating a small file
printf "abcde" > small_file
#checking size of file in bytes
stat --printf='%s\n' small_file
5
#number of blocks used by files
stat --printf='%b\n' small_file
8
Saya berharap angka terakhir ini menjadi 0. Apakah saya kehilangan sesuatu?
Jawaban:
Untuk mengaktifkan data sebaris
ext4
, Anda haruse2fsprogs
1,43 atau lebih baru. Dukungan untuk data inline ditambahkan Maret 2014 untuk paragit
repositori tetapi hanya dirilis Mei 2016.Setelah memilikinya, Anda dapat menjalankan
mke2fs -O inline_data
perangkat yang sesuai untuk membuat sistem file baru dengan dukungan data sebaris; ini akan menghapus semua data Anda . Tampaknya belum memungkinkan untuk mengaktifkan data sebaris pada sistem file yang ada (setidaknya,tune2fs
tidak mendukungnya).Sekarang buat file kecil, dan jalankan
debugfs
di sistem file.cd
ke direktori yang sesuai, dan jalankanstat smallfile
; Anda akan mendapatkan sesuatu sepertiSeperti yang Anda lihat, data disimpan inline. Ini juga bisa dilihat menggunakan
df
; sebelum membuat file:Setelah membuat file:
File ada di sana, menggunakan inode tetapi ruang penyimpanan yang tersedia tidak berubah.
sumber
Jika
e2fsprogs
versi Anda terlalu tua, atau sistem file sudah dibuat, Anda dapat mengatur flag fitur menggunakandebugfs
(flag didukung sejak 2012, sedangkanmke2fs
dan alat-alat lain menambahkan dukungan pada 2014+ dan banyak distribusi masih tidak mengirimkannya pada 2016 , termasuk Ubuntu Xenial).Untuk melakukannya, buka partisi dalam mode baca-tulis:
Dan kemudian tambahkan benderanya:
(atau
feature -inline_data
untuk mematikannya, tapi itu mungkin ide yang sangat buruk jika sudah ada file inline!)Perhatikan, bagaimanapun, jika sistem Anda
e2fsprogs
sudah tua, Anda mengarahkan diri Anda ke sudut, karena utilitas (termasukdebugfs
itu sendiri) akan menolak untuk menyentuh sistem file seperti itu setelah mengatur bendera.Perhatikan juga bahwa saat ini
GRUB
(2.02) tidak mendukung ini, jadi pengaturannya pada partisi boot akan membuat sistem tidak dapat di-boot. Ada tambalan yang tidak dihapus untuk menambah dukungan.Pada saat penulisan ini, file dan direktori hingga
inode_size-128
dapat diuraikan, jadi 128 byte untuk inode 256 byte default. Anda dapat menggunakan inode yang lebih besar jika Anda ingin lebih banyak inlining.sumber