AFS (Andrew File System) คืออะไร?
AFS (Andrew File System) คือ Distributed Network File System ที่พัฒนาโดย Carnegie Mellon University (CMU) ในช่วงทศวรรษ 1980 ต่อมาเป็นสินค้าของ Transarc (IBM) และกลายเป็น Open Source (OpenAFS) ปัจจุบันใช้ในสภาพแวดล้อม Enterprise, Research, Education ที่ต้องการ File Sharing ข้ามสถานที่/แพลตฟอร์ม
คุณสมบัติหลักของ AFS (Key Characteristics)
| Feature | รายละเอียด |
| Location Transparency | Client เข้าถึงไฟล์ผ่าน Path เดียวกัน (/afs/cell/path) ไม่ต้องรู้ว่าไฟล์อยู่ Server ไหน |
| Namespace Uniformity | Global Namespace: ทุก Cell มองเห็น /afs ทั้งหมด (ถ้ามีสิทธิ์) |
| Client-Side Caching | Cache ไฟล์บน Local Disk → Performance ดี, ทน Network Outage, Reduce Server Load |
| Callback Mechanism | Server แจ้ง Client เมื่อไฟล์เปลี่ยน (Cache Invalidation) → Consistency |
| Scalability | รองรับ 10,000+ Clients, Multiple Cells, Geographically Distributed |
| Security (Kerberos) | Authentication: Kerberos v5, Authorization: ACLs on Directories (per-user/group) |
| Replication | Read-only Volume Replication (Multiple Sites) → High Availability |
| Volume Management | Volume = Unit of Admin (Backup, Quota, Move, Replicate, Offline) |
AFS vs NFS (Network File System) - เปรียบเทียบ
| ด้านเปรียบเทียบ | AFS (Andrew FS) | NFS (Sun/NFSv3/v4) |
| Server State | Stateful (รู้ Client, Callback) | Stateless (v3) / Stateful (v4) |
| Caching | Client-side (Aggressive, Whole File) | Client-side (Attribute + Data, v4 Delegation) |
| Consistency | Close-to-Open / Callback (Strong) | Weak (v3) / Delegation (v4) |
| Namespace | Global (/afs/cell/...) | Per-Mount (Local View) |
| Security | Kerberos + ACLs (Native, Fine-grained) | AUTH_SYS (Weak) / Kerberos (v4+) / NFSv4 ACLs |
| Mobility | Volume Move/Replicate Transparent | Mount Point Change Required |
| Performance (WAN) | ดีกว่า (Caching + Callbacks) | ช้ากว่า (Chatty, No Callback v3) |
AFS Security Architecture
Authentication: Kerberos v5
- User kinit / Login → ได้ Token (AFS Token) = Kerberos Ticket + AFS Key
- Token ใช้ Auth กับ File Server (Volume Location Server - VLDB)
- Token มีอายุ (Default 25 hrs) ต้อง Renew (aklog / kinit)
Authorization: ACLs on Directories
- ACL ต่อ Directory (ไม่ใช่ต่อไฟล์)
- Rights: read, lookup, insert, delete, write, klock, administer (rlidwka)
- Group: system:anyuser, system:authuser, pts groups
- Negative Rights: ค่ำนำหน้าด้วย - (เช่น -write)
Encryption
- Network Traffic: Encrypted (fcrypt / rxkad / AES-256 ใน OpenAFS ใหม่)
- Data At-Rest: ไม่เข้ารหัสโดย Default (ขึ้นกับ Underlying FS / dm-crypt / ZFS Encryption)
AFS Cell & Volume Architecture
- Cell: Administrative Domain (เช่น cs.cmu.edu, mit.edu, organization.com) มี VLDB, PTS Server, File Servers ของตัวเอง
- Volume: หน่วยจัดการ (Container) มี Quota, ACL, Replication, Backup, Move
- RW Volume: Read-Write (Source)
- RO Volume: Read-Only Replica (สำหรับ Load Balancing / DR)
- Backup Volume: Snapshot (Read-Only, Created by vos backup)
Use Cases ของ AFS
- Higher Education / Research: MIT, Stanford, CMU, Harvard, CERN, Grid Computing
- Enterprise: Global File Sharing, Home Directories, Source Code Repos (Pre-Git)
- National Labs / Supercomputing: Data Sharing Across Sites
- Financial Services: Goldman Sachs (Historical), Trading Data Distribution
AFS ในยุค Cloud (Modern Context)
- OpenAFS: Active Development, Linux/Windows/macOS Client, Kernel Module / FUSE
- AuroraFS / Argo: Modern Reimplementations (Go, gRPC)
- Cloud-Native Alternatives: CephFS, GlusterFS, Lustre, JuiceFS, SeaweedFS, Alluxio, S3/Blob + FUSE
- Kubernetes: OpenAFS CSI Driver, AFS Submount
Azure File Sync (AFS) - ความสับสนชื่อเดียวกัน
Azure File Sync (AFS) เป็นบริการ Microsoft Azure สำหรับ Sync On-prem File Server ↔ Azure Files (Cloud Tiering, Backup, DR) ไม่เกี่ยวข้องกับ Andrew File System
| Andrew File System (AFS) | Azure File Sync (AFS) |
| Distributed FS (CMU/IBM/OpenAFS) | Hybrid File Sync Service (Microsoft) |
| Kerberos, ACL, Callback, Global NS | Azure Files (SMB/NFS), Cloud Tiering |
| On-prem / Cross-site | On-prem Windows Server ↔ Azure |
สรุป: AFS (Andrew File System) ในมุมมอง Security
- ✅ Strengths: Kerberos Auth, Fine-grained ACLs, Encrypted Transit, Callback Consistency, Scalable, Mature
- ⚠️ Considerations: Complexity (Admin Skill), Client Cache Management, Single Point (VLDB/PTS), At-Rest Encryption Not Native, Legacy Perception
- 🔄 Modern Alternative: กรณีใหม่ มักเลือก CephFS, JuiceFS, SeaweedFS, Cloud Storage (S3/Blob) + FUSE, หรือ Kubernetes CSI Drivers