Những tính năng tuyệt vời của Apple File System?

Apple File System (APFS) là một định dạng file system hoàn toàn mới của Apple, hiện đã có mặt trên iOS 10.3 Beta và sắp tới sẽ được áp dụng cho tất cả mọi sản phẩm của họ, từ đồng hồ, TV cho đến máy tính hay điện thoại. Bất kể ở đâu có lưu trữ thì APFS sẽ được dùng cho chỗ đó. APFS có nhiều lợi ích rõ ràng: tối ưu cho SSD nên chạy nhanh hơn, cho phép copy file mà không làm tốn thêm dung lượng, hỗ trợ tính năng snapshot lại phiên bản file rồi quay trở lại sau đó, hoặc tạo các phân vùng không cần liên tiếp. APFS cũng tăng tính linh hoạt để Apple có thể thêm chức năng mới bất kì khi nào họ muốn mà không phải chạy áp dụng lại cho tất cả các file đang có trong ổ.

File system được máy tính sử dụng để kiểm soát cách dữ liệu được lưu trữ và lấy ra. Nếu không có file system, dữ liệu ghi lên đĩa sẽ sát nhau thành một cục to và máy tính không thể biết đâu là nơi bắt đầu của 1 file và đâu là nơi kết thúc, cũng chẳng thể phân biệt giữa các file với nhau. File system sẽ đảm nhận nhiệm vụ chia tách file, sắp xếp, quản lý vị trí của chúng và đưa cho hệ điều hành mỗi khi được yêu cầu. Trên Windows, file system đang được dùng phổ biến là NTFS, trên Mac là HFS+, Linux là ext3/4, trên ổ USB hay đĩa cứng rời là exFAT, NTFS hoặc FAT.

HFS+ là gì, có hạn chế gì?

Hiện tại, các thiết bị của Apple chủ yếu dùng định dạng HFS+ hoặc HFS+J (Journal). Định dạng file system này đã tồn tại trên 30 năm và được phát minh trong thời đại của ổ đĩa mềm, ổ cứng. Theo thời gian, định dạng đó có nhiều hạn chế, ví dụ:

  • Cũ, không tối ưu cho ổ SSD
  • Khả năng bảo vệ dữ liệu không tốt khi có sự cố xảy ra lúc đang ghi dữ liệu
  • Không hỗ trợ nhiều luồng xử lý, tìm kiếm file
  • Cấu trúc dữ liệu cố định nên khó thêm chức năng mới, nếu thêm thì phải chạy lại cho tất cả file

Đây là động lực khiến Apple muốn "làm lại từ đầu" bằng APFS. Họ thiết kế ra một định dạng mới hoàn toàn và trong tương lai sẽ dùng cho tất cả mọi sản phẩm của mình.

APFS tối ưu cho SSD, tốc độ đọc ghi nhanh hơn

HDD truy xuất dữ liệu bằng đầu đọc, trong khi SSD truy xuất bằng điện. So với một thứ cơ học thì rõ ràng điện nhanh hơn nhiều, nhưng Apple không thể tận dụng hết sức mạnh của SSD bởi vì cách lưu trữ, cấu trúc file vẫn còn theo kiểu cũ. Giờ đây, APFS khắc phục nhược điểm đó và được tối ưu rất tốt cho SSD. Trong bối cảnh mà iMac, MacBook, Mac Pro, Apple Watch, iPhone, iPad đều sử dụng SSD thì lợi ích mà APFS mang đến cho hệ sinh thái Apple là rất to lớn. Hơi tiếc là hiện tại Apple chưa nói APFS nhanh hơn bao nhiêu so với HFS+, cái này chắc phải chờ thêm một thời gian nữa.

Apple cũng hứa hẹn AFPS sẽ có khả năng quản lý lỗi tốt hơn. Ví dụ, khi bạn đang ghi file mà lỡ cúp điện tắt máy tính cái bụp thì trong lần khởi động kế tiếp, một hệ thống quản lý mới sẽ theo dõi xem đó có thể ghi tiếp được hay không, nếu được thì tiếp tục, còn không thì hủy hoàn toàn việc ghi file để tránh việc file lỡ dỡ không xài được. Cái này giống như giao dịch ngân hàng: hoặc thành công, hoặc thất bại, chứ không có lỡ dỡ nửa đường.


Space Sharing: phân vùng không cần liên tiếp

Đây là chức năng thứ hai mà mình cảm thấy rất thích thú với APFS, và theo Apple thì hiện nay chưa có file system nào khác làm được chuyện tương tự. Hiện tại một ổ đĩa của bạn có thể được phân thành nhiều phân vùng, ví dụ A, B theo thứ tự, ngoài ra còn có một đoạn C trống chưa được dùng cho bất kì phân vùng nào. Sau khi đã phân xong, nếu bạn muốn tăng dung lượng phân vùng A thì không được vì B đã nằm ngay kế, các khối nhớ đã được phân chia xong. Chính vì vậy nên các công cụ format thường phải di chuyển B xuống C rồi mới nới A ra được. HFS+ cũng vậy.

Trong khi đó, APFS quản lý phân vùng theo cách khác. Ổ đĩa của bạn giờ đây có một cái container bao quanh, trong này chỉ có 1 phân vùng vật lý duy nhất. Phân vùng đó lại tiếp tục được chia thành nhiều volume nhỏ hơn, và những volume này đều được chia theo logic nên khi cần nới rộng A, APFS chỉ đơn giản là lấy phần C còn trống và gán nó cho A là xong. Như vậy bạn volume của bạn giờ sẽ là A - B - A. Tất nhiên, ở mức hệ điều hành thì nó vẫn thấy A như một khối thống nhất, rồi B là một khối khác, và volume cũng sẽ được nhìn như là một phân vùng ổ đĩa.


