Những gì bên trong giới hạn những điều này?
Câu trả lời dài
Các giới hạn của ZFS dựa trên các số nguyên có kích thước cố định vì đó là cách nhanh nhất để thực hiện số học trong máy tính.
Sự thay thế được gọi là số học chính xác tùy ý , nhưng nó vốn đã chậm . Đây là lý do tại sao số học chính xác tùy ý là một thư viện bổ trợ trong hầu hết các ngôn ngữ lập trình, không phải là cách làm số học mặc định. Có những trường hợp ngoại lệ, nhưng đây thường là các DSL định hướng toán học như bc
hoặc Ngôn ngữ Wolfram .
Nếu bạn muốn số học nhanh, bạn sử dụng các từ có kích thước cố định, khoảng thời gian.
Tốc độ đạt được từ số học chính xác tùy ý là đủ tệ trong RAM của máy tính, nhưng khi một hệ thống tập tin không biết cần phải đọc bao nhiêu lần để tải tất cả các số cần vào RAM, điều đó sẽ rất tốn kém. Một hệ thống tệp dựa trên các số nguyên có kích thước tùy ý sẽ phải ghép từng số với nhau từ nhiều khối, đòi hỏi nhiều I / O bổ sung từ nhiều lần truy cập đĩa liên quan đến hệ thống tệp biết trước khối siêu dữ liệu của nó lớn đến mức nào.
Bây giờ hãy thảo luận về nhập khẩu thực tế của từng giới hạn đó:
Tối đa kích thước âm lượng
2 128 byte có hiệu lực vô hạn. Chúng ta có thể viết số đó thay vào đó là khoảng 10 38 byte, có nghĩa là để đạt đến giới hạn đó, bạn phải có một nhóm ZFS có kích thước Trái đất duy nhất trong đó mỗi một trong số 10 50 nguyên tử của nó được sử dụng để lưu trữ dữ liệu và mỗi nguyên tử byte được lưu trữ bởi một phần tử không lớn hơn 10 12 nguyên tử.
10 12 nguyên tử nghe có vẻ rất nhiều, nhưng nó chỉ có khoảng 47 picogram silicon .
Mật độ dữ liệu tính bằng gam là 2,5 × 10 -13 g / byte cho lưu trữ microSD, kể từ khi viết bài này: thẻ SD có sẵn lớn nhất là 1 TB và nặng khoảng 0,25g.¹ Thẻ nhớ microSD không được làm thuần túy silicon, nhưng bạn không thể bỏ qua bao bì, vì chúng ta cũng sẽ cần một số thứ đó trong máy tính Trái đất của chúng ta; chúng ta sẽ giả sử rằng mật độ thấp của nhựa và mật độ cao hơn của các chân kim loại trung bình tương đương với mật độ tương tự như silicon. Chúng tôi cũng cần một số dốc ở đây để tính đến các kết nối giữa các chip, v.v.
Một pico- bất cứ thứ gì là 10 -12 , vì vậy các số 47 pg và 2,5 × 10 -13 g / B của chúng tôi ở trên cách nhau một khoảng lớn. Điều đó có nghĩa là với xấp xỉ đầu tiên, để xây dựng một nhóm ZFS có kích thước tối đa duy nhất trong số các thẻ microSD có sẵn lớn nhất hiện tại, bạn có thể phải sử dụng toàn bộ các nguyên tử có giá trị bằng hành tinh Trái đất, và sau đó chỉ khi bạn bắt đầu với một cái gì đó gần với sự pha trộn đúng của silicon, carbon, vàng, v.v ... sao cho bạn không có quá nhiều xỉ đến nỗi bạn thổi bay ước tính.
Nếu bạn nghĩ rằng không công bằng khi tôi sử dụng bộ lưu trữ flash ở đây thay vì thứ gì đó dày đặc hơn như băng hoặc đĩa, hãy xem xét tốc độ dữ liệu có liên quan, cũng như thực tế là chúng tôi thậm chí đã không thử xem xét dự phòng hoặc thay thế thiết bị. Chúng tôi phải giả định rằng nhóm ZFS có kích thước Trái đất này sẽ bao gồm các vdev không bao giờ cần thay thế và họ có thể truyền dữ liệu đủ nhanh để bạn có thể lấp đầy hồ trong thời gian hợp lý. Chỉ lưu trữ trạng thái rắn có ý nghĩa ở đây.
Giá trị gần đúng ở trên khá thô và mật độ lưu trữ tiếp tục tăng, nhưng hãy giữ mọi thứ trong tương lai: trong tương lai, để loại bỏ các pha nguy hiểm này trong việc xây dựng các hồ ZFS có kích thước tối đa, chúng ta vẫn sẽ cần sử dụng toàn bộ lớp vỏ tài nguyên cốt lõi của các hành tinh nhỏ .
Tối đa Kích thước tập tin
Vì vậy, bây giờ chúng ta đã có một hệ thống tập tin kích thước của một hành tinh . Chúng ta có thể nói gì về kích thước của các tệp được lưu trữ trong đó?
Chúng ta hãy cung cấp cho mọi người trên hành tinh lát cắt có kích thước tương đương nhau của hồ bơi đó:
10 38 ÷ 10 10 ≈ 10 28 ÷ 10 19 10 9
Đó là kích thước của bể chia cho dân số Earth² chia cho kích thước tệp tối đa, bằng số tròn.
Nói cách khác, mỗi người có thể lưu trữ khoảng một tỷ tệp có kích thước tối đa trong lát cá nhân nhỏ bé của mảng lưu trữ ZFS cỡ Trái đất của chúng tôi.
(Nếu điều này làm phiền bạn rằng mảng lưu trữ của chúng tôi vẫn có kích thước của một hành tinh ở đây trong ví dụ này, hãy nhớ rằng nó phải lớn đến mức đạt được giới hạn đầu tiên ở trên, vì vậy thật công bằng khi tiếp tục sử dụng nó cho ví dụ này đây.)
Kích thước tệp tối đa trên mỗi tệp là 16 EiB theo ZFS, lớn hơn 16 × so với kích thước âm lượng tối đa của ext4 , được coi là lớn một cách lố bịch ngày nay.
Hãy tưởng tượng ai đó sử dụng lát cắt Planet ZFS (trước đây gọi là Trái đất) để lưu trữ các bản sao lưu của hình ảnh đĩa ext4 có kích thước tối đa. Hơn nữa, khách hàng mất trí này (luôn luôn có một) đã quyết định cho tar
họ, 16 mỗi tệp, chỉ để đạt giới hạn kích thước tệp tối đa ZFS. Làm như vậy, khách hàng đó vẫn sẽ có chỗ để làm điều đó một lần nữa khoảng một tỷ lần nữa.
Nếu bạn lo lắng về giới hạn này, đó là loại vấn đề bạn phải tưởng tượng cần phải giải quyết. Và đó thậm chí không cần vào băng thông dữ liệu cần thiết để chuyển tệp đó sang dịch vụ sao lưu trực tuyến một lần .
Chúng ta cũng hãy rõ ràng về khả năng của máy tính Trái đất. Trước tiên, bạn phải tìm ra cách xây dựng nó mà không cho phép nó tự sụp đổ dưới lực hấp dẫn và trở nên nóng chảy ở trung tâm. Sau đó, bạn phải tìm ra cách chế tạo nó bằng cách sử dụng từng nguyên tử trên Trái đất mà không có bất kỳ xỉ còn sót lại nào.
Bây giờ, vì bạn đã biến bề mặt của máy tính Trái đất thành một địa ngục, tất cả những người cố gắng sử dụng máy tính đó sẽ phải sống ở một nơi khác, một nơi mà bạn thường xuyên nghe thấy mọi người chửi rủa về tốc độ độ trễ ánh sáng làm tăng độ trễ cho mọi giao dịch giữa máy tính Trái đất và bất cứ nơi nào chúng sống bây giờ. Nếu bạn nghĩ rằng thời gian ping Internet ~ 10ms của bạn là một vấn đề ngày hôm nay, hãy tưởng tượng đặt 2,6 giây ánh sáng giữa bàn phím và máy tính nếu chúng ta di chuyển dân số Trái đất lên mặt trăng để chúng ta có thể tạo ra máy tính Trái đất này.
Giới hạn về khối lượng và kích thước tệp của ZFS là khoa học viễn tưởng lớn.
Tối đa số lượng tệp trên mỗi thư mục
2 48 là khoảng 10 14 tệp cho mỗi thư mục, đây sẽ chỉ là vấn đề đối với các ứng dụng cố gắng coi ZFS là một hệ thống tệp phẳng .
Hãy tưởng tượng một nhà nghiên cứu Internet đang lưu trữ các tệp về từng địa chỉ IP trên Internet. Giả sử có chính xác 2 32 IP được theo dõi sau khi trừ đi các khoảng trống chùng trong không gian IPv4 cũ và sau đó thêm vào các máy chủ hiện đang sử dụng địa chỉ IPv6 để làm cho số học trở nên tốt đẹp. Vấn đề là nhà nghiên cứu này đang cố gắng giải quyết đòi hỏi anh ta phải xây dựng một hệ thống lưu trữ có thể lưu trữ nhiều hơn 2 16 - 65536! - tệp trên mỗi IP?
Giả sử nhà nghiên cứu này cũng đang lưu trữ các tệp trên mỗi cổng TCP, do đó, chỉ với một tệp trên mỗi IP: kết hợp cổng, chúng tôi đã ăn hết hệ số nhân 2 16 của chúng tôi .
Cách khắc phục rất đơn giản: lưu trữ các tệp trên mỗi IP trong thư mục con được đặt tên theo IP và lưu trữ các tệp trên mỗi cổng trong thư mục con của thư mục chứa các tệp trên mỗi IP. Bây giờ nhà nghiên cứu của chúng tôi có thể lưu trữ 10 14 tệp trên mỗi IP: kết hợp cổng, đủ cho hệ thống giám sát Internet toàn cầu dài hạn.
Giới hạn kích thước thư mục của ZFS không phải là cái mà tôi gọi là "khoa học viễn tưởng lớn", như chúng ta biết ngày nay các ứng dụng thực sự có thể đạt đến giới hạn này, nhưng sức mạnh của hệ thống phân cấp có nghĩa là bạn chỉ cần thêm một lớp thư mục khác nếu bạn chạy lên chống lại giới hạn.
Giới hạn này có thể được đặt ở mức thấp như vậy hoàn toàn để tránh làm cho các cấu trúc dữ liệu cần thiết để tìm các tệp trong một thư mục nhất định quá lớn để phù hợp với RAM. Nó khuyến khích bạn tổ chức dữ liệu của bạn theo thứ bậc để tránh vấn đề này ngay từ đầu.
Tối đa độ dài tên tệp
Trong khi giới hạn này có vẻ nghiêm ngặt, nó thực sự có ý nghĩa.
Giới hạn này không bắt nguồn từ ZFS. Tôi tin rằng nó có từ FFS trong 4.2BSD . Tôi không thể tìm thấy trích dẫn, nhưng khi giới hạn này còn trẻ, ai đó đã chỉ ra rằng đây là không gian đủ cho "một lá thư ngắn gửi bà."
Vì vậy, điều đó đặt ra câu hỏi: tại sao bạn cần đặt tên cho các tệp của mình một cách mô tả nhiều hơn thế? Bất kỳ nhu cầu thực sự nào lớn hơn điều đó có thể yêu cầu phân cấp, tại thời điểm đó bạn nhân giới hạn với số cấp trong phân cấp, cộng với một cấp. Nghĩa là, nếu tệp được chôn sâu 3 cấp trong cấu trúc phân cấp, giới hạn về tên của đường dẫn đầy đủ là 4 × 255 = 1020 ký tự.
Cuối cùng, giới hạn này là giới hạn của con người, không phải giới hạn công nghệ. Tên tệp được sử dụng cho con người và con người thực sự không cần nhiều hơn 255 ký tự để mô tả hữu ích nội dung của tệp. Một giới hạn cao hơn đơn giản sẽ không hữu ích. Giới hạn này đã cũ (1983) vì con người không có được khả năng đối phó với tên tệp dài hơn kể từ đó.
Nếu bạn hỏi giá trị "255" trông kỳ lạ đến từ đâu, thì đó là một số giới hạn dựa trên kích thước của một byte 8 bit. 2 8 là 256 và giá trị N-1 được sử dụng ở đây có lẽ có nghĩa là họ đang sử dụng bộ kết thúc null để đánh dấu kết thúc chuỗi tên tệp trong trường 256 byte trong siêu dữ liệu trên mỗi tệp.
Câu trả lời ngắn
Thực tế mà nói, những gì giới hạn?
Chú thích:
Tôi đã đo lường điều này bằng cách sử dụng thang đo được chỉ định với độ chính xác 0,01g.
7,55 tỷ đồng , như văn bản này. Ở trên, chúng ta làm tròn số này thành 10 10 , mà chúng ta nên đạt được vào giữa thế kỷ .
PATH_MAX
trên hệ thống POSIX là 256. Số này có thể được tạo thành từ các thành phần của tối đaNAME_MAX
mỗi ký tự (giá trị này ít nhất là 14).