VPS.TC
₺ | $
Sunucu Durumu
Turkey İstanbul, Türkiye Equinix IL4 Veri Merkezi
Aktif
USA New York, ABD
Aktif
Sepet Toplamı:
Sepeti Görüntüle
SAN ve NAS Farkı: Hangi Depolama Yapısı Uygun?
Veri Merkezi

SAN ve NAS Farkı: Hangi Depolama Yapısı Uygun?

Defne avatarı Defne 20 dk okuma 0 Yorumlar
Paylaş:

Hızlı Özet – SAN ve NAS Farkı

NAS, istemcilere dosya paylaşımı; SAN ise blok depolama sunar. Seçimi cihazın adı değil, uygulamanın veriye nasıl eriştiği ve altyapının nasıl işletileceği belirler.

  • Dosya erişimi — NAS tarafında dosya sistemini depolama sunucusu yönetir; istemciler NFS veya SMB üzerinden dosyalara erişir.
  • Blok erişimi — SAN tarafında iSCSI veya Fibre Channel üzerinden sunulan blok alanının dosya sistemini istemci ya da küme katmanı yönetir.
  • Ortak yazma — Aynı ext4 LUN'u iki istemcide eşzamanlı yazılabilir bağlamak güvenli değildir; ortak dosyalar için NAS veya uygun bir küme mimarisi gerekir.
  • Performans ölçütleri — IOPS, MiB/s ve gecikme yüzdeliklerini aynı iş yükünde karşılaştırın; protokol adı tek başına hız sıralaması vermez.
  • Erişim güvenliği — Örnekte NFSv4.1 için TCP 2049, iSCSI için TCP 3260 erişimini sınırlayın; AUTH_SYS ve CHAP trafik şifrelemesi sağlamaz.
  • Arıza planı — Her iki modelde de bağımsız yedek, geri yükleme provası ve hedeflenen RPO/RTO değerlerine uygun yedeklilik ayrıca tasarlanmalıdır.

İki sunucunun aynı veriye ihtiyacı olması, aynı diski paylaşmaları gerektiği anlamına gelmez. SAN ve NAS farkı erişim modelindedir: NAS dosyaları paylaşır, SAN blok aygıtı sunar. Ortak dosyalar için NAS genellikle daha doğrudan bir seçimdir; uygulamanızın kendi dosya sistemini yönetmesi gerekiyorsa SAN değerlendirilebilir. Hız ve erişilebilirlik ise ayrıca doğrulanmalıdır.

İki sunucu aynı veriyi istiyor; aynı diski mi, aynı dosyayı mı?

Bir kullanıcının yüklediği belge app01.example üzerinde görünürken app02.example tarafından bulunamıyorsa, ihtiyaç muhtemelen ortak dosya erişimidir. Uygulama kendisine ayrılmış bir diskte dosya sistemi oluşturmak istiyorsa başka bir erişim modeli gerekir. Ayrım burada. SAN ve NAS farkı değerlendirmesine kaç terabayt alacağınızla değil, uygulamanın depolamadan ne beklediğiyle başlamalısınız.

Varsayımsal laboratuvarda storage.example (192.0.2.10) depolamayı sunacak; app01.example (192.0.2.21) ve app02.example (192.0.2.22) istemciler olacak. Makineler Ubuntu Server 24.04 LTS ve GA 6.8 çekirdek serisini kullanacak. Dokümantasyona ayrılmış .example adları ve 192.0.2.0/24 adresleri yalnızca dış ağa yönlendirilmeyen laboratuvarda kullanılacak. Bunlar uygulanmış kurulum veya ölçülmüş performans bulguları değil, seçim sorununu somutlaştıran örneklerdir.

🚀 VPS Sunucu ile Hızınızı Artırın!

Yüksek performanslı SSD depolama ve %99.9 uptime garantisi ile projelerinizi hızlandırın.

VPS Sunucu Kirala

İlk ihtiyaç, iki istemcinin kullanıcı belgelerini ortak dizinden okuyup yazmasıdır. IETF RFC 8881, NFSv4.1 kapsamında dosya erişimini ve kilitleme mekanizmalarını tanımlar. NAS örneğinde nfs-kernel-server ve nfs-common ile NFSv4.1/TCP kullanılacak; sunucudaki /srv/nfs/shared dizinine istemciler /mnt/nas üzerinden erişecek. İki makine aynı dosyaları görebilecek, ancak aynı belgeyi eşzamanlı değiştiren uygulamaların davranışını ayrıca doğrulamalısınız. Protokolün kilitleme sağlaması, uygulamanın bu mekanizmayı doğru kullandığını göstermez.

İkinci ihtiyaçta yalnızca app01.example kendisine ayrılmış blok depolamayı kullanacak. IETF RFC 7143, iSCSI’yi SCSI komutlarını TCP üzerinden taşıyan protokol olarak tanımlar. Linux LIO, targetcli-fb ve open-iscsi kullanılan iSCSI/TCP örneğinde istemci bir dosya paylaşımı yerine LUN görecek. Bu LUN, iki istemcinin birlikte yazacağı ortak disk olarak planlanmayacak. Uygulamanın blok aygıtı üzerinde istemcinin yönettiği dosya sistemini desteklemesi, seçim için belirleyici olacak.

