Khi lựa chọn hệ thống file lưu trữ chia sẻ trên nền tảng đám mây, mức độ tuân thủ chuẩn POSIX (Portable Operating System Interface) là một chỉ số then chốt. ây là bộ quy chuẩn về giao diện hệ điều hành, quy định hành vi của file, thư mục, liên kết mềm, quyền truy cập và timestamp. Dịch vụ càng tương thích chặt, các ứng dụng truyền thống càng ít gặp li khó lường.
Bài viết này trình bày kết quả đo khả năng tương thích POSIX trên bảy dịch vụ file phổ biến: JuiceFS, Tencent Cloud CFS, Alibaba Cloud NAS, Huawei Cloud SFS, GCP Filestore, Amazon EFS và Azure File Shares. Công cụ sử dụng là bộ kiểm tra pjdfstest có nguồn gốc từ FreeBSD và chạy được trên Linux.
Phương pháp kiểm tra
Để đánh giá tương thích POSIX, nhóm thử nghiệm triển khai pjdfstest trên mount point của từng dịch vụ. Mỗi test case trong bộ này kiểm tra một hành vi POSIX c thể — ví dụ: unlink, symlink, chmod, utimensat. Số lượng case thất bại được dùng làm chỉ số so sánh giữa các nền tảng.
Tổng quan kết quả
| Dịch vụ | Số case lỗi | Nhận xét chính |
|---|---|---|
| JuiceFS | 0 | Tương thích POSIX tốt nhất trong nhóm |
| GCP Filestore | 2 | Lỗi ở unlink và timestamp 64 bit |
| Tencent Cloud CFS | 7 | Hạn chế với symlink dài tối đa |
| Alibaba Cloud NAS | 7–8 | Không xóa bit SUID/SGID khi ghi bởi non-owner |
| Huawei Cloud SFS | ~21% | Nhiều hành vi POSIX chưa đầy đủ |
| Amazon EFS | ~21% | Tương tự Huawei SFS |
| Azure File Shares | ~62% | Hạn chế cơ bản về quyền và liên kết |
Phân tích chi tiết từng nền tảng
GCP Filestore
Filestore chỉ thất bại 2 case, nằm ở hai nhóm unlink và utimensat.
Case unlink/14.t kiểm tra việc xóa file khi file đang m. Khi một inode bị unlink, số liên kết nlink phải giảm xuống 0; nếu vẫn còn file descriptor mở, dữ liệu chưa bị thu hồi. Log kiểm tra:
/root/pjdfstest/tests/unlink/14.t ...........
not ok 4 - tried 'open sample_xyz123 O_RDONLY : unlink sample_xyz123 : fstat 0 nlink', expected 0, got 1
Giá trị nlink trả về là 1 thay vì 0, cho thấy Filestore chưa cập nhật đúng số liên kết inode khi unlink một file đang mở.
Case utimensat/09.t kiểm tra timestamp 64 bit:
/root/pjdfstest/tests/utimensat/09.t ........
not ok 5 - tried 'lstat sample_abc987 mtime', expected 4294967296, got 4294967295
Giá trị mtime thu được nhỏ hơn đúng 1 đơn vị so với giá trị 64 bit mong đợi. Lỗi này thường không gây nh hưởng trong thực tế.
Tencent Cloud CFS
CFS thất bại 7 case, phân bố ở utimensat, symlink và unlink. Điển hình là symlink/03.t, kiểm tra việc tạo liên kết mềm khi độ dài đường dẫn chạm ngưỡng PATH_MAX.
/root/pjdfstest/tests/symlink/03.t ..........
not ok 1 - tried 'symlink aaaa.../... sample_cfs123', expected 0, got EINVAL
not ok 2 - tried 'unlink sample_cfs123', expected 0, got ENOENT
Kết quả cho thấy CFS không cho phép tạo symlink có đích dài đúng bằng PATH_MAX, trả về EINVAL. Điều này có thể gây lỗi với các ứng dụng dựa vào symlink dài tối đa.
Alibaba Cloud NAS
NAS thất bại một số case trong nhóm chmod/12.t, liên quan đến bit đặc quyền SUID/SGID.
Đoạn test sau minh họa hành vi mong đợi khi file bị ghi bởi người dùng không phải owner:
target="testfile_$$"
expect 0 create ${target} 06777
expect 0777 -u 65534 -g 65534 open ${target} O_RDWR : write 0 "x" : fstat 0 mode
expect 0777 stat ${target} mode
expect 0 unlink ${target}
File được tạo với quyền 06777. Khi một người dùng khác owner ghi nội dung, các bit SUID/SGID phải bị xóa để tránh leo thang đặc quyền. Trên Alibaba NAS, các bit này vẫn giữ nguyên, tạo ra rủi ro bảo mật đáng kể.
Huawei Cloud SFS và Amazon EFS
Cả hai dịch vụ đều hỗ trợ gắn kết qua giao thức NFS, nhưng pjdfstest thất bại khoảng 21%, phân bố rải rác trên nhiều nhóm hàm. Cả hai không hỗ trợ file thiết bị khối và ký tự, cùng nhiều hành vi POSIX khác biệt. Trước khi triển khai các workload phức tạp, cần đánh giá kỹ lưỡng.
Azure File Shares
Azure File Shares thất bại đến 62% số case, phản ánh nhiều hạn chế cơ bản. Mặc định, mọi file và thư mục có quyền 0777, owner là root, và không thể thay đổi. Dịch vụ cũng không hỗ trợ hard link hay symbolic link. Do đó, chỉ nên sử dụng cho các trường hợp đơn giản sau khi đã kiểm tra kỹ.
JuiceFS vượt qua toàn bộ case kiểm tra, cho thấy khả năng tương thích POSIX vượt trội so với các dịch vụ còn lại. GCP Filestore đứng thứ hai với hai lỗi nhỏ. Tencent Cloud CFS và Alibaba Cloud NAS có số lượng lỗi tương đương, tập trung ở các hành vi c thể. Huawei SFS, Amazon EFS và Azure File Shares có tỷ lệ lỗi cao, trong đó một số liên quan đến vấn đề bảo mật, cần cân nhắc thận trọng trước khi đưa vào môi trường production.