Nesne depolama nedir: blok ve dosya depolamadan farkı, S3 API ve hangi iş için seçilir
Nesne depolama nedir, blok ve dosya depolamadan nasıl ayrılır? Bucket, anahtar ve meta veri kavramlarını, S3 API ile rclone ve restic erişimini, yedek ve arşivde neden işe yaradığını, veritabanı diskinde neden yaramadığını ve maliyeti belirleyen kalemleri öğrenin.
Batuhan Çelikel10 dk okuma
Sunucunun diski doluyor, yedekleri nereye koyacağınızı bilmiyorsunuz ya da uygulamanızdaki kullanıcı yüklemeleri her ay büyüyor. Bu noktada karşınıza çoğunlukla nesne depolama (object storage) çıkar. Bu rehber sistem yöneticileri ve KOBİ sahipleri için hazırlandı. Nesne depolamanın blok ve dosya depolamadan farkını, S3 API ile nasıl erişildiğini ve hangi işte doğru, hangisinde yanlış seçim olduğunu anlatıyor. Sonunda hizmet seçerken neye bakacağınızı bileceksiniz.
Nesne depolama nedir: nesne, meta veri, anahtar ve bucket
Nesne depolama, veriyi disk blokları ya da klasör ağacı yerine bağımsız "nesneler" olarak saklayan bir yöntemdir. Her nesne üç parçadan oluşur:
- Veri: dosyanın kendisi. Bir PDF, bir yedek arşivi, bir video ya da bir log dosyası olabilir.
- Meta veri: nesneyi tanımlayan bilgiler. Boyut, içerik türü, oluşturulma tarihi gibi sistem bilgilerinin yanında kendi etiketlerinizi de ekleyebilirsiniz (ör.
musteri=ornek,saklama=10yil). - Anahtar (key): nesnenin benzersiz adı.
faturalar/2026/10/ornek.pdfgibi görünür.
Nesneler bucket adı verilen kaplarda durur. Bucket, erişim izinlerinin, sürümlemenin ve yaşam döngüsü kurallarının tanımlandığı üst düzey birimdir. Bir bucket'ın içinde gerçek klasör yoktur. faturalar/2026/ gibi görünen yapı aslında anahtarın bir önekidir (prefix). Araçlar bunu size klasör gibi gösterir, ama arka planda düz bir ad listesi vardır.
Bu düz yapı nesne depolamanın neden çok büyük hacimlere rahat ölçeklendiğini açıklar. Dizin ağacını kilitleme, inode tablosunu yönetme gibi dosya sistemi yükleri yoktur. Karşılığında bazı alışkanlıklarınızı bırakmanız gerekir. Bir nesnenin ortasındaki birkaç baytı değiştiremezsiniz; nesneyi bütün olarak yeniden yazarsınız. "Yeniden adlandırma" da aslında kopyala ve sil işlemidir.
Blok, dosya ve nesne depolama farkı
Üç depolama türü aynı soruyu farklı biçimde yanıtlar: veriye nasıl erişeceksiniz?
| Ölçüt | Blok depolama | Dosya depolama | Nesne depolama |
|---|---|---|---|
| Erişim biçimi | İşletim sistemine disk olarak bağlanır | Ağ paylaşımı (NFS, SMB) | HTTP üzerinden API (S3) |
| Veri birimi | Sabit boyutlu bloklar | Klasör ve dosya | Anahtar, veri ve meta veri |
| Kısmi güncelleme | Var, çok hızlı | Var | Yok, nesne bütün yazılır |
| Gecikme | En düşük | Orta | Daha yüksek, istek başına |
| Ölçeklenme | Disk boyutuyla sınırlı | Paylaşım boyutuyla sınırlı | Kapasite pratikte paket sınırına kadar |
| Paylaşım | Genelde tek sunucu | Birden çok istemci | İnternet ya da ağ üzerinden her yerden |
| Tipik kullanım | İşletim sistemi, veritabanı | Ofis paylaşımı, ortak klasör | Yedek, arşiv, medya, log |
Kısaca: bir bulut sunucu üzerindeki NVMe disk blok depolamadır ve veritabanınız orada çalışır. Ofisteki ortak klasör dosya depolamadır. Yedek arşivleri, geçmiş yılların belgeleri ve uygulamanın kullanıcı yüklemeleri ise nesne depolamaya uygundur.
Kararı tek soruyla verin
Uygulamanız veriyi "dosyayı aç, bir bölümünü değiştir, kaydet" biçiminde mi kullanıyor, yoksa "dosyayı bir kez yaz, sonra oku" biçiminde mi? İlki blok ya da dosya depolamaya, ikincisi nesne depolamaya işaret eder.
S3 API ile erişim: rclone, restic, s3cmd ve SDK'lar
Nesne depolamaya erişimin fiili standardı Amazon'un S3 API'sidir. "S3 uyumlu" bir hizmet, aynı istek biçimini (PUT, GET, LIST, DELETE ve imzalı istekler) kabul eder. Bu sayede S3 destekleyen her araç, uç nokta (endpoint) adresini değiştirerek farklı bir sağlayıcıyla çalışabilir.
Sık kullanılan araçlar:
- rclone: dosya kopyalama, eşitleme ve doğrulama için komut satırı aracı. Taşıma ve toplu aktarımda pratiktir. S3 seçeneklerinin tamamı aracın kendi belgelerinde ve
rclone help backend s3çıktısında listelenir. - restic: şifreli, tekilleştirmeli (deduplication) ve artımlı yedek aracı. Depo olarak doğrudan S3 bucket'ı kullanır.
- s3cmd ve AWS CLI: bucket ve nesne yönetimi için klasik komut satırı araçları.
- SDK'lar: Python (boto3), PHP, Node.js, Go ve .NET için resmi ya da topluluk kitaplıkları. Uygulamanız kullanıcı yüklemelerini doğrudan bucket'a yazacaksa bunları kullanırsınız.
rclone ile ilk bağlantı
Aşağıdaki komutlar, rclone ile S3 uyumlu bir bucket'a bağlanmak, bir klasörü kopyalamak, kopyayı doğrulamak ve tek bir dosya için süreli bağlantı üretmek için hazırlandı. Ubuntu 24.04 ve Debian 12 üzerinde, rclone'un resmi sitesinden kurulan güncel sürümü için yazıldı; dağıtım deposundaki eski sürümlerde bazı seçenekler eksik olabilir. Ayarlar yapılandırma dosyasına değil ortam değişkenlerine yazıldığı için geri almak, açılan oturumu kapatmak ya da unset komutunu çalıştırmak kadar basittir. Bucket'ı oluşturduysanız ve istemiyorsanız, içi boşken rclone rmdir ile kaldırabilirsiniz.
ORNEK_ERISIM_ANAHTARI, ORNEK_GIZLI_ANAHTAR ve ornek-bucket değerlerini kendi bilgilerinizle, https://s3.example.com adresini sağlayıcınızın verdiği uç noktayla değiştirin.
#!/usr/bin/env bash
# S3 uyumlu depoya rclone ile bağlanma, kopyalama ve doğrulama örneği.
# Ayarlar ortam değişkeninde tutulur; rclone.conf dosyasına bir şey yazılmaz.
set -euo pipefail
# Uzak depo tanımı (remote adı: ORNEKS3)
export RCLONE_CONFIG_ORNEKS3_TYPE=s3
export RCLONE_CONFIG_ORNEKS3_PROVIDER=Other
export RCLONE_CONFIG_ORNEKS3_ENDPOINT=https://s3.example.com
export RCLONE_CONFIG_ORNEKS3_ACCESS_KEY_ID=ORNEK_ERISIM_ANAHTARI
export RCLONE_CONFIG_ORNEKS3_SECRET_ACCESS_KEY=ORNEK_GIZLI_ANAHTAR
BUCKET="ornek-bucket"
# Bağlantıyı test et: erişilebilen bucket'ları listeler
rclone lsd orneks3:
# Bucket yoksa oluşturur, varsa hata vermeden geçer
rclone mkdir "orneks3:${BUCKET}"
# Yerel klasörü bucket'taki bir öneke kopyalar.
# copy, hedefte fazladan olan dosyaları SİLMEZ; tekrar çalıştırmak güvenlidir.
rclone copy /var/log/nginx "orneks3:${BUCKET}/loglar/web01" --checksum --progress
# Kaynak ile hedefi karşılaştırır; fark yoksa 0 hata bildirir
rclone check /var/log/nginx "orneks3:${BUCKET}/loglar/web01" --one-way
# Tek bir nesne için 1 saat geçerli, imzalı paylaşım bağlantısı üretir
rclone link "orneks3:${BUCKET}/loglar/web01/access.log" --expire 1h
Doğrulama için şunlara bakın: rclone lsd bucket listesini hatasız döndürmeli, rclone check çıktısının sonunda 0 differences found benzeri bir satır görmelisiniz. rclone link ise içinde X-Amz-Signature ve X-Amz-Expires parametreleri bulunan uzun bir adres üretir. Bu adres süre dolunca çalışmaz.
Gizli anahtarı kabuk geçmişinde bırakmamak için bu komutları bir betik dosyasına yazıp dosya iznini chmod 600 ile kısıtlayın ya da rclone config sihirbazını kullanın.
Nesne depolama ne zaman kullanılır: iyi olduğu işler
Sunucu ve veritabanı yedekleri. Yedeğin, yedeklediği sunucudan ayrı bir yerde durması gerekir. Nesne depolama bunun için doğal yerdir: restic ya da benzeri bir araçla şifreli ve artımlı yedek alırsınız, yedek sunucudan bağımsız kalır. Adım adım kurulum için restic ile S3 yedekleme rehberine bakabilirsiniz.
Değiştirilemez yedek (object lock). S3 API'nin Object Lock özelliği, belirlediğiniz süre boyunca bir nesnenin silinmesini ya da üzerine yazılmasını engeller. Fidye yazılımı sunucuya ve erişim anahtarlarına ulaşsa bile kilitli nesneleri silemez. Mantığı AWS'nin Object Lock sayfasında anlatılır; kullandığınız sağlayıcının bu özelliği destekleyip desteklemediğini mutlaka sorun.
Arşiv. Yasal saklama süresi olan faturalar, sözleşmeler, eski proje dosyaları. Nadiren okunur ama kaybolmamalıdır.
Loglar. Sunucu diskini dolduran eski loglar sıkıştırılıp bucket'a taşınır, yerel diskte yalnız son günler kalır.
Kullanıcı yüklemeleri ve medya. E-ticaret ürün görselleri, müşteri belgeleri, videolar. Uygulama dosyayı bucket'a yazar, veritabanında yalnız anahtarı tutar. Böylece birden çok uygulama sunucusu ya da bir Kubernetes kümesi aynı dosyalara erişir ve sunucu diski büyümez.
Nesne depolamanın uygun olmadığı işler
Veritabanı diski. MySQL, PostgreSQL ya da SQL Server veri dosyalarını sürekli küçük parçalar hâlinde günceller. Bu iş blok depolama ister. Veritabanını bucket üzerinde çalıştırmaya çalışmak hem yavaş hem de risklidir. Doğru yaklaşım: veritabanı blok diskte çalışır, dökümü (dump) ya da yedeği nesne depolamaya gider.
Sık değişen dosyalar. Gün içinde defalarca açılıp kaydedilen Excel dosyaları, Logo ya da Mikro'nun çalışma dosyaları gibi. Her kayıt nesnenin tamamen yeniden yazılması demektir.
Ofis paylaşımı yerine. Bucket'ı FUSE araçlarıyla (rclone mount, s3fs) disk gibi bağlamak mümkündür, ama kilitleme ve kısmi yazma desteği olmadığı için çok kullanıcılı ofis paylaşımına uygun değildir. Bu iş için dosya sunucusu ya da uzak masaüstü daha doğrudur.
Çok sayıda küçük dosya ve düşük gecikme beklentisi. Her nesne erişimi bir HTTP isteğidir. Milisaniyelik gecikmeye duyarlı ve on binlerce küçük dosyayı sürekli okuyan işler yavaşlar. Bu durumda dosyaları paketleyip (tar, restic deposu) göndermek ya da önbellek kullanmak gerekir.
Erişim ve paylaşım: kapalı bucket, erişim anahtarı ve süreli imzalı bağlantı
Güvenli bir nesne depolama kurulumunun üç temel kuralı vardır.
- Bucket'lar varsayılan olarak herkese kapalı olsun. Herkese açık bucket, yanlışlıkla yüklenen tek bir yedek dosyasının internette okunabilmesi demektir. İçerik paylaşmanız gerekiyorsa bucket'ı açmak yerine aşağıdaki yöntemleri kullanın.
- Her iş için ayrı erişim anahtarı. Yedek aracının anahtarı, uygulamanın anahtarı ve yöneticinin anahtarı ayrı olsun. Sağlayıcı izin veriyorsa yedek anahtarını yalnız ilgili bucket ile sınırlayın. Bir anahtar sızdığında yalnız onu iptal edersiniz.
- Paylaşım için süreli imzalı bağlantı (presigned URL). Müşteriye bir raporu göndermek ya da uygulamanızda bir faturayı indirtmek istediğinizde, belirli bir nesne için belirli süre geçerli bir adres üretirsiniz. Süre dolunca bağlantı işe yaramaz, bucket ise kapalı kalır.
Kontrol noktası: bucket'taki bir nesnenin imzasız adresini tarayıcıda açmayı deneyin. "Access Denied" benzeri bir hata almalısınız. Dosya açılıyorsa bucket ya da nesne herkese açıktır.
Maliyet neye göre değişir
Nesne depolama faturası genelde üç kalemden oluşur. Teklifleri karşılaştırırken her birini ayrı sorun:
- Kapasite: saklanan toplam veri. Sürümleme açıksa eski sürümler de yer kaplar; object lock süresi dolmadan silinemeyen nesneler de öyle. Saklama politikanızı kapasite hesabına katın.
- İndirme trafiği (egress): bucket'tan dışarı çıkan veri. Birçok sağlayıcıda en öngörülemeyen kalem budur. Büyük bir geri yükleme ya da çok indirilen medya dosyaları faturayı beklenmedik biçimde artırabilir. Felaket anında tüm yedeği indirmenin ne tutacağını önceden hesaplayın.
- İstek sayısı: PUT, GET, LIST gibi API çağrıları. Küçük dosya sayısı fazla olan işlerde bu kalem öne çıkar.
Bunlara ek olarak faturanın döviz mi TL mi kesildiğine, KDV'nin dahil olup olmadığına ve minimum saklama süresi gibi koşullara bakın. Kullanım bazlı fiyatlama esnektir ama tahmini zordur. Sabit aylık paket ise bütçelemeyi kolaylaştırır, karşılığında paketin kapasite sınırını izlemeniz gerekir. Hangisinin size uygun olduğu, verinizin ne kadar düzenli büyüdüğüne ve ne sıklıkla indirildiğine bağlıdır.
Verinin konumu: Türkiye'de kalan nesne depolama
Yedekler ve arşivler çoğunlukla kişisel veri içerir: müşteri listeleri, faturalar, personel kayıtları. Bu verinin kopyası yurt dışındaki bir bucket'ta duruyorsa, KVKK açısından yurt dışına aktarım yapıyor olabilirsiniz. Ana sunucunuz Türkiye'deyken yedeğin başka bir ülkede durması sık gözden kaçan bir durumdur.
Hizmet seçerken şunları yazılı olarak sorun:
- Bucket hangi şehirdeki veri merkezinde?
- Veri kaç kopya tutuluyor ve kopyalar da aynı ülkede mi?
- Sağlayıcının destek ya da yedekleme süreçleri veriyi başka bir ülkeye taşıyor mu?
Yerel bir veri merkezi gecikme açısından da avantaj sağlar. Türkiye'deki sunuculardan yapılan yedek ve geri yüklemeler daha kısa ağ yolunu izler.
Hizmet seçerken kontrol listesi
Karar aşamasındaysanız teklifleri şu maddelerle yan yana koyun:
- S3 API uyumluluğu: kullanacağınız araçlarla (rclone, restic, uygulamanızın SDK'sı) çalışıyor mu? Deneme hesabıyla yukarıdaki komutları çalıştırın.
- Object lock ve sürümleme desteği var mı?
- Bucket'lar varsayılan olarak kapalı mı, süreli imzalı bağlantı destekleniyor mu?
- Verinin ve kopyalarının konumu yazılı olarak belirtilmiş mi?
- İndirme trafiği ve istek sayısı ücrete dahil mi, ayrı mı?
- Fatura para birimi ve fiyat değişikliği koşulları nedir?
- Hizmetten ayrılırken verinizi toplu indirmenin bir sınırı ya da ücreti var mı?
Sık yapılan hatalar
- Yedeği aynı sunucunun diskinde tutmak. Disk arızası ya da fidye yazılımı ana veriyle birlikte yedeği de götürür.
- Bucket'ı paylaşım kolaylığı için herkese açmak. Süreli imzalı bağlantı aynı işi riski olmadan görür.
- Tek bir "her şeye yetkili" anahtar kullanmak. Sunucuya giren saldırgan bu anahtarla bütün yedekleri silebilir. Ayrı anahtar ve object lock bu riski azaltır.
- Geri yüklemeyi hiç denememek. Yedek alınıyor olması, geri dönülebildiği anlamına gelmez. Ayda en az bir kez örnek bir dosyayı ya da veritabanını başka bir ortama geri yükleyin.
- Veritabanını bucket üzerinde çalıştırmaya çalışmak. Veritabanı blok diskte kalır, yedeği bucket'a gider.
syncilecopy'yi karıştırmak. rclone'dasync, hedefi kaynağa eşitler ve kaynakta olmayanı hedeften siler. Yedek amaçlı aktarımda önce--dry-runile ne olacağını görün.
Sık sorulan sorular
Nesne depolama ile bulut yedekleme aynı şey mi?
Hayır. Nesne depolama bir depolama türüdür; bulut yedekleme ise ne zaman, neyin, kaç gün saklanacağını yöneten bir hizmettir. Restic gibi bir araçla kendi yedek düzeninizi nesne depolama üzerine kurabilirsiniz, ya da bu işi hazır yöneten bir yedekleme hizmeti kullanabilirsiniz.
S3 uyumlu demek Amazon S3 kullanmak mı demek?
Hayır. S3 uyumlu hizmet, Amazon S3'ün API biçimini konuşan ama başka bir sağlayıcıda, başka bir veri merkezinde çalışan depolamadır. Araçlarınızda yalnız uç nokta adresini ve erişim anahtarlarını değiştirirsiniz.
Bucket'ı sunucuma disk gibi bağlayabilir miyim?
rclone mount ya da s3fs ile bağlanabilir, ama bu bağlantı gerçek bir disk gibi davranmaz. Okuma ağırlıklı ve büyük dosyalı işlerde kullanılabilir; veritabanı, çok kullanıcılı paylaşım ya da sık güncellenen dosyalar için uygun değildir.
Object lock açarsam yanlışlıkla yüklediğim dosyayı silebilir miyim?
Kilit süresi boyunca silemezsiniz; özelliğin amacı budur. Bu yüzden kilit süresini saklama politikanızla uyumlu ve makul tutun, önce küçük bir test bucket'ında deneyin.
Ne kadar kapasite almalıyım?
Bugünkü yedek boyutunuzu ölçün, saklayacağınız sürüm sayısını ve aylık büyümeyi ekleyin. Artımlı ve tekilleştirmeli yedeklerde gerçek kullanım toplam veri boyutunun katları olmaz, ama ilk tam yedek ve saklama süresi belirleyicidir.
Bu işi hazır yapmak isterseniz
Kendi depolama altyapınızı kurup işletmek istemiyorsanız, İstanbul'da çalışan S3 uyumlu Object Storage hizmetini kullanabilirsiniz. Veri ve kopyaları Türkiye dışına çıkmaz, bucket'lar varsayılan olarak kapalıdır, sabit aylık pakete indirme trafiği dahildir. restic ve rclone ile kurulum adımları S3 yedekleme rehberinde anlatılıyor.
Sonuç
Nesne depolama, bir kez yazılıp çok okunan ya da uzun süre saklanan veri için doğru araçtır: yedek, arşiv, log ve kullanıcı yüklemeleri. Veritabanı ve sık değişen dosyalar blok ya da dosya depolamada kalmalıdır. Seçim yaparken S3 uyumluluğunu kendi araçlarınızla deneyin, bucket'ları kapalı tutun, object lock desteğini sorun, indirme trafiğini maliyete katın ve verinin hangi ülkede durduğunu yazılı olarak öğrenin. Son adım her zaman aynıdır: bir geri yükleme testi yapın.
- #nesne depolama
- #object storage
- #s3 uyumlu depolama
- #bucket
- #rclone
- #yedekleme
- #blok depolama
Yazar
Kurucu, sunucu.com.tr · Bulut altyapısı ve yapay zeka otomasyonları
sunucu.com.tr ve Sunucu UK'in kurucusu. Bulut altyapısı, sanallaştırma ve sunucu yönetimi üzerine çalışıyor; şirketlerin iş yazılımlarını, web sitelerini ve yapay zeka iş yüklerini güvenli sunuculara taşıyor. Blogdaki rehberler sahada karşılaşılan kurulum, güvenlik ve taşıma işlerinden derlenir; yazılar yapay zeka desteğiyle hazırlanır ve kaynaklarla doğrulanır.