Protokol seçmeden önce uygulamanızın desteklediği depolama biçimini belgelendirin. Paylaşımlı dizin yeterli mi, belirli bir dosya sistemi gerekiyor mu? Aynı dosyaya iki süreç yazacaksa kilitleme, önbellek ve hata sonrası yeniden deneme davranışlarını kontrol edin. Kapasite hesabına mevcut verinin yanında büyümeyi, geçici dosyaları ve ayrı tutulacak yedeklerin alanını katın; tek bir genel çarpana güvenmeyin.

☁️ Cloud Sunucu ile Esneklik Kazanın!

Ölçeklenebilir kaynaklar ve anlık yedekleme ile bulutun gücünü deneyimleyin.

Bulut Sunucu Paketleri

Her VM için 2 vCPU ve 4 GiB RAM örnek tahsistir, ürünlerin asgari gereksinimi değildir. Depolama VM’inde işletim sistemi diskinden ayrı iki boş 40 GiB disk bulunacak: /dev/vdb NAS’a, /dev/vdc iSCSI LUN’a ayrılacak; işlem öncesinde aygıtlar lsblk ile doğrulanacak. İki istemci, tek depolama sunucusunu yedekli yapmaz. storage.example durduğunda uygulamanın kabul edebileceği bekleme süresini dakika cinsinden yazın.

Örnek

Varsayımsal Ubuntu Server 24.04 LTS laboratuvarında app01.example ve app02.example ortak dosyalara NFSv4.1 üzerinden erişecek; iSCSI LUN ise yalnızca app01.example tarafından kullanılacak. Bu bir kurulum planıdır, gerçekleştirilmiş test veya müşteri deneyimi değildir. .example adları ve 192.0.2.0/24 adresleri dokümantasyon için ayrılmıştır; burada yalnızca dış ağa yönlendirilmeyen laboratuvarı temsil eder.

SAN ve NAS farkı, dosya sistemini kimin yönettiğinde başlar

İstemcide bir dizin görmeniz, dosya sistemini o makinenin yönettiği anlamına gelmez. /mnt/nas altında açtığınız dosya, başka bir sunucunun yönettiği ext4 üzerinde bulunabilir. Ayrım burada. NAS istemciye dosya erişimi sunarken SAN, üzerine dosya sistemi kurulabilecek blok depolamayı erişilebilir kılar. SAN ve NAS farkı, cihazın kasasından çok bu sorumluluk sınırında belirginleşir.

Varsayımsal laboratuvardaki makineler Ubuntu Server 24.04 LTS ve GA 6.8 çekirdek serisini kullanır. NAS tarafında storage.example, NAS için ayrılmış 40 GiB diskin, yani /dev/vdb aygıtının üzerindeki ext4 dosya sistemini yönetir. Paylaşılan dizin /srv/nfs/shared olur. app01.example ve app02.example bu paylaşımı /mnt/nas altında bağlar; alttaki diskin bloklarını doğrudan yönetmez.

IETF RFC 8881, NFSv4.1 erişimini dosya tanıtıcıları ve OPEN, READ, WRITE gibi işlemlerle tanımlar. Örnekte nfs-kernel-server ve nfs-common ile NFSv4.1/TCP kullanılır. İstemci dosyayı açmayı veya okumayı ister; sunucu isteği kendi dosya sistemi üzerinden karşılar. SMB dosya paylaşımı da dosya erişimi kategorisindedir, fakat SMB ve NFS farklı protokollerdir. İstemcilerin paylaşımı yerel bir dizin altında görmesi, bu ayrımı değiştirmez.

iSCSI yolunda sorumluluk istemciye geçer. storage.example, ayrı 40 GiB disk olan /dev/vdc aygıtını Linux LIO ve targetcli-fb aracılığıyla ham blok aygıtı olarak sunar. app01.example, open-iscsi ile LUN’a erişir; ext4 dosya sistemini bu istemci oluşturur ve yönetir. Depolama sunucusu aynı LUN üzerinde ext4 bağlamaz.

IETF RFC 7143’e göre iSCSI, SCSI komutlarını TCP üzerinden taşır. İstemci uzak sunucudan dosya açmasını istemek yerine blok aygıtına yönelik komutlar gönderir. Fibre Channel da SAN ortamlarında SCSI tabanlı blok erişimi için kullanılabilir. SAN yalnızca Fibre Channel veya belirli bir cihaz türü demek değildir. iSCSI/TCP de blok erişimi sağlayan bir seçenektir.

Linux çekirdeğinin ext4 belgeleri, blok grupları ve inode tabloları gibi disk üzerindeki yapıları açıklar. NAS örneğinde bunları storage.example, iSCSI örneğinde app01.example yönetir. LUN’u ikinci istemciye göstermek, ext4’ü eşzamanlı ortak bağlamaya uygun hale getirmez; blok erişimi ile güvenli dosya paylaşımı aynı şey değildir.

