Cara Setup iSCSI Server (Target) dan Client (Initiator) di Debian 9


Di dunia pusat data, Storage Area Networks (SAN) berkapasitas besar telah menjadi standar minimum. Karena penyedia cloud dan virtualisasi juga terus memberikan dampak besar dalam dunia teknologi, kebutuhan akan lebih banyak ruang penyimpanan SAN menjadi jelas.

Sebagian besar perangkat keras SAN terdiri dari pengontrol minimalis (atau sekumpulan pengontrol) dan kumpulan besar drive berkapasitas tinggi yang semuanya dikonfigurasi untuk mendukung ketersediaan dan integritas data dalam jumlah besar.

Banyak dari produk khusus ini dibuat oleh vendor ternama seperti Netapp, Dell Equalogic, HP Storageworks, atau EMC dan memiliki label harga yang hanya mampu dibeli oleh perusahaan terbesar.

Secara realistis, perangkat ini tidak lebih dari susunan hard disk besar dengan pengontrol yang menyediakan ruang hard disk tersebut ke klien jaringan. Banyak teknologi telah ada selama bertahun-tahun yang menyediakan fungsionalitas ini atau fungsi serupa dengan harga yang jauh lebih murah.

Distribusi Debian GNU/Linux menyediakan paket yang memungkinkan sistem Debian melayani tujuan perangkat penyimpanan SAN tingkat perusahaan dengan biaya yang sangat murah! Hal ini memungkinkan semua orang mulai dari pengguna rumahan atau pusat data besar untuk mendapatkan manfaat penyimpanan SAN tanpa harus menghabiskan banyak uang untuk membeli solusi milik vendor.

Artikel ini akan membahas bagaimana sistem Debian 9 (Stretch) dapat diatur untuk menyediakan ruang disk menggunakan sistem yang dikenal sebagai Internet Small Computer Systems Interface atau disingkat iSCSI. iSCSI adalah standar berbasis Protokol Internet (IP) untuk menyediakan penyimpanan blok (hard drive) ke sistem lain. iSCSI bekerja dalam model server klien tetapi menggunakan nama yang berbeda untuk membedakan klien dari server.

Dalam terminologi iSCSI, server yang melayani 'ruang disk' dikenal sebagai 'Target' iSCSI' dan sistem yang memintanya /memanfaatkan ruang disk dikenal sebagai 'Inisiator' iSCSI. Jadi dengan kata lain, 'Inisiator' meminta penyimpanan blok dari 'Target'.

Pengaturan Lingkungan

Panduan ini akan menjelaskan penyiapan dasar yang melibatkan server iSCSI sederhana (target) dan klien (inisiator) keduanya menjalankan Debian 9 (Peregangan).


Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

Jaringannya dapat dilihat seperti di bawah ini:

Konfigurasi Target Debian iSCSI

Di dunia iSCSI, target dianggap sebagai host yang berisi perangkat penyimpanan yang akan digunakan oleh pemrakarsa.

Dalam artikel ini server dengan IP 192.168.56.101 digunakan sebagai target. Semua konfigurasi akan dilakukan pada host tersebut untuk bagian ini.

Langkah pertama adalah instalasi paket-paket yang diperlukan agar sistem Debian dapat melayani target iSCSI. Paket perangkat lunak ini dikenal sebagai Target Framework (TGT).

Item lain yang digunakan untuk panduan ini adalah alat Manajemen Volume Logis (LVM) sebagai Volume Logis (LV) akan digunakan sebagai cadangan penyimpanan untuk target iSCSI.

Kedua paket dapat diinstal dengan perintah berikut.


apt-get update
apt-get install tgt lvm2

Setelah paket diinstal, LVM akan digunakan untuk mempersiapkan hard disk pada target untuk digunakan sebagai iSCSI LUN. Perintah pertama digunakan untuk menyiapkan disk untuk dimasukkan dalam pengaturan LVM. Pastikan untuk mengubah perintah sesuai kebutuhan untuk skenario yang berbeda!


lsblk (Only used to confirm disks to be used in the LVM setup)
pvcreate /dev/sd{b,c}

Setelah disk disiapkan dengan perintah 'pvcreate' di atas, sekarang saatnya membuat grup volume dari disk tersebut. Grup volume diperlukan untuk membuat Volume Logis yang nantinya akan bertindak sebagai penyimpanan iSCSI.

Untuk membuat grup volume, diperlukan perintah 'vgcreate'.


vgcreate tecmint_iscsi /dev/sd{b,c}
vgs  (Only needed to confirm the creation of the volume group)

Perhatikan pada output di atas bahwa sistem merespons bahwa Volume Group telah dibuat tetapi sebaiknya periksa ulang seperti yang terlihat di atas dengan perintah 'vgs'. Kapasitas grup volume ini hanya 9,99 GB. Meskipun ini adalah kelompok volume yang sangat kecil, prosesnya akan sama untuk disk dengan kapasitas lebih besar!

Langkah selanjutnya adalah pembuatan volume logis yang akan bertindak sebagai disk untuk klien iSCSI (inisiator). Untuk contoh ini keseluruhan grup volume akan digunakan namun tidak diperlukan.

