Hệ thống file

Trong điện toán, một hệ thống file (hay hệ thống tập tin, tiếng Anh là filesystem) kiểm soát cách lưu trữ và truy xuất dữ liệu.  Không có hệ thống file, thông tin được lưu trong các phương tiện lưu trữ sẽ là một khối dữ liệu lớn mà không có cách nào để biết nơi một phần thông tin dừng lại và phần tiếp theo bắt đầu.  Bằng cách tách dữ liệu thành từng mảnh và đặt tên cho mỗi mảnh, thông tin dễ dàng được phân tách và xác định.  Lấy tên từ cách đặt tên cho các hệ thống thông tin trên giấy, mỗi nhóm dữ liệu được gọi là "file". Cấu trúc và quy tắc logic được sử dụng để quản lý các nhóm thông tin và tên của chúng được gọi là "hệ thống file".
Có nhiều loại hệ thống file khác nhau.  Mỗi loại có cấu trúc và logic khác nhau, thuộc tính của tốc độ, tính linh hoạt, bảo mật, kích thước và nhiều hơn nữa.  Một số hệ thống file đã được thiết kế để sử dụng cho các ứng dụng cụ thể.  Ví dụ, hệ thống tệp ISO 9660 được thiết kế dành riêng cho đĩa quang.
Hệ thống file có thể được sử dụng trên nhiều loại thiết bị lưu trữ khác nhau sử dụng các loại phương tiện khác nhau.  Kể từ năm 2019, các ổ đĩa cứng đã là thiết bị lưu trữ chính và được dự kiến sẽ duy trì trong tương lai gần.  Các loại phương tiện khác được sử dụng bao gồm SSD, băng từ và đĩa quang.  Trong một số trường hợp, chẳng hạn như với tmpfs, bộ nhớ chính của máy tính (bộ nhớ truy cập ngẫu nhiên, RAM) được sử dụng để tạo một hệ thống file tạm thời để sử dụng ngắn hạn.
Một số hệ thống file được sử dụng trên các thiết bị lưu trữ dữ liệu cục bộ; những loại khác cung cấp quyền truy cập tệp qua giao thức mạng (ví dụ: máy khách NFS, SMB hoặc 9P).  Một số hệ thống tệp là "ảo", có nghĩa là "file" được cung cấp (được gọi là file ảo) được tính theo yêu cầu (chẳng hạn như Procfs và sysfs) hoặc chỉ đơn thuần là ánh xạ vào hệ thống file khác được sử dụng làm kho lưu trữ.  Hệ thống file quản lý quyền truy cập vào cả nội dung của file và siêu dữ liệu về các file đó.  Nó có trách nhiệm sắp xếp không gian lưu trữ; độ tin cậy, hiệu quả và điều chỉnh liên quan đến phương tiện lưu trữ vật lý là những cân nhắc thiết kế quan trọng.

Nguồn gốc của thuật ngữ

Trước khi sự ra đời của máy tính, hệ thống tập tin đã được sử dụng để mô tả một phương pháp lưu trữ và lấy tài liệu giấy.  Đến năm 1961, thuật ngữ này đã được áp dụng cho việc quản lý trên máy vi tính cùng với nghĩa gốc.  Đến năm 1964, nó được sử dụng chung.

Kiến trúc