Aynı depolama sistemi hem NFS veya SMB paylaşımı hem iSCSI LUN sunabilir. İki erişim modeli, iki ayrı cihaz gerektirmez. Tasarım çiziminizde her depolama alanının yanına dosya sistemini yöneten makineyi yazın; yönetim sınırı görünür olsun.

NAS yolu: NFS paylaşımını iki istemciye açmak

Aynı dosyalara erişmek için aynı diski iki sunucuya bağlamanız gerekmez. Bu varsayımsal laboratuvarda ext4 dosya sistemini storage.example (192.0.2.10) yönetir; app01.example (192.0.2.21) ve app02.example (192.0.2.22) NFS istemcisidir. Sistemler Ubuntu Server 24.04 LTS, GA 6.8 çekirdeğini kullanır. VM başına 2 vCPU ve 4 GiB RAM örnek tahsistir, asgari gereksinim değildir. Dokümantasyona ayrılmış .example ve 192.0.2.0/24, yalnızca dış ağa yönlendirilmeyen laboratuvarda kullanılmalıdır.

Diskleri karıştırmayın. Depolama sunucusunda işletim sistemi diskinden ayrı iki boş 40 GiB disk bulunur: /dev/vdb NAS, /dev/vdc iSCSI içindir. Önce aygıtları doğrulayın; sonraki mkfs.ext4 komutu hedefteki veriyi siler.

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL

Sunucu hazırlığında paylaşım sahibi olarak 2000:2000 seçilmiştir. Bu UID/GID değerlerini kullanmadan önce üç makinede ilgili hesaplarla eşleştirin ve başka hesaplarla çakışmadıklarını doğrulayın. Kesin paket revizyonunu dpkg-query ile kaydedin.

sudo apt update
sudo apt install nfs-kernel-server
dpkg-query -W -f='${Package}\t${Version}\n' nfs-kernel-server | tee nas-server-packages.txt
sudo mkfs.ext4 /dev/vdb
sudo mkdir -p /srv/nfs/shared
sudo mount /dev/vdb /srv/nfs/shared
sudo chown 2000:2000 /srv/nfs/shared
sudo chmod 2770 /srv/nfs/shared
sudo mkdir -p /etc/exports.d
sudo tee /etc/exports.d/shared.exports >/dev/null <<'EOF'
/srv/nfs/shared 192.0.2.21(rw,sync,root_squash,sec=sys) 192.0.2.22(rw,sync,root_squash,sec=sys)
EOF
sudo systemctl enable --now nfs-server
sudo exportfs -rav
sudo exportfs -v

exportfs -rav yapılandırmayı uygular; exportfs -v çıktısında iki adres ve tanımlanan seçenekler beklenir. Ek varsayılanlar görünebilir. Diğer export tanımlarında geniş erişim bulunmadığını kontrol edin. rw dosya izinlerini aşmaz; 2770 diğer kullanıcıları dışlar, yeni dosyalara dizinin grubunu devraldırır. Grup yazma iznini uygulamanın umask ayarı da etkiler.

Her iki istemcide aşağıdaki komutları uygulayın. vers=4.1 sürümü, proto=tcp taşıma protokolünü açıkça seçer; bağlantı başka NFS sürümüne düşmez.

sudo apt update
sudo apt install nfs-common
dpkg-query -W -f='${Package}\t${Version}\n' nfs-common | tee nas-client-packages.txt
sudo mkdir -p /mnt/nas
sudo mount -t nfs -o vers=4.1,proto=tcp,sec=sys 192.0.2.10:/srv/nfs/shared /mnt/nas
findmnt -T /mnt/nas -o TARGET,SOURCE,FSTYPE,OPTIONS

findmnt çıktısında hedef /mnt/nas, kaynak 192.0.2.10:/srv/nfs/shared, tür nfs4; seçeneklerde vers=4.1 ve proto=tcp beklenir. Bunlar çalıştırılmış test çıktıları değil, doğrulama ölçütleridir.

IETF RFC 8881’in güvenlik açıklamalarına göre AUTH_SYS, istemcinin bildirdiği sayısal UID/GID değerlerine güvenir; aynı kullanıcı adı yeterli değildir. root_squash istemci root kimliğini anonim kimliğe eşler, ancak istemci yöneticisine karşı güçlü kimlik doğrulama sağlamaz. NFSv4.1 tek başına şifreleme garantilemez; buradaki sec=sys trafiği şifrelemez. Güvenlik duvarında TCP 2049’u yalnızca iki istemci adresine açın, diğer kaynakları engelleyin. Kalıcı kullanım için UUID tabanlı disk bağlamasını ve NFS servisinin bu bağlamaya bağımlılığını yapılandırın; disk bağlanmadığında alttaki boş dizinin paylaşılmasını önleyin.

iSCSI ile SAN: LUN görünür, dosya sistemi istemcide kurulur

