Người giải thích: Hệ thống tệp là gì?

Bạn đã bao giờ cần định dạng ổ cứng hoặc ổ USB mới và được cung cấp tùy chọn chọn từ các từ viết tắt như FAT, FAT32 hoặc NTFS chưa? Hay bạn đã từng thử cắm một thiết bị bên ngoài, chỉ để hệ điều hành của bạn gặp khó khăn trong việc hiểu nó? Đây là một cái khác… đôi khi bạn có cảm thấy bực bội vì hệ điều hành của bạn mất bao lâu để tìm một tệp cụ thể trong khi tìm kiếm không?

Nếu bạn đã gặp phải bất kỳ trường hợp nào ở trên hoặc chỉ đơn giản là chỉ và nhấp theo cách của bạn để tìm tệp hoặc ứng dụng trên máy tính của mình, thì bạn đã có kinh nghiệm trực tiếp về hệ thống tệp là gì.

Nhiều người có thể không sử dụng một phương pháp rõ ràng để sắp xếp các tệp cá nhân của họ trên PC (explainer_file_system_final_actualFINAL_FinalDraft.docx). Tuy nhiên, khái niệm trừu tượng về tổ chức tệp và thư mục cho bất kỳ thiết bị nào có bộ nhớ liên tục cần phải rất có hệ thống khi đọc, ghi, sao chép, xóa và giao tiếp với dữ liệu. Công việc này của hệ điều hành thường được gán cho hệ thống tệp.

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Có nhiều cách khác nhau để tổ chức tệp và thư mục. Nếu bạn có thể hình dung đơn giản về một tủ hồ sơ vật lý với các giấy tờ và thư mục, thì bạn sẽ cần cân nhắc nhiều thứ khi nghĩ đến một hệ thống truy xuất tài liệu của mình. Bạn sẽ sắp xếp các thư mục theo thứ tự bảng chữ cái hay đảo ngược thứ tự bảng chữ cái? Bạn sẽ ưu tiên các tệp thường được truy cập ở phía trước hay phía sau tủ hồ sơ? Bạn sẽ xử lý các bản sao như thế nào, dù là cố ý (để dự phòng) hay vô tình (đặt tên hai tệp chính xác theo cùng một cách)? Đây chỉ là một vài câu hỏi tương tự cần trả lời khi phát triển một hệ thống tệp.

Trong phần giải thích này, chúng ta sẽ tìm hiểu sâu về cách máy tính hiện đại giải quyết những vấn đề này. Chúng ta sẽ xem xét các vai trò khác nhau của hệ thống tệp trong bối cảnh lớn hơn của hệ điều hành và ổ đĩa vật lý, bên cạnh cách hệ thống tệp được thiết kế và triển khai.

Các hệ điều hành hiện đại ngày càng phức tạp và cần quản lý nhiều tài nguyên phần cứng khác nhau, lên lịch các quy trình, ảo hóa bộ nhớ, cùng nhiều tác vụ khác. Khi nói đến dữ liệu, nhiều cải tiến phần cứng như bộ nhớ đệm và RAM đã được thiết kế để tăng tốc thời gian truy cập và đảm bảo rằng dữ liệu được sử dụng thường xuyên ở “gần” bộ xử lý. Tuy nhiên, khi bạn tắt máy tính, chỉ thông tin được lưu trữ trên các thiết bị liên tục, chẳng hạn như ổ đĩa cứng (HDD) hoặc thiết bị lưu trữ thể rắn (SSD), sẽ vẫn còn sau chu kỳ tắt nguồn. Do đó, hệ điều hành phải quan tâm nhiều hơn đến các thiết bị này và dữ liệu trên bo mạch, vì đây là nơi người dùng sẽ lưu giữ dữ liệu mà họ thực sự quan tâm.

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Hai trong số các khái niệm trừu tượng quan trọng nhất được phát triển theo thời gian để lưu trữ là tệp và thư mục. Tệp là một mảng byte tuyến tính, mỗi byte bạn có thể đọc hoặc ghi. Mặc dù ở không gian người dùng, chúng tôi có thể nghĩ ra các tên thông minh cho các tệp của mình, bên dưới mui xe thường có các số nhận dạng số để theo dõi tên tệp. Về mặt lịch sử, cấu trúc dữ liệu cơ bản này thường được gọi là số inode của nó (sẽ nói thêm về điều đó sau). Thật thú vị, bản thân HĐH không biết nhiều về cấu trúc bên trong của một tệp (nghĩa là đó là tệp hình ảnh, video hay văn bản); trên thực tế, tất cả những gì nó cần biết là cách ghi các byte vào tệp để lưu trữ liên tục và đảm bảo rằng nó có thể truy xuất sau này khi được gọi.

