Các loại Filesystem và cơ hội khôi phục dữ liệu – Phần 2: macOS
Phần 1: Cơ hội khôi phục dữ liệu trên các định dạng ổ đĩa Windows – NTFS, FAT32, exFAT, ReFS
Filesystem và cơ hội khôi phục dữ liệu
Filesystem (hệ thống tập tin) đóng vai trò then chốt trong việc tổ chức, lưu trữ và truy xuất dữ liệu trên thiết bị lưu trữ. Mỗi phân vùng trên ổ đĩa có thể có filesystem riêng, với cơ chế sắp xếp và quản lý metadata khác nhau. Khi dữ liệu bị xóa hoặc định dạng, nội dung tệp thường chưa bị xóa hoàn toàn, nhưng metadata sẽ bị xóa hoặc thay đổi, ảnh hưởng lớn đến khả năng khôi phục. Vì vậy, loại filesystem được sử dụng có ảnh hưởng trực tiếp đến tỷ lệ thành công khi khôi phục dữ liệu.
Các loại filesystem của macOS
Ngày nay, Disk Utility của Apple cho phép lựa chọn một số loại FS. Ban đầu, HFS+ (còn được gọi là Mac OS Extended) đóng vai trò là tùy chọn mặc định cho ổ đĩa macOS. Tuy nhiên, đã có sự chuyển đổi sang APFS filesystem hiện đại được tối ưu hóa cho bộ lưu trữ flash trong những phiên bản gần đây. Định dạng exFAT được mô tả trước đây, mặc dù do Microsoft tạo ra, cũng có thể được áp dụng trên các thiết bị bên ngoài được chia sẻ giữa các nền tảng khác nhau.
1. HFS+
Volume Header xuất hiện ở đầu phân vùng HFS+. Nó chứa tất cả thông tin chung về nó cũng như vị trí các cấu trúc filesystem chính. Một bản sao giống hệt của Volume Header được đặt ở cuối phân vùng. Phần còn lại của metadata FS được thể hiện bằng một tập hợp các tệp đặc biệt có thể được lưu trữ ở bất kỳ đâu trong phân vùng. Hầu hết chúng được tổ chức dưới dạng B-tree. Mỗi B-tree gồm các node chứa các bản ghi gồm một khóa và dữ liệu cụ thể.
HFS+ chia toàn bộ không gian lưu trữ thành các đơn vị có kích thước bằng nhau gọi là các block phân bổ. Như một nỗ lực giảm sự phân mảnh, các block này thường được phân bổ thành các nhóm nối tiếp nhau gọi là cụm (clump). Allocation File ghi nhận xem mỗi block phân bổ có được sử dụng vào thời điểm hiện tại hay không.
Thông tin về nội dung của mỗi tệp được quản lý bằng cách sử dụng cấu trúc phân nhánh đặc biệt – một là dành cho dữ liệu thực tế (phân nhánh dữ liệu) và một là dành cho thông tin hỗ trợ (phân nhánh tài nguyên). Khu vực liền kề các block phân bổ được gán cho một nhánh gọi là phạm vi (extent). Mỗi extent được biểu thị bằng số block bắt đầu và độ dài của block. Catalog File mô tả phân cấp của tất cả các tệp và thư mục cùng các thuộc tính quan trọng của chúng, ví dụ như tên. Nó cũng chiếm 8 extent đầu tiên của mỗi nhánh. Các extent bổ sung có thể được tìm thấy trong Extents Overflow File. Các thuộc tính khác của tệp được chứa trong Attributes File.
Hơn thế nữa, HFS+ hỗ trợ các hard link với nhiều tham chiếu đến một phiên bản duy nhất của nội dung tệp. Các tham chiếu như vậy chỉ là một tệp hard-link riêng biệt được tạo trong Catalog File cho mỗi đường dẫn thư mục. Trong khi đó, nội dung gốc được chuyển tới thư mục gốc ẩn. Tất cả các sửa đổi đối với FS đếu được ghi lại trong Nhật ký (Journal). Nhật ký trong HFS+ bị giới hạn về kích thước – những thông tin mới được thêm vào và được ghi lại trên các bản ghi cũ. Bằng cách này, HFS+ ghi đè lên những thông tin cũ để cập nhật Nhật ký mỗi khi có những sự thay đổi mới.
Trong hình dưới đây, bạn có thể thấy mối quan hệ giữa các thành phần chính của cấu trúc HFS+ gồm Volume Header, Nhật ký và Catalog File:
Đối với lệnh xóa
Nguyên lý: HFS+ cập nhật Catalog File bằng cách sắp xếp lại B-tree, điều này có thể dẫn đến việc ghi đè lên các bản ghi trong các node tương ứng với tệp đã xóa. Các block tương ứng trong Allocation File được đánh dấu là trống. Hard link bị xóa khỏi đường dẫn thư mục. Tuy nhiên, extent phân nhánh dữ liệu vẫn nằm trong volume. Ngoài ra, các thông tin này cũng được lưu trữ trong Nhật ký một thời gian.
Cách phục hồi: Bằng cách tham khảo Nhật ký, ta có thể tìm thấy các bản ghi mô tả trạng thái trước đó của các block được cập nhật và xác định metadata của các mục đã xóa gần đây. Cơ hội phục hồi dữ liệu sẽ phụ thuộc rất lớn vào thời gian hệ thống hoạt động sau khi xóa. Tuy nhiên, nếu các bản ghi Nhật ký này đã bị xóa, phương pháp khôi phục RAW có thể mang lại kết quả tốt cho các tệp không bị phân mảnh. Dù vậy, các tệp bị phân mảnh còn lại sẽ gây ra sự cố và dẫn đến việc khôi phục không đầy đủ.
Đối với lệnh định dạng
Nguyên lý: Catalog File được reset về cấu trúc phân cấp mặc định, do đó, nó sẽ mất tất cả bản ghi về các tệp trước đó. Mặt khác, Nhật ký và nội dung dữ liệu của chúng sẽ được giữ nguyên vẹn.
Cách phục hồi: Chương trình khôi phục dữ liệu có thể sử dụng Nhật ký để truy xuất mọi thứ có khả năng khôi phục từ các bản ghi của nó, sau đó sử dụng phương pháp khôi phục RAW để khôi phục các tệp bị thiếu bằng cách sử dụng các mẫu đã được xác định trước. Tương tự vậy, cơ hội phục hồi sẽ thấp hơn trong các trường hợp bị phân mảnh trên diện rộng.
2. APFS
APFS sử dụng một chiến lược hoàn toàn khác để tổ chức dữ liệu. Ổ đĩa APFS luôn nằm trong một Container đặc biệt. Mỗi Container có thể kết hợp với nhiều volume (filesystem) để chia sẻ không gian lưu trữ có sẵn. Tất cả các block đã được sử dụng hay còn trống trong Container đều được ghi lại với sự trợ giúp của các cấu trúc Bitmap phổ biến. Trong khi đó, mỗi volume đều có Superblock riêng và quản lý các thành phần lưu trữ thông tin riêng, chẳng hạn như phân cấp thư mục, nội dung tệp và metadata.
Việc phân bổ các tệp và thư mục được trình bày dưới dạng B-tree. Nó có các chức năng tương tự như Catalog File trong HFS+. Mỗi mục trong đó được tạo nên từ một vài bản ghi, mỗi bản ghi được lưu trữ dưới dạng khóa và giá trị. Nội dung của một tệp tin bao gồm ít nhất một extent. Một extent mang thông tin về nơi nội dung bắt đầu và độ dài của nó trong block. Một B-tree riêng biệt tồn tại cho tất cả extent trong volume. Trái ngược với HFS+, APFS không bao giờ sửa đổi bất kỳ đối tượng nào ngay tại chỗ. Thay vào đó, nó tạo ra các bản sao và thực hiện những thay đổi cần thiết trên một vị trí mới trong bộ lưu trữ – nguyên tắc này được gọi là Copy-on-Write (CoW).
Đối với lệnh xóa
Nguyên lý: APFS xóa sạch các node tương ứng trong B-tree phân bổ tệp và thư mục.
Cách phục hồi: Ta có thể tìm thấy các phiên bản cũ hơn của các node bị thiếu và phân tích chúng để dựng lại các phiên bản gần đây nhất của chúng. Tuy nhiên, vì được thiết kế cho ổ đĩa SSD, APFS thực hiện thao tác TRIM ngay sau khi xóa dữ liệu. Cơ chế TRIM sẽ khiến nội dung dữ liệu thực tế bị xóa đi nhanh chóng và ta sẽ không còn cơ hội phục hồi dữ liệu một khi thao tác này được bắt đầu.
Phần 3: Các loại Filesystem và cơ hội khôi phục dữ liệu: Linux