iSCSI adalah teknologi yang biasa digunakan untuk menghubungkan server dengan SAN (storage area network). Biasanya harddisk terhubung langsung dengan server melalui konektor seperti SATA, SCSI, atau SAS. Protokol iSCSI mengemulasikan koneksi SCSI melalui jaringan TCP/IP. Keuntungan utamanya adalah fleksibilitas dalam menyambungkan server dengan storage (atau disk array). Jauh lebih flexible karena koneksinya melalui jaringan TCP/IP. Untuk mendapat throughput yang cukup untuk keperluan transfer data, tentu perlu koneksi yang cukup stabil & setidaknya memiliki bandwidth 1 Gbps melalui Gigabit Ethernet.
Dalam terminologi iSCSI setidaknya ada 2 istilah penting yang perlu kita kenal :
- iSCSI Target : ini adalah server yang memiliki storage & membagi-bagikannya kepada server lain yang membutuhkan.
- iSCSI Initiator : ini adalah client yang akan butuh storage dengan mengakses iSCSI Target.

Dalam tulisan ini saya akan menulis langkah-langkah sederhana untuk membuat CentOS Linux sebagai iSCSI Target & juga sebagai iSCSI Initiator seperti pada gambar di atas. Server yang akan menjadi iSCSI Target adalah sansvr01, sementara server yang menjadi iSCSI Initiator adalah dev01. Idenya adalah server dev01 membutuhkan tambahan storage, server ini akan menggunakan storage yang di-share oleh sansvr01.
Untuk komunikasi iSCSI, kedua server akan menggunakan network 172.16.10.0/24. Network ini terpisah dari public network 192.168.10.0/24.
Menyiapkan iSCSI Target
Mesin sansvr01 menggunakan CentOS 6.5 & mempunyai konfigurasi IP seperti berikut ini :
root@sansvr01:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:8b:ec:a5 brd ff:ff:ff:ff:ff:ff
inet 172.16.10.5/24 brd 172.16.10.255 scope global eth1
inet6 fe80::5054:ff:fe8b:eca5/64 scope link
valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:66:ec:19 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.111/24 brd 192.168.10.255 scope global eth0
inet6 fe80::5054:ff:fe66:ec19/64 scope link
valid_lft forever preferred_lft forever
root@sansvr01:~#
Mesin sansvr01 memiliki 2 buah harddisk yaitu sda (boot disk-nya) & sdb (harddisk yang akan dijadikan shared storage). :
root@sansvr01:~# fdisk -l Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0002d485 Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 64 1045 7875584 8e Linux LVM Disk /dev/sdb: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg_sansvr01-lv_root: 7205 MB, 7205814272 bytes 255 heads, 63 sectors/track, 876 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg_sansvr01-lv_swap: 855 MB, 855638016 bytes 255 heads, 63 sectors/track, 104 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 root@sansvr01:~#
Pertama saya perlu menyiapkan /dev/sdb terlebih dulu. Dengan menggunakan perintah fdisk saya membuat 1 partisi /dev/sdb1 :
root@sansvr01:~# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x7943fd2f.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044):
Using default value 1044
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
root@sansvr01:~#
Saya memilih untuk mengatur shared disk-nya menggunakan LVM. Ada 3 langkah yang perlu dilakukan untuk membuat logical volume yang akan dibagikan ke semua iSCSI Client.
- Inisialisasi partisi dengan perintah
pvcreate:root@sansvr01:~# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created root@sansvr01:~# root@sansvr01:~# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg_sansvr01 lvm2 a-- 7.51g 0 /dev/sdb1 vg_shareddisk lvm2 a-- 8.00g 8.00g root@sansvr01:~#
- Membuat volume group baru dengan perintah
vgcreate. Pada contoh ini saya membuat grup baru dengan nama “vg_shareddisk” :root@sansvr01:~# vgcreate vg_shareddisk /dev/sdb1 Volume group "vg_shareddisk" successfully created root@sansvr01:~# root@sansvr01:~# vgs VG #PV #LV #SN Attr VSize VFree vg_sansvr01 1 2 0 wz--n- 7.51g 0 vg_shareddisk 1 0 0 wz--n- 8.00g 8.00g root@sansvr01:~#
- Membuat logical volume yang nantinya akan di-share kepada iSCSI Client. Dalam contoh ini saya membuat sebuah logical volume berukuran 500MB & menamainya “shared01” :
root@sansvr01:~# lvcreate -n shared01 -L +500M vg_shareddisk Logical volume "shared01" created root@sansvr01:~# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv_root vg_sansvr01 -wi-ao---- 6.71g lv_swap vg_sansvr01 -wi-ao---- 816.00m shared01 vg_shareddisk -wi-a----- 500.00m root@sansvr01:~#
Setelah menyiapkan logical volume, langkah berikutnya adalah menginstal semua paket yang diperlukan oleh iSCSI Server ini. Di RedHat atau CentOS paket-paket yang diperlukan tersedia dalam grup paket “Network Storage Server” :
root@sansvr01:~# yum groupinstall "Network Storage Server" root@sansvr01:~# rpm -aq | grep scsi-target scsi-target-utils-1.0.24-10.el6.x86_64 root@sansvr01:~#
tgtd adalah nama daemon dari iSCSI Server. Kita bisa melihat berkas-berkas yang termasuk dalam paket scsi-target-utils tadi dengan menggunakan perintah berikut ini :
root@sansvr01:~# rpm -ql scsi-target-utils-1.0.24-10.el6.x86_64 /etc/rc.d/init.d/tgtd /etc/sysconfig/tgtd /etc/tgt/targets.conf /usr/sbin/tgt-admin /usr/sbin/tgt-setup-lun /usr/sbin/tgtadm /usr/sbin/tgtd /usr/sbin/tgtimg /usr/share/doc/scsi-target-utils-1.0.24 /usr/share/doc/scsi-target-utils-1.0.24/README /usr/share/doc/scsi-target-utils-1.0.24/README.iscsi /usr/share/doc/scsi-target-utils-1.0.24/README.iser /usr/share/doc/scsi-target-utils-1.0.24/README.lu_configuration /usr/share/doc/scsi-target-utils-1.0.24/README.mmc /usr/share/man/man5/targets.conf.5.gz /usr/share/man/man8/tgt-admin.8.gz /usr/share/man/man8/tgt-setup-lun.8.gz /usr/share/man/man8/tgtadm.8.gz root@sansvr01:~#
Berikutnya saya tinggal mendaftarkan logical volume yang sudah dibuat tadi. Mari kita lihat lagi logical volume “shared01” dengan menggunakan perintah lvs :
root@sansvr01:~# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv_root vg_sansvr01 -wi-ao---- 6.71g lv_swap vg_sansvr01 -wi-ao---- 816.00m shared01 vg_shareddisk -wi-a----- 500.00m root@sansvr01:~#
Logical volume “shared01” memiliki alamat device seperti berikut ini :
root@sansvr01:~# ls /dev/mapper/vg_shareddisk-shared01 /dev/mapper/vg_shareddisk-shared01 root@sansvr01:~#
Saya perlu mendaftarkan logical volume tersebut ke dalam berkas /etc/tgt/targets.conf. Berkas targets.conf memuat daftar semua harddisk (logical volume) yang dimiliki oleh iSCSI Server. Berikut ini adalah contoh konfigurasi yang perlu ditambahkan ke dalam berkas targets.conf :
<target iqn.2014-04.localdomain:sansvr01.shared01>
backing-store /dev/mapper/vg_shareddisk-shared01
</target>
Setiap harddisk atau logical volume yang diatur oleh iSCSI Server dikenal sebagai “target”. Tiap target harus memiliki nama yang unik dalam satu jaringan. Ada konvensi penulisan nama target, aturan ini dikenal dengan “iSCSI Qualified Name” (IQN). IQN ini kurang lebih seperti ini aturannya :
iqn.[informasi tanggal].[domain]:[hostname server].[shared disk name]
Setelah selesai mendaftarkan logical volume, saya bisa langsung mengaktifkan service tgtd seperti pada contoh berikut ini :
root@sansvr01:~# service --status-all | grep tgt tgtd is stopped root@sansvr01:~# service tgtd start Starting SCSI target daemon: [ OK ] root@sansvr01:~# service tgtd status tgtd (pid 1458 1455) is running... root@sansvr01:~#
Penting juga untuk mengatur tgtd supaya otomatis aktif saat proses booting :
root@sansvr01:~# chkconfig tgtd on root@sansvr01:~# chkconfig tgtd --list tgtd 0:off 1:off 2:on 3:on 4:on 5:on 6:off root@sansvr01:~#
Kita bisa lihat status shared disk dengan perintah tgt-admin seperti contoh berikut ini :
root@sansvr01:~# tgt-admin -s -v
tgtadm -C 0 --op show --mode target
Target 1: iqn.2014-04.localdomain:sansvr01.shared01
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:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 524 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/mapper/vg_shareddisk-shared01
Backing store flags:
Account information:
ACL information:
ALL
root@sansvr01:~#
Bila sudah muncul tampilan seperti contoh di atas, itu artinya logical volume sudah siap diakses oleh iSCSI Client.
Kita bisa menambahkan ACL (access control list) pada berkas targets.conf tadi. ACL ini fungsinya untuk membatasi hanya iSCSI Client tertentu saja yang berhak mengakses shared disk tersebut. Pada contoh di bawah ini saya mengatur tgtd supaya hanya mengijinkan akses dari client yang memiliki IP 172.16.10.31 :
root@sansvr01:~# cat /etc/tgt/targets.conf
default-driver iscsi
<target iqn.2014-04.localdomain:sansvr01.shared01>
backing-store /dev/mapper/vg_shareddisk-shared01
initiator-address 172.16.10.31
</target>
root@sansvr01:~#
Tiap kali kita mengubah konfigurasi berkas targes.conf tadi, kita perlu me-restart tgtd :
root@sansvr01:~# service tgtd restart Stopping SCSI target daemon: [ OK ] Starting SCSI target daemon: [ OK ] root@sansvr01:~#
Status ACL bisa dilihat dari hasil perintah tgt-admin seperti pada contoh di bawah ini :
root@sansvr01:~# tgt-admin -s
Target 1: iqn.2014-04.localdomain:sansvr01.shared01
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:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 524 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/mapper/vg_shareddisk-shared01
Backing store flags:
Account information:
ACL information:
172.16.10.31
root@sansvr01:~#
Selain perintah tgt-admin tadi, kita juga bisa gunakan perintah tgtadm seperti contoh berikut ini :
root@sansvr01:~# tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2014-04.localdomain:sansvr01.shared01
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:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 524 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/mapper/vg_shareddisk-shared01
Backing store flags:
Account information:
ACL information:
172.16.10.31
root@sansvr01:~#
Menyiapkan iSCSI Initiator
Mesin dev01 menggunakan CentOS 6.5 & mempunyai konfigurasi IP seperti berikut ini :
root@dev01:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:ec:9b:73 brd ff:ff:ff:ff:ff:ff
inet 172.16.10.31/24 brd 172.16.10.255 scope global eth1
inet6 fe80::5054:ff:feec:9b73/64 scope link
valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:a6:28:13 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.31/24 brd 192.168.10.255 scope global eth0
inet6 fe80::5054:ff:fea6:2813/64 scope link
valid_lft forever preferred_lft forever
root@dev01:~#
Mesin dev01 hanya memiliki satu buah harddisk (/dev/sda) :
root@dev01:~# fdisk -l Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0002d485 Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 64 1045 7875584 8e Linux LVM Disk /dev/mapper/vg_dev01-lv_root: 7205 MB, 7205814272 bytes 255 heads, 63 sectors/track, 876 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg_dev01-lv_swap: 855 MB, 855638016 bytes 255 heads, 63 sectors/track, 104 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 root@dev01:~# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg_dev01 lvm2 a-- 7.51g 0 root@dev01:~# vgs VG #PV #LV #SN Attr VSize VFree vg_dev01 1 2 0 wz--n- 7.51g 0 root@dev01:~# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv_root vg_dev01 -wi-ao---- 6.71g lv_swap vg_dev01 -wi-ao---- 816.00m root@dev01:~#
Di mesin yang akan menjadi iSCSI Client ini, kita perlu menginstal paket iscsi-initiator-utils. Paket ini bisa juga diperoleh dari YUM grup “iSCSI Storage Client”
root@dev01:~# yum groupinstall "iSCSI Storage Client" root@dev01:~# rpm -aq | grep iscsi-initiator-utils iscsi-initiator-utils-6.2.0.873-10.el6.x86_64 root@dev01:~#
Setelah paket iscsi-initiator-utils terpasang, kita perlu mengaktifkan service iscsid dan iscsi :
root@dev01:~# service iscsid start root@dev01:~# service iscsi start
Penting untuk memastikan kedua servis tersebut aktif otomatis saat proses booting :
root@dev01:~# chkconfig iscsid on root@dev01:~# chkconfig iscsi on
Sampai tahap ini mesin dev01 sudah siap untuk mengakses iSCSI Target dari mesin sansvr01. Kita bisa gunakan perintah iscsiadm untuk melakukan scanning semua iSCSI Target yang tersedia (atau lebih tepatnya iSCSI Target yang sudah disediakan oleh sansvr01). Perintahnya seperti contoh di bawah ini :
root@dev01:~# iscsiadm --mode discovery --type sendtargets --portal 172.16.10.5:3260 --discover iscsiadm: cannot make connection to 172.16.10.5: No route to host iscsiadm: cannot make connection to 172.16.10.5: No route to host iscsiadm: cannot make connection to 172.16.10.5: No route to host iscsiadm: cannot make connection to 172.16.10.5: No route to host iscsiadm: cannot make connection to 172.16.10.5: No route to host iscsiadm: cannot make connection to 172.16.10.5: No route to host iscsiadm: connection login retries (reopen_max) 5 exceeded iscsiadm: Could not perform SendTargets discovery: encountered connection failure root@dev01:~#
Bila muncul error “No route to host” seperti ini, kita perlu memeriksa konektivitas antara iSCSI Client (dev01) dan iSCSI Server-nya (sansvr01). Pertama kita bisa gunakan perintah ping. Kedua mesin ini akan menggunakan network 172.16.10.0/24 untuk komunikasi iSCSI. Jadi pada contoh ini, yang diakses oleh mesin dev01 adalah IP 172.16.10.5.
root@dev01:~# ping 172.16.10.5 PING 172.16.10.5 (172.16.10.5) 56(84) bytes of data. 64 bytes from 172.16.10.5: icmp_seq=1 ttl=64 time=1.28 ms 64 bytes from 172.16.10.5: icmp_seq=2 ttl=64 time=0.951 ms 64 bytes from 172.16.10.5: icmp_seq=3 ttl=64 time=0.974 ms 64 bytes from 172.16.10.5: icmp_seq=4 ttl=64 time=0.946 ms 64 bytes from 172.16.10.5: icmp_seq=5 ttl=64 time=0.939 ms ^C --- 172.16.10.5 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4551ms rtt min/avg/max/mdev = 0.939/1.019/1.287/0.137 ms root@dev01:~#
Bila iSCSI Client dapat melakukan ping ke mesin iSCSI Server, berikutnya kita perlu memastikan port 3260 sudah tersedia (LISTEN) di iSCSI Server. Caranya kita bisa coba telnet port tersebut.
root@dev01:~# telnet 172.16.10.5 3260 -bash: telnet: command not found root@dev01:~#
Bila perintah telnet tidak tersedia, kita perlu instal paket telnet terlebih dulu :
root@dev01:~# yum install telnet
Lalu kita coba lagi telnet port 3260 :
root@dev01:~# telnet 172.16.10.5 3260 Trying 172.16.10.5... telnet: connect to address 172.16.10.5: No route to host root@dev01:~#
Bila iSCSI Client masih belum bisa melakukan telnet ke port 3260, kita perlu cek dulu apakah servis tgtd benar-benar aktif di iSCSI Server :
root@sansvr01:~# service tgtd status tgtd (pid 1365 1362) is running... root@sansvr01:~# netstat -plunt | grep 3260 tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 1362/tgtd tcp 0 0 :::3260 :::* LISTEN 1362/tgtd root@sansvr01:~#
Bila ternyata servis tgtd sudah aktif & port 3260 sudah tersedia, maka dapat dipastikan port 3260 ini terblok oleh firewall. Kita perlu membuka akses port 3260 ini supaya semua iSCSI Client bisa mengakses shared disk melalui protokol iSCSI. Berikut adalah contoh perintah iptables untuk membuka akses port 3260 dari semua mesin di jaringan 172.16.10.0/24.
root@sansvr01:~# iptables -I INPUT -p tcp -s 172.16.10.0/24 --dport 3260 -j ACCEPT root@sansvr01:~# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] root@sansvr01:~#
Setelah kita selesai mengatur firewall, kita bisa coba lagi untuk melakukan telnet dari iSCSI Client :
root@dev01:~# telnet 172.16.10.5 3260 Trying 172.16.10.5... Connected to 172.16.10.5. Escape character is '^]'. ^] telnet> q Connection closed. root@dev01:~#
Bila perintah telnet sukses mengakses port 3260, kita bisa coba perintah iscsiadm tadi sekali lagi :
root@dev01:~# iscsiadm --mode discovery --type sendtargets --portal 172.16.10.5:3260 --discover Starting iscsid: [ OK ] 172.16.10.5:3260,1 iqn.2014-04.localdomain:sansvr01.shared01 root@dev01:~#
Sekarang mesin dev01 sudah mengenali ada 1 shared disk yang disediakan oleh mesin sansvr01 (iqn.2014-04.localdomain:sansvr01.shared01). Setelah itu kita gunakan perintah iscsiadm lagi untuk mengakses iqn.2014-04.localdomain:sansvr01.shared01, kali ini dengan opsi --login.
root@dev01:~# iscsiadm --mode node --targetname="iqn.2014-04.localdomain:sansvr01.shared01" --portal 172.16.10.5:3260 --login root@dev01:~#
Bila perintah tadi sukses dijalankan, sekarang dev01 sudah memiliki 1 buah hardisk baru. Mesin dev01 sukses mengakses iSCSI Target “shared01”, terdeteksi oleh dev01 sebagai /dev/sdb :
root@dev01:~# fdisk -l Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0002d485 Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 64 1045 7875584 8e Linux LVM Disk /dev/mapper/vg_dev01-lv_root: 7205 MB, 7205814272 bytes 255 heads, 63 sectors/track, 876 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg_dev01-lv_swap: 855 MB, 855638016 bytes 255 heads, 63 sectors/track, 104 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdb: 524 MB, 524288000 bytes 17 heads, 59 sectors/track, 1020 cylinders Units = cylinders of 1003 * 512 = 513536 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 root@dev01:~#
Setelah mesin dev01 sukses mengakses shared disk “shared01” tersebut, selanjutnya kita bisa gunakan “shared01” ini seperti layaknya internal harddisk. Langkah-langkah untuk menyiapkan iSCSI disk misalnya seperti ini :
- Membuat partisi baru :
root@dev01:~# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x636c0fb3. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1020, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-1020, default 1020): Using default value 1020 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. root@dev01:~# fdisk -l /dev/sdb Disk /dev/sdb: 524 MB, 524288000 bytes 17 heads, 59 sectors/track, 1020 cylinders Units = cylinders of 1003 * 512 = 513536 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x636c0fb3 Device Boot Start End Blocks Id System /dev/sdb1 1 1020 511500+ 83 Linux root@dev01:~# - Membuat filesystem baru pada partisi
/dev/sdb1, pada contoh ini saya pilih filesystemext4:root@dev01:~# mkfs.ext4 /dev/sdb1 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 128016 inodes, 511500 blocks 25575 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67633152 63 block groups 8192 blocks per group, 8192 fragments per group 2032 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 27 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. root@dev01:~# - Membuat mountpoint untuk
/dev/sdb1tadi :root@dev01:~# mkdir /iscsidisk
- Mounting partisi
/dev/sdb1root@dev01:~# mount /dev/sdb1 /iscsidisk root@dev01:~# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_dev01-lv_root 6.7G 748M 5.6G 12% / tmpfs 499M 0 499M 0% /dev/shm /dev/sda1 485M 32M 428M 7% /boot /dev/sdb1 484M 11M 449M 3% /iscsidisk root@dev01:~# touch test root@dev01:~# ls -tlr /iscsidisk/ total 13 drwx------. 2 root root 12288 Apr 9 00:41 lost+found -rw-r--r--. 1 root root 0 Apr 9 00:43 test root@dev01:~#
Kira-kira seperti itu cara sederhana untuk menyiapkan shared disk via protokol iSCSI sekaligus mengatur iSCSI Initiator-nya.