iSCSI Storage di Linux

iSCSI adalah singkatan dari Internet Small Computer Systems Interface  yang merupakan penyimpanan berbasis Internet prokokol sebagai penghubung antara storage server dan server. iSCSI dulunya hanya bisa digunakan di SAN(Storage Area Network) dengan harga perangkat yang mahal, namun sekarang kita bisa menggunakannya di Linux/WIndows Server ataupun di server NAS dengan cost yang lebih murah.

Perbedaan iSCSI dengan Sharing storage seperti NFS/Samba adalah dengan iSCSI kita bisa sharing storage block atau disk fisik kita seolah-olah menjadi disk fisik di client, sedangkan NFS/Samba hanya bisa sharing direktori saja. Jadi dengan iSCSI, client bisa melakukan format dan partisi pada disk sharing kita.

Hal yang diperlukan untuk membuat sebuah iSCSI adalah

  1. iSCSI Target berupa server yang berfungsi sebagai storage server, di Linux kita bisa menggunakan software seperti targetcli atau tgt
  2. iSCSI Initiator berupa server yang berfungsi sebagai client storage, di Linux kita bisa menggunakan software open-iscsci

Setup Topologi

IP node1: 172.16.10.5

IP node2: 172.16.10.6

Kali ini saya menggunakan debian di kedua server, dan menambahkan disk sebesar 20GB di node1

Storage di node1

Konfigurasi Hostname di kedua nodes

node1

#Ubah hostname menjadi node1
hostnamectl set-hostname node1

#Konfigurasi FQDN di node1 (dengan format hostnameserver.namadomain)untuk kedua node
echo "172.16.10.5 node1 node1.sysidn.id" >> /etc/hosts
echo "172.16.10.6 node2 node2.sysidn.id" >> /etc/hosts

node2

#Ubah hostname menjadi node2
hostnamectl set-hostname node2

#Konfigurasi FQDN di node2 (dengan format hostnameserver.namadomain)untuk kedua node
echo "172.16.10.6 node2 node2.sysidn.id" >> /etc/hosts
echo "172.16.10.5 node1 node1.sysidn.id" >> /etc/hosts

Instalasi & Konfigurasi TGT di node1

apt install tgt -y

Buat file baru berisi nama target dan initiator

vim /etc/tgt/conf.d/target1.conf
.....                                                                 
<target iqn.2022-07.id.sysidn:node1-target1>
    backing-store /dev/sdb
    initiator-name iqn.2022-07.id.sysidn:node2.initiator1
    incominguser client 1234
</target>
.....

Penjelasan konfigurasi:

Format penamaan target iqn.tahun-bulan.reversedomain:hostname-namatarget

Contoh seperti diatas, nama domainnya yaitu sysidn.id dijadikan reverse domain berarti dibalik menjadi id.sysidn

iqn.2022-07.id.sysidn.id:node1-target1

backing-store /dev/sdbyaitu storage block yang mau kita share
initiator-name iqn.2022-07.id.sysidn:node2.initiator1nama iqn di client
incominguser client 1234autentikasi dengan user client dan password 1234

Restart layanan TGT

systemctl restart tgt

Lihat status target

tgtadm --mode target --op show
Target 1: iqn.2022-07.id.sysidn:node1-target1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 21475 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rdwr
            Backing store path: /dev/sdb
            Backing store flags: 
    Account information:
        client
    ACL information:
        ALL
        iqn.2022-07.id.sysidn:node2.initiator1

Konfigurasi iSCSI Initiator di node2

Install open-iscsi

apt -y install open-iscsi

Ubah nama iqn initiator

vim /etc/iscsi/initiatorname.iscsi
.....
#Samakan dengan yang kita konfigurasi di TGT
InitiatorName=iqn.2022-07.id.sysidn:node2.initiator1
.....

Konfigurasi user untuk autentikasi

vim /etc/iscsi/iscsid.conf
.....
#Uncomment baris 58
node.session.auth.authmethod = CHAP
node.session.auth.username = client
node.session.auth.password = 1234
.....

Restart layanan open-iscsi

systemctl restart iscsid open-iscsi

Deteksi iSCSI dari server

iscsiadm -m discovery -t sendtargets -p 172.16.10.5

Konfirmasi apakah target sudah terdeteksi

iscsiadm -m node -o show
# BEGIN RECORD 2.1.3
node.name = iqn.2022-07.id.sysidn:node1-target1
node.tpgt = 1
..........
# END RECORD

Selanjutnya login ke target

iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2022-07.id.sysidn:node1-target1, portal: 172.16.10.129,3260]
Login to [iface: default, target: iqn.2022-07.id.sysidn:node1-target1, portal: 172.16.10.129,3260] successful.

Konfirmasi bahwa sudah terkoneksi ke target

iscsiadm -m session -o show
tcp: [1] 172.16.10.129:3260,1 iqn.2022-07.id.sysidn:node1-target1 (non-flash)

Konfirmasi disk dari server

cat /proc/partitions

Terlihat diatas bahwa storage dari server sudah ada di klien

Buat partisi di disk

cfdisk /dev/sdb

Contoh membuat 1 partisi dengan format ext4 dan di mount ke direktori /mnt/disk1

Leave a Reply

Your email address will not be published. Required fields are marked *