SAN

Aus PILARKTO.ORG Open Laboratory e.V.
Wechseln zu: Navigation, Suche
Datei:SAN-mini.jpg
Bild gibt's noch nicht
Projektstart 2011/03/07
Projektleiter philipp.strobl
Betreuer philipp.strobl
Status Alpha
Projektname SAN
Bildbeschribung Bild gibt's noch nicht

Inhaltsverzeichnis

Idee

iSCSI erweist sich auf Grund des hohen Overloads an Netzwerkkommunikation nicht als besonders performant im Einsatz mit Netzwerk-Speichern, wenn es darum geht die System-Festplatte zu ersetzten. Eine Technik, die dieses Problem löst ist z.B. FiberChannel bzw. HBAs als SAN.

Da wir über solche Hardware verfügen, wollen wir diese in den produktiven Einsatz bringen.

Aufbau

                           - SAN1
- Speicherdienste-System <        ] Redundanz
                           - SAN2


Anwendungen für den SAN

- Backup-Speicher
- Ausfallsichere Netzwerkfestplatte für Virtuelle Maschinen
- Gemeinsam genutzter Speicherplatz
...

Vorüberlegungen

Die entscheidende Seite für Linux ist http://scst.sourceforge.net/

Ein Vergleich der möglichen Dienste: http://scst.sourceforge.net/comparison.html

Wir haben uns für SCST entschieden (aus Performancegründen) und dafür entweder die Kernel Treiber (qla2xxx) oder den vom SCST mitgelieferten.

Quelle sind: http://scst.sourceforge.net/downloads.html

SCST HowTos

http://scst.sourceforge.net/qla2x00t-howto.html
+ READMEs aus dem SCST-SVN

Kernel compilieren

(Debian Lenny/Squeeze) http://scst.sourceforge.net/downloads.html

cd /usr/src

svn co https://scst.svn.sourceforge.net/svnroot/scst

cp scst/kernel/scst_exec_req_fifo-2.6.32.patch ./

tar jxvf linux-2.6.32.32.tar.bz2

mv linux-2.6.32.32 linux-2.6.32

patch -p0 < scst/trunk/scst/kernel/scst_exec_req_fifo-2.6.32.patch

mv /usr/src/linux-2.6.32/drivers/scsi/qla2xxx /usr/src/linux-2.6.32/drivers/scsi/qla2xxx_orig

cp -r /usr/src/scst/trunk/qla2x00t /usr/src/linux-2.6.32/drivers/scsi/qla2xxx

Danach der bekannte: make all, make modules_install, make_install, update-grub, reboot

Wenn der Kernel läuft, SCST und QLA-Target Module bauen (make all und make install in scst/src und qla2xx-target)

ls -l /lib/modules/`uname -r`/extra/*
 -rw-r--r-- 1 root root  608423 14. Mär 17:58 /lib/modules/2.6.32.32/extra/qla2x00tgt.ko
 -rw-r--r-- 1 root root 2374206 14. Mär 17:51 /lib/modules/2.6.32.32/extra/scst.ko
/lib/modules/2.6.32.32/extra/dev_handlers:
insgesamt 2152
-rw-r--r-- 1 root root 189427 14. Mär 17:51 scst_cdrom.ko
-rw-r--r-- 1 root root 181074 14. Mär 17:51 scst_changer.ko
-rw-r--r-- 1 root root 212885 14. Mär 17:51 scst_disk.ko
-rw-r--r-- 1 root root 192243 14. Mär 17:51 scst_modisk.ko
-rw-r--r-- 1 root root 181058 14. Mär 17:51 scst_processor.ko
-rw-r--r-- 1 root root 180946 14. Mär 17:51 scst_raid.ko
-rw-r--r-- 1 root root 193709 14. Mär 17:51 scst_tape.ko
-rw-r--r-- 1 root root 406327 14. Mär 17:51 scst_user.ko
-rw-r--r-- 1 root root 407097 14. Mär 17:51 scst_vdisk.ko
ls -l /lib/modules/2.6.32.32/kernel/drivers/scsi/qla2xxx/
insgesamt 252
-rw-r--r-- 1 root root 250206 14. Mär 17:24 qla2xxx.ko



Name/Port/WWN

(WWN für alle 21:00:00:e0:8b...)

dk (Port2)   :02:7a:a0 [Initiator]

san3 (Port10) :06:d6:4e [Initiator]

san1 (Port8) :03:67:9e [Target - Debian]
san2 (Port4) :03:fa:96 [Target - Debian]

Client/Server Prozedur

Auf dem Switch

Zoning:

Alias => Immer 1 Initiator und n Targets zusammen in eine Gruppe (Alias) legen.
Zone =>  Zone defnieren mit dem entsprechenden Alias als Member.
Config => Enable config


Auf dem "Target" (=Server)

qla-Target (qla2xxt/qla2xxtgt) Modul laden

/etc/init.d/qla2x00t start 

SCST-Config laden:

scstadmin -config /etc/scst.conf

Die Config sieht z.B. so aus:

HANDLER vdisk_fileio {
   DEVICE SAN1_disk1 {
         filename /srv/disk1.img
 }
}
TARGET_DRIVER qla2x00t {
 TARGET 21:00:00:e0:8b:03:67:9e {
  LUN 0 SAN1_disk1
  enabled 1
 }
}

oder z.B. bei BLOCKIO und LVM

HANDLER vdisk_blockio {
 DEVICE SAN1_disk1 {
   t10_dev_id "SAN1_disk1 e1fe3f77"
   usn e1fe3f77
   filename /dev/LVM/SAN1
 }
}
TARGET_DRIVER qla2x00t {
 TARGET 21:00:00:e0:8b:03:67:9e {
  HW_TARGET
  rel_tgt_id 2
  enabled 1
  LUN 0 SAN1_disk1
  }
}



Auf dem Initiator (=Client)

qla (qla2xxx) Modul laden

modprobe qla2xxx

Wenn das nicht schon geladen ist.

Wichtig ist, dass auf dem Client (Initiator) eigentlich nichts gemacht werden muss. Das Modul qla2xxx ist im Standard-Kernel enthalten und wird bei Booten mit der Karte mitgeladen. Der Initiator wird auch nur über den Switch eingeschränkt sich Platten zu nehmen, die die Targets bereitstellen.

Speedtest

In diesem Zusammenhang interessant: http://scst.sourceforge.net/comparison.html

Wir haben uns aus Performance Gründen für SCST entschieden.

-Normaler Fileserver (Gigabit/NFS/RAID5):

CMD "dd if=/dev/zero of=/mnt/speedtest_pvsa bs=4k count=25000":

 102400000 Bytes (102 MB) kopiert, 52,7076 s, 1,9 MB/s


-SAN Server (FC 1GBit/SCST(2.0.0.1)/IDE-DISK)

erste Tests zeigen zwischen 50 und 60 MB/s:

~# dd if=/dev/zero of=/mnt/san/testdisk.img bs=512 count=10000
5120000 Bytes (5,1 MB) kopiert, 0,0772498 s, 66,3 MB/s

~# dd if=/dev/zero of=/mnt/san/testdisk.img bs=512 count=100000
51200000 Bytes (51 MB) kopiert, 0,785867 s, 65,2 MB/s

RAM-Disk (Flaschenhals Festplatte):

dd if=/dev/zero of=/mnt/san/testdisk.img bs=512 count=80000
40960000 Bytes (41 MB) kopiert, 0,625479 s, 65,5 MB/s


Das ganze geht auch, wenn zwei Initiatoren gleichzeitig das gleiche Block-Device gemountet haben.

Allerdings verteilt sich dann die Performance auf zwei.