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/sdb1
tadi :root@dev01:~# mkdir /iscsidisk
- Mounting partisi
/dev/sdb1
root@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.