iSCSI nedir?
iSCSI, SCSI (Small Computer System Interface) yönetimin internet ve daha doğrusu IP üzerinden kullanılmasına yarayan bir protokoldür. Temel ve basit bir protokoldür fakat güvenlik ve performans olarak alternatiflerine göre geride kalmaktadır.
iSCSI kavramları
iSCSI üzerinde temel 2 kavram bulunmaktadır.
- Target (Hedef)
- Initiator (Başlatıcı)
a. Target (Hedef) servisi
Kullanılacak depo birimini yöneten servistir. Debian tabanlı sistemlerde Logical Volume Management (LVM) olarak biçimlendirilecek depolama birimini ve tgt isimli target servisini kullanacak cihazdır. initiator tarafından kullanılabilecektir.
b. Initiator (Başlatıcı) servisi
Hedef depo birimi servisine bağlanacak ve bu yapıyı kullanacak cihazlardır. Debian tabanlı sistemlerde Logical Volume Management (LVM) olarak biçimlendirilecek depolama birimini ve tgt isimli target servisini kullanacak cihazdır. initiator tarafından kullanılabilecektir.
1. iSCSI Target Yapılandırması
Pardus ve Debian tabanlı sistemlerde aşağıdaki gibi bir yapılandırma yapabilirsiniz. iSCSI Target yapılandırması için elinizde cihazınıza takılmış olan disk veya diskler bulunmaktadır. Bu diskleri aşağıdaki komut ile görebilirsiniz:
lsblk
lsblk komutu çıktısında sda, sdb, sdc... gibi disk isimlerini göreceksiniz. Bu sistemlerden muhtemelen sda sistemin kurulduğu disk olduğu için sdb'den başlayan diskleri iSCSI üzerinden yönetmeniz gerekecektir. Tabi bu kısım için kurumsal ortamlarda uzmanlık önemli olmaktadır.
Bu adımda aşağıdaki paketleri yüklemeniz gerekmektedir:
apt install tgt lvm2
Belirlediğiniz diskleri LVM olarak kullanmadan önce pvcreate komutu ile oluşturmanız gerekmektedir. Aşağıdaki örnekte ekstra 2 disk takılmış sistem ve dolayısıyla sdb ve sdc disklerini oluşturmayı gördünüz
pvcreate /dev/sd{b,c}
Bu komut sonrasında başarı ile oluşturuldu yazısı görüldüğünde "volume grup" olarak bunları birleştirmek gerekiyor.
vgcreate aciklab_grup /dev/sd{b,c}
Ve tabi bu grubu görmek isterseniz kontrol etmek için vgs komutunu kullanabilirsiniz. Ve bu adımdan sonra sanal grup oluşturmak için aşağıdaki komutu kullanabilirsiniz:
lvcreate -n aciklab_lun1 -l 100%FREE aciklab_grup
Bu adımdan sonra lvs komutu ile ilgili mantıksal birimin oluşup oluşmadığını kontrol edebilirsiniz.
Bu adımdan sonra başlatıcının bağlanabilmesi için target'ı yapılandırmak için /etc/tgt/conf.d/aciklab_grup.conf isimli bir dosya oluşturup içeriğini başlatıcı ve hedef IP adreslerini doğru yazacak şekilde düzenlemeniz gerekmektedir. Tabi ki CHAP parolası gibi bilgileri de doldurmanız gerekmektedir.
<target iqn.2020-06.aciklab.com:lun1>
# Provided device as an iSCSI target
backing-store /dev/mapper/aciklab_grup-aciklab_lun1
initiator-address BASLATICIIPADRESI
incominguser aciklab_grup-user password
outgoinguser debian-iscsi-target secretpass
</target>
Yapılandırma ayarını yaptıktan sonra servisi yeniden başlatmanız gerekmekte. Servis başarı ile yeniden başlamış ise ilk süreç tamamlanmış olacaktır.
systemctl restart tgt
Yine de kontrol için aşağıdaki komut ile kontrolü yapabilirsiniz:
tgtadm --mode target --op show
2. iSCSI Initiator Yapılandırması
Pardus ve Debian tabanlı sistemlerde aşağıdaki gibi bir yapılandırma yapabilirsiniz. Bu sistem için open-iscsi kullanabilirsiniz. Ve tabi ki target sisteminin yapılandırılmış olması gerekmektedir.
Aşağıdaki komut ile open-iscsi kurulumu yapabilirsiniz.
apt install open-iscsi
Daha sonra target olarak kurduğunuz sunucunun IP adresini belirterek aşağıdaki komut ile target sistem üzerinde LUN bilgilerini alabilirsiniz.
iscsiadm -m discovery -t st -p HEDEFIPADRESI
Bu komutun çıktısı olarak aşağıdaki gibi bir çıktı ortaya çıkacaktır ve bazı dosyalar oluşacaktır.
iqn.2020-06.aciklab.com\:lun1
Aşağıdaki gibi bir dosya oluşacaktır:
/etc/iscsi/nodes/iqn.2020-06.aciklab.com\:lun1/HEDEFIPADRESI\,3260\,1/default
Bu dosya içerisinde aşağıdaki ayarları hedef sunucuda yazdığınız şekilde düzenlemeniz gerekmekte.
node.session.auth.authmethod = CHAP
node.session.auth.username = aciklab_grup-user
node.session.auth.password = password
node.session.auth.username_in = debian-iscsi-target
node.session.auth.password_in = secretpass
node.startup = automatic
Bu adımdan sonra open-iscsi servisini yeniden başlatmanız yeterlidir:
systemctl restart open-iscsi
Eğer her şey yolunda ise lsblk komutu ile yeni bir disk göreceksiniz.