Đọc thêm:  Tùy chỉnh trang Tab mới của Chrome

Sự trừu tượng hóa chính thứ hai là thư mục. Một thư mục thực sự chỉ là một tệp bên dưới mui xe, nhưng chứa một bộ dữ liệu rất cụ thể: danh sách tên người dùng có thể đọc được đối với ánh xạ tên cấp thấp. Nói một cách thực tế, điều đó có nghĩa là nó chứa một danh sách các thư mục hoặc tệp khác, có thể tạo thành một cây thư mục, theo đó tất cả các tệp và thư mục được lưu trữ.

Một tổ chức như vậy là khá biểu cảm và có thể mở rộng. Tất cả những gì bạn cần là một con trỏ tới thư mục gốc của cây thư mục (về mặt vật lý, đó sẽ là nút đầu tiên trong hệ thống), và từ đó bạn có thể truy cập bất kỳ tệp nào khác trên phân vùng đĩa đó. Hệ thống này cũng cho phép bạn tạo các tệp có cùng tên, miễn là chúng không có cùng đường dẫn (nghĩa là chúng nằm ở các vị trí khác nhau trong cây hệ thống tệp).

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Ngoài ra, về mặt kỹ thuật, bạn có thể đặt tên cho tệp theo bất kỳ thứ gì bạn muốn! Mặc dù thông thường biểu thị loại tệp có phân tách bằng dấu chấm (chẳng hạn như .jpg trong picture.jpg), nhưng điều đó hoàn toàn là tùy chọn và không bắt buộc. Một số hệ điều hành như Windows khuyên bạn nên sử dụng các quy ước này để mở tệp trong ứng dụng tương ứng được lựa chọn, nhưng bản thân nội dung của tệp không phụ thuộc vào phần mở rộng tệp. Phần mở rộng chỉ là một gợi ý cho HĐH về cách diễn giải các byte có trong một tệp.

Khi bạn có tệp và thư mục, bạn cần có khả năng thao tác trên chúng. Trong ngữ cảnh của hệ thống tệp, điều đó có nghĩa là có thể đọc dữ liệu, ghi dữ liệu, thao tác với tệp (xóa, di chuyển, sao chép, v.v.) và quản lý quyền đối với tệp (ai có thể thực hiện tất cả các thao tác trên?). Các hệ thống tệp hiện đại được triển khai như thế nào để cho phép tất cả các hoạt động này diễn ra nhanh chóng và theo kiểu có thể mở rộng?

Khi nghĩ về một hệ thống tệp, thường có hai khía cạnh cần được giải quyết. Đầu tiên là cấu trúc dữ liệu của hệ thống tập tin. Nói cách khác, loại cấu trúc trên đĩa nào được hệ thống tệp sử dụng để tổ chức dữ liệu và siêu dữ liệu của nó? Khía cạnh thứ hai là các phương thức truy cập của nó: làm thế nào một quy trình có thể mở, đọc hoặc ghi vào các cấu trúc của nó?

Hãy bắt đầu bằng cách mô tả tổ chức tổng thể trên đĩa của một hệ thống tệp thô sơ.

Điều đầu tiên bạn cần làm là chia đĩa của bạn thành các khối. Kích thước khối thường được sử dụng là 4 KB. Giả sử bạn có một đĩa rất nhỏ với 256 KB dung lượng lưu trữ. Bước đầu tiên là chia đều không gian này bằng cách sử dụng kích thước khối của bạn và xác định từng khối bằng một số (trong trường hợp của chúng tôi, gắn nhãn các khối từ 0 đến 63):

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Bây giờ, hãy chia các khối này thành các vùng khác nhau. Hãy dành hầu hết các khối cho dữ liệu người dùng và gọi đây là vùng dữ liệu. Trong ví dụ này, hãy sửa các khối 8-63 làm vùng dữ liệu của chúng tôi:

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Nếu bạn để ý, chúng tôi đặt vùng dữ liệu vào phần sau của đĩa, để lại một số khối đầu tiên cho hệ thống tệp sử dụng cho mục đích khác. Cụ thể, chúng tôi muốn sử dụng chúng để theo dõi thông tin về tệp, chẳng hạn như vị trí của tệp trong vùng dữ liệu, dung lượng của tệp, quyền sở hữu và quyền truy cập của tệp cũng như các loại thông tin khác. Thông tin này là một phần quan trọng của hệ thống tệp và được gọi là siêu dữ liệu .

