Portál AbcLinuxu, 1. května 2025 06:58
Právě teď si doma vytvářím důmslnný systém tenkého klienta, rozhodl jsem se odstranit všechny pevné disky ze svého PC a vše co půjde přesunout na nějaký server, který bude schovaný mimo a poběží stále.
V následujících dnech a týdnech sem popíšu moje řešení nejspíš do 2 dalších blogů, první o přechodu na nfs a druhý o vytvoření streamovacího serveru pro TV postaveného na VDR obsahující podrobný návod jak na to a zkušenosti s provozem. Dnes se však jen krátce zmíním o jiném typu sdílení disků a tím je protokol iSCSI.
Proč vlastně chtít protokol iSCSI, když už tu máme různé další způsoby sdílení disků jako NFS, či SAMBU (nebo CIFS), především je to proto, že tento protokol dovoluje sdílet celý disk jako jednotku a klient se k takovému disku chová jako ke svému vlastnímu, disk se po připojení ukáže jako /dev/sdXY.
A proč jsem ho potřeboval použít? Je to jednoduché, na NFS mi nefungoval ani SWAP a bohužel ani VMware server, který potřebuji ke své práci.
Jak tedy takový iSCSI target a initiator vlastně rozchodit?
Předopkládejme že na serveru máme nainstalovaný iSCSI Enterprise Target, pro mé účely jsem musel použít aktuální SVN verzi, protože stabilní verze nepodporuje novější kernely, a já potřeboval použít kernel 2.6.20.6. Pokud se vše povede zkompilovat a nainstalovat stačí spustit tento program příkazem
/etc/init.d/iscsi-targetpoté se vytvoří soubor /etc/ietd.conf, což je konfigurační soubor serveru ve kterém nastavíme sdílené disky. Můj konfigurační soubor vypadá takto, provedl jsem jen pár úprav pro zrychlení práce s diskem na sítích s vyšší propustností (používám 1Gbit síť):
# Example iscsi target configuration # # Everything until the first target definition belongs # to the global configuration. # Right now this is only the user configuration used # during discovery sessions. "IncomingUser" specifies credentials the # initiator has to provide - several of these are supported. If mutual # CHAP shall be employed, "OutgoingUser" specifies the user/pass # combination the target will provide - only one is supported. # Leave them alone (keep them commented out) if you don't want to use # authentication for discovery sessions. #iSNSServer 192.168.1.16 #iSNSAccessControl No #IncomingUser joe secret #OutgoingUser jack 12charsecret # Targets definitions start with "Target" and the target name. # The target name must be a globally unique name, the iSCSI # standard defines the "iSCSI Qualified Name" as follows: # # iqn.yyyy-mm.reversed domain name[:identifier] # # "yyyy-mm" is the date at which the domain is valid and the identifier # is freely selectable. For further details please check the iSCSI spec. Target iqn.2007-04.cz.server:storage.disk.sdb # Users, who can access this target. The same rules as for discovery # users apply here. # Leave them alone if you don't want to use authentication. IncomingUser mirek heslo55 #OutgoingUser # Logical Unit definition # You must define one logical unit at least. # Block devices, regular files, LVM, and RAID can be offered # to the initiators as a block device. Lun 0 Path=/dev/sdb,Type=fileio # Alias name for this target # Alias Test # various iSCSI parameters # (not all are used right now, see also iSCSI spec for details) #MaxConnections 1 InitialR2T No ImmediateData Yes MaxRecvDataSegmentLength 262144 MaxXmitDataSegmentLength 262144 MaxBurstLength 16776192 FirstBurstLength 262144 #MaxRecvDataSegmentLength 8192 #MaxXmitDataSegmentLength 8192 #MaxBurstLength 262144 #FirstBurstLength 65536 #DefaultTime2Wait 2 #DefaultTime2Retain 20 MaxOutstandingR2T 8 #DataPDUInOrder Yes #DataSequenceInOrder Yes #ErrorRecoveryLevel 0 #HeaderDigest CRC32C,None #DataDigest CRC32C,None # various target parameters Wthreads 8 Target iqn.2007-04.cz.server:storage.disk.sdd # Users, who can access this target. The same rules as for discovery # users apply here. # Leave them alone if you don't want to use authentication. IncomingUser mirek heslo55 #OutgoingUser jim 12charpasswd # Logical Unit definition # You must define one logical unit at least. # Block devices, regular files, LVM, and RAID can be offered # to the initiators as a block device. Lun 0 Path=/dev/sdd,Type=fileio # Alias name for this target # Alias Test # various iSCSI parameters # (not all are used right now, see also iSCSI spec for details) #MaxConnections 1 InitialR2T No ImmediateData Yes MaxRecvDataSegmentLength 262144 MaxXmitDataSegmentLength 262144 MaxBurstLength 16776192 FirstBurstLength 262144 #DefaultTime2Wait 2 #DefaultTime2Retain 20 MaxOutstandingR2T 8 #DataPDUInOrder Yes #DataSequenceInOrder Yes #ErrorRecoveryLevel 0 #HeaderDigest CRC32C,None #DataDigest CRC32C,None # various target parameters Wthreads 8po nastavení opět program restartujeme.
Na klientské části (tzv. initiator) musíme mít kernel s modulem
iscsi_tcpa nainstalovaný program open-iscsi (v Debianu se jedná o balíček se stejným názvem). Není třeba dopředu spouštět žádnou službu. Nejprve projdeme daný server a podíváme se co nabízí za disky příkazem
iscsiadm -m discovery -t st -p IP_ADRESAtento příkaz u mě zobrazil následující výpis:
10.93.49.250:3260,1 iqn.2007-04.cz.server:storage.disk.sdb 10.93.49.250:3260,1 iqn.2007-04.cz.server:storage.disk.sddpokud jsme použili jméno a heslo pro přihlašování, tak připojíme disk následující sérií příkazů:
iscsiadm -m node -T iqn.2007-04.cz.server:storage.disk.sdb -p 10.93.49.250:3260 --op=update --name=node.session.auth.authmethod --value=CHAP iscsiadm -m node -T iqn.2007-04.cz.server:storage.disk.sdb -p 10.93.49.250:3260 --op=update --name=node.session.auth.username --value=mirek iscsiadm -m node -T iqn.2007-04.cz.server:storage.disk.sdb -p 10.93.49.250:3260 --op=update --name=node.session.auth.password --value=heslo55Toť v základu vše, disk se připojí většinou do /dev/sda pokud tedy v PC už nějaký scsi, nebo sata disk nemáte. Po restartu by se disky měly znovu připojit.
rychlost čtení pomocí hdparm
hdparm -tT /dev/sda1 (disk na klientovi) /dev/sda1: Timing cached reads: 3050 MB in 2.00 seconds = 1524.74 MB/sec Timing buffered disk reads: 178 MB in 3.01 seconds = 59.07 MB/sec
hdparm -tT /dev/sdb1 (disk na serveru) /dev/sdb1: Timing cached reads: 1560 MB in 2.00 seconds = 779.39 MB/sec Timing buffered disk reads: 238 MB in 3.02 seconds = 78.91 MB/secrychlost zápisu pomocí dd
dd if=/dev/zero of=soubor6 count=400000 (klient) 400000+0 records in 400000+0 records out 204800000 bytes (205 MB) copied, 2,28154 seconds, 89,8 MB/s
dd if=/dev/zero of=soubor count=400000 (server) 400000+0 records in 400000+0 records out 204800000 bytes (205 MB) copied, 1,94645 seconds, 105 MB/srychlost čtení pomocí dd
dd if=video2.avi of=/dev/null count=400000 400000+0 records in 400000+0 records out 204800000 bytes (205 MB) copied, 3,51107 seconds, 58,3 MB/s
dd of=/dev/null if=video1.avi count=400000 400000+0 records in 400000+0 records out 204800000 bytes (205 MB) copied, 2,6189 seconds, 78,2 MB/s
Rychlost dosažená pomocí NFS byla o malinko lepší (cca 10%), použil jsem pro NFS nejvyšší optimalizace podle různých článků na webu.
Pro testy jsem použil síťové karty Intel 1000 PRO PCI-E a switch 1Gbit 3Com 8 port.
Tiskni
Sdílej:
Disk mam připojený jak na serveru, kde ho ještě sdílím přes NFS a SAMBU, tak přes iSCSI.A to by mela byt podporovnana konfigurace? Ja bych tipoval, ze pri takove konfiguraci (fs mountovany lokalne a navic k partition pristupovano vzdalene) se brzy rozbije filesystem.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.