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.
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 asub portsude kaustas /usr/ports/net/istgt/
# cp auth.conf.sample auth.conf # cp istgt.conf.sample istgt.conf # cp istgtcontrol.conf.sample istgtcontrol.conf
Istgt.conf (/usr/local/etc/istgt/istgt.conf) on üsna pikk ja paljude võimalustega fail seega tooks välja vaid kõige lihtsamad muudatused mis vajalikud, et jagamine tööle hakkals. Selleks vaikeseadistustesse võiks teha järgnevad muudatused:
Lülitada [UnitControl] autentimine esialgu välja
AuthMethod Auto #AuthMethod CHAP Mutual #AuthGroup AuthGroup10000
Lisada [PortalGroup1] alla enda seadme IP aadressi ja pordi millel tarkvara kuulab
Portal DA1 193.40.0.189:3260
[InitiatorGroup1] lubaks võrgu mis pääseb ligi
InitiatorName "ALL" Netmask 193.40.0.0/24
Ning seadistada seejärels [LogicalUnit1] juures enda block seadme mida jagatakse võrku ning selle suuruse
LUN0 Storage /dev/zvol/srv/iscsi1 Auto
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
http://wiki.virtastic.com/display/howto/FreeBSD+7.2+with+ZFS+as+an+iSCSI+target
http://people.freebsd.org/~rse/iscsi/iscsi.txt
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
Laadime seejärel iscsi mooduli mis FreeBSD7'mest alates vaikuimisi juba kaasas
# kldload iscsi_initiator
Vaatame mis jaotised saadaval on
# iscontrol -v -d targetaddress=10.4.4.1 initiatorname=server
- Targetaddress - iSCSI serveri aadress
- initatorname - kliendi unikaalne nimi (võib kirjutada ka täisnime nt: iqn.2004-04.org.freebsd:initiator-server1).
Kui see pole määratud tekitab bsd automaatselt iqn.2005-01.il.ac.huji.cs:<hostname>
Esimesena on vajalik teha seadistusfail kust ja mida on võimalik külge haakida
/etc/iscsi.conf
target0 { targetaddress = 193.40.0.194 initiatorname = iqn.2004-04.org.freebsd:initiator-server1 targetname = iqn.1994-04.org.netbsd.iscsi-target:target0 }
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)
Jõudlus
FreeBSD süsteemis iSCSI jõudluse suurendamiseks
Vaatame
:~# camcontrol tags /dev/da2 (pass8:iscsi0:0:0:1): device openings: 1
Muudame
:~# camcontrol tags /dev/da2 -N 256 (pass8:iscsi0:0:0:1): tagged openings now 256 (pass8:iscsi0:0:0:1): device openings: 256
Kontrollime kas muutus
:~# camcontrol tags /dev/da2 (pass8:iscsi0:0:0:1): device openings: 256
ZFS volume jagamine
Toimub sarnasent nagu tavalise kettagagi. Tekitame näiteks terabaidi suuruse zfs volume
# 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 -
Fail tekib ise /dev/zvol/ kausta
Antud juhul on selleks
/dev/zvol/tank/iscsi
Mille võib jagada kas istg või iscsi-target abil välja jagada kasutades eelnevaid juhendeid. Hetkel kahjuks ZFSi enda iSCSI jagamise käsk ei toimi kuna FreeBSD ei sisalda iSCSI targetit vaikimisi.
Multipath FreeBSD peal
Esimesest allikast
da2 at iscsi0 bus 0 scbus7 target 0 lun 1 da2: <HP HSV360 0005> Fixed Direct Access SCSI-5 device da2: 33554432MB (68719476736 512 byte sectors: 255H 63S/T 4277589C)
Teisest allikast
da3 at iscsi1 bus 0 scbus8 target 0 lun 1 da3: <HP HSV360 0005> Fixed Direct Access SCSI-5 device da3: 33554432MB (68719476736 512 byte sectors: 255H 63S/T 4277589C)
Tekitamine
# gmultipath create -A HPHSV360 /dev/da2 /dev/da3 GEOM_MULTIPATH: HPHSV360 created GEOM_MULTIPATH: da2 added to HPHSV360 GEOM_MULTIPATH: da3 added to HPHSV360
Zfsi tekitamine
# zpool import -d /dev/multipath zp1 :~> zpool status pool: zp1 state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zp1 ONLINE 0 0 0 multipath/HPHSV360 ONLINE 0 0 0
Testime
2 users Load 1.42 0.57 0.28 Jan 9 16:15 Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER Tot Share Tot Share Free in out in out Act 37016 7348 658832 9388 3361376 count All 249884 9264 1074623k 41908 pages Proc: Interrupts r p d s w Csw Trp Sys Int Sof Flt cow 22784 total 1 27 91k 13 93k 18k 2536 zfod ata0 14 ozfod ohci0 ohci 40.6%Sys 0.6%Intr 10.4%User 0.0%Nice 48.4%Idle %ozfod 5831 em2 24 | | | | | | | | | | | daefr 5572 em3 25 ====================+>>>>> prcfr 7066 em0 26 5 dtbuf 38763 totfr mpt0 28 Namei Name-cache Dir-cache 151513 desvn react 1097 cpu0:timer Calls hits % hits % 8659 numvn pdwak 1123 cpu1:timer 3 3 100 2101 frevn pdpgs 1040 cpu3:timer intrn 1055 cpu2:timer Disks da0 da1 da2 da3 cd0 cd1 pass0 519664 wire KB/t 0.00 0.00 62.04 62.17 0.00 0.00 0.00 23620 act tps 0 0 1264 1219 0 0 0 24052 inact MB/s 0.00 0.00 76.55 74.00 0.00 0.00 0.00 cache %busy 0 0 84 77 0 0 0 3361888 free 269248 buf
Zfsil võiks lasta mälusäästu huvides käsnata üksnes metadatat.