Yeni bir disk görünmesi, paylaşılan klasörün hazır olduğu anlamına gelmez. RFC 7143, iSCSI üzerinden SCSI komutlarının TCP ile taşınmasını tanımlar. Bu varsayımsal laboratuvarda storage.example üzerindeki ham /dev/vdc, yalnızca app01.example için sunulur; dosya sistemi istemcide oluşturulur. NAS diski /dev/vdb değişmez.

Ubuntu Server 24.04 LTS, GA 6.8 çekirdek ortamında önce başlatıcıyı hazırlayın. Aşağıdaki IQN ataması yalnızca yeni laboratuvar kurulumu içindir; mevcut oturumları bulunan sistemin kimliğini değiştirmeyin. Paket revizyonlarını dpkg-query ile kaydedin. Dosyadan okunan IQN, hedefteki ACL kaydıyla birebir eşleşmelidir.

# app01.example - yeni laboratuvar kurulumu
sudo apt-get update
sudo apt-get install -y open-iscsi
dpkg-query -W -f='${Package}\t${Version}\n' open-iscsi
printf '%s\n' 'InitiatorName=iqn.2026-10.example:app01' | sudo tee /etc/iscsi/initiatorname.iscsi
sudo cat /etc/iscsi/initiatorname.iscsi
sudo systemctl restart iscsid

Depolama sunucusunda /dev/vdc, boş 40 GiB disk olmalıdır. Boyut yetmez. lsblk çıktısını VM disk eşlemesiyle karşılaştırın; bölüm, dosya sistemi veya bağlama noktası varsa durun. wipefs --no-act imzaları değiştirmeden listeler; boş çıktı tek başına diskin boşluğunu kanıtlamaz.

# storage.example
sudo apt-get update
sudo apt-get install -y targetcli-fb
dpkg-query -W -f='${Package}\t${Version}\n' targetcli-fb
lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL
sudo wipefs --no-act /dev/vdc

Portalı oluşturmadan önce güvenlik duvarında TCP 3260 erişimini yalnızca 192.0.2.21 için açın, diğer kaynakları engelleyin. CHAP burada kapalıdır; örnek dış ağa yönlendirilmeyen laboratuvarla sınırlıdır. IQN taklit edilebildiğinden ACL, kriptografik kimlik doğrulama değildir. RFC 7143’te tanımlanan CHAP kimlik doğrular, trafiği şifrelemez; üretimde ağ izolasyonu ve gerektiğinde IPsec ayrıca planlanmalıdır.

LIO, diski biçimlendirmeden LUN 0 olarak sunar. Otomatik ACL ve LUN eşlemesi kapatılarak yalnızca belirtilen başlatıcıya erişim verilir. targetcli ls çıktısında /dev/vdc, 192.0.2.10:3260 portalı ve tek başlatıcı eşlemesi beklenir. Yapılandırma belirtilen JSON dosyasına kaydedilir.

# storage.example - disk kimliği doğrulandıktan sonra
sudo targetcli set global auto_add_default_portal=false auto_add_mapped_luns=false
sudo targetcli /backstores/block create name=app01_lun dev=/dev/vdc
sudo targetcli /iscsi create iqn.2026-10.example:storage.shared
sudo targetcli /iscsi/iqn.2026-10.example:storage.shared/tpg1 set attribute generate_node_acls=0 authentication=0 prod_mode_write_protect=0
sudo targetcli /iscsi/iqn.2026-10.example:storage.shared/tpg1/portals create 192.0.2.10 3260
sudo targetcli /iscsi/iqn.2026-10.example:storage.shared/tpg1/luns create /backstores/block/app01_lun lun=0
sudo targetcli /iscsi/iqn.2026-10.example:storage.shared/tpg1/acls create iqn.2026-10.example:app01
sudo targetcli /iscsi/iqn.2026-10.example:storage.shared/tpg1/acls/iqn.2026-10.example:app01 create mapped_lun=0 tpg_lun=0
sudo targetcli saveconfig /etc/rtslib-fb-target/saveconfig.json
sudo targetcli ls

İstemcide keşif hedef IQN’sini, oturum ayrıntıları bağlı SCSI diskini göstermelidir. /dev/disk/by-path/ bağlantısının aynı diske çözüldüğünü, 40 GiB kapasiteyi ve imzaları doğrulayın. Beklenmeyen aygıtta veya imzada ilerlemeyin.

# app01.example
sudo iscsiadm -m discovery -t sendtargets -p 192.0.2.10:3260
sudo iscsiadm -m node -T iqn.2026-10.example:storage.shared -p 192.0.2.10:3260 --login
sudo udevadm settle
sudo iscsiadm -m session -P 3
LUN=/dev/disk/by-path/ip-192.0.2.10:3260-iscsi-iqn.2026-10.example:storage.shared-lun-0
readlink -f "$LUN"
lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL,SERIAL,WWN "$LUN"
sudo wipefs --no-act "$LUN"