Đọc thêm:  Tại sao tôi rời Facebook sau 7 năm, nhưng bị buộc phải quay lại

Để lưu trữ siêu dữ liệu này, chúng tôi sẽ sử dụng một cấu trúc dữ liệu đặc biệt gọi là inode. Trong ví dụ đang chạy, hãy dành 5 khối làm nút và gọi vùng này của đĩa là bảng inode:

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Các nút thường không lớn, ví dụ 256 byte. Do đó, một khối 4KB có thể chứa khoảng 16 nút và hệ thống tệp đơn giản của chúng tôi ở trên chứa tổng số 80 nút. Con số này thực sự có ý nghĩa: nó có nghĩa là số lượng tệp tối đa trong hệ thống tệp của chúng tôi là 80. Với một ổ đĩa lớn hơn, bạn chắc chắn có thể tăng số lượng nút, dịch trực tiếp sang nhiều tệp hơn trong hệ thống tệp của bạn.

Có một vài điều còn lại để hoàn thành hệ thống tệp của chúng tôi. Chúng tôi cũng cần một cách để theo dõi xem các nút hoặc khối dữ liệu có được cấp phát hay miễn phí hay không. Cấu trúc phân bổ này có thể được triển khai dưới dạng hai ảnh bitmap riêng biệt, một cho các nút và một cho vùng dữ liệu.

Một bitmap là một cấu trúc dữ liệu rất đơn giản: mỗi bit tương ứng với việc một đối tượng/khối trống (0) hay đang được sử dụng (1). Chúng ta có thể gán bitmap inode và bitmap vùng dữ liệu cho khối riêng của chúng. Mặc dù điều này là quá mức cần thiết (một khối có thể được sử dụng để theo dõi các đối tượng 32 KB, nhưng chúng tôi chỉ có 80 nút và 56 khối dữ liệu), đây là một cách thuận tiện và đơn giản để tổ chức hệ thống tệp của chúng tôi.

Cuối cùng, đối với khối cuối cùng còn lại (tình cờ là khối đầu tiên trong đĩa của chúng ta), chúng ta cần phải có một siêu khối. Siêu khối này là một loại siêu dữ liệu cho siêu dữ liệu: trong khối, chúng ta có thể lưu trữ thông tin về hệ thống tệp, chẳng hạn như có bao nhiêu inode (80) và nơi tìm thấy khối inode (khối 3), v.v. Chúng tôi cũng có thể đặt một số mã định danh cho hệ thống tệp trong siêu khối để hiểu cách diễn giải các sắc thái và chi tiết cho các loại hệ thống tệp khác nhau (ví dụ: chúng tôi có thể lưu ý rằng hệ thống tệp này là hệ thống tệp ext4, dựa trên Unix hoặc có thể là NTFS) . Khi hệ điều hành đọc siêu khối, nó có thể có một kế hoạch chi tiết về cách diễn giải và truy cập các dữ liệu khác nhau trên đĩa.

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Thêm một siêu khối (S), một bitmap inode (i) và một bitmap vùng dữ liệu (d) vào hệ thống đơn giản của chúng tôi.

Cho đến nay, chúng tôi đã đề cập đến cấu trúc dữ liệu inode trong một hệ thống tệp, nhưng vẫn chưa giải thích thành phần quan trọng này là gì. Một inode là viết tắt của một nút chỉ mục và là một tên lịch sử được đặt từ UNIX và các hệ thống tệp trước đó. Trên thực tế, tất cả các hệ thống hiện đại đều sử dụng khái niệm inode, nhưng có thể gọi chúng là những thứ khác nhau (chẳng hạn như dnodes, fnodes, v.v.).

Tuy nhiên, về cơ bản, inode là một cấu trúc dữ liệu có thể lập chỉ mục, nghĩa là thông tin được lưu trữ trên đó theo một cách rất cụ thể, sao cho bạn có thể chuyển đến một vị trí cụ thể (chỉ mục) và biết cách diễn giải tập hợp bit tiếp theo.