Một hệ thống file bao gồm hai hoặc ba lớp.  Đôi khi các lớp được phân tách rõ ràng và đôi khi các chức năng được kết hợp.
Hệ thống file logic chịu trách nhiệm tương tác với ứng dụng người dùng.  Nó cung cấp giao diện chương trình ứng dụng (API) cho các thao tác với file - OPEN, CLOSE, READ, v.v. và chuyển thao tác được yêu cầu đến lớp bên dưới để xử lý.  Hệ thống file logic "quản lý mở các mục trong bảng file và mô tả file theo quy trình."   Lớp này cung cấp "quyền truy cập file, hoạt động thư mục, [và] bảo mật và bảo vệ."
Lớp tùy chọn thứ hai là hệ thống file ảo.  "Giao diện này cho phép hỗ trợ nhiều phiên bản đồng thời của các hệ thống file vật lý, mỗi phiên bản được gọi là triển khai hệ thống file."
Lớp thứ ba là hệ thống file vật lý.  Lớp này liên quan đến hoạt động vật lý của thiết bị lưu trữ (ví dụ: đĩa).  Nó xử lý các khối vật lý đang được đọc hoặc ghi.  Nó xử lý bộ đệm và quản lý bộ nhớ và chịu trách nhiệm cho việc đặt các khối vật lý vào các vị trí cụ thể trên phương tiện lưu trữ.  Hệ thống tệp vật lý tương tác với trình điều khiển thiết bị hoặc với kênh để điều khiển thiết bị lưu trữ.

Hệ thống file và hệ điều hành

Nhiều hệ điều hành bao gồm hỗ trợ cho nhiều hơn một hệ thống file.  Đôi khi hệ điều hành và hệ thống file được đan xen chặt chẽ đến mức khó có thể tách rời các chức năng của hệ thống file.
Cần phải có một giao diện được cung cấp bởi phần mềm hệ điều hành giữa người dùng và hệ thống file.  Giao diện này có thể là văn bản (như được cung cấp bởi giao diện dòng lệnh, chẳng hạn như shell Unix hoặc OpenVMS DCL) hoặc đồ họa (như được cung cấp bởi giao diện người dùng đồ họa, như trình duyệt file).  Nếu đồ họa, phép ẩn dụ của thư mục, chứa tài liệu, tệp khác và thư mục lồng nhau thường được sử dụng.

Linux

Linux hỗ trợ nhiều hệ thống file, nhưng các lựa chọn phổ biến cho đĩa hệ thống trên thiết bị cucj bộ bao gồm họ ext * (ext2, ext3 và ext4), XFS, JFS và btrfs.  Đối với flash thô không có flash translation layer (FTL) hoặc Memory Technology Device (MTD), có UBIFS, JFFS2 và YAFFS, trong số những thứ khác.  SquashFS là một hệ thống file chỉ đọc nén phổ biến.

Solaris

Solaris trong các bản phát hành trước đó được mặc định là UFS (không ghi nhật ký hoặc không đăng nhập) cho các hệ thống file bổ sung và có thể khởi động.  Solaris mặc định, hỗ trợ và mở rộng UFS.
Hỗ trợ cho các hệ thống file khác và các cải tiến quan trọng đã được thêm vào theo thời gian, bao gồm VxFS của Veritas, Sun Microsystems (phân cụm) QFS, Sun Microsystems (ghi nhật ký) UFS, và Sun Microsystems (mã nguồn mở, poolable, nén 128 bit và sửa lỗi) ZFS.
Các phần mở rộng kernel đã được thêm vào Solaris để cho phép hoạt động Veritas VxFS có thể khởi động. Logging hay ghi nhật ký đã được thêm vào UFS trong của Sun Solaris 7.  Các phiên bản của Solaris 10, Solaris Express, OpenSolaris và các biến thể nguồn mở khác của hệ điều hành Solaris sau đó đã hỗ trợ ZFS có khả năng khởi động.
Logical Volume Management cho phép mở rộng một hệ thống file trên nhiều thiết bị nhằm mục đích thêm dự phòng, dung lượng và/hoặc thông lượng.  Các môi trường kế thừa trong Solaris có thể sử dụng Solaris Volume Manager (trước đây gọi là Solstice DiskSuite).  Nhiều hệ điều hành (bao gồm Solaris) có thể sử dụng  Veritas Volume Manager.  Các hệ điều hành hiện đại dựa trên Solaris làm lu mờ nhu cầu quản lý khối lượng thông qua việc tận dụng các kho lưu trữ ảo trong ZFS.

macOS

