iSCSI adalah singkatan dari Internet Small Computer System Interface.
Ini berfungsi pada lapisan TCP/IP dan memungkinkan perintah SCSI dikirim melalui jaringan area lokal (LAN).
Ini digunakan untuk mengakses penyimpanan di jaringan Anda melalui TCP/IP menggunakan transfer data tingkat blok.
Sering ada perbandingan antara NFS vs iSCSI. Perbedaan utama adalah NFS adalah implementasi tingkat file sedangkan iSCSI adalah implementasi tingkat blok.
Dalam implementasi tingkat blok seperti iSCSI dan Fibre Channel, larik penyimpanan menawarkan kumpulan blok ke klien, yang kemudian memformat penyimpanan mentah tersebut dengan sistem file apa pun yang diputuskan untuk digunakan.
Secara berurutan untuk mengakses penyimpanan melalui iscsi, kita perlu memiliki komponen berikut:
- iSCSI initiator (Hardware/Software) – Ini adalah klien iscsi yang dapat mengirim perintah iscsi melalui jaringan TCP/IP. Ini biasanya adaptor NIC Anda di server Anda dan dapat berupa fisik atau virtual dengan IP yang dikonfigurasi pada subnet yang sama dengan antarmuka iscsi array penyimpanan.
- Target iSCSI (Node penyimpanan Anda) – Ini adalah node penyimpanan Anda yang dapat Anda konfigurasikan sendiri atau dapat berupa larik fisik dari vendor yang mendukung konfigurasi iscsi
- Sakelar iSCSI (opsional) – Sakelar iscsi bersifat opsional di sini, tetapi untuk memisahkan lalu lintas host dari lalu lintas iscsi dalam penerapan perusahaan, disarankan untuk menggunakan sakelar terpisah untuk lalu lintas iscsi.
Dalam tutorial ini, kita akan melihat cara mengatur node penyimpanan kita sendiri yang mendukung konfigurasi iscsi dan mengakses penyimpanan dari klien iscsi pada mesin Centos 6.
Prosedur yang sama harus bekerja untuk versi RHEL 6 (CentOS 6). Untuk CentOS 7, prosedurnya sedikit berbeda menggunakan targetcli, yang akan kita bahas di artikel yang berbeda.
1. Instal Utilitas Target SCSI dan Mulai tgtd
Pertama, instal scsi-target-utils menggunakan perintah yum pada node penyimpanan, yang diperlukan untuk mengonfigurasi iSCSI.
yum install scsi-target-utils
Jika Anda belum menginstal Perl di sistem Anda, perintah di atas akan menginstal Perl dan beberapa dependensi lainnya (misalnya:sg3_utils) secara otomatis.
Ini akan menginstal perintah tgtadm seperti yang ditunjukkan di bawah ini.
# which tgtadm /usr/sbin/tgtadm
Bintangi daemon target SCSI seperti yang ditunjukkan di bawah ini.
# service tgtd start Starting SCSI target daemon: [ OK ]
Menggunakan perintah chkconfig, pastikan itu dimulai secara otomatis selama startup sistem.
chkconfig tgtd on
2. Tambahkan Target iSCSI Baru menggunakan tgtadm
Gunakan perintah tgtadm untuk menambahkan target iSCSI baru pada node penyimpanan menggunakan sintaks berikut:
tgtadm --lld --mode target --op new --tid --targetname
Contoh berikut membuat target dengan target id 1 dengan iqn di bawah ini,
tgtadm --lld iscsi --op new --mode target --tid 1 \ -T iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com
Pada perintah di atas:
- perintah tgtadm adalah Utilitas Administrasi Target SCSI Linux
- –lld iscsi menentukan bahwa kita menggunakan driver iscsi (Anda juga dapat menggunakan -L sebagai ganti –lld)
- –op new menentukan operasi, dalam hal ini, kami membuat target baru (Anda juga dapat menggunakan -o alih-alih –op)
- –mode target menunjukkan bahwa kita sedang membuat target. Mode lain yang mungkin adalah:logicalunit, account, portal, conn, sys. (Anda juga dapat menggunakan -m sebagai ganti –mode)
- –tid 1 menentukan id target, yaitu 1 dalam contoh ini (Anda juga dapat menggunakan -t sebagai ganti –tid)
- -T menentukan nama target (Anda juga dapat menggunakan –targetname sebagai ganti -T)
3. Lihat konfigurasi Target iSCSI
Setelah target dibuat, Anda dapat melihat detailnya menggunakan operasi "tampilkan" seperti yang ditunjukkan di bawah ini. Ini akan memberikan informasi sistem, dan informasi LUN dari semua target yang tersedia di sistem Anda.
Seperti yang Anda lihat dari output berikut, kami hanya memiliki satu target (Target 1), yaitu driver iSCSI, dengan satu LUN (LUN 0).
# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com 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 Backing store type: null Backing store path: None Backing store flags: Account information: ACL information:
Catatan:Pada output di atas, “Jalur penyimpanan cadangan” saat ini adalah Tidak Ada, karena kami belum mengaitkan jalur penyimpanan fisik apa pun ke iSCSI ini.
4. Tambahkan LUN ke target iSCSI
Pada contoh berikut, kita akan menambahkan lun yang sudah ada, yaitu /storage/lun01 yang terpasang dan tersedia di node penyimpanan kita ke target iSCSI yang kita buat.
Untuk LUN yang ada (/storage/lun01), Anda juga harus mengatur konteks SELinux dengan tepat seperti yang ditunjukkan di bawah ini.
semanage fcontext -a -t tgtd_var_lib_t /storage/lun01 restorecon -Rv /storage/lun01
Jika Anda mendapatkan "Permintaan Tidak Valid", untuk tujuan pengujian sementara, Anda mungkin ingin menonaktifkan SELinux dengan menyetel SELinux ke mode permisif untuk melihat apakah itu menyelesaikan masalah, dan mempersempit masalah ke izin SELinux.
Sekarang, dengan menggunakan perintah tgtadm, tambahkan /storage/lun01 ke target iSCSI yang kita buat sebelumnya.
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 \ --lun 1 --backing-store /storage/lun01
Pada perintah di atas:
- sebagian besar opsi sama seperti yang kami jelaskan di perintah tgtadm kami sebelumnya di atas.
- –unit logika mode. Harap dicatat bahwa sebelumnya kami menggunakan "target" untuk mode, tetapi di sini kami menggunakan logicalunit untuk mode.
- –lun menunjukkan id LUN, yaitu 1 dalam contoh ini (Anda juga dapat menggunakan -l sebagai ganti –lun)
- –backing-store menunjukkan jalur penyimpanan fisik di server penyimpanan. Dalam contoh kita, ini adalah /storage/lun01 (Anda juga dapat menggunakan -b sebagai ganti opsi –backing-store)
- –tid 1 menunjukkan bahwa menghubungkan LUN yang diberikan ini ke target id 1 yang ada, yang kita buat sebelumnya.
Sekarang, lihat kembali detail iSCSI di sistem Anda.
Namun, kali ini, Di LUN 1, “Jalur penyimpanan cadangan” pada output berikut akan menunjuk ke jalur penyimpanan yang kita kaitkan dengan iSCSI ini. Dalam contoh kita, ini adalah /storage/lun01.
# tgtadm --lld iscsi --op show --mode target Target 1: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com System information: Driver: iscsi State: ready I_T nexus information: LUN information: LUN: 1 Type: disk SCSI ID: IET 00010001 SCSI SN: beaf11 Size: 5369 MB, Block size: 512 Online: Yes Removable media: No Prevent removal: No Readonly: No Backing store type: rdwr Backing store path: /storage/lun01 Backing store flags: Account information: ACL information:
Untuk beberapa alasan, jika Anda melakukan kesalahan pada perintah di atas, dan ingin menghapus asosiasi LUN1 yang kita buat di atas, gunakan perintah berikut.
tgtadm --lld iscsi --mode logicalunit --op delete --tid 1 --lun 1
Pada perintah di atas:
- Semuanya sama dengan perintah sebelumnya
- Tapi, di sini -op (yang merupakan operasi) dihapus.
- Ini akan menghapus lun1 dari iSCSI tid 1 (target 1)
5. Siapkan Pembatasan ACL untuk iSCSI
Selanjutnya, Anda perlu mengatur ACL untuk mengizinkan inisiator yang dapat mengakses target scsi ini.
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
Pada perintah di atas:
- Sebagian besar opsi sangat mirip dengan perintah kita sebelumnya
- -I ALL opsi menunjukkan bahwa kami mengizinkan target untuk menerima SEMUA inisiator (Anda juga dapat menggunakan –initiator-address alih-alih -I)
Saat Anda melihat detail iSCSI menggunakan operasi "tampilkan", Anda akan melihat informasi ACL menjelang akhir output seperti yang ditunjukkan di bawah ini.
# tgtadm --lld iscsi --op show --mode target .. .. Backing store path: /storage/lun01 Backing store flags: Account information: ACL information: ALL
Jika Anda ingin membatasi hanya klien yang perlu mengakses penyimpanan, Anda dapat menggunakan perintah berikut dan menentukan alamat ip tertentu.
tgtadm --lld iscsi --mode target --op bind --tid 1 192.168.2.109
Jika Anda ingin membatasi akses ke sub-jaringan tertentu, Anda dapat menentukan sub-jaringan alih-alih alamat ip seperti yang ditunjukkan di bawah ini.
tgtadm --lld iscsi --mode target --op bind --tid 1 192.168.2.0/24
6. Izinkan Akses ke Port 3260
Jika Anda menjalankan ip-tables, tambahkan aturan ip-tables dan izinkan port 3260 seperti yang ditunjukkan di bawah ini.
iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT
Verifikasi bahwa port 3260 terbuka menggunakan perintah netstat seperti yang ditunjukkan di bawah ini.
# netstat -tunlp | grep 3260 tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 1248/tgtd tcp 0 0 :::3260 :::* LISTEN 1248/tgtd
Catatan:Sampai saat ini, semua perintah di atas dijalankan pada node server penyimpanan. Mulai sekarang, semua perintah di bagian berikut akan dijalankan pada mesin klien, yang perlu terhubung ke server penyimpanan.
7. Pada Klien:Temukan iSCSI
Di klien, sebelum Anda menemukan iSCSI, Anda tidak akan melihat disk iSCSI baru. Misalnya, output berikut tidak akan menampilkan apa pun.
fdisk -l /dev/sdb
Sekarang semua konfigurasi sisi target selesai dan lun dapat diakses melalui iscsi dari klien. Prosedur di bawah ini akan menunjukkan cara mengonfigurasi sisi klien untuk mengakses penyimpanan.
Pada server klien, instal paket iscsi-initiator-utils seperti yang ditunjukkan di bawah ini.
yum install iscsi-initiator-utils
Selanjutnya, temukan target iSCSI menggunakan perintah iscsiadm seperti gambar di bawah ini.
[root@client ~]# iscsiadm --mode discovery --type sendtargets \ --portal 192.168.2.166
Perintah di atas akan menampilkan output sebagai berikut:
192.168.2.166:3260,1 iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com
Pada perintah di atas:
- perintah iscsiadm adalah utilitas administrasi open-iscsi
- –mode find menunjukkan bahwa kami menemukan server iSCSI di sini. Mode lain yang mungkin adalah:discoverydb, node, fw, host iface atau session. (Anda juga dapat menggunakan -m sebagai ganti –mode)
- –ketik target pengiriman khusus di sini. Nilai-nilai lain yang memungkinkan adalah:sendtargets, fw, dan iSNS. Anda juga dapat menggunakan singkatan st alih-alih target kirim. (Anda juga dapat menggunakan -t sebagai ganti –type)
- –portal menentukan alamat ip dari node penyimpanan iSCSI yang kita atur sebelumnya (Anda juga dapat menggunakan -p sebagai ganti –portal).
- Untuk ip-address, jika Anda menjalankan iSCSI pada port non-default (apa pun selain 3260), tentukan setelah ip-address. Misalnya, 192.168.2.166:3261
Catatan:Jika Anda mendapatkan kesalahan “Tidak ada rute ke host”, maka iptables pada target atau klien tidak dikonfigurasi dengan benar.
8. Pada Klien:Masuk ke Sesi Target iSCSI
Setelah proses penemuan selesai dengan sukses, Anda harus login ke sesi target iscsi dengan menggunakan perintah berikut:
[root@client ~]# iscsiadm --mode node --targetname iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com \ --portal 192.168.2.166 --login
Perintah di atas akan menampilkan output sebagai berikut:
Logging in to [iface: default, target: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com, portal: 192.168.2.166,3260] (multiple) Login to [iface: default, target: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com, portal: 192.168.2.166,3260] successful.
Pada perintah di atas:
- Sebagian besar opsi mirip dengan perintah sebelumnya.
- Untuk mode, di sini kita menggunakan node (bukan discovery)
- -targetname menentukan nama target. Ini adalah tragetname yang kami tentukan pada node penyimpanan sebelumnya ketika kami membuat iSCSI (Anda juga dapat menggunakan -T sebagai ganti –targetname)
- –opsi login akan login ke semua target yang ditemukan. Dalam kasus kami, itu akan masuk ke server iSCSI penyimpanan kami yang ditentukan dalam opsi –portal.
Sekarang Anda akan melihat perangkat iscsi baru Anda pada output fdisk Anda. Anda dapat memformatnya, menambahkannya ke lvm dan menggunakannya sesuai kebutuhan.
Output perintah fdisk sekarang akan menampilkan perangkat.
[root@client ~]# fdisk -l /dev/sdb Disk /dev/sdb: 5368 MB, 5368709120 bytes 166 heads, 62 sectors/track, 1018 cylinders Units = cylinders of 10292 * 512 = 5269504 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Catatan:Disk di atas tidak berasal dari mesin klien, ini berasal dari server penyimpanan sebagai iSCSI.