Mengapa sistem operasi memiliki batas ukuran file?

10

Apa yang membatasi file untuk memiliki ukuran maksimum tergantung pada Sistem Operasi?

Dari halaman ini :

teks alternatif

Saya tidak mengerti persis ini. Jika Anda memiliki ruang penyimpanan, apa lagi yang bisa menjadi batasan? Anda harus dapat menyimpan data sebanyak yang Anda inginkan seperti yang Anda inginkan (bahkan dalam satu file) kecuali Anda kehabisan ruang penyimpanan.

Moeb
sumber

Jawaban:

19

Filesystem perlu menyimpan ukuran file (baik dalam byte, atau dalam beberapa unit yang bergantung pada sistem file seperti sektor atau blok). Jumlah bit yang dialokasikan untuk ukuran biasanya diperbaiki di batu ketika sistem file dirancang.

Jika Anda mengizinkan bit terlalu banyak untuk ukuran, Anda membuat setiap file mengambil sedikit lebih banyak ruang, dan setiap operasi sedikit lebih lambat. Di sisi lain, jika Anda mengizinkan bit terlalu sedikit untuk ukuran, maka suatu hari orang akan mengeluh karena mereka mencoba untuk menyimpan file 20EB dan sistem file sampah Anda tidak akan membiarkannya.

Pada saat filesystem yang Anda sebutkan dirancang, memiliki disk yang cukup besar untuk berjalan ke batas terdengar seperti fiksi ilmiah. (Kecuali FAT32, tetapi perusahaan yang mempromosikannya menginginkannya sebagai langkah menengah sebelum semua orang mengadopsi NTFS baru mereka yang mengkilap, plus mereka tidak pernah sangat pandai mengantisipasi kebutuhan yang berkembang.)

Hal lain adalah bahwa sampai akhir abad terakhir, sebagian besar perangkat keras konsumen (dan bahkan server) hanya dapat mengakomodasi perhitungan cepat dengan nilai 32-bit, dan sistem operasi cenderung menggunakan nilai 32-bit untuk sebagian besar hal, termasuk ukuran file. 32 bit berarti 4GB, sehingga sistem operasi cenderung terbatas pada file 4GB terlepas dari sistem file, seringkali bahkan 2GB karena mereka menggunakan bilangan bulat yang ditandatangani. OS desktop atau server apa pun yang serius saat ini menggunakan 64 bit untuk ukuran dan offset file, yang membatasi 8EB.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
2
+1. Klarifikasi kepada EB yang belum tahu seperti dalam exabytes, seperti dalam sejuta terabyte.
Shinrai
8

Struktur data pada disk biasanya adalah batasnya. Teliti bagaimana sistem operasi ini memformat disk mereka dan bagaimana mereka melacak bagian-bagian file pada disk, dan Anda akan mengerti mengapa mereka memiliki keterbatasan ini. Sistem file FAT didokumentasikan dengan baik secara online (lihat Wikipedia , misalnya) dan Anda dapat melihat bahwa pilihan ukuran bilangan bulat untuk beberapa bidang struktur disk akhirnya membatasi ukuran keseluruhan file yang dapat Anda simpan dengan format disk ini.

Michael Kohne
sumber
1

Keterbatasan ini hanya disebabkan oleh kenyataan bahwa ketika spesifikasi sistem pengarsipan ditulis, tidak pernah terpikirkan bahwa hard drive akan menjadi jauh lebih besar .... atau batasan teknis lainnya saat merancang spesifikasi.

Saya pikir bahwa saat ini, keterbatasan dalam sistem pengarsipan baru biasanya mengarah pada apa yang diharapkan akan digunakan.

... Akan sulit bagi tim teknis mana pun untuk merilis sistem pengarsipan dan mengatakan bahwa ia mendukung 500 hard drive Petabyte tanpa pernah melakukan pengujian terhadapnya.

Laptop pertama saya adalah 286 dengan hard drive 40MB ... Saya tidak akan pernah membayangkan pernah membutuhkan (atau mencapai batas) FAT pada saat itu!

Saya pikir batasan NTFS saat ini adalah sekitar 16TB per volume, 2TB per file ... terus terang, itu (dan seharusnya) bagus untuk beberapa waktu - apa pun yang mampu (atau membutuhkan) penulisan file yang lebih besar dari 2TB biasanya memiliki kemampuan untuk memisahkan file dan / atau fitur administratif serupa (mis. SQL server).

William Hilsum
sumber
1

Jawaban sederhana: Anda harus dapat membaca file, jadi Anda harus dapat mengatasi file tersebut. Akses ini akan melalui struktur data yang memiliki batas. Anda akan terjebak dengan penyebut umum terendah; batas fisik (disk, kartu SD, dll), batas sistem file, dan batas OS.

Homolka yang kaya
sumber
Anda dapat menangani file dalam berbagai fase, misalnya segmen, bank memori, chunk, byte offset, dll.
yyny
0

Mengetahui ukuran setiap file hanyalah penyederhanaan yang sudah biasa kita lakukan. Tidak harus seperti itu dan tidak selalu demikian.

Mainframe lama tidak pernah baru seberapa besar file rekaman itu sampai ia membaca sampai akhir (dan bahkan kemudian mungkin tidak melacak ukurannya). Bahkan file disk sering diakses secara berurutan dan hanya akan tumbuh ketika mereka diperpanjang. Ukurannya (dalam byte) tidak direkam dan secara umum tidak dapat dihitung tanpa membacanya secara penuh karena ukuran sektor variabel dan fitur aneh lainnya.

Tidak akan sulit untuk merancang sistem file yang tidak melacak ukuran file dan memungkinkan mereka untuk tumbuh tanpa batas.

Adrian Pronk
sumber