You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.7 KiB
2.7 KiB
MinIO Directory Handling Comparison
Overview
This document compares how MinIO handles directory markers versus SeaweedFS's implementation, and explains the different approaches to S3 directory semantics.
MinIO's Approach
MinIO handles implicit directories similarly to AWS S3:
- No explicit directory objects: Directories are implicit, defined only by object key prefixes
- HEAD on directory returns 404: Consistent with AWS S3 behavior
- LIST operations reveal directories: Directories are discovered through delimiter-based LIST operations
- Automatic prefix handling: MinIO automatically recognizes prefixes as directories
MinIO Implementation Details
- Uses in-memory metadata for fast prefix lookups
- Optimized for LIST operations with common delimiter (
/) - No persistent directory objects in storage layer
- Directories "exist" as long as they contain objects
SeaweedFS Approach
SeaweedFS uses a filer-based approach with real directory entries:
Before the Fix
- Explicit directory objects: Could create 0-byte objects as directory markers
- HEAD returns 200: Even for implicit directories
- Caused s3fs issues: s3fs interpreted 0-byte HEAD responses as empty files
After the Fix
- Hybrid approach: Supports both explicit markers (with
/suffix) and implicit directories - HEAD returns 404 for implicit directories: Matches AWS S3 and MinIO behavior
- Filer integration: Uses filer's directory metadata to detect implicit directories
- s3fs compatibility: Triggers proper LIST fallback behavior
Key Differences
| Aspect | MinIO | SeaweedFS (After Fix) |
|---|---|---|
| Directory Storage | No persistent objects | Filer directory entries |
| Implicit Directory HEAD | 404 Not Found | 404 Not Found |
| Explicit Marker HEAD | Not applicable | 200 OK (with / suffix) |
| Child Detection | Prefix scan | Filer LIST operation |
| Performance | In-memory lookups | Filer gRPC calls |
Implementation Considerations
Advantages of SeaweedFS Approach
- Integrates with existing filer metadata
- Supports both implicit and explicit directories
- Preserves directory metadata and attributes
- Compatible with POSIX filer semantics
Trade-offs
- Additional filer communication overhead for HEAD requests
- Complexity of supporting both directory paradigms
- Performance depends on filer efficiency
TODO
- Add performance benchmark comparison: MinIO vs SeaweedFS
- Document edge cases where behaviors differ
- Add example request/response traces for both systems
- Document migration path for users moving from MinIO to SeaweedFS
- Add compatibility matrix for different S3 clients