Aşağıdaki biçimlendirme veri siler; yalnızca kimliği ve boşluğu doğrulanmış LUN üzerinde çalıştırın. Bağlama tamamlandığında istemci dosyaları /mnt/san altında yönetir.

# app01.example - kimlik ve boşluk doğrulamasından sonra
sudo mkfs.ext4 /dev/disk/by-path/ip-192.0.2.10:3260-iscsi-iqn.2026-10.example:storage.shared-lun-0
sudo mkdir -p /mnt/san
sudo mount /dev/disk/by-path/ip-192.0.2.10:3260-iscsi-iqn.2026-10.example:storage.shared-lun-0 /mnt/san

Linux çekirdeğinin ext4 belgelerinde açıklanan journal, istemciler arasında yazma koordinasyonu sağlamaz. Aynı ext4 LUN’un iki istemcide eşzamanlı yazılabilir bağlanması veri bozulmasına yol açabilir. app02.example için ACL eklemeyin; ortak dosya erişimini NAS paylaşımında tutun.

Dikkat

Bir LUN'un iki sunucuda görünmesi, üzerindeki ext4 dosya sistemine iki sunucunun güvenle yazabileceği anlamına gelmez. Eşzamanlı yazılabilir bağlama veri bozulmasına yol açabilir; çoklu istemci erişimi için küme dosya sistemi, kilitleme ve fencing gibi bileşenler gerekir. Biçimlendirmeden önce LUN kimliğini ve hedef aygıtı lsblk ile doğrulayın.

Hız karşılaştırmasını protokol adı değil iş yükü belirler

Büyük bir dosyayı hızlı kopyalayan depolama, binlerce küçük dosya açılırken aynı avantajı göstermeyebilir. IETF RFC 8881, NFSv4.1’in dosya ve dizin işlemlerini; RFC 7143 ise iSCSI üzerinden SCSI komutlarının taşınmasını tanımlar. Bunlar hız sıralaması değildir. SAN ve NAS farkı değerlendirilirken küçük rastgele erişim, büyük sıralı aktarım ve metadata yükünü ayırın.

Varsayımsal laboratuvarda Ubuntu Server 24.04 LTS, GA 6.8 çekirdek serisi kullanan app01.example üzerinde çalışın. Hazırlanmış /mnt/nas, storage.example üzerindeki NFSv4.1/TCP paylaşımı; /mnt/san, iSCSI/TCP LUN üzerindeki ext4 olmalıdır. Aynı ext4 LUN’u app02.example üzerinde eşzamanlı bağlamayın. Kod depolama kurulumu yapmaz; bağlama noktalarını kontrol eder, yalnızca oluşturduğu silinebilir test dosyalarına yazar. Bu dizinlerde kullanıcınızın yazma yetkisi bulunmalıdır.

Bash örneği her hedefte 2 GiB dosyayı önce tamamen yazar. Ardından 4 KiB rastgele okuma, 1 MiB sıralı okuma ve her 4 KiB rastgele yazmanın ardından fsync çağrısı çalıştırır. Her profil 60 saniyedir; tek iş ve kuyruk derinliği 1 sabittir. psync senkron çalışır – yüksek paralellikteki kapasiteyi ölçmez. Paket revizyonları dpkg-query ile kaydedilir.

set -eu
sudo apt-get update
sudo apt-get install -y fio

out=$(mktemp -d "$HOME/fio-results.XXXXXX")
uname -r > "$out/kernel.txt"
dpkg-query -W -f='${Package}\t${Version}\n' \
  fio nfs-common open-iscsi > "$out/packages.txt"

for base in /mnt/nas /mnt/san; do
  mountpoint -q "$base"
  test -w "$base"
  findmnt -T "$base" -o TARGET,SOURCE,FSTYPE,OPTIONS \
    >> "$out/mounts.txt"
done

for base in /mnt/nas /mnt/san; do
  label=${base##*/}
  work=$(mktemp -d "$base/fio-work.XXXXXX")
  file="$work/test.bin"

  fio --name=prepare --filename="$file" --size=2G \
    --rw=write --bs=1M --ioengine=psync --iodepth=1 \
    --numjobs=1 --direct=1 --end_fsync=1 \
    --output-format=json --output="$out/$label-prepare.json"

  for profile in random-read sequential-read sync-write; do
    case "$profile" in
      random-read) rw=randread; bs=4k; sync_every=0 ;;
      sequential-read) rw=read; bs=1M; sync_every=0 ;;
      sync-write) rw=randwrite; bs=4k; sync_every=1 ;;
    esac

    fio --name="$profile" --filename="$file" --size=2G \
      --rw="$rw" --bs="$bs" --ioengine=psync --iodepth=1 \
      --numjobs=1 --direct=1 --fsync="$sync_every" \
      --time_based=1 --runtime=60 --randrepeat=1 \
      --lat_percentiles=1 --percentile_list=50:95:99 \
      --output-format=json --output="$out/$label-$profile.json"
  done

  rm -- "$file"
  rmdir -- "$work"
done
printf 'Rapor dizini: %s\n' "$out"