Lợi ích thực tế: khi bạn xài hết dung lượng của phân vùng A, bạn có thể nới rộng nó một cách đơn giản, miễn là ổ đĩa của bạn còn trống và chưa bị B chiếm hết. Mà ngay cả khi B chiếm hết thì bạn vẫn có thể thu nhỏ B rồi nới A vào khoảng trống mới được tạo mà không phải tốn thời gian ngồi chờ đợi di chuyển B, quá tuyệt. Trước đây chúng ta thường phải dành nhiều giờ với các công cụ chuyên nghiệp, đắt đỏ mới làm được trò này.

Fun fact: Apple nói theo khảo sát của họ, hầu hết người dùng Mac không phân thành nhiều phân vùng khác nhau. Họ chỉ để Macintosh HD mặc định và cứ thế mà dùng.

Clone: copy file không tốn dung lượng

Hiện tại, khi bạn ra lệnh copy file, file sẽ được đọc và ghi thành một khối mới, tức là chiếm không chỉ CPU, RAM mà còn chiếm cả dung lượng trên ổ. Ví dụ, bạn có một file 1GB thì khi copy ra, dung lượng chiếm dụng của 2 file sẽ là 2GB. APFS thì khác, khi bạn copy, nó sẽ tham chiếu file mới về lại file cũ nên không làm tăng thêm miếng dung lượng nào. 1GB vẫn là 1GB. macOS vẫn xem đây là hai file riêng biệt, nhưng về mặt lưu trữ vật lý thì nó chỉ là một mà thôi. Chỉ khi nào bạn bắt đầu chỉnh sửa lên 1 trong 2 file thì macOS mới tạo ra bản sao thật sự của file, và chỉ khi đó phần chiếm dụng trên ổ mới tăng lên.

Lợi ích thực tế: bạn có thể copy nhiều tài liệu ra lưu ở nhiều vị trí khác nhau, cho các ứng dụng khác nhau, mà không tốn thêm miếng data nào. Chẳng hạn, một file có thể được lưu trong cả thư mục "Công việc" và "Cá nhân"; hoặc một file nhạc có thể vừa nằm trong folder iTunes vừa nằm ở thư mục Dropbox để sao lưu.


Snapshot và Reversion

Chức năng Clone nói trên dẫn đến chức năng Snapshot này. Các ứng dụng, kể cả app bên thứ ba, có thể tạo ra bản sao lưu của cả phân vùng ở chế độ read only. Khi người dùng lỡ tay xóa hay chỉnh sửa sai file, họ luôn có thể phục hồi lại (revision) bản trước đó bằng cách chui vào snapshot lấy file cũ ra là xong. Mac trước đây có chức năng Time Machine tương tự nhưng cách hoạt động hơi khác: nó theo dõi các thay đổi với file (journal) để quay trở lại phiên bản cũ khi cần, và chỉ theo dõi được trên từng file.

Các bản snapshot sẽ luôn tồn tại trên đĩa, vậy nên Apple nói các lập trình viên nhớ thường xuyên dọn snapshot sau một thời gian định kỳ để không chiếm quá nhiều đĩa của người dùng. Cơ chế dọn thì tùy lập trình viên chọn: có thể là tự xóa snapshot cũ và tạo snapshot mới sau mỗi 4 tháng, hoặc để người dùng tự tương tác cũng được.

Snapshot và revision sẽ rất hữu ích cho những ứng dụng giúp bạn sao lưu, phục hồi file hay bảo trì hệ thống.


Độ trễ thấp

Trên sân khấu, Apple nói rằng họ thiết kế APFS để ưu tiên độ nhạy, phản hồi cho cả hệ thống, đồng thời giúp app chạy lên nhanh nhất có thể. Apple tin rằng điều này sẽ giúp trải nghiệm của người dùng tốt hơn, họ cảm thấy thoải mái hơn khi sử dụng lâu dài. Lợi ích thực tế của vụ này thì quá rõ ràng: bạn không phải ngồi chờ app chạy lên lâu như hiện tại nữa, bất kể đó là trên máy tính, iPhone, iPad hay watchOS.

Vẫn tương thích ngược với HFS và các app chạy trên HFS, không cần viết lại

Tất cả ứng dụng đang dùng với định dạng HFS có thể mang lên APFS chạy như thường, chẳng cần lập trình viên thay đổi gì cả. Chỉ một số chức năng riêng của HFS là không còn được hỗ trợ nhưng đa phần liên quan đến lập trình viên nhiều hơn. Điều này giúp tăng tính tương thích và giảm lỗi khi bản update chuyển từ HFS sang APFS được phát hành.

Bảo mật mạnh

APFS nhấn rất mạnh vào khả năng mã hóa. Nó có nhiều cấp độ mã hóa, ví dụ không mã hóa, mã hóa dùng 1 key cho mỗi phân vùng, mã hóa riêng cho từng file. Hiện iOS đang được áp dụng cấp mã hóa từng file, mỗi file có một chìa giải mã riêng biệt nên tính an toàn cao. Khi bạn bị lấy cắp máy tính hay điện thoại, hacker sẽ rất khó để lấy được nội dung gốc của những file này nhờ có APFS.

Hiện tại APFS chỉ mới áp dụng cho iOS 10.3, các hệ điều hành khác thì chưa. Apple đang tiếp tục hoàn thiện APFS và sẽ tung nó ra đâu đó trong năm nay hoặc năm sau.

Chưa có câu trả lời nào