FreeBSD iSCSI
Sisukord
Sissejuhatus
iSCSI tehnoloogia võimaldab üle TCP/IP võrgu ühendada klientarvutile külge plokk-seadme vastavat teenust pakkuvast serverist, kusjuures on kombeks kasutada selliseid nimetusi kliendi ja serveri kohta
- initiator - iSCSI klient
- target - iSCSI server
Target ja initiator arvutid võivad kasutada erinevaid operatsioonisüsteeme ning asuda ka erinevatel riistvaralistel platvormidel. Kuna andmevahetuse maht võib kujuneda suureks, siis võib olla mõistlik lisaks kasutusele võtta ainult iSCSI jaoks eraldatud võrgusegment. Tundub, et initiatori osas on suurem arendajate tähelepanu koondunud projektile [1] ning targeti osas projektile [2].
FreeBSD8 versiooniga tuleb kaasa sisseehitatud iSCSI initiator ja iscontrol käsurea utiliit. Kahjuks puudub hetkel iSCSI target.
Selleks, et kasutada iSCSI targetit on olemas kaks rakendus portsudes. Esiteks "iscsi-target" (/usr/ports/net/iscsi-target), mis on vahem ja NetBSD pealt porditud lahendus. Teiseks "istgt" (/usr/ports/net/istgt/), mis kaasaegse, uuem ja originaalselt kirjutatud FreeBSD jaoks ning seda kasutab ka FreeNAS lahendus. Üldiselt soovitatakse tungivalt kasutada võimaluse korral "istgt" tarkvara.
istgt paigaldamine
istgt /usr/ports/net/istgt/
cp auth.conf.sample auth.conf cp istgt.conf.sample istgt.conf cp istgtcontrol.conf.sample istgtcontrol.conf nano istgt.conf /usr/local/etc/rc.d/istgt start
Istgt.conf vaikeseadistustessevõiks teha järgnevad muudatused
# cat /usr/local/etc/istgt/istgt.conf [UnitControl] Comment "Internal Logical Unit Controller" AuthMethod Auto Portal UC1 127.0.0.1:3261 Netmask 127.0.0.1 # You should set IPs in /etc/rc.conf for physical I/F [PortalGroup1] Comment "SINGLE PORT TEST" Portal DA1 193.40.0.189:3260 [InitiatorGroup1] Comment "Initiator Group1" InitiatorName "iqn.1991-05.com.microsoft:saturn" InitiatorName "ALL" Netmask 193.40.0.0/24 # TargetName, Mapping, UnitType, LUN0 are minimum required [LogicalUnit1] Comment "Hard Disk Sample" TargetName disk1 TargetAlias "Data Disk1" # use initiators in tag1 via portals in tag1 Mapping PortalGroup1 InitiatorGroup1 # accept both CHAP and None AuthMethod Auto AuthGroup AuthGroup1 #UseDigest Header Data UseDigest Auto UnitType Disk
# LogicalVolume for this unit on LUN0 LUN0 Storage /dev/zvol/srv/iscsi1 1024GB
Käivitame serveri
# /usr/local/etc/rc.d/istgt start Starting istgt. istgt version 0.3 (20100707) LU1 HDD UNIT LU1: LUN0 file=/dev/zvol/srv/iscsi1, size=1099511627776 LU1: LUN0 2147483648 blocks, 512 bytes/block LU1: LUN0 1024.0GB storage for iqn.2007-09.jp.ne.peach.istgt:disk1 LU1: LUN0 command queuing disabled
Iscsi-targeti paigaldamine
# cd /usr/ports/net/iscsi-target/ # make install ===> Installing rc.d startup script(s) ===> Compressing manual pages for iscsi-target-20080207_2 ===> Registering installation for iscsi-target-20080207_2 ===> SECURITY REPORT: This port has installed the following files which may act as network servers and may therefore pose a remote security risk to the system. /usr/local/bin/iscsi-target This port has installed the following startup scripts which may cause these network services to be started at boot time. /usr/local/etc/rc.d/iscsi_target If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: http://www.netbsd.org/
Seejärel jagame välja füüsilise ketta. See on meil küljes seadmena /dev/ad0 suurusega 70GB
Võrk kuhu jagamine on 192.168.0.0/24
/usr/local/etc/iscsi/targets
# NAME DEVICE START LENGTH extent0 /dev/ad0 0 70GB # NAME ACCESS STORAGE NETMASK target0 rw extent0 192.168.0.0/24
et reboodil automaatselt server starditaks Avame /etc/rc.conf ja lisame rea
iscsi_target_enable="YES"
Ja stardime serveri
# /usr/local/etc/rc.d/iscsi_target start Starting iscsi_target. Reading configuration from `/usr/local/etc/iscsi/targets' target0:rw:193.40.0.0/24 extent0:/dev/ad0:0:75161927680 DISK: 1 logical unit (146800640 blocks, 512 bytes/block), type iscsi fs DISK: LUN 0: 71680 MB disk storage for "target0" TARGET: TargetName is iqn.1994-04.org.netbsd.iscsi-target
Meile oluline info on siin nimieks olev qn.1994-04.org.netbsd.iscsi-target seda läheb kliendi juures meil hiljem vaja
Kliendi seadistus
Esimesena on vajalik teha seadistusfail kust ja mida on võimalik külge haakida
/etc/iscsi.conf
target0 { targetaddress = 193.40.0.194 targetname = iqn.1994-04.org.netbsd.iscsi-target:target0 }
Laadime seejärel iscsi mooduli mis FreeBSD7'mes vaikuimisi juba kaasas
# kldload iscsi_initiator
Selleks ,et automaatselt moodul laaditaks lisame rc.confi read
iscsi_initiator_load="YES"
Ning haagime seejärel ketta külge
# iscontrol -n target0 # iscontrol[1464]: running iscontrol[1464]: (pass1:iscsi0:0:0:0): tagged openings now 0 iscontrol[1464]: cam_open_btl: no passthrough device found at 1:0:1 iscontrol[1464]: cam_open_btl: no passthrough device found at 1:0:2 iscontrol[1464]: cam_open_btl: no passthrough device found at 1:0:3 iscontrol: supervise starting main loop
dmesgi/message logi peaks ilmuma read
da1 at iscsi0 bus 0 target 0 lun 0 da1: <NetBSD NetBSD iSCSI 0> Fixed Direct Access SCSI-3 device
Kasutamine ja katsetamine
Värskelt masinasse ilmunud block devicele uus failisüsteem
# newfs /dev/da1 /dev/da1: 71680.0MB (146800640 sectors) block size 16384, fragment size 2048 using 391 cylinder groups of 183.77MB, 11761 blks, 23552 inodes. super-block backups (for fsck -b #) at: 160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976, 3387328, 3763680, 4140032, 4516384, 4892736, 5269088, 5645440, 6021792, 6398144, 6774496, 7150848, 7527200, 7903552, 8279904, 8656256, 9032608, 9408960, 9785312, 10161664, 10538016, 10914368, 11290720, 11667072, 12043424, 12419776, 12796128, 13172480, 13548832, 13925184, 14301536, 14677888, 15054240, 15430592, 15806944, 16183296, 16559648, 16936000, 17312352, 17688704, 18065056 ...
Seejärel ühendame selle külge /home/net alla
# mount /dev/da1 /home/net/ # df Filesystem 1K-blocks Used Avail Capacity Mounted on ... /dev/da1 71085512 4 65398668 0% /usr/home/net
Ja testime 1.1gigabaidise failiga kirjutuskiirust 100Mb võrgus
# dd if=/dev/zero of=zero-file bs=1024 count=1048576 1048576+0 records in 1048576+0 records out 1073741824 bytes transferred in 117.719325 secs (9121203 bytes/sec)
ZFS volume jagamine
Toimub sarnasent nagu tavalise kettagagi. Tekitame näiteks 10Gb suuruse zfs volume ja jagame selle võrku
# zfs create -V 1024g tank/iscsi
Vaatame zfs loendit
# zfs list NAME USED AVAIL REFER MOUNTPOINT tank 1.00T 1.56T 28.8K /tank tank/iscsi 1T 2.56T 25.6K -
/usr/local/etc/iscsi/targets
extent0 /dev/zvol/tank/iscsi 0 1024GB target0 rw extent0 10.0.0.0/24
Käivitame iSCSI
# /usr/local/etc/rc.d/iscsi_target forcestart Starting iscsi_target. Reading configuration from `/usr/local/etc/iscsi/targets' target0:rw:10.0.0.0/24 extent0:/dev/zvol/tank/iscsi:0:1099511627776 DISK: 1 logical unit (2147483648 blocks, 512 bytes/block), type iscsi fs DISK: LUN 0: 1048576 MB disk storage for "target0" TARGET: TargetName is iqn.1994-04.org.netbsd.iscsi-target
Ja edasi toimime ülal leiduva juhendi alusel nt võime üritada kliendi poolelt seda külge haakida.
ISCSi targeti ühendamine testimine Linuxis
Haagime iscsi targetid lihtsalt külge:
Vaatame mis kettad saadaval
# iscsiadm -m discovery -t sendtargets -p 193.40.0.194:3260 193.40.0.194:3260,1 katsetaja.eenet.ee:storage.disk1 193.40.0.194:3260,1 katsetaja.eenet.ee:storage.disk4 193.40.0.194:3260,1 katsetaja.eenet.ee:storage.disk3 193.40.0.194:3260,1 katsetaja.eenet.ee:storage.disk2
Haagime neist esimese külge
# iscsiadm -m node -T katsetaja.eenet.ee:storage.disk1 -p 193.40.0.194:3260 -l
iscsi target ilmub seejärel /dev/sdX seadmena, millega on võimalik opereerida nagu tavalise kettaga. Lahtihaakimiseks:
# iscsiadm -m node -T katsetaja.eenet.ee:storage.disk1 -p 193.40.0.194:3260 -u
Esimeseks on hea tarkvara nimega iperf
[ 3] 0.0-10.0 sec 112 MBytes 94.2 Mbits/sec
Seejärel hdparm
# hdparm -tT /dev/sdc /dev/sdc: Timing cached reads: 1670 MB in 2.00 seconds = 834.83 MB/sec Timing buffered disk reads: 34 MB in 3.11 seconds = 10.92 MB/sec
Abiks on ka ajatu käsk dd
# dd if=/dev/sdb of=/dev/null bs=1024k count=1024 1073741824 bytes (1.1 GB) copied, 8.17863 s, 131 MB/s
- http://www.cyberciti.biz/faq/freebsd-iscsi-initiator-howto/ kerneli mooduli baasil
- http://blogs.sun.com/rarneson/entry/zfs_clones_iscsi_and_vmware snapshot ja kloon isgsi zfs kettal