Đọc thêm:  GPU 400 USD của năm 2016 so với GPU 400 USD của năm 2019

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Một nút cụ thể được gọi bằng một số (số i) và đây là tên cấp thấp của tệp. Cho một số i, bạn có thể tra cứu thông tin của nó bằng cách nhanh chóng chuyển đến vị trí của nó. Ví dụ, từ siêu khối, chúng ta biết rằng vùng inode bắt đầu từ địa chỉ 12KB.

Vì một đĩa không thể định địa chỉ theo byte, nên chúng tôi phải biết khối nào cần truy cập để tìm inode của chúng tôi. Với một số phép toán khá đơn giản, chúng ta có thể tính ID khối dựa trên i-số quan tâm, kích thước của mỗi nút và kích thước của một khối. Sau đó, chúng ta có thể tìm thấy điểm bắt đầu của nút trong khối và đọc thông tin mong muốn.

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Inode hầu như chứa tất cả thông tin bạn cần về một tệp. Ví dụ: nó là một tệp thông thường hay một thư mục? kích thước của nó là gì? Có bao nhiêu khối được phân bổ cho nó? Những quyền nào được phép truy cập tệp (nghĩa là ai là chủ sở hữu và ai có thể đọc hoặc ghi)? Tệp được tạo hoặc truy cập lần cuối khi nào? Và nhiều cờ hoặc siêu dữ liệu khác về tệp.

Một trong những phần thông tin quan trọng nhất được giữ trong inode là một con trỏ (hoặc danh sách các con trỏ) về vị trí của dữ liệu trong vùng dữ liệu. Chúng được gọi là con trỏ trực tiếp. Khái niệm này rất hay, nhưng đối với các tệp rất lớn, bạn có thể hết con trỏ trong cấu trúc dữ liệu inode nhỏ. Do đó, nhiều hệ thống hiện đại có các con trỏ gián tiếp đặc biệt: thay vì truy cập trực tiếp vào dữ liệu của tệp trong vùng dữ liệu, bạn có thể sử dụng một khối gián tiếp trong vùng dữ liệu để mở rộng số lượng con trỏ trực tiếp cho tệp của mình. Theo cách này, các tệp có thể trở nên lớn hơn nhiều so với tập hợp giới hạn các con trỏ trực tiếp có sẵn trong cấu trúc dữ liệu inode.

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Không có gì đáng ngạc nhiên, bạn có thể sử dụng phương pháp này để hỗ trợ các loại dữ liệu lớn hơn, bằng cách nhân đôi hoặc nhân ba con trỏ gián tiếp. Loại hệ thống tệp này được gọi là có chỉ mục đa cấp và cho phép hệ thống tệp hỗ trợ các tệp lớn (nghĩ trong phạm vi gigabyte) hoặc lớn hơn. Các hệ thống tệp phổ biến như ext2 và ext3 sử dụng hệ thống lập chỉ mục đa cấp. Các hệ thống tệp mới hơn, chẳng hạn như ext4, có khái niệm về phạm vi, là các lược đồ con trỏ phức tạp hơn một chút.

Mặc dù cấu trúc dữ liệu inode rất phổ biến vì khả năng mở rộng của nó, nhiều nghiên cứu đã được thực hiện để hiểu hiệu quả và mức độ cần thiết của các chỉ số đa cấp. Một nghiên cứu đã chỉ ra một số phép đo thú vị trên các hệ thống tệp, bao gồm:

Tất cả điều này chỉ ra tính linh hoạt và khả năng mở rộng của cấu trúc dữ liệu inode và cách nó hỗ trợ hầu hết các hệ thống hiện đại một cách hoàn hảo. Nhiều tối ưu hóa đã được thực hiện để đạt được tốc độ và hiệu quả, nhưng cấu trúc cốt lõi đã thay đổi rất ít trong thời gian gần đây.

Về cơ bản, các thư mục chỉ đơn giản là một loại tệp rất cụ thể: chúng chứa danh sách các mục sử dụng hệ thống ghép nối (tên mục, số i). Số mục nhập thường là tên mà con người có thể đọc được và số i tương ứng nắm bắt “tên” hệ thống tệp cơ bản của nó.

Đọc thêm:  Có phải CPU lõi tứ cuối cùng đã chết vào năm 2019?

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Mỗi thư mục thường chứa 2 mục bổ sung ngoài danh sách tên người dùng: một mục là con trỏ “thư mục hiện tại” và mục còn lại là con trỏ thư mục mẹ. Khi sử dụng thiết bị đầu cuối dòng lệnh, bạn có thể “thay đổi thư mục” bằng cách gõ

