Milyonlarca kullanıcı avatarı, e-ticaret ürün fotoğrafı, PDF fatura ve yapay zeka veri setini saklarken klasik nesne depolama sistemleri (MinIO veya standart S3) iki büyük duvara çarpar: İşletim sistemi inode tükenmesi ve sürpriz AWS S3 istek/egress faturaları. Facebook'un Haystack makalesini temel alan SeaweedFS ile küçük dosyaları 32GB süper-bloklar halinde saklayın, O(1) disk seek ile bellekten <1ms hızında sunun ve bulut depolama giderlerinde %90+ net tasarruf sağlayın.
AWS S3'te harici internete çıkan veri için GB başına $0.09 (~$92/TB) fahiş ücret alınır.
AWS S3 Standard ($0.023/GB + PUT/GET + $0.09 Egress)
| Depolama Motoru | Dosya / Blok Mimarisi | OS Inode Tüketimi | Okuma Başına Disk Arama (Disk Seek) | API & Fiyatlandırma Modeli |
|---|---|---|---|---|
| SeaweedFS (Haystack Mimarisi)Haystack Mimarisi | Append-Only Süper Bloklar (32GB) + Bellek İçi Needle Map | 55 | 1 Disk Seek (O(1)) | S3 API Gateway + Native Filer / REST / WebDAV |
| MinIO | Geleneksel Dosya Başına Parça ve Meta Veri (1 Obje = 2 Dosya) | 40.000.000 | 3 Disk Seek (O(1)) | S3 API |
| AWS S3 Standart | Tescilli Dağıtık Bulut Depolama (Per-Request & Egress Faturalı) | Yönetilen | 1 Disk Seek (O(1)) | AWS S3 REST API |
Bu sunucu yapılandırması, 20 milyon küçük dosyayı 32GB süper-bloklar halinde tutarak O(1) disk erişim hızı sağlar ve sıfır kota aşım riski sunar.
version: '3.8'
services:
# SeaweedFS Master: Hacim haritası ve küme liderlik yönetimi (Raft)
seaweed-master:
image: chrislusf/seaweedfs:latest
restart: unless-stopped
ports:
- "9333:9333"
volumes:
- master_data:/data
command: "master -mdir=/data -ip=seaweed-master -port=9333"
# SeaweedFS Volume: Haystack 32GB süper-blok depolama motoru (O(1) disk okuma)
seaweed-volume:
image: chrislusf/seaweedfs:latest
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- volume_data:/data
command: >
volume -max=100
-mserver=seaweed-master:9333
-port=8080
-dir=/data
-index=memory
# SeaweedFS S3 Gateway & Filer: Standart AWS S3 REST API uyumluluğu
seaweed-s3:
image: chrislusf/seaweedfs:latest
restart: unless-stopped
ports:
- "8333:8333"
command: "s3 -filer=seaweed-filer:8888 -port=8333"
seaweed-filer:
image: chrislusf/seaweedfs:latest
restart: unless-stopped
ports:
- "8888:8888"
command: "filer -master=seaweed-master:9333 -port=8888"
volumes:
master_data:
volume_data:Geleneksel dosya sistemlerinde (ext4, XFS) ve MinIO gibi geleneksel nesne depolama sunucularında her nesne diske ayrı bir dosya ve meta veri dosyası olarak kaydedilir. 20 milyon dosya sakladığınızda disk üzerinde 40 milyon inode harcanır. Disk dolmasa dahi inode tablosu dolar (No space left on device hatası). Dahası, bir dosyayı okumak için işletim sistemi dizin hiyerarşisinde ardışık 3-4 rastgele disk araması (random seek) yapmak zorunda kalır ve NVMe disklerin bile IOPS kapasitesi tıkanır.
Facebook Haystack mimarisi bu sorunu çözmek için geliştirilmiştir: Dosyalar ayrı ayrı saklanmaz; 32 GB boyutundaki devasa hacim dosyalarının ucuna eklenir (append-only). Dosyanın başlangıç baytı (offset) ve uzunluğu RAM'de yalnızca 16 baytlık bir tabloda tutulur. Böylece 20 milyon dosya için işletim sisteminde yalnızca birkaç yüz dosya açılır ve tek bir disk aramasıyla doğrudan okunur.
Dosya yolu aranmaz. Dosya ID'si bellek içi haritada taranarak diskin doğrudan bayt adresine atlanır. Saniyede 40.000+ küçük dosya tek bir VDS ile servis edilebilir.
MinIO'da 50 milyon obje 100 milyon inode gerektirirken; SeaweedFS tüm bu arşivi yaklaşık 1.500 adet 32GB hacim dosyası içine sığdırır.
SeaweedFS S3 Gateway katmanı sayesinde AWS SDK (Boto3, Node.js, Go) ve Presigned URL sistemleriyle %100 uyumlu çalışır. Uygulama kodunda değişiklik gerekmez.
Eğer depoladığınız dosyalar büyük yedekleme arşivleri, video dosyaları veya ISO imajlarıysa (büyük objeler >10 MB), MinIO mükemmel bir kurumsal S3 seçeneğidir. Ancak iş yükünüz kullanıcı avatarları, fatura PDF'leri, e-ticaret görselleri veya küçük sensör/JSON logları gibi milyonlarca küçük dosyadan oluşuyorsa; SeaweedFS bellek verimliliği, disk erişim hızı ve donanım tasarrufunda tartışmasız en üstün mimaridir.