Mengapa ada begitu banyak desain sistem file yang bersaing? [Tutup]


27

Hanya pertanyaan singkat, tetapi mengapa ada begitu banyak sistem file yang masih bersaing dan digunakan saat ini? (ntfs, fat32, ext3 (ffs), dll)

Tampaknya para perancang sistem file dapat menyepakati aspek terbaik dari setiap jenis sistem dan menerapkan sistem file yang "terbaik", bukan? Hanya sebuah pemikiran, karena sistem file ini telah ada untuk sementara waktu sekarang, dan seharusnya setidaknya agak jelas mana yang memiliki kualitas yang lebih baik daripada yang lain, dan kita bisa menggabungkan yang baik di masing-masing dan menciptakan sistem pamungkas yang jauh lebih baik


39
Haruskah kita mencoba menggabungkan Ferrari dengan backhoe juga? Desain didasarkan pada serangkaian pertukaran; sempurna tidak ada.
Pubby

7
@ Pubby8 Saya akan menyetir.
The Muffin Man

8
Jawaban sebenarnya untuk ini bukan hanya diskusi teknis, tetapi juga yang legal.
detly

38
Pertanyaan ini mengingatkan saya pada xkcd.com/927
dan04

7
Kami akan melakukan hal yang sama saat kami membuat kamera yang memiliki lensa besar, panjang, berkualitas tinggi, dan benar-benar ringan, dan pas di saku atau dompet, dan sangat murah. Gagasan bahwa Anda dapat mengambil semua bagian yang baik dan menggabungkannya menjadi satu hal terbaik sebenarnya tidak berhasil dalam praktik. Daftar hal-hal baik tidak lengkap atau penuh dengan barang yang saling bertentangan .
Eric Lippert

Jawaban:


32

Mari kita pikirkan secara spesifik di sini sejenak, menggunakan contoh yang telah Anda kutip:

  • ntfs - Hak milik Microsoft. Siapa pun yang bukan Microsoft tidak dapat menggunakan ini, oleh karena itu harus menggunakan / membuat sesuatu yang berbeda. Sekarang, jika Anda adalah Microsoft, Anda ingin menggunakan ini di atas FAT karena masalah poin-poin berikutnya.

  • fat32 - Tidak cukup modern. Ukuran file maksimum adalah 4GB. Pencarian entri direktori adalah O (n). Tabel alokasi adalah daftar yang ditautkan, dan bukan sesuatu yang lebih efisien seperti bitmap alokasi (di mana sangat cepat untuk menemukan ruang kosong yang berdekatan). Tidak mendukung izin. Tidak mendukung tautan keras atau tautan simbolik. Tidak mendukung penjurnalan.

  • ext3 - Ini adalah ekstensi dari ext2 terutama untuk mendukung penjurnalan.

Jadi, sepertinya ada beberapa alasan:

  1. Sistem file sebelumnya tidak memiliki sesuatu. Dalam kasus FAT itu kurang banyak: baik dari segi (1) fitur dan (2) kinerja. Dalam kasus ext2 itu tidak memiliki pembaruan jurnal, jadi memulihkan dari kerusakan membutuhkan lebih banyak waktu.

  2. Sistem file yang ada mungkin akan melakukannya, tetapi itu bukan milik Anda. (mis. NTFS jika Anda bukan Microsoft). Dalam hal ini Anda benar-benar tidak punya banyak pilihan selain membuat pilihan Anda sendiri.


2
Nitpick: sebenarnya, ukuran file maksimum (sesuai dengan spesifikasi resmi diterbitkan oleh Microsoft sendiri) untuk FAT32 adalah 2 GiByte, tapi tidak ada, bahkan tidak mengimplementasikan Microsoft itu yang bodoh :-)
Jörg W Mittag

16
Nitpick 2: format file NTFS ditemukan oleh Microsoft, tetapi ini adalah format yang dipublikasikan dan tidak ada jumlah paten yang diketahui. Berbagai sistem operasi non-Microsoft menerapkan NTFS, termasuk Linux.
Stephen C

6
Xfs - dirancang untuk memungkinkan pengambilan streaming cepat file besar (dirancang untuk workstation video). ZFS - sistem file untuk abad ke-21. ReiserFS - upaya untuk membuat sistem file "pembunuh". Setiap filesystem memiliki kekuatan dan kelemahannya, masing-masing diciptakan untuk memenuhi kebutuhan tertentu.
Timothy Baldridge