hoặc di chuyển lên một thư mục bằng cách sử dụng

trong đó “..” là tên trừu tượng của con trỏ thư mục mẹ.

Vì các thư mục thường chỉ là “các tệp đặc biệt”, nên việc quản lý nội dung của một thư mục thường đơn giản như thêm và xóa các cặp trong tệp. Một thư mục thường có inode riêng trong cây hệ thống tệp tuyến tính (như được mô tả ở trên), nhưng các cấu trúc dữ liệu mới như cây B đã được đề xuất và sử dụng trong một số hệ thống tệp hiện đại như XFS.

Một hệ thống tập tin sẽ trở nên vô dụng nếu bạn không thể đọc và ghi dữ liệu vào đó. Đối với bước này, bạn cần một phương pháp được xác định rõ ràng để cho phép hệ điều hành truy cập và diễn giải các byte trong vùng dữ liệu.

Các thao tác cơ bản trên tệp bao gồm mở tệp, đọc tệp hoặc ghi vào tệp. Các thủ tục này yêu cầu một số lượng lớn thao tác nhập/xuất (I/O) và thường nằm rải rác trên đĩa. Ví dụ: duyệt cây hệ thống tệp từ nút gốc đến tệp quan tâm yêu cầu chuyển từ inode sang tệp thư mục (có khả năng được lập nhiều chỉ mục) đến vị trí tệp. Nếu tệp không tồn tại, thì cần có một số thao tác bổ sung như tạo mục nhập inode và gán quyền.

Nhiều công nghệ, cả về phần cứng và phần mềm, đã được phát triển để cải thiện thời gian truy cập và tương tác với bộ nhớ. Một tối ưu hóa phần cứng rất phổ biến là sử dụng SSD, có thời gian truy cập được cải thiện nhiều do thuộc tính trạng thái rắn của chúng. Mặt khác, ổ cứng thường có các bộ phận cơ học (trục quay chuyển động), nghĩa là có những giới hạn vật lý về tốc độ bạn có thể “nhảy” từ phần này sang phần khác của đĩa.

Mặc dù SSD cung cấp khả năng truy cập đĩa nhanh, nhưng điều đó thường không đủ để tăng tốc độ đọc và ghi dữ liệu. Hệ điều hành thường sẽ sử dụng các cấu trúc bộ nhớ dễ bay hơi, nhanh hơn như RAM và bộ đệm để làm cho dữ liệu “gần” hơn với bộ xử lý và tăng tốc hoạt động. Trên thực tế, bản thân hệ điều hành thường được lưu trữ trên một hệ thống tệp và một tối ưu hóa chính là giữ vĩnh viễn các tệp hệ điều hành chỉ đọc phổ biến trong RAM để đảm bảo hệ điều hành chạy nhanh và hiệu quả.

Không đi sâu vào chi tiết hoạt động của tệp, có một số tối ưu hóa thú vị được sử dụng để quản lý dữ liệu. Ví dụ: khi xóa một tệp, một tối ưu hóa phổ biến là chỉ cần xóa inode trỏ đến dữ liệu và đánh dấu hiệu quả các vùng đĩa là “bộ nhớ trống”. Dữ liệu trên đĩa không bị xóa sạch về mặt vật lý trong trường hợp này, nhưng quyền truy cập vào nó bị xóa. Để “xóa” hoàn toàn một tệp, có thể thực hiện một số thao tác định dạng nhất định để ghi tất cả các số 0 (0) lên các vùng đĩa bị xóa.

Một tối ưu hóa phổ biến khác là di chuyển dữ liệu. Là người dùng, chúng tôi có thể muốn di chuyển tệp từ thư mục này sang thư mục khác dựa trên tùy chọn tổ chức cá nhân của chúng tôi. Tuy nhiên, hệ thống tệp chỉ cần thay đổi dữ liệu tối thiểu trong một số tệp thư mục, thay vì thực sự chuyển các bit từ nơi này sang nơi khác. Bằng cách sử dụng khái niệm nút và con trỏ, một hệ thống tệp có thể thực hiện thao tác “di chuyển” (trong cùng một đĩa) rất nhanh.

Đọc thêm:  Có máy tính xách tay Windows 8 cảm ứng nào dành cho bạn không?

