Sanallaştırma & Bulut

    iSCSI Nedir, Nasıl Kurulur

    Ağ üzerinden blok depolama sunan iSCSI'nin kurulumu ve güvenli yapılandırması.

    11 dk okuma Güncellendi: 25 Ağustos 2026

    Bir sunucuya disk eklemek istiyorsunuz ama fiziksel olarak takacak yeriniz yok; ya da bir depolama makinesindeki alanı birden çok sunucuya "gerçek disk" olarak sunmak istiyorsunuz. iSCSI tam olarak bunu yapar: SCSI komutlarını TCP/IP paketlerine sarıp ağ üzerinden taşır, karşı taraf ise bunu /dev/sdb gibi sıradan bir blok cihaz olarak görür. Yani NFS'in aksine bir dosya paylaşımı değil, ham bir disk sunarsınız.

    Bu rehberde iSCSI'yi uçtan uca kuracağız: target, initiator, LUN ve IQN kavramlarının ne anlama geldiği, Linux'ta targetcli ile hedef sunucunun yapılandırılması, open-iscsi ile istemci tarafının bağlanması, CHAP kimlik doğrulamasının kurulması, performans için MTU ve çoklu yol ayarları ve iSCSI kullanırken en sık yapılan hatalar. Ayrıca "aynı diski iki sunucuya bağlarsam ne olur?" sorusunun neden tehlikeli bir soru olduğunu da net biçimde açıklayacağım.

    iSCSI Nedir, Nerede Kullanılır#

    iSCSI (Internet Small Computer Systems Interface), yerel diskle konuşmak için kullanılan SCSI protokolünü ağ üzerinden çalıştırır. Depolamayı sunan makineye target (hedef), depolamayı tüketen makineye initiator (başlatıcı) denir. Initiator bağlantıyı kurduğunda çekirdek yeni bir blok cihaz oluşturur ve o andan itibaren cihaz, makineye fiziksel olarak takılmış bir diskten ayırt edilemez: üzerine bölüm açar, dosya sistemi kurar, LVM'e dâhil eder, hatta işletim sistemi kurabilirsiniz.

    Bu, NFS ve SMB'den temel olarak farklıdır. NFS bir dosya paylaşımıdır; sunucu dosya sistemini yönetir, istemciler dosya düzeyinde erişir ve aynı dizini onlarca istemci güvenle paylaşabilir. iSCSI ise blok paylaşımıdır; dosya sistemini istemci kurar ve yönetir, target ise sadece ham blokları taşır. Bu ayrımın en önemli sonucu şudur: bir iSCSI LUN'u aynı anda birden fazla sunucuya bağlanır ve ikisi birden yazarsa, dosya sistemi geri dönülemez şekilde bozulur — çünkü her iki taraf da o alanın tek sahibi olduğunu varsayar.

    Tipik kullanım alanları: sanallaştırma host'larına merkezî depolama sunmak, veritabanı sunucusuna büyük ve genişletilebilir bir disk vermek, yedekleme sunucusunun disk havuzunu paylaşmak ve fiziksel disk takma imkânı olmayan sunuculara kapasite eklemek. Modellerin genel karşılaştırması için nesne depolama mı blok depolama mı yazısına bakabilirsiniz.

    Temel Kavramlar: Target, Initiator, LUN ve IQN#

    Dört terim üzerinden ilerleyeceğiz, hepsini baştan netleştirelim.

    TerimAnlamıÖrnek
    TargetDepolamayı sunan tarafDepolama sunucusu
    InitiatorDepolamayı kullanan tarafWeb/veritabanı sunucusu
    LUNSunulan mantıksal birim (disk)LUN 0, LUN 1
    IQNiSCSI adlandırma kimliğiiqn.2026-08.com.firmaniz:depo1
    PortalTarget'ın dinlediği IP ve port10.0.0.10:3260
    TPGHedef portal grubutpg1

    IQN biçimi standartla belirlenmiştir ve rastgele seçilmez: iqn. öneki, ardından YYYY-AA biçiminde bir tarih, sonra ters yazılmış alan adınız ve isteğe bağlı bir takma ad. Yani iqn.2026-08.com.firmaniz:depo1 geçerli bir IQN'dir. Tarih kısmı alan adının o dönemde size ait olduğunu belirtir; kurumsal ortamlarda tutarlı bir IQN şeması, hangi cihazın hangi LUN'a eriştiğini anlamayı çok kolaylaştırır.

    iSCSI varsayılan olarak 3260/tcp portunu kullanır. Bu portu asla internete açmayın; iSCSI şifrelenmemiş bir protokoldür ve CHAP dışında güçlü bir kimlik doğrulaması yoktur.

    Hedef Sunucu Kurulumu#

    Hedef tarafında Linux çekirdeğinin LIO alt sistemini targetcli ile yapılandıracağız. Örnekte target sunucusu 10.0.0.10, sunulacak disk /dev/sdb olsun.

    # Debian / Ubuntu
    sudo apt update
    sudo apt install -y targetcli-fb
    
    # RHEL / Rocky / AlmaLinux
    sudo dnf install -y targetcli
    
    sudo systemctl enable --now target
    

    targetcli etkileşimli bir kabuk sunar ama komutları tek tek de çalıştırabilirsiniz. Sırayla: bir backstore (arka depo) tanımlayın, hedefi oluşturun, LUN'u ekleyin ve erişim listesini yazın.

    # 1) Ham diski backstore olarak tanımla
    sudo targetcli /backstores/block create name=depo1 dev=/dev/sdb
    
    # 2) iSCSI hedefini oluştur
    sudo targetcli /iscsi create iqn.2026-08.com.firmaniz:depo1
    
    # 3) LUN olarak backstore'u hedefe bağla
    sudo targetcli /iscsi/iqn.2026-08.com.firmaniz:depo1/tpg1/luns \
      create /backstores/block/depo1
    
    # 4) Yalnızca belirli bir initiator'a izin ver (ACL)
    sudo targetcli /iscsi/iqn.2026-08.com.firmaniz:depo1/tpg1/acls \
      create iqn.2026-08.com.firmaniz:web1
    
    # 5) Yapılandırmayı kalıcı kaydet
    sudo targetcli saveconfig
    

    Dördüncü adımdaki ACL kaydı kritiktir: iSCSI'de erişim kontrolü büyük ölçüde initiator IQN'ine dayanır. ACL tanımlamazsanız (ya da generate_node_acls=1 ile demo modunu açarsanız) portala erişebilen herkes LUN'u bağlayabilir.

    Ham disk yerine bir dosyayı LUN olarak sunmak da mümkündür; test ortamlarında pratiktir:

    # 100 GB'lık dosya tabanlı backstore
    sudo targetcli /backstores/fileio create name=test1 \
      file_or_dev=/srv/iscsi/test1.img size=100G
    
    sudo targetcli ls    # yapılandırma ağacının tamamını göster
    

    Güvenlik duvarını yalnızca depolama ağına açın:

    sudo ufw allow from 10.0.0.0/24 to any port 3260 proto tcp
    

    Sunacağınız diskin altında disk arızasına karşı bir koruma olması iyi olur; RAID seviyeleri karşılaştırması yazısı hangi seviyeyi seçeceğinize karar vermenize yardımcı olur.

    İstemci Tarafı: open-iscsi#

    İstemci makinede önce kendi IQN'inizi tanımlayın — bu değer, hedefteki ACL kaydıyla birebir aynı olmalıdır.

    sudo apt install -y open-iscsi     # Debian/Ubuntu
    sudo dnf install -y iscsi-initiator-utils   # RHEL ailesi
    
    # Kendi IQN'imizi ayarla
    echo "InitiatorName=iqn.2026-08.com.firmaniz:web1" | \
      sudo tee /etc/iscsi/initiatorname.iscsi
    
    sudo systemctl restart iscsid
    

    Şimdi hedefi keşfedip oturum açalım:

    # Portaldaki hedefleri keşfet
    sudo iscsiadm -m discovery -t sendtargets -p 10.0.0.10
    # Örnek çıktı:
    # 10.0.0.10:3260,1 iqn.2026-08.com.firmaniz:depo1
    
    # Oturum aç (login)
    sudo iscsiadm -m node -T iqn.2026-08.com.firmaniz:depo1 -p 10.0.0.10 -l
    
    # Yeni blok cihaz geldi mi
    lsblk
    sudo iscsiadm -m session -P 1
    

    lsblk çıktısında yeni bir cihaz (örneğin /dev/sdc) görüyorsanız bağlantı kurulmuştur. Artık normal bir diskmiş gibi davranabilirsiniz:

    sudo mkfs.xfs /dev/sdc
    sudo mkdir -p /mnt/iscsi-depo
    sudo blkid /dev/sdc
    

    Kalıcı bağlama için fstab satırında _netdev seçeneği zorunludur; bu olmadan sistem, ağ ve iSCSI oturumu hazır olmadan bağlamayı dener ve açılışta hata verir:

    # /etc/fstab
    UUID=1c9f4b22-77aa-4c1e-8f3d-9a2e5b0c7d14  /mnt/iscsi-depo  xfs  defaults,_netdev,nofail  0  0
    

    Oturumun her açılışta otomatik kurulmasını isterseniz:

    sudo iscsiadm -m node -T iqn.2026-08.com.firmaniz:depo1 \
      -p 10.0.0.10 --op update -n node.startup -v automatic
    

    Bölümleme ve bağlama adımlarının ayrıntısı için disk bölümleme ve disk bağlama, mount ve fstab yazılarına bakabilirsiniz.

    CHAP Kimlik Doğrulama ve Güvenlik#

    IQN tabanlı ACL kolayca taklit edilebilir; initiator adı istemcide bir metin dosyasıdır ve isteyen istediğini yazabilir. Bu yüzden üretimde mutlaka CHAP kimlik doğrulamasını açın. Hedef tarafında:

    TPG=/iscsi/iqn.2026-08.com.firmaniz:depo1/tpg1
    ACL=$TPG/acls/iqn.2026-08.com.firmaniz:web1
    
    sudo targetcli $TPG set attribute authentication=1
    sudo targetcli $ACL set auth userid=web1kullanici
    sudo targetcli $ACL set auth password=UZUN_RASTGELE_PAROLA
    sudo targetcli saveconfig
    

    İstemci tarafında aynı bilgileri düğüm yapılandırmasına yazın:

    # /etc/iscsi/iscsid.conf içinde ilgili satırlar
    node.session.auth.authmethod = CHAP
    node.session.auth.username = web1kullanici
    node.session.auth.password = UZUN_RASTGELE_PAROLA
    discovery.sendtargets.auth.authmethod = CHAP
    
    sudo systemctl restart iscsid
    sudo iscsiadm -m node -T iqn.2026-08.com.firmaniz:depo1 -p 10.0.0.10 -l
    

    CHAP parolası bazı uygulamalarda 12–16 karakter sınırına takılabilir; rastgele ama sınırlar içinde bir değer seçin (şifre üretici aracımız işinizi görür).

    Güvenlik için üç kural yeterlidir. Birincisi, iSCSI trafiğini mümkünse ayrı bir fiziksel ya da VLAN ile ayrılmış depolama ağında taşıyın; hem güvenlik hem performans kazanırsınız. İkincisi, 3260 portunu asla internete açmayın. Üçüncüsü, farklı lokasyonlar arasında iSCSI kullanmak zorundaysanız trafiği IPsec ya da bir VPN tüneli içine alın, çünkü iSCSI veriyi düz metin taşır.

    Performans: MTU, Çoklu Yol ve Ağ Ayrımı#

    iSCSI performansının neredeyse tamamı ağdan gelir. Üç ayar gerçek fark yaratır.

    Jumbo frame (MTU 9000). Standart 1500 baytlık çerçeve yerine 9000 bayt kullanmak, aynı veriyi taşımak için gereken paket sayısını ve dolayısıyla CPU kesme yükünü belirgin biçimde azaltır. Ancak MTU değeri yoldaki tüm cihazlarda aynı olmalıdır: initiator, switch ve target. Biri 1500'de kalırsa paketler parçalanır ve performans artmak yerine düşer.

    # Arayüzde MTU'yu ayarla
    sudo ip link set dev eth1 mtu 9000
    
    # Uçtan uca 9000 gerçekten geçiyor mu (parçalanmaya izin vermeden test)
    ping -M do -s 8972 10.0.0.10
    

    -s 8972 değeri tesadüf değildir: 9000 MTU eksi 20 bayt IP başlığı eksi 8 bayt ICMP başlığı. Bu ping başarısız oluyorsa yolda MTU'yu desteklemeyen bir cihaz vardır.

    Çoklu yol (multipath). İki ayrı ağ arayüzü ve iki ayrı yol üzerinden aynı LUN'a bağlanıp multipathd ile birleştirirseniz hem bant genişliği toplanır hem de bir yol koptuğunda oturum kesilmez. Depolama ağında tek bir kablo ya da tek bir switch varsa, iSCSI kurmuş olmanıza rağmen tek nokta arızanız devam ediyor demektir.

    Ağ ayrımı. İSCSI trafiğini kullanıcı trafiğiyle aynı arayüzde taşımak, yoğun bir yedekleme işinin web sitenizi yavaşlatmasına yol açar. Mümkünse ayrı bir NIC, en azından ayrı bir VLAN kullanın.

    Ölçüm için basit ama etkili bir başlangıç:

    # Sıralı yazma testi (önbelleği atlayarak)
    sudo dd if=/dev/zero of=/mnt/iscsi-depo/test.bin bs=1M count=4096 oflag=direct
    # Testten sonra dosyayı silin
    sudo rm /mnt/iscsi-depo/test.bin
    

    Depolama ağınızın kapasitesini planlarken bant genişliği hesaplayıcı aracımız kaba bir tahmin çıkarmanıza yardımcı olabilir.

    Sık Yapılan Hatalar ve Tuzaklar#

    Aynı LUN'u iki sunucuya bağlayıp ikisinden de yazmak. iSCSI'nin en yıkıcı hatası budur. Hedef, iki initiator'ın aynı LUN'a bağlanmasını engellemez; ama ext4 ya da XFS gibi tek-sahipli dosya sistemleri diğer tarafın yazdığını bilmez ve dosya sistemi hızla bozulur. Aynı LUN'a gerçekten iki taraftan yazmanız gerekiyorsa OCFS2 ya da GFS2 gibi bir küme dosya sistemi kurmanız şarttır. Paylaşımlı erişim asıl ihtiyacınızsa iSCSI yanlış araçtır; NFS paylaşımı bu iş için tasarlanmıştır.

    _netdev yazmamak. iSCSI diski fstab'a bu seçenek olmadan eklendiğinde sistem açılışta cihazı bulamaz ve acil kurtarma kabuğuna düşer. Uzak bir sunucuda bu, makineye erişememek demektir. nofail ile birlikte kullanın.

    Cihaz adına güvenmek. /dev/sdc gibi adlar bağlanma sırasına göre değişir; ikinci bir LUN eklediğinizde eskisi /dev/sdd olabilir. fstab'da mutlaka UUID kullanın.

    CHAP'ı atlamak. Yalnızca IQN tabanlı ACL, istemci adı taklit edilebildiği için gerçek bir kimlik doğrulaması değildir. İç ağda bile CHAP açık olsun.

    Depolama ağını ayırmamak. iSCSI trafiği yoğundur ve gecikmeye duyarlıdır. Kullanıcı trafiğiyle aynı arayüzü paylaştığında iki taraf da zarar görür.

    Target sunucusunu yedeklilikten muaf tutmak. Beş sunucu tek bir target'a bağlıysa, o makine düştüğünde beşi birden diskini kaybeder. Target'ın altında en az RAID, kritik ortamlarda ise yedekli bir yapı olmalıdır.

    LUN'u sıcak küçültmeye çalışmak. LUN büyütmek görece kolaydır (targetcli üzerinde boyutu artırıp istemcide iscsiadm -m node -R ile yeniden tarama yaparsınız), ancak küçültme dosya sistemi tarafında ciddi risk taşır ve çoğu durumda desteklenmez.

    Sıkça Sorulan Sorular#

    iSCSI mi NFS mi kullanmalıyım#

    Karar tek soruya bağlıdır: paylaşımlı erişim mi, tek sahipli disk mi istiyorsunuz. Birden çok sunucunun aynı dosyalara aynı anda erişmesi gerekiyorsa NFS doğru araçtır ve dosya kilitleme mantığını sizin yerinize halleder. Tek bir sunucuya büyük, genişletilebilir bir disk vermek ve üzerinde kendi dosya sisteminizi kurmak istiyorsanız iSCSI daha uygundur. Veritabanı gibi blok düzeyinde performans isteyen iş yükleri de iSCSI tarafına aittir.

    iSCSI performansı yerel diske göre nasıl#

    Ağ ve alt depolama iyiyse fark şaşırtıcı derecede küçüktür; 10 Gbit bir depolama ağında sıralı okuma-yazma yerel SATA diske yakın değerler verebilir. Asıl fark gecikmede ortaya çıkar: her istek ağ turu ekler, bu yüzden çok sayıda küçük rastgele işlem yapan iş yüklerinde yerel NVMe belirgin şekilde öndedir. Jumbo frame, ayrı depolama ağı ve çoklu yol bu farkı önemli ölçüde kapatır.

    Aynı iSCSI diskini iki sunucuya bağlayabilir miyim#

    Teknik olarak bağlayabilirsiniz ve hiçbir şey sizi uyarmaz; ancak ikisinden de yazarsanız dosya sistemi bozulur. Standart dosya sistemleri (ext4, XFS) tek bir işletim sisteminin sahipliğini varsayar ve diğer tarafın değişikliklerini görmez. Gerçekten eşzamanlı erişim gerekiyorsa GFS2 veya OCFS2 gibi bir küme dosya sistemi kurmanız gerekir; çok daha basit bir alternatif ise NFS kullanmaktır.

    iSCSI hedefine bağlanamıyorum, ne kontrol etmeliyim#

    Sırayla dört noktaya bakın. Önce hedef sunucuda sudo targetcli ls ile LUN ve ACL'lerin gerçekten kayıtlı olduğunu doğrulayın; saveconfig çalıştırılmadıysa yeniden başlatmada kaybolmuş olabilirler. Sonra telnet 10.0.0.10 3260 ya da nc -zv ile portun açık olduğunu test edin. Ardından istemcideki /etc/iscsi/initiatorname.iscsi değerinin hedeftteki ACL kaydıyla harfi harfine aynı olduğunu karşılaştırın. Son olarak CHAP kullanıyorsanız kullanıcı adı ve parolanın iki tarafta eşleştiğini kontrol edin; journalctl -u iscsid çıktısı genellikle hangi adımda takıldığını açıkça söyler.

    LUN boyutunu sonradan büyütebilir miyim#

    Evet, ancak üç aşamalı bir işlemdir. Önce hedef tarafında backstore'un dayandığı disk ya da dosya büyütülür. Sonra istemcide sudo iscsiadm -m node -R ile yeniden tarama yapılır ve çekirdek yeni boyutu görür. Son olarak istemcide bölüm tablosu ve dosya sistemi genişletilir (growpart ardından resize2fs ya da xfs_growfs). Küçültme ise desteklenmez ya da çok risklidir; kapasiteyi baştan geniş planlamak daha güvenlidir.

    iSCSI trafiği şifreli midir#

    Hayır, iSCSI verileri düz metin olarak taşır ve CHAP yalnızca kimlik doğrulamayı sağlar, veriyi şifrelemez. Bu yüzden protokol güvenilir bir yerel ağda kullanılmak üzere tasarlanmıştır. Trafiğin güvenli olmayan bir ağdan geçmesi gerekiyorsa IPsec ya da bir VPN tüneli kurmalısınız. En sağlıklı yaklaşım, iSCSI'yi ayrı ve dışarıya kapalı bir depolama VLAN'ında tutmaktır.

    Windows sunucular iSCSI kullanabilir mi#

    Evet, Windows Server ve masaüstü Windows sürümleri yerleşik "iSCSI Initiator" aracıyla gelir. Hedef IP'sini girip keşif yaptıktan sonra LUN, Disk Yönetimi ekranında yeni bir disk olarak görünür; NTFS ile biçimlendirip sürücü harfi atayabilirsiniz. IQN ve CHAP mantığı Linux tarafındakiyle aynıdır, dolayısıyla Linux bir target'a Windows initiator sorunsuz bağlanabilir.

    Kapanış#

    iSCSI, ağ üzerinden ham disk sunmanın standart yoludur ve doğru kurulduğunda yerel diske çok yakın bir deneyim verir. Aklınızda kalması gereken alışkanlıklar şunlar: bir LUN'u tek seferde tek sunucuya bağlayın, fstab satırlarında UUID ile birlikte _netdev ve nofail kullanın, CHAP kimlik doğrulamasını iç ağda bile açın, iSCSI trafiğini ayrı bir depolama ağına alın ve target'ın altındaki diskleri RAID ile koruyun. Paylaşımlı dosya erişimi istiyorsanız iSCSI'nin doğru araç olmadığını da unutmayın.

    Kendi depolama ağınızı kurmak için tam donanım kontrolü sunan dedicated sunucu ve colocation seçeneklerimize, esnek kaynak ihtiyacı için VDS ve bulut sunucu paketlerimize bakabilirsiniz. Kurulum, çoklu yol ve izleme tarafını bize bırakmak isterseniz sunucu yönetimi hizmetimiz bu işi üstlenir.

    iSCSIDepolamaSAN

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.