3
@Stephen C: NTFS tidak persis "diciptakan" oleh Microsoft. en.wikipedia.org/wiki/NTFS#History
Aman

1
@StephenC Anda yakin tentang itu? Sejauh yang saya tahu NTFS tidak didokumentasikan. Sebagian besar implementasi open source memperingatkan Anda bahwa akan ada kerusakan parah jika Anda mencoba menulis kepada mereka menggunakan driver itu ketika Windows telah meninggalkan disk di negara-negara tertentu.
asveikau

24

Jawaban singkat: Satu ukuran tidak cocok untuk semua.

Ada trade-off. Misalnya, jika Anda menginginkan FS yang dijurnal, Anda membayar (efisiensi, kompleksitas, dll.) Untuk itu tetapi mendapatkan sesuatu darinya. Beberapa tidak merasa perlu untuk FS jurnal dan tidak ingin membayar untuk itu, beberapa melakukannya. Sama dengan "fitur" FS lainnya.


Kapan terakhir kali Anda memutuskan FS mana yang sesuai dengan kebutuhan spesifik Anda? Saya lebih pada sisi pengkodean daripada pada operasi, tetapi saya tidak pernah melihat keputusan seperti itu. Terutama, karena seringkali tidak ada pilihan nyata: MS-> Ntfs. Linux: Ext (terbaru), mungkin Reiser.
keppla

@keppla: Keputusan sering dibuat oleh perancang OS. Sistem file tidak dibalkan oleh pengguna akhir.
Zano

2
@ keppla: Setiap kali saya memutuskan untuk memformat flash drive, saya mematikan penjurnalan dan memutuskan apakah ini hanya untuk penggunaan saya sendiri (kemudian ext2, karena ia memiliki izin file POSIX) atau untuk berbagi dengan orang lain (kemudian FAT32). Namun untuk hard drive saya cenderung menggunakan NTFS (saat di Windows) atau ext4 (saat di Linux) ...
liori

1
@keppla Hampir semua sistem Linux memiliki kemampuan untuk menggunakan beberapa sistem file yang berbeda, bukan hanya ext [2..4]. Ketika saya mengatur kotak Linux, saya melihat tujuan dari kotak itu. Sebagai contoh: mesin DVR Linux saya menjalankan JFS pada drive Penyimpanan Video karena menangani file besar jauh lebih anggun daripada ext3 dan menggunakan lebih sedikit CPU overhead daripada XFS. Tetapi untuk akun pengguna dan file sistem pada mesin yang sama saya menjalankan EXT3 karena saya berurusan dengan ukuran file yang lebih kecil.
jwernerny

@keppla: Selain itu, di Mac OS X Anda juga dapat memiliki pilihan antara berbagai kombinasi kemampuan FS mereka. Selain itu, awalnya saya bermaksud nada suara seseorang yang mendesain FS. Karena, OP bertanya mengapa seorang desainer tidak merancang FS yang memiliki yang terbaik dari semuanya. Dan apa yang saya coba tunjukkan adalah yang terbaik adalah relatif ke tempat itu akan digunakan. Beberapa tempat suatu fitur berguna di beberapa tempat lain fitur yang sama merupakan overhead yang tidak perlu.
Jungle Hunter

14

Tidak akan pernah ada yang "terbaik" dari apa pun karena ada begitu banyak pendapat tentang apa yang "terbaik" itu. Keputusan ini khusus untuk kebutuhan dan keterbatasan pengguna. Desain selalu didasarkan pada kemampuannya agar sesuai dengan kendala.

Ponsel dasar perlu menyimpan beberapa ratus kontak, riwayat pesan teks, dan beberapa aplikasi kecil. Apakah sistem berkasnya perlu mendukung struktur direktori hierarkis pada drive multi-terabyte dalam konfigurasi RAID? Apakah ada cukup RAM pada perangkat untuk menjalankan sistem file seperti itu? Apakah sistem file memerlukan ACL yang kompleks? Mungkin tidak - untuk semua pertanyaan ini - jadi sistem file yang sederhana dan menghirup sumber daya sudah cukup.