Khi nói đến việc “cài đặt” các ứng dụng hoặc trò chơi, điều này chỉ đơn giản có nghĩa là sao chép các tệp vào một vị trí cụ thể và đặt các biến và cờ toàn cục để làm cho chúng có thể thực thi được. Trong Windows, một bản cài đặt thường yêu cầu một thư mục, sau đó tải xuống dữ liệu để chạy ứng dụng và đặt nó vào thư mục đó. Không có gì đặc biệt về cài đặt, ngoài cơ chế tự động ghi nhiều tệp và thư mục từ nguồn bên ngoài (phương tiện trực tuyến hoặc vật lý) vào đĩa bạn chọn.

Các hệ thống tệp hiện đại có nhiều tối ưu hóa chi tiết hoạt động song song với hệ điều hành để cải thiện hiệu suất và cung cấp nhiều tính năng khác nhau (chẳng hạn như bảo mật hoặc hỗ trợ tệp lớn). Một số hệ thống tệp phổ biến nhất hiện nay bao gồm FAT32 (dành cho ổ đĩa flash và trước đây là Windows), NTFS (dành cho Windows) và ext4 (dành cho Linux).

Ở cấp độ cao, tất cả các hệ thống tệp này đều có cấu trúc trên đĩa tương tự nhau, nhưng khác nhau về chi tiết và tính năng mà chúng hỗ trợ. Ví dụ: định dạng FAT32 (Bảng phân bổ tệp) ban đầu được thiết kế vào năm 1977 và được sử dụng trong những ngày đầu của máy tính cá nhân. Nó sử dụng khái niệm về một danh sách được liên kết để truy cập tệp và thư mục, tuy đơn giản và hiệu quả nhưng có thể chậm đối với các đĩa lớn hơn. Ngày nay, nó là một định dạng thường được sử dụng cho ổ đĩa flash.

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

NTFS (Hệ thống tệp công nghệ mới) do Microsoft phát triển vào năm 1993 đã giải quyết nhiều vấn đề khởi đầu khiêm tốn của FAT32. Nó cải thiện hiệu suất bằng cách lưu trữ nhiều siêu dữ liệu bổ sung khác nhau về tệp và hỗ trợ các cấu trúc khác nhau để mã hóa, nén, tệp thưa thớt và ghi nhật ký hệ thống. Ngày nay, NTFS vẫn được sử dụng trong Windows 10 và 11. Tương tự, các thiết bị macOS và iOS sử dụng hệ thống tệp độc quyền do Apple tạo ra, HFS+ (còn được gọi là Mac OS Extended) từng là tiêu chuẩn trước khi họ giới thiệu Hệ thống tệp Apple (APFS) tương đối gần đây vào năm 2017 và được tối ưu hóa tốt hơn cho các phương tiện lưu trữ nhanh hơn cũng như hỗ trợ các khả năng nâng cao như mã hóa và tăng cường tính toàn vẹn của dữ liệu.

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Hệ thống tệp mở rộng thứ tư, hay ext4, là phiên bản thứ tư của hệ thống tệp mở rộng được phát triển vào năm 2008 và là hệ thống mặc định cho nhiều bản phân phối Linux bao gồm Debian và Ubuntu. Nó có thể hỗ trợ kích thước tệp lớn (tối đa 16 tebibyte) và sử dụng khái niệm về phạm vi để nâng cao hơn nữa các nút và siêu dữ liệu cho tệp. Nó sử dụng hệ thống phân bổ bị trì hoãn để giảm ghi vào đĩa và có nhiều cải tiến đối với tổng kiểm tra hệ thống tệp về tính toàn vẹn của dữ liệu và cũng được hỗ trợ bởi cả Windows và Mac.

Mỗi hệ thống tệp cung cấp bộ tính năng và tối ưu hóa riêng và có thể có nhiều điểm khác biệt khi triển khai. Tuy nhiên, về cơ bản, chúng đều thực hiện cùng chức năng hỗ trợ các tệp và tương tác với dữ liệu trên đĩa. Một số hệ thống tệp nhất định được tối ưu hóa để hoạt động tốt hơn với các hệ điều hành khác nhau, đó là lý do tại sao hệ thống tệp và hệ điều hành gắn bó chặt chẽ với nhau.

Đọc thêm:  GeForce RTX trên máy tính xách tay của bạn? Hình thức đó sẽ diễn ra như thế nào và khi nào?