macOS (trước đây là Mac OS X) sử dụng  Apple File System (APFS), gần đây đã thay thế một hệ thống file được kế thừa từ hệ điều hành Mac cổ điển có tên HFS Plus (HFS+).  Apple cũng sử dụng thuật ngữ "Mac OS Extended" cho HFS+.  HFS Plus là một siêu dữ liệu và trường hợp bảo quản nhưng (thường) case-insensitive hệ thống file.  Do nguồn gốc Unix của macOS, phân quyền Unix đã được thêm vào HFS Plus.  Các phiên bản sau của HFS Plus đã thêm nhật ký để ngăn ngừa tham nhũng cấu trúc hệ thống file và đưa ra một số tối ưu hóa cho các thuật toán phân bổ nhằm cố gắng tự động chống phân mảnh các file mà không yêu cầu trình chống phân mảnh bên ngoài.
Tên file có thể lên tới 255 ký tự.  HFS Plus sử dụng Unicode để lưu trữ tên file.  Trên macOS, kiểu file có thể đến từ mã loại, được lưu trữ trong siêu dữ liệu của file hoặc phần mở rộng tên file.
HFS Plus có ba loại liên kết: liên kết cứng kiểu Unix, liên kết tượng trưng kiểu Unix và bí danh.  Các bí danh được thiết kế để duy trì một liên kết đến file gốc của chúng ngay cả khi chúng được di chuyển hoặc đổi tên; chúng không được giải thích bởi chính hệ thống file mà bởi mã Trình quản lý file trong vùng người dùng.
macOS 10.13 High Sierra, được công bố vào ngày 5 tháng 6 năm 2017 tại sự kiện WWDC của Apple, sử dụng Apple File System trên các ổ đĩa SSD.
macOS cũng hỗ trợ hệ thống tệp UFS, xuất phát từ Unix Fast File System BSD thông qua NeXTSTEP.  Tuy nhiên, kể từ Mac OS X Leopard, macOS không còn có thể được cài đặt trên ổ UFS, hệ thống trước Leopard cũng không thể cài đặt trên ổ UFS được nâng cấp lên Leopard.  Kể từ khi Mac OS X Lion các hỗ trợ UFS đã bị loại bỏ hoàn toàn.
Các phiên bản mới hơn của macOS có khả năng đọc và ghi vào các hệ thống file FAT cũ (16 và 32) phổ biến trên Windows. Chúng cũng có khả năng đọc các hệ thống file NTFS mới hơn của Windows.  Để ghi vào hệ thống file NTFS trên các phiên bản macOS trước phần mềm bên thứ ba của Mac OS X Snow Leopard là cần thiết.  Mac OS X 10.6 (Snow Leopard) và sau đó cho phép ghi vào hệ thống file NTFS, nhưng chỉ sau khi thay đổi cài đặt hệ thống không tầm thường (phần mềm bên thứ ba tồn tại tự động hóa việc này).
Cuối cùng, macOS hỗ trợ đọc và ghi hệ thống file exFAT kể từ Mac OS X Snow Leopard, bắt đầu từ phiên bản 10.6.5.

Microsoft Windows

Windows sử dụng các hệ thống file FAT, NTFS, exFAT, Live File System và ReFS (những thứ cuối cùng chỉ được hỗ trợ và sử dụng được trong Windows Server 2012, Windows Server 2016, Windows 8, Windows 8.1 và Windows 10; Windows không thể khởi động từ nó).
Windows sử dụng một ký tự ổ đĩa trừu tượng ở cấp độ người dùng để phân biệt một đĩa hoặc phân vùng khác.  Ví dụ: đường dẫn C:\WINDOWS đại diện cho một thư mục WINDOWS trên phân vùng được đại diện bởi chữ C. Ổ C: thường được sử dụng nhiều nhất cho phân vùng ổ đĩa cứng chính, trên đó Windows thường được cài đặt và từ đó khởi động.  "Truyền thống" này đã trở nên ăn sâu đến mức các lỗi tồn tại trong nhiều ứng dụng đưa ra giả định rằng ổ đĩa mà hệ điều hành được cài đặt là C. Việc sử dụng các ký tự ổ đĩa và truyền thống sử dụng "C" làm ký tự ổ đĩa cho phân vùng ổ đĩa cứng chính, có thể được truy tìm đến MS-DOS, trong đó các chữ cái A và B được dành riêng cho tối đa hai ổ đĩa mềm.  Điều này đến lượt nó bắt nguồn từ CP/M trong những năm 1970 và cuối cùng là từ CP / CMS của IBM năm 1967.