Perusahaan juga akan mengembangkan berbagai produk untuk mempertahankan keunggulan kompetitif. Sebagai contoh, Apple mempromosikan kemampuan sistem file HFS + untuk melacak file mana yang telah berubah baru-baru ini sehingga cadangannya cepat. Di sisi lain, driver untuk sistem file floppy disk (FAT) dapat memuat hanya beberapa KB memori.


1
Masalahnya BUKAN bahwa tidak ada yang bisa menyetujui apa yang "terbaik" artinya. Masalahnya adalah tidak mungkin ada yang "terbaik" ...
Stephen C

1
@Stephen: Tentu saja bisa ada yang "terbaik". Kami hanya perlu memutuskan metrik pengukuran terlebih dahulu.
Donal Fellows

Hanya jika Anda bisa membuat semua orang setuju .
Stephen C

11

Terlalu banyak tergantung pada apa yang ingin Anda optimalkan.

Pertimbangkan FAT sejenak: dukungannya untuk nama file panjang adalah kludgy (dengan kata lain), dan mencari melalui file dalam direktori adalah linier sehingga menjadi sangat lambat dengan cepat jika sebuah direktori berisi banyak file. Pada saat yang sama, ia memiliki minimum metadata untuk kecepatan menulis mentah sangat baik, dan karena sangat sederhana di atas semua, kode untuk mengimplementasikannya bisa sangat kecil.

Sesuatu seperti ext2 atau ext3 menambahkan banyak fitur dan kemampuan yang tidak ada pada FAT. Mencari file juga jauh lebih cepat. Pada saat yang sama, kecepatan penulisan mentah mungkin sedikit lebih lambat, dan kode untuk menerapkan sistem file tidak diragukan lagi jauh lebih besar.


9

Hanya pertanyaan singkat, tetapi mengapa ada begitu banyak sistem file yang masih bersaing dan digunakan saat ini? (ntfs, fat32, ext3 (ffs), dll)

Tampaknya para perancang sistem file dapat menyepakati aspek terbaik dari setiap jenis sistem dan menerapkan sistem file yang "terbaik", bukan?

Mari kita anggap tidak ada pengorbanan, dan perancang sistem file benar-benar menerapkan sistem file "terbaik", bebas dari kekhawatiran paten, dan dirilis sebagai lisensi ganda BSD / GPL sehingga dapat diterima oleh MS dan Debian. Apa yang membuat Anda berpikir bahwa sistem file lain akan hilang dalam semalam?

Saya tidak berpikir ada orang yang menggunakan FAT32 pada hard drive baru selama 10 tahun, tetapi masih tetap sebagai standar de facto untuk memformat drive USB, kartu SD, dll. Pembuat kamera dan telepon seluler telah mencoba dan menguji firmware untuk menggunakannya. Penggemar Arduino memiliki perpustakaan yang stabil untuk menggunakannya. Mereka semua akan membutuhkan insentif besar untuk berubah.

Dan kemudian Anda memiliki masalah kompatibilitas ke belakang dengan OS lama (terutama Windows, yang penggunanya tidak ingin menginstal driver sistem file baru).


5
senang memiliki beberapa jenis perangkat eksternal yang diformat untuk FAT32 untuk kemampuan lintas platform. Itu sebabnya Anda akan melihat banyak perangkat eksternal yang diformat untuk FAT32.
Matt

@ Matt, bukankah itu bagian dari apa yang saya katakan?
Peter Taylor

3
Dan untuk micros kecil, kode untuk mengimplementasikan dukungan FAT dasar hanya cocok dengan beberapa kbytes. Ini penting ketika Anda hanya memiliki total beberapa kbytes untuk dimainkan.
cepat_now

2
@Peter saya lebih menyatakannya untuk fakta bahwa Anda dapat menggunakannya pada OS yang berbeda tanpa masalah.
Matt

4

Seperti yang sering terjadi dalam komputasi jawabannya adalah (a) karena keadaan historis dan kebutuhan untuk mempertahankan kompatibilitas ke belakang dan (b) karena beberapa metode lebih cocok untuk beberapa tugas daripada yang lain.