Volume logis akan dibuat menggunakan perintah 'lvcreate'.


lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
lvs  (Simply used to confirm the creation of the logical volume)

Perintah 'lvcreate' di atas mungkin sedikit membingungkan pada pandangan pertama tetapi rinciannya adalah sebagai berikut:

  • lvcreate – Perintah yang digunakan untuk membuat volume logis.
  • -l 100%GRATIS – Buat volume logis menggunakan semua ruang kosong grup volume.
  • -n tecmint_lun1 – Nama volume logis yang akan dibuat.
  • tecmint_iscsi – Nama grup volume untuk membuat volume logis di dalamnya.

Setelah volume logis dibuat, saatnya membuat LUN (Nomor Unit Logis) yang sebenarnya. LUN akan menjadi perangkat penyimpanan yang pemrakarsa akan sambungkan dan gunakan nanti.

Membuat LUN sangat sederhana dan hanya memerlukan beberapa langkah. Langkah pertama adalah pembuatan file konfigurasi. File ini akan berada di direktori '/etc/tgt/conf.d' dan untuk artikel ini akan disebut 'TecMint_iscsi.conf'.

Untuk membuat file ini gunakan editor teks.


nano /etc/tgt/conf.d/TecMint_iscsi.conf

Dalam file ini, semua informasi konfigurasi yang diperlukan untuk LUN ini akan dikonfigurasi. Ada banyak opsi yang dapat ditempatkan dalam file ini tetapi untuk saat ini LUN dasar dengan Challenge Handshake Authentication Protocol (CHAP) bersama akan dikonfigurasi.

Definisi LUN akan berada di antara dua pernyataan 'target'. Untuk parameter lainnya yang dapat dimasukkan dalam pernyataan target, tinjau halaman manual untuk file ‘targets.conf‘ dengan mengeluarkan ‘man 5 target.conf‘.


<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

Ada banyak hal yang terjadi di atas. Penjelasan singkat mungkin bermanfaat bagi sebagian besar orang.

  • Baris pertama memulai konfigurasi iSCSI LUN tertentu. Dalam hal ini LUN diberi label 'iqn.2018-02.linux-console.net:lun1'. Bagian 'iqn' menunjukkan bahwa ini akan menjadi nama yang memenuhi syarat iSCSI. '02-2018' adalah kombinasi tanggal yang dipilih secara sewenang-wenang. ‘linux-console.net‘ adalah domain milik LUN tertentu. Terakhir, 'lun1' digunakan sebagai nama untuk target khusus ini.
  • Baris kedua di atas menggambarkan sebuah komentar. Komentar boleh ada di file konfigurasi target dan harus diawali dengan simbol '#'.
  • Baris ketiga adalah tempat penyimpanan aktual yang akan digunakan oleh pemrakarsa. Dalam hal ini dukungan penyimpanan akan menjadi volume logis yang dibuat sebelumnya dalam panduan ini.
  • Baris keempat adalah alamat IP yang diharapkan dari pemrakarsa. Meskipun ini bukan item konfigurasi yang diperlukan, ini dapat membantu meningkatkan keamanan.
  • Baris kelima adalah nama pengguna/kata sandi yang masuk. Sama seperti alamat inisiator di atas, parameter ini juga tidak diperlukan tetapi dapat membantu mengamankan LUN. Karena panduan ini juga mencakup iSCSI mutual CHAP, parameter ini diperlukan. Baris ini menunjukkan nama pengguna dan kata sandi yang diharapkan target dari pemrakarsa agar dapat terhubung ke LUN ini.
  • Baris keenam adalah nama pengguna/kata sandi yang akan diberikan target kepada pemrakarsa untuk memungkinkan terjadinya autentikasi CHAP bersama. Biasanya parameter ini tidak diperlukan tetapi artikel ini membahas otentikasi CHAP bersama sehingga parameter ini diperlukan.
  • Baris terakhir adalah pernyataan penutup untuk definisi target. Perhatikan garis miring penutup di depan target kata kunci!

Setelah konfigurasi yang sesuai untuk LUN telah diketik, simpan perubahannya dan keluar dari editor teks. Jika menggunakan nano, tekan ctrl+o untuk menyimpan lalu tekan ctrl+x untuk keluar dari nano.

Setelah file konfigurasi dibuat, layanan tgt harus dimulai ulang sehingga tgt mengetahui target baru dan konfigurasi terkait.

Ini dapat dilakukan dengan salah satu perintah berikut dan bergantung pada sistem init yang digunakan.


service tgt restart  (For sysv init systems)
systemctl restart tgt  (For systemd init systems)

Setelah tgt dimulai ulang, penting untuk memeriksa untuk memastikan bahwa target iSCSI tersedia sesuai dengan file konfigurasi yang dibuat.

Hal ini dapat dilakukan dengan perintah 'tgtadm'.


tgtadm --mode target --op show   (This will show all targets)

Ini mengakhiri konfigurasi target. Bagian berikutnya akan membahas konfigurasi inisiator.

