Apa yang membatasi hal-hal ini secara internal?
Jawaban panjang
Batas ZFS didasarkan pada bilangan bulat ukuran tetap karena itulah cara tercepat untuk melakukan aritmatika di komputer.
Alternatif ini disebut aritmatika presisi arbitrer , tetapi inheren lambat . Inilah sebabnya mengapa aritmatika presisi arbitrer adalah add-on library di sebagian besar bahasa pemrograman, bukan cara standar untuk melakukan aritmatika. Ada pengecualian, tetapi ini biasanya DSL yang berorientasi matematika seperti bc
atau Bahasa Wolfram .
Jika Anda ingin aritmatika cepat, Anda menggunakan kata-kata ukuran tetap, titik.
Kecepatan yang dihasilkan dari aritmatika presisi yang sewenang-wenang cukup buruk di dalam RAM komputer, tetapi ketika sebuah sistem file tidak tahu berapa banyak bacaan yang perlu dibuat untuk memuat semua angka yang diperlukan ke dalam RAM, itu akan sangat mahal. Sebuah sistem file yang didasarkan pada bilangan bulat berukuran sewenang-wenang harus menyatukan masing-masing angka dari beberapa blok, yang membutuhkan banyak I / O tambahan dari beberapa hit disk relatif terhadap sistem file yang mengetahui seberapa besar blok metadata-nya.
Sekarang mari kita bahas impor praktis dari masing-masing batas tersebut:
Maks. ukuran volume
2 128 byte sudah tak terbatas secara efektif. Kita dapat menulis angka itu sebagai kira-kira 10 38 byte, yang berarti untuk mencapai batas itu, Anda harus memiliki kumpulan ZFS seukuran Bumi di mana setiap satu dari 10 50 atomnya digunakan untuk menyimpan data, dan masing-masing byte disimpan oleh suatu elemen yang tidak lebih besar dari 10 12 atom.
10 12 atom terdengar sangat banyak, tetapi itu hanya sekitar 47 pikogram silikon .
Kepadatan data dalam gram adalah 2,5 × 10 -13 g / byte untuk penyimpanan microSD, pada saat penulisan ini: kartu SD terbesar yang tersedia adalah 1 TB, dan beratnya sekitar 0,25g.¹ Kartu microSD tidak terbuat dari murni silikon, tetapi Anda tidak dapat mengabaikan kemasannya, karena kami juga membutuhkannya di komputer-Bumi kami; kita akan mengasumsikan bahwa kerapatan plastik yang rendah dan kerapatan pin logam yang lebih tinggi rata-rata sama kerapatannya dengan silikon. Kami juga membutuhkan beberapa slop di sini untuk menjelaskan interkoneksi antar-chip, dll.
Pico- apapun adalah 10 -12 , jadi nomor 47 pg dan 2.5 × 10 -13 g / B kami di atas adalah tentang urutan besarnya terpisah. Itu berarti bahwa untuk perkiraan pertama, untuk membangun satu kumpulan ZFS berukuran maksimal dari kartu microSD terbesar yang tersedia saat ini, Anda mungkin harus menggunakan atom seukuran planet seukuran Bumi, dan kemudian hanya jika Anda memulai dengan sesuatu yang dekat dengan campuran yang tepat dari silikon, karbon, emas, dll. sehingga Anda tidak berakhir dengan begitu banyak terak yang Anda hancurkan perkiraan.
Jika Anda merasa tidak adil bahwa saya menggunakan penyimpanan flash di sini alih-alih sesuatu yang lebih padat seperti kaset atau disk, pertimbangkan kecepatan data yang terlibat, serta fakta bahwa kami bahkan belum mencoba mempertimbangkan redundansi atau penggantian perangkat. Kita harus mengasumsikan bahwa kumpulan ZFS seukuran Bumi ini akan terdiri dari vdev yang tidak perlu diganti, dan bahwa mereka dapat mentransfer data dengan cukup cepat sehingga Anda dapat mengisi kumpulan tersebut dalam waktu yang wajar. Hanya penyimpanan solid-state yang masuk akal di sini.
Perkiraan di atas cukup kasar, dan kepadatan penyimpanan terus meningkat, tetapi tetap hal-hal dalam perspektif: di masa depan, untuk melakukan aksi ini membangun kolam ZFS berukuran maksimal, kita masih perlu menggunakan total kerak untuk- sumber daya inti dari planet kecil .
Maks. ukuran file
Jadi kita punya sistem file ukuran planet sekarang. Apa yang bisa kita katakan tentang ukuran file yang tersimpan di dalamnya?
Mari kita berikan setiap orang di planet ini potongan yang sama besarnya dari kolam itu:
10 38 ÷ 10 10 ≈ 10 28 ÷ 10 19 ≈ 10 9
Itu ukuran kumpulan dibagi dengan populasi Earth² dibagi dengan ukuran file maksimum, dalam angka bulat.
Dengan kata lain, setiap orang dapat menyimpan sekitar satu miliar file berukuran maksimal dalam irisan kecil pribadi mereka dari array penyimpanan ZFS seukuran Bumi.
(Jika itu mengganggu Anda bahwa array penyimpanan kami masih seukuran planet di sini dalam contoh ini, ingatlah bahwa itu harus sebesar itu untuk mencapai batas pertama di atas, sehingga wajar untuk terus menggunakannya untuk contoh ini sini.)
Ukuran file maksimum per file adalah 16 EiB di bawah ZFS, yang 16x lebih besar dari ukuran volume maksimum ext4 , yang dianggap sangat besar saat ini.
Bayangkan seseorang menggunakan potongan Planet ZFS mereka (sebelumnya dikenal sebagai Earth) untuk menyimpan cadangan gambar disk ext4 berukuran maksimal. Selanjutnya, pelanggan gila ini (selalu ada satu) telah memutuskan untuk tar
menaikkannya, 16 per file, hanya untuk mencapai batas ukuran file maksimum ZFS. Setelah melakukannya, pelanggan itu masih memiliki ruang untuk melakukannya lagi sekitar satu miliar kali.
Jika Anda khawatir tentang batasan ini, itulah jenis masalah yang harus Anda bayangkan perlu diselesaikan. Dan itu bahkan tanpa masuk ke bandwidth data yang diperlukan yang diperlukan untuk mentransfer file itu ke layanan cadangan online sekali .
Mari kita juga menjadi jelas tentang betapa tidak mungkinnya Bumi-komputer itu. Pertama, Anda harus mencari cara untuk membangunnya tanpa membiarkannya runtuh dengan sendirinya di bawah gaya gravitasi dan menjadi cair di pusat. Maka Anda harus mencari cara bagaimana membuatnya menggunakan setiap atom tunggal di Bumi tanpa sisa terak.
Sekarang, karena Anda telah mengubah permukaan bumi-komputer menjadi Hellscape, semua orang yang mencoba memanfaatkan komputer itu harus tinggal di tempat lain, tempat di mana Anda sering mendengar orang mengutuk kecepatan-of- penundaan cahaya yang menambah latensi pada setiap transaksi antara komputer-Bumi dan di mana pun mereka tinggal sekarang. Jika Anda berpikir ~ 10 ms waktu ping Internet Anda adalah masalah hari ini, bayangkan menempatkan 2,6 detik cahaya antara keyboard dan komputer jika kami memindahkan populasi Bumi ke bulan sehingga kami dapat membuat Bumi-komputer ini.
Volume dan ukuran file ZFS adalah fiksi ilmiah yang besar.
Maks. jumlah file per direktori
2 48 kira-kira 10 14 file per direktori, yang hanya akan menjadi masalah bagi aplikasi yang mencoba memperlakukan ZFS sebagai sistem file datar .
Bayangkan seorang peneliti Internet yang menyimpan file tentang setiap alamat IP di Internet. Katakanlah ada tepat 2 32 IP dilacak setelah terlebih dahulu mengurangi ruang kendur di ruang IPv4 lama dan kemudian menambahkan host sekarang menggunakan alamat IPv6 untuk membuat aritmatika keluar bagus. Apa masalah yang peneliti ini coba atasi yang mengharuskannya untuk membangun sistem pengarsipan yang dapat menyimpan lebih dari 2 16 - 65536! - file per IP?
Katakanlah peneliti ini juga menyimpan file per port TCP, sehingga hanya dengan satu file per IP: kombinasi port, kami telah memakan 2 16 pengganda.
Cara mengatasinya sederhana: simpan file per-IP dalam subdirektori bernama IP, dan simpan file per-port dalam subdirektori dari direktori yang menyimpan file per-IP. Sekarang peneliti kami dapat menyimpan 10 14 file per IP: kombinasi port, cukup untuk sistem pemantauan Internet global jangka panjang.
Batas ukuran direktori ZFS bukanlah yang saya sebut "fiksi ilmiah besar," seperti yang kita ketahui tentang aplikasi nyata saat ini yang dapat mencapai batas ini, tetapi kekuatan hierarki berarti Anda bisa menambahkan lapisan direktori lain jika Anda menghadapi membatasi.
Batas ini mungkin ditetapkan serendah ini murni untuk menghindari membuat struktur data yang diperlukan untuk menemukan file dalam direktori yang diberikan terlalu besar untuk masuk ke dalam RAM. Ini mendorong Anda untuk mengatur data Anda secara hierarkis untuk menghindari masalah ini sejak awal.
Maks. panjang nama file
Meskipun batas satu ini memang tampak ketat, sebenarnya masuk akal.
Batas ini tidak berasal dari ZFS. Saya percaya ini tanggal kembali ke FFS di 4.2BSD . Saya tidak dapat menemukan kutipan, tetapi ketika batas ini masih muda, seseorang menunjukkan bahwa ini adalah ruang yang cukup untuk "surat pendek untuk nenek."
Jadi, itu menimbulkan pertanyaan: mengapa Anda perlu memberi nama file Anda lebih deskriptif dari itu? Setiap kebutuhan sebenarnya yang lebih besar dari itu mungkin membutuhkan hierarki, di mana Anda mengalikan batas dengan jumlah level dalam hierarki, ditambah satu. Artinya, jika file tersebut tertanam 3 level dalam hierarki, batas nama path lengkap adalah 4 × 255 = 1020 karakter.
Pada akhirnya, batas ini adalah batas manusia, bukan batas teknologi. Nama file adalah untuk digunakan manusia, dan manusia benar-benar tidak perlu lebih dari 255 karakter untuk menggambarkan konten file. Batas yang lebih tinggi tidak akan membantu. Keterbatasannya sudah lama (1983) karena manusia belum memperoleh kemampuan untuk mengatasi nama file yang lebih lama sejak saat itu.
Jika Anda bertanya dari mana nilai "255" yang tampak aneh itu berasal, itu adalah beberapa batasan berdasarkan ukuran byte 8-bit. 2 8 adalah 256, dan nilai N-1 yang digunakan di sini mungkin berarti mereka menggunakan terminator nol untuk menandai akhir dari string nama file dalam bidang 256-byte dalam metadata per-file.
Jawaban singkat
Secara praktis, apa yang membatasi?
Catatan kaki:
Saya mengukur ini menggunakan skala yang ditentukan dengan akurasi 0,01 g.
7,55 miliar , pada tulisan ini. Di atas, kita menyelesaikan ini menjadi 10 10 , yang seharusnya kita dapatkan pada pertengahan abad ini .
PATH_MAX
pada sistem POSIX adalah 256. Ini dapat terdiri dari komponen paling banyakNAME_MAX
karakter masing-masing (nilai ini setidaknya 14).