Telah diketahui bahwa file teks kosong memiliki nol byte:
Namun, masing-masing berisi metadata , yang menurut penelitian saya, disimpan dalam inode , dan memang menggunakan ruang .
Mengingat ini, tampaknya logis bagi saya bahwa adalah mungkin untuk mengisi disk dengan murni membuat file teks kosong. Apakah ini benar? Jika demikian, berapa banyak file teks kosong yang saya perlukan untuk mengisi disk, katakanlah, 1GB?
Untuk melakukan beberapa pemeriksaan, saya menjalankan df -i
tetapi ini tampaknya menunjukkan% inode yang digunakan (?) Daripada berapa banyak mereka menimbang.
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 947470 556 946914 1% /dev
tmpfs 952593 805 951788 1% /run
/dev/sda2 28786688 667980 28118708 3% /
tmpfs 952593 25 952568 1% /dev/shm
tmpfs 952593 5 952588 1% /run/lock
tmpfs 952593 16 952577 1% /sys/fs/cgroup
/dev/sda1 0 0 0 - /boot/efi
tmpfs 952593 25 952568 1% /run/user/1000
/home/lucho/.Private 28786688 667980 28118708 3% /home/lucho
disk-usage
inode
file-metadata
luchonacho
sumber
sumber
Jawaban:
Output ini menyarankan
28786688
inode secara keseluruhan, setelah itu upaya selanjutnya untuk membuat file di sistem file root (perangkat/dev/sda2
) akan kembaliENOSPC
("Tidak ada ruang yang tersisa di perangkat").Penjelasan: pada desain sistem file * nix asli, jumlah maksimum inode ditetapkan pada waktu pembuatan sistem file. Ruang khusus dialokasikan untuk mereka. Anda dapat kehabisan inode sebelum kehabisan ruang untuk data, atau sebaliknya. Sistem file Linux standar yang paling umum
ext4
masih memiliki batasan ini. Untuk informasi tentang ukuran inode pada ext4, lihat halaman manual untuk mkfs.ext4.Linux mendukung sistem file lain tanpa batasan ini. Aktif
btrfs
, ruang dialokasikan secara dinamis. "Struktur inode relatif kecil, dan tidak akan berisi data file tertanam atau data atribut diperluas." (ext3 / 4 mengalokasikan beberapa ruang di dalam inode untuk atribut yang diperluas ). Tentu saja Anda masih dapat kehabisan ruang disk dengan membuat terlalu banyak entri direktori / metadata.Memikirkannya, tmpfs adalah contoh lain di mana inode dialokasikan secara dinamis. Sulit untuk mengetahui apa sebenarnya jumlah maksimum dari inode yang dilaporkan
df -i
dalam praktiknya untuk sistem file ini. Saya tidak akan melampirkan makna pada nilai yang ditampilkan."XFS juga mengalokasikan inode secara dinamis. Begitu juga JFS. Begitu juga / tidak reiserfs. Begitu juga F2FS. Sistem file Unix tradisional mengalokasikan inode secara statis pada waktu mkfs, dan begitu juga FS modern seperti ext4 yang melacak warisan mereka kembali ke sana, tetapi hari ini itu pengecualian, bukan aturannya.
"BTW, XFS tidak membiarkan Anda menetapkan batas pada persentase maksimum ruang yang digunakan oleh inode, sehingga Anda dapat kehabisan inode sebelum Anda sampai ke titik di mana Anda tidak dapat menambahkan file yang ada. (Default adalah 25% untuk FSes di bawah 1TB, 5% untuk sistem file hingga 50TB, 1% untuk lebih besar dari itu.) Bagaimanapun, penggunaan ruang ini pada metadata (peta inode dan luas) akan tercermin secara teratur
df -h
"- Peter Cordes dalam komentar untuk jawaban inisumber
28786688-667980=28118708
file kosong, saya akan kehabisan inode dan "merusak sistem saya"?df -h
, @luchonacho.Membuat file kosong melibatkan penggunaan hal-hal berikut:
Jumlah inode yang tersedia sering ditentukan ketika sistem file dibuat, dan tidak dapat diubah (beberapa sistem file seperti Btrfs atau XFS mengalokasikan inode secara dinamis). Itulah yang diukur dengan
df -i
. Ketika Anda kehabisan inode, Anda tidak dapat membuat file atau direktori baru, bahkan jika Anda memiliki ruang disk yang tersedia.Entri direktori juga memakan tempat, dari ruang disk yang tersedia. Anda dapat melihat ini dengan melihat ukuran direktori: selalu merupakan kelipatan dari ukuran blok, dan ketika direktori berisi banyak file, ukurannya bertambah. Jika Anda kehabisan ruang disk, Anda mungkin tidak dapat membuat file atau direktori baru di direktori yang "penuh" ( yaitu , di mana menambahkan file baru akan melibatkan mengalokasikan blok baru), bahkan jika Anda memiliki inode yang tersedia.
Jadi ya, dimungkinkan untuk kehabisan ruang disk hanya menggunakan file kosong.
sumber
Argumen logika murni:
Nama file terdiri dari jumlah byte yang tidak nol. Bahkan dengan kompresi maksimum teoritis dalam sistem file hipotetis yang dirancang untuk memungkinkan jumlah maksimum nama file absolut, setiap nama file masih akan mengkonsumsi setidaknya satu bit di suatu tempat di disk fisik Anda. Mungkin lebih, tetapi "1 bit per file" adalah minimum sepele.
Hitung jumlah bit yang mungkin bisa muat pada piring Anda, dan itu adalah jumlah maksimum teoritis (kosong atau tidak kosong) file yang dapat Anda simpan di dalamnya.
Jadi jawabannya adalah ya. Akhirnya, Anda akan kehabisan ruang, tidak peduli penyimpanan apa yang Anda gunakan, jika Anda terus menambahkan file kosong. Jelas Anda akan kehabisan lebih cepat dari yang dihitung dalam mode ini, tetapi kehabisan Anda akan.
sumber
Cukup tidak, tetapi Anda dapat kehabisan inode di linux yang akan sama dengan kehabisan ruang.
Anda dapat mencoba sesuatu seperti ini di shell Anda
n=0; while :; do touch $n; let n=n+1; done
Pastikan untuk menjalankannya di mesin virtual atau Anda akan keluar dari inode dengan sangat cepat.
sumber
rm -fr inodetest
untuk menyingkirkan semua file kosong itu dan bekerja secara normal lagi. :)Anda tidak dapat mengisi disk dengan membuat file kosong - disk masih memiliki banyak ruang untuk file baru. Tapi ya, Anda dapat menguras persediaan inode gratis filesystem yang terbatas - di mana Anda tidak dapat membuat file baru (walaupun disk Anda - sejauh ruang yang digunakan - praktis kosong). Itu hanya daftar inode filesystem yang semuanya telah digunakan, bukan disk ... sehingga filesystem penuh, sedangkan disk praktis kosong. Inode-table menggunakan ruang pada disk, tetapi tabel tidak tumbuh ketika Anda menambahkan file - sama seperti selembar kertas tidak tumbuh ketika Anda menulis pada baris itu.
(sebuah jawaban-dalam-komentar oleh Baard Kopperud)
sumber