Konfigurasi Inisiator Debian iSCSI

Langkah berikutnya dalam menggunakan target iSCSI yang dikonfigurasi sebelumnya adalah konfigurasi pemrakarsa iSCSI.

Sistem Debian 9 yang berbeda akan digunakan sebagai inisiator dalam artikel ini namun sistem apa pun yang dapat memanfaatkan protokol iSCSI dapat terhubung ke target yang dikonfigurasi sebelumnya; ini dapat mencakup hypervisor seperti XenServer/ESXi atau distribusi lain seperti Red Hat, Debian, atau Ubuntu.

Langkah pertama dalam proses untuk pemrakarsa Debian ini adalah instalasi paket yang tepat untuk iSCSI.


apt-get update
apt-get install open-iscsi

Setelah apt menyelesaikan konfigurasi paket open-iscsi, konfigurasi iSCSI initiator dapat dimulai. Langkah pertama adalah berkomunikasi dengan target untuk mendapatkan informasi konfigurasi awal untuk target yang disiapkan.


iscsiadm -m discovery -t st -p 192.168.56.101

Ketika perintah ini dijalankan, perintah ini akan merespons kembali dengan nama lun yang dikonfigurasi sebelumnya untuk host tertentu ini. Perintah di atas juga akan menghasilkan dua file untuk informasi LUN yang baru ditemukan.

Kini file yang dibuat untuk node ini harus memiliki informasi CHAP yang dikonfigurasi agar target iSCSI ini benar-benar dapat diakses oleh pemrakarsa.

Secara teknis, informasi ini dapat diatur untuk seluruh sistem secara keseluruhan, namun jika sebuah host terhubung ke LUN berbeda dengan kredensial berbeda, menempatkan kredensial tersebut dalam file konfigurasi node tertentu dapat mengurangi masalah apa pun.

File konfigurasi node akan ada di direktori '/etc/iscsi/nodes/' dan akan memiliki direktori per LUN yang tersedia. Dalam kasus artikel ini (perhatikan bahwa jalur akan berubah jika nama/alamat IP diubah).


/etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

Untuk bekerja dengan file ini, editor teks apa pun dapat digunakan.


nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

Di dalam file ini akan ada beberapa opsi yang sudah dikonfigurasi untuk masing-masing target yang ditentukan selama perintah 'iscsiadm' dijalankan sebelumnya.

Karena pengaturan target/initiator Debian ini menggunakan CHAP bersama, beberapa opsi lagi perlu diubah dan ditambahkan ke file ini dan kemudian login ke iSCSI target dilakukan.

Perubahan pada file ini adalah:


node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

Opsi di atas akan memungkinkan target ini untuk mengautentikasi ke pemrakarsa serta memungkinkan pemrakarsa untuk mengautentikasi ke target .

Ada opsi lain dalam file khusus ini yang mungkin perlu diubah tergantung pada preferensi administrator dan itu adalah parameter 'node.startup'.

Jika mengikuti panduan ini, opsi 'node.startup' akan disetel ke 'manual' pada saat ini. Hal ini mungkin tidak diinginkan. Jika administrator ingin target iSCSI terhubung saat sistem dijalankan, ubah 'manual' menjadi 'otomatis' seperti ini:


node.startup = automatic

Setelah perubahan di atas dilakukan, simpan file dan keluar. Pada titik ini layanan open-iscsi initiator perlu dimulai ulang agar dapat membaca perubahan baru ini dan terhubung ke target iSCSI.

Hal ini dapat dilakukan dengan salah satu perintah berikut tergantung pada sistem init yang digunakan.


service open-iscsi restart   (For sysv init systems)
systemctl restart open-iscsi (For systemd init systems)

Perhatikan pada kotak hijau di atas bahwa pemrakarsa iSCSI dapat masuk ke target. Untuk memastikan lebih lanjut bahwa target iSCSI memang tersedia untuk pemrakarsa, kita dapat memeriksa sistem untuk disk drive tambahan yang tersedia menggunakan 'lsblk ' perintah dan memeriksa output untuk drive tambahan.


lsblk

Perintah lain yang dapat digunakan pada inisiator untuk mengonfirmasi koneksi ke target adalah 'iscsiadm' seperti:


iscsiadm -m session

Tempat terakhir untuk mengonfirmasi koneksi adalah di target itu sendiri menggunakan perintah 'tgtadm' untuk mencantumkan koneksi iSCSI.


tgtadm --mode conn --op show --tid 1

Mulai saat ini, perangkat iSCSI yang baru dipasang dapat digunakan seperti disk mana pun yang biasanya dipasang! Partisi, pembuatan sistem file, pemasangan, dan/atau pemasangan persisten semuanya dapat ditangani secara normal.

Satu peringatan besar yang harus diperhatikan dengan perangkat iSCSI adalah jika target iSCSI berisi sistem file penting yang diperlukan saat inisiator melakukan booting, pastikan untuk menggunakan entri '_netdev' di file '/etc/fstab' untuk memastikan bahwa perangkat iSCSI terhubung sebelum sistem melanjutkan booting!