Pada (a) Anda perlu mengingat bahwa "drive Winchester" - Saya baru saja cukup umur untuk mengingat mereka disebut - (apa yang oleh seluruh dunia disebut 'hard drive') hanya ada sekitar setengah dari waktu komputasi elektronik dan bahkan itu belum dapat diakses oleh sebagian besar pengguna bahkan selama itu karena alasan biaya. Sistem file FAT bekerja dengan baik pada floppy disk dan juga pada hard drive kecil asli karena cukup efisien dan membutuhkan biaya overhead yang rendah. Begitu mulai digunakan - dan penggunaannya menyebar luas karena mudah diterapkan - produsen tidak dapat memberi tahu penggunanya bahwa data lama mereka tiba-tiba tidak valid.

Demikian pula, untuk pengguna Linux, katakanlah, driver NTFS yang stabil sudah lama datang, sehingga menjaga perangkat yang diformat sebagai FAT berarti mereka dapat dibaca dan ditulis di berbagai sistem.

Pada (b) - pikirkan perbedaan antara sistem yang, katakanlah, menyimpan, milyaran catatan basis data berbasis teks dan satu yang menyimpan file media sepanjang DVD. Untuk databse, setiap record bisa sangat kecil - mungkin hanya 30 atau 40 byte dan tentu saja sistem file yang mengalokasikan seluruh 'segmen' (namun Anda ingin mendefinisikannya) disk cenderung boros ruang disk. Tidak demikian halnya dengan DVD - 'segmen' yang lebih besar (tentu saja dengan alasan) cenderung sangat efisien dalam hal ruang.

Jadi sistem file yang berbeda dirancang untuk tujuan yang berbeda.


3

Contoh lain mengapa tidak pernah ada sistem file yang sempurna untuk semua orang: HDD dan SSD memiliki karakteristik akses baca / tulis yang sangat berbeda. Sistem file yang dioptimalkan SSD mungkin akan bekerja paling baik dengan memecah-mecah file seperti orang gila tetapi dengan setiap fragmen ukuran halaman SSD itu sendiri; ini akan melakukan sangat pada HDD. Sistem file yang dioptimalkan oleh HDD mencoba untuk membuat file tidak terfragmentasi mungkin dan bahkan menempatkan file yang sering digunakan di area "panas" di bagian luar pelat yang berputar lebih cepat; karakteristik ini tidak akan membantu SSD membaca kecepatan sama sekali, dan menempatkan beban besar pada bagaimana mereka ditulis.


2

Saya pikir fakta yang sangat penting hilang. Sebagian besar programmer cenderung berpikir bahwa cara mereka melakukan sesuatu lebih unggul daripada semua cara lain dan oleh karena itu mereka melihat desain Sistem File dan muncul dengan masalah dan solusi yang tampaknya lebih umum, elegan, cepat, benar .. Dan jika perasaan ini cukup kuat mereka bebas untuk membangun sistem file mereka sendiri.

Ini cocok untuk kompetisi, fragmentasi, kepercayaan dan saya berharap pada akhirnya solusi yang lebih baik dan lebih banyak pilihan untuk memilih solusi yang cocok untuk Anda.


1

Berikut ini adalah contoh konkret mengapa Anda perlu sistem file terpisah atau memperluas fungsionalitas FS yang ada.

  1. Katakanlah Anda adalah vendor database dan ingin mengurangi kompleksitas pengelolaan striping / mirroring data untuk meningkatkan IO. Anda akan merasa perlu untuk memperluas fungsionalitas sistem file dasar seperti yang dilakukan Oracle dengan ASM (Automated Storage Manager) yang seperti Logical Volume Manager.

1

Dalam daftar Anda, Anda menyebutkan sistem file lama yang digunakan karena yang lebih baik tidak tersedia namun cepat.

Ada sistem file lain. Saya mendengar sistem file google sebagian besar untuk duplikasi / redundansi cepat jika satu harddisk atau server turun. Saya ingat pernah mendengar tentang filesystem lain yang dibuat untuk banyak file kecil dan untuk digunakan pada sistem untuk banyak permintaan pada file kecil (thumbnail).

Pada dasarnya mereka memiliki tujuan yang berbeda dan atau mungkin kepatutan vs open source.


0

Saya pikir ZFS (digunakan oleh Solaris di sistem Sun [sekarang Oracle]) adalah solusi untuk sistem file.

Sayangnya Oracle menutup OpenSolaris untuk penemu dan mengujinya.

ZFS adalah open source, beberapa Linux mencoba mengintegrasikannya, lihat di Wikipedia untuk informasi lebih lanjut.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.