Một trong những tính năng quan trọng nhất của hệ thống tệp là khả năng phục hồi lỗi của nó. Lỗi phần cứng có thể xảy ra vì nhiều lý do, bao gồm hao mòn, điện áp tăng vọt hoặc sụt giảm ngẫu nhiên (do ép xung bộ xử lý hoặc các tối ưu hóa khác), va chạm hạt alpha ngẫu nhiên (còn gọi là lỗi mềm) và nhiều nguyên nhân khác. Trên thực tế, lỗi phần cứng là một vấn đề tốn kém để xác định và gỡ lỗi, đến nỗi cả Google và Facebook đều đã xuất bản các bài báo về tầm quan trọng của khả năng phục hồi trên quy mô lớn, đặc biệt là trong các trung tâm dữ liệu.

Một trong những tính năng quan trọng nhất của hệ thống tệp là khả năng phục hồi lỗi của nó.

Để đạt được mục tiêu đó, hầu hết các hệ thống tệp thế hệ tiếp theo đang tập trung vào khả năng phục hồi nhanh hơn và bảo mật (er) nhanh hơn. Các tính năng này phải trả giá, thường phát sinh một hình phạt về hiệu suất để kết hợp nhiều tính năng dự phòng hoặc bảo mật hơn vào hệ thống tệp.

Các nhà cung cấp phần cứng thường bao gồm các cơ chế bảo vệ khác nhau cho sản phẩm của họ, chẳng hạn như bảo vệ ECC cho RAM, tùy chọn RAID để dự phòng ổ đĩa hoặc dự phòng bộ xử lý toàn diện, chẳng hạn như Chip tự lái hoàn toàn (FSD) gần đây của Tesla. Tuy nhiên, lớp bảo vệ bổ sung đó trong phần mềm thông qua hệ thống tệp cũng quan trọng không kém.

svg+xml,%3Csvg%20xmlns= Người giải thích: Hệ thống tệp là gì?

Microsoft đã nghiên cứu vấn đề này trong nhiều năm nay trong quá trình triển khai Hệ thống tệp đàn hồi (ReFS) của mình. ReFS ban đầu được phát hành cho Windows Server 2012 và nhằm kế thừa NTFS. ReFS sử dụng cây B+ cho tất cả các cấu trúc trên đĩa của chúng (bao gồm siêu dữ liệu và dữ liệu tệp) đồng thời có cách tiếp cận ưu tiên khả năng phục hồi để triển khai. Điều này bao gồm tổng kiểm tra cho tất cả siêu dữ liệu được lưu trữ độc lập và chính sách phân bổ khi ghi. Thực tế, điều này giúp giảm gánh nặng cho quản trị viên khỏi việc phải chạy các công cụ kiểm tra lỗi định kỳ như CHKDSK khi sử dụng ReFS.

Trong thế giới mã nguồn mở, Btrfs (phát âm là “better FS” hoặc “Butter FS”) đang thu hút sự chú ý với các tính năng tương tự như ReFS. Một lần nữa, trọng tâm chính là khả năng chịu lỗi, các thuộc tính tự phục hồi và quản trị dễ dàng. Nó cũng cung cấp khả năng mở rộng tốt hơn ext4, cho phép hỗ trợ dữ liệu nhiều hơn khoảng 16 lần.

Mặc dù ngày nay có nhiều hệ thống tệp khác nhau được sử dụng, nhưng các khái niệm cấp cao và mục tiêu chính đã thay đổi rất ít theo thời gian. Để xây dựng một hệ thống tệp, bạn cần một số thông tin cơ bản về từng tệp (siêu dữ liệu) và cấu trúc lưu trữ có thể mở rộng để ghi và đọc từ nhiều tệp khác nhau.

Việc triển khai cơ bản các nút và tệp cùng nhau tạo thành một hệ thống rất có thể mở rộng, hệ thống này đã được tinh chỉnh và tinh chỉnh để cung cấp cho chúng tôi các hệ thống tệp hiện đại. Mặc dù chúng ta có thể không nghĩ về các hệ thống tệp và các tính năng của chúng trong cuộc sống hàng ngày của chúng ta, nhưng đó là một minh chứng thực sự cho sự mạnh mẽ và thiết kế có thể mở rộng của chúng đã cho phép chúng ta thưởng thức và truy cập dữ liệu kỹ thuật số của mình trên máy tính, điện thoại, bảng điều khiển và nhiều hệ thống khác.

Hình ảnh tiêu đề: Jelle Dekkers