FAT

Họ hệ thống file FAT được hỗ trợ bởi hầu hết các hệ điều hành cho máy tính cá nhân, bao gồm tất cả các phiên bản Windows và MS-DOS/PC DOS, OS/2 và DR-DOS.  (PC-DOS là phiên bản OEM của MS-DOS, MS-DOS ban đầu được dựa trên 86-DOS của SCP.  DR-DOS dựa trên Concurrent DOS của Digital Research, phiên bản kế thừa của CP/M-86.  Do đó, các hệ thống file FAT rất phù hợp dưới dạng định dạng trao đổi chung giữa các máy tính và thiết bị thuộc hầu hết mọi loại và độ tuổi.
Hệ thống file FAT theo dõi nguồn gốc của nó trở lại tiền thân FAT 8 bit (không tương thích) trong Standalone Disk BASIC và dự án MDOS/MIDAS tồn tại trong thời gian ngắn. 
Trong những năm qua, hệ thống file đã được mở rộng từ FAT12 sang FAT16 và FAT32.  Các tính năng khác nhau đã được thêm vào hệ thống tệp bao gồm thư mục con, hỗ trợ bảng mã, thuộc tính mở rộng và tên file dài.  Các bên thứ ba như Digital Research đã kết hợp hỗ trợ tùy chọn để xóa tracking và các lược đồ bảo mật đa người dùng dựa trên ổ đĩa/thư mục/file để hỗ trợ mật khẩu và quyền truy cập file và thư mục như quyền đọc/ghi/thực thi/xóa.  Hầu hết các tiện ích mở rộng này không được Windows hỗ trợ.
Các hệ thống file FAT12 và FAT16 có giới hạn về số lượng mục trong thư mục gốc của hệ thống file và có các hạn chế về kích thước tối đa của các ổ đĩa hoặc phân vùng có định dạng FAT.
FAT32 giải quyết các giới hạn trong FAT12 và FAT16, ngoại trừ giới hạn kích thước file gần bằng 4GB, nhưng vẫn còn hạn chế so với NTFS.
FAT12, FAT16 và FAT32 cũng có giới hạn tám ký tự cho tên file và ba ký tự cho phần mở rộng (chẳng hạn như.exe).  Điều này thường được gọi là giới hạn tên tệp 8.3.  VFAT, một phần mở rộng tùy chọn cho FAT12, FAT16 và FAT32, được giới thiệu trong Windows 95 và Windows NT 3.5, cho phép các tên file dài (LFN) được lưu trữ trong hệ thống file FAT theo kiểu tương thích ngược.

NTFS

NTFS, được giới thiệu với hệ điều hành Windows NT vào năm 1993, cho phép kiểm soát quyền dựa trên ACL.  Các tính năng khác cũng được NTFS hỗ trợ bao gồm liên kết cứng, nhiều luồng file, lập chỉ mục thuộc tính, theo dõi hạn ngạch, file thưa thớt, mã hóa, nén và các điểm lặp lại (thư mục hoạt động như điểm gắn kết cho các hệ thống file khác, liên kết tượng trưng, liên kết, liên kết lưu trữ từ xa).

exFAT

exFAT là một hệ thống file độc quyền và bằng sáng chế được bảo vệ bằng với lợi thế nhất định so với NTFS đối với hệ thống tập tin cấp cao.
exFAT không tương thích ngược với các hệ thống file FAT như FAT12, FAT16 hoặc FAT32.  Hệ thống file được hỗ trợ với các hệ thống Windows mới hơn, như Windows Server 2003, Windows Vista, Windows 2008, Windows 7, Windows 8 và gần đây, hỗ trợ đã được thêm cho Windows XP.
exFAT được hỗ trợ trong macOS bắt đầu với phiên bản 10.6.5 (Snow Leopard).  Hỗ trợ trong các hệ điều hành khác rất ít do Microsoft chưa công bố các thông số kỹ thuật của hệ thống file và việc triển khai hỗ trợ cho exFAT cần phải có giấy phép. exFAT là hệ thống file duy nhất được hỗ trợ đầy đủ trên cả macOS và Windows có thể lưu các tệp lớn hơn 4GB.

Chuyển đổi loại hệ thống loại

Có thể có lợi hoặc cần thiết để có các file trong một hệ thống file khác với hệ thống hiện tại.  Lý do bao gồm nhu cầu tăng yêu cầu không gian vượt quá giới hạn của hệ thống file hiện tại.  Độ sâu của đường dẫn có thể cần phải tăng lên ngoài giới hạn của hệ thống file.  Có thể có những cân nhắc về hiệu suất hoặc độ tin cậy.  Cung cấp quyền truy cập vào hệ điều hành khác không hỗ trợ hệ thống file hiện có là một lý do khác.

Chuyển đổi tại chỗ

Trong một số trường hợp, việc chuyển đổi có thể thực hiện tại chỗ, mặc dù việc di chuyển hệ thống file có phần bảo thủ hơn, vì nó liên quan đến việc tạo một bản sao của dữ liệu và được khuyến nghị.  Trên Windows, hệ thống file FAT và FAT32 có thể được chuyển đổi sang NTFS thông qua tiện ích convert.exe, nhưng không thể ngược lại.   Trên Linux, ext2 có thể được chuyển đổi thành ext3 (và được chuyển đổi trở lại) và ext3 có thể được chuyển đổi thành ext4 (nhưng không thể quay lại), và cả ext3 và ext4 có thể được chuyển đổi thành btrfs và chuyển đổi lại cho đến khi thông tin hoàn tác đã xóa.  Các chuyển đổi này có thể do sử dụng cùng định dạng cho chính dữ liệu file và di chuyển siêu dữ liệu vào không gian trống, trong một số trường hợp sử dụng hỗ trợ file thưa thớt.

Di chuyển sang một hệ thống tệp khác

Di chuyển có nhược điểm là cần thêm không gian mặc dù có thể nhanh hơn.  Trường hợp tốt nhất là nếu có không gian chưa sử dụng trên phương tiện sẽ chứa hệ thống file cuối cùng.
Ví dụ: để di chuyển hệ thống file FAT32 sang hệ thống file ext2.  Đầu tiên tạo một hệ thống file ext2 mới, sau đó sao chép dữ liệu vào hệ thống file, sau đó xóa hệ thống file FAT32.
Một cách khác, khi không có đủ không gian để giữ lại hệ thống file gốc cho đến khi hệ thống file mới được tạo, là sử dụng vùng làm việc (chẳng hạn như bộ nhớ lưu động).  Điều này mất nhiều thời gian hơn nhưng một bản sao lưu dữ liệu là một tác dụng phụ tốt đẹp.

Đường dẫn file dài và tên file dài

Trong các hệ thống file phân cấp, các file được truy cập bằng một đường dẫn là danh sách phân nhánh của các thư mục chứa file.  Các hệ thống file khác nhau có các giới hạn khác nhau về độ sâu của đường dẫn.  Hệ thống file cũng có giới hạn về độ dài của một tên file riêng lẻ.
Sao chép các file có tên dài hoặc nằm trong các đường dẫn có độ sâu đáng kể từ hệ thống file này sang hệ thống file khác có thể gây ra kết quả không mong muốn.  Điều này phụ thuộc vào cách tiện ích thực hiện sao chép xử lý sự khác biệt.