Başarılı çalışmada beklenen çıktı rapor dizininin yoludur; dizinde JSON raporları, çekirdek, paket ve bağlama kayıtları bulunur. Burada ölçülmüş değer sunulmuyor. IOPS, bw_bytes / 1048576 hesabıyla MiB/s ve p50/p95/p99 gecikmelerini birlikte inceleyin. Yazma ve fsync gecikmeleri ayrı raporlanır; yazma yüzdeliklerini tek başına kalıcılaştırma bekleme süresi saymayın. Ayrı yüzdelikleri toplamak da işlem yüzdeliğini vermez.

Metadata farklıdır. Tek dosyalı profiller oluşturma, stat, dizin listeleme ve silme maliyetini temsil etmez. Bu işlemler için dosya sayısını, dizin dağılımını ve eşzamanlılığı sabitleyen ayrı deney gerekir.

direct=1 bütün önbellekleri kaldırmaz. VM başına 2 vCPU ve 4 GiB RAM örnek tahsistir, asgari gereksinim değildir; 2 GiB dosya depolama önbelleğine sığabilir. Önbellek durumunu, ortak fiziksel disk etkisini, sanal ağ yapılandırmasını ve eşzamanlı yükleri kaydedin. VPS’te Prometheus ve Grafana ile İzleme yaklaşımıyla CPU kullanımını ve disk beklemesini ölçüm zamanlarıyla eşleştirin. Test sırasını tersine çevirip tekrarlayın; laboratuvar verisini kurumsal SAN/NAS ürünlerine genellemeyin.

İpucu

Karşılaştırmada blok boyutu, kuyruk derinliği, test dosyası boyutu, süre ve senkron yazma davranışını sabitleyin. fio işlemlerini yalnızca silinebilir test dosyalarında yürütün; üretim verisini veya ham LUN'u test hedefi yapmayın. Aynı fiziksel disk ve sanal ağın paylaşılması ölçümleri etkiler; laboratuvar değerlerini bütün SAN ve NAS ürünlerine genellemeyin.

Arıza, yetki ve yedekleme: protokolün çözmediği işler

Depolama sunucusu kapandığında protokol tercihi dosyaları erişilebilir tutmaz. Varsayımsal Ubuntu Server 24.04 LTS, GA 6.8 laboratuvarında storage.example (192.0.2.10) ve tek ağ yolu, NFSv4.1/TCP ile iSCSI/TCP için tek hata noktasıdır. app01.example ve app02.example çalışsa bile depolama erişimi durabilir. iSCSI multipath gerçekten bağımsız yollar gerektirir; aynı sanal anahtardan geçen iki bağlantı yeterli değildir. Multipath, tek başına sunucu veya denetleyici yedekliliği sağlamaz.

İki disk yetmez. Laboratuvardaki /dev/vdb NAS’a, /dev/vdc iSCSI LUN’una ayrılmıştır; burada RAID kurulmuş değildir. RAID seviyesine göre belirli disk arızaları tolere edilebilir, fakat yanlışlıkla silinen veri korunmaz. Snapshot önceki duruma dönüşü kolaylaştırır; bağımsız yedek, kaynak depolama kaybedildiğinde kurtarma içindir. VPS Snapshot Nedir? başlığındaki ayrım burada da geçerlidir: aynı depolamadaki snapshot bağımsız yedek sayılmaz. Linux ext4 belgelerinde açıklanan günlükleme de dosya yedeği oluşturmaz. Yüksek erişilebilirlik için servis devralma, veri tutarlılığı ve arızalı düğümün yazmasının engellenmesi ayrıca tasarlanmalıdır.

Varsayımsal 15 dakikalık RPO, kabul edilebilir veri kaybı penceresini; 30 dakikalık RTO, hizmeti geri getirme hedefini belirtir. Günlük tek yedek ilk hedefi karşılamaz. Bu hedefler kopyalama sıklığını, bağımsız kopyaların konumunu ve hazır bekleyen altyapı ihtiyacını belirler. Kurtarma süresine sunucu hazırlığı ve uygulama doğrulaması da dahildir.

Yetkiyi ayırın. RFC 8881, NFSv4.1 güvenlik mekanizmalarını tanımlar; sec=sys, istemcinin sunduğu UID/GID bilgilerine güvenmeyi gerektirir. root_squash güçlü kimlik doğrulamanın yerine geçmez. RFC 7143’teki CHAP mekanizması iSCSI kimlik doğrulaması sağlar, trafiği şifrelemez. LUN yetkisi dosya izinlerinden ayrıdır; sıradan ext4 aynı LUN’a iki istemciden eşzamanlı yazmaya uygun değildir.

# app01.example üzerinde durumu değiştirmeyen kontroller
findmnt --mountpoint /mnt/nas --output TARGET,SOURCE,FSTYPE,OPTIONS
sudo iscsiadm -m session -P 3
sudo journalctl -u iscsid.service --since '15 minutes ago' --no-pager
sudo journalctl -k --since '15 minutes ago' --no-pager

Bu kontroller henüz uygulanmamıştır. NAS bağlıysa findmnt çıktısında /mnt/nas, nfs4 ve vers=4.1 beklenir. iscsiadm mevcut oturumun hedefini, portalını ve durumunu gösterir; oturum yoksa bunu bildirir. journalctl komutları servis ve çekirdek günlüklerinde bağlantı sorunlarını aramak içindir. Sessiz günlükler erişimin sağlıklı olduğunu kanıtlamaz.

Kontrollü bağlantı kesme ve dosya geri yükleme de yalnızca dış ağa yönlendirilmeyen laboratuvar için planlanan, henüz uygulanmamış adımlardır. Konsol erişimini hazırlayın; kesinti sırasında uygulama davranışını, bağlantı döndüğünde erişimi inceleyin. Bağımsız yedekten örnek dosyayı farklı dizine geri yükleyin; içerik ve izinleri doğrulayıp toplam kurtarma süresini RTO ile karşılaştırın.

Dikkat

Varsayımsal ortamdaki tek storage.example sunucusu, NAS ve iSCSI için ortak bir tek hata noktasıdır. iSCSI multipath gerçekten bağımsız yollar gerektirir; tek başına depolama sunucusunu yedekli hale getirmez. Bağlantı kesme ve dosya geri yükleme denemeleri henüz uygulanmamış laboratuvar doğrulama adımları olarak ele alınmalıdır.

İş yükünüze göre seçim: dosya paylaşımı, VM diski veya uygulama verisi

İki uygulamanın aynı dosyayı paylaşması, aynı blok aygıtına yazmaları gerektiği anlamına gelmez. Ayrım belirleyicidir. SAN ve NAS farkı burada erişim sorumluluğuna dönüşür: IETF RFC 8881, NFSv4.1’in dosya erişim modelini; RFC 7143 ise iSCSI’nin SCSI komutlarını TCP üzerinden taşımasını tanımlar.

Karar ölçütü Ortak dosyalar VM diskleri Veritabanı verisi
Erişim modeli NFS ile ortak dosya ağacı. NFS üzerinde imaj veya iSCSI üzerinden blok alanı. Veritabanının desteklediği dosya veya blok erişimi.
Üretici desteği İstemci uyumu ve kilitleme davranışı. Hipervizör sürümü, depolama sürücüsü ve küme desteği. Sürüm, bağlama seçenekleri ve kalıcı yazma koşulları.
Gecikme hedefi Küçük dosya ve dizin işlemleri. Eşzamanlı VM yükünde kuyruklanma. İşlem onayı ve senkron yazma gecikmesi.
İşletim yükü Yetkiler, dışa aktarımlar ve kilitler. İmaj veya LUN yönetimi, yedekleme koordinasyonu. Tutarlılık, günlükler ve kurtarma prosedürleri.
Toplam maliyet Kapasite, ağ, yedekleme ve yönetim zamanı. Bu kalemlerle birlikte yedeklilik ve destek. Altyapı, lisans, işletim emeği ve kurtarma süresi.

NFS yalnızca belge paylaşımına uygun değildir; desteklenen sanallaştırma ve veritabanı senaryolarında da kullanılabilir. Protokol standardı, ürün desteğinin yerine geçmez. Ubuntu deposundaki QEMU 8.2/KVM veya seçtiğiniz veritabanı için sürüme özgü depolama koşullarını kontrol edin. iSCSI otomatik hız ya da yüksek erişilebilirlik garantisi vermez – tek depolama sunucusu, protokol değişince yedekli olmaz.

Varsayımsal Ubuntu Server 24.04 LTS, GA çekirdek serisi 6.8 laboratuvarında iki uygulamanın ortak dosyaları için NAS seçilir. storage.example üzerindeki /dev/vdb, ext4 ile /srv/nfs/shared yolunu sağlar; paylaşım NFSv4.1/TCP üzerinden app01.example ve app02.example üzerinde /mnt/nas konumuna bağlanır. Dosya sistemini depolama sunucusu yönetir; aynı dosyaya yazan uygulamalar ayrıca koordinasyon gerektirir.

app01.example dosya sistemini kendisi yönetecekse, Linux LIO ile ham sunulan /dev/vdc üzerinden özel iSCSI/TCP LUN seçilir. Linux çekirdeğinin ext4 belgeleri dosya sistemi özelliklerini açıklar; ext4 bir paylaşımlı disk küme dosya sistemi değildir. Bu LUN üzerindeki ext4’ü iki istemcide eşzamanlı yazılabilir bağlamayın.

Seçimi hedef uygulamayla yapılacak erişim, performans ve geri yükleme kabul testlerine bağlayın. VPS’te Prometheus ve Grafana ile İzleme kaynak baskısını gösterebilir; uygulama gecikmesini ayrıca ölçün. Eşzamanlı erişim doğruluğu, önceden belirlediğiniz gecikme hedefi ve yedekten tutarlı geri dönüş doğrulanmadan depolamayı üretime almayın.

İş yükünüze göre seçim: dosya paylaşımı, VM diski veya uygulama verisi

  • Uygulamanızın ortak dosya paylaşımı mı yoksa kendisinin yöneteceği blok aygıtı mı istediğini belirleyin.
  • Uygulama ve sanallaştırma platformunuzun NFS veya iSCSI desteğini resmi belgelerinden doğrulayın.
  • Kapasite, büyüme, gecikme, RPO ve RTO hedeflerinizi sayısal olarak kaydedin.
  • Disk işlemlerinden önce lsblk ile aygıtları, iSCSI keşfinden sonra LUN'un kararlı aygıt yolunu doğrulayın.
  • NFS için UID/GID ve dosya izinlerini, iSCSI için başlatıcı ACL'si ve CHAP ayarlarını denetleyip ağ erişimini sınırlandırın.
  • Yalnızca silinebilir dosyalarla eşdeğer performans testleri planlayın ve önbellek ile ağ koşullarını kaydedin.
  • Üretime geçmeden önce laboratuvarda bağlantı kaybı davranışını ve bağımsız yedekten geri yüklemeyi doğrulayın.

Depolama seçimini kesinleştirmeden önce hedef uygulamanızla erişim, performans ve geri yükleme kabul ölçütlerini yazılı hale getirin. Üretime geçişi, bu ölçütlerin laboratuvarda doğrulanmasına bağlayın.

VPS paketlerini inceleyin

Sık Sorulan Sorular

SAN ve NAS arasındaki temel fark nedir?

Temel fark, istemciye sunulan erişim düzeyidir. NAS, NFS veya SMB üzerinden dosya ve dizin paylaşır; dosya sistemini depolama sunucusu yönetir. SAN ise iSCSI veya Fibre Channel gibi protokollerle blok aygıtı sunar. Dosya sistemini istemci ya da küme katmanı yönetir. Aynı depolama ürünü her iki modeli de destekleyebilir.

SAN her zaman NAS'tan daha hızlı mı?

Hayır. Performansı diskler, ağ kapasitesi, gecikme, önbellek, eşzamanlı işlem sayısı ve uygulamanın erişim deseni birlikte belirler. Küçük rastgele yazmalar ile büyük sıralı okumalar aynı altyapıda farklı davranır. NAS ve SAN seçeneklerini eşdeğer test koşullarında IOPS, MiB/s ve gecikme yüzdelikleriyle karşılaştırın. Senkron yazma davranışını da sabitlemeden hız kararı vermeyin.

İki sunucu aynı iSCSI diskini kullanabilir mi?

Teknik olarak aynı LUN birden fazla başlatıcıya sunulabilir; ancak güvenli kullanım dosya sistemi ve uygulama mimarisine bağlıdır. ext4 gibi yerel dosya sistemlerini iki sunucuda eşzamanlı yazılabilir bağlamak veri bozulmasına yol açabilir. Ortak yazma için küme dosya sistemi, koordinasyon ve fencing gerekir. Yalnızca dosya paylaşmanız gerekiyorsa NAS daha doğrudan bir yaklaşım sunar.

Sanal makineler ve veritabanları için NAS kullanılabilir mi?

Evet, platformun ve uygulamanın desteklediği yapılandırmalarda NAS kullanılabilir. NFS, bazı sanallaştırma ve veritabanı kurulumlarında geçerli bir depolama seçeneğidir; yalnızca ortak belge saklamakla sınırlı değildir. Üretici desteğini, kilitleme davranışını, senkron yazma gereksinimlerini ve bağlantı kaybı sonrasındaki davranışı doğrulayın. VM diski veya veritabanı kullanmanız tek başına SAN seçmenizi gerektirmez.

NFS ve iSCSI trafiği varsayılan olarak şifreli mi?

NFSv4.1 veya iSCSI kullanmak tek başına şifreleme garantisi vermez. NFS tarafında AUTH_SYS istemcinin bildirdiği kullanıcı kimliklerine dayanır; iSCSI tarafında CHAP kimlik doğrular fakat veri trafiğini şifrelemez. Gereksinime göre NFS için Kerberos gizlilik koruması veya uygun ağ şifreleme çözümleri değerlendirilmelidir. TCP 2049 ve TCP 3260 erişimini yalnızca gerekli istemcilerle sınırlandırın.

RAID veya snapshot varsa ayrıca yedek gerekir mi?

Evet. RAID belirli disk arızalarına karşı dayanıklılık sağlar; yanlış silme, uygulama hatası veya tüm depolama sisteminin kaybı için bağımsız yedek yerine geçmez. Snapshot hızlı geri dönüş sağlayabilir, ancak aynı sistemde tutuluyorsa ortak arızadan etkilenebilir. Kabul edilebilir veri kaybını RPO, geri dönüş süresini RTO ile tanımlayın ve bağımsız yedekten geri yüklemeyi deneyin.

Kaynaklar

Defne avatarı
Yazar

Defne

vps.tc blog yazarı. Sistem yönetimi, Linux ve hosting dünyası üzerine yazıyor.