VirtualBox mit iSCSI auf ZFS (Linux): Unterschied zwischen den Versionen
Rabe (Diskussion | Beiträge) (ein anfang. es folgt noch ein screenshot) |
Rabe (Diskussion | Beiträge) K (→Konfiguration VirtualBox: Datei:Screenshot VirtualBox iSCSI 20140302.png) |
||
Zeile 120: | Zeile 120: | ||
</pre> | </pre> | ||
Der Rest funktioniert wie gewohnt, zum Beispiel die Installation eines OS per CD-Image. | [[Datei:Screenshot VirtualBox iSCSI 20140302.png|Screenshot von VirtualBox, VM mit iSCSI Disk]] | ||
Der Rest funktioniert wie gewohnt, zum Beispiel die Installation eines OS per CD-Image. | |||
== Performancetest == | == Performancetest == |
Version vom 2. März 2014, 04:35 Uhr
Dieser Artikel beschreibt die Nutzung von iSCSI-Targets in VirtualBox (OpenSource). Ziel ist es das Festplatten-Image einer Virtuellen Maschine per iSCSI anzusprechen.
Bestandteile
Server
- Debian Wheezy
- zfsonlinux, zpool v28
- zvol mit 30GB
- iscsitarget
Client
- Ubuntu 13.04
- VirtualBox 4.2.10-dfsg-0ubuntu2.1
Aufbau iSCSI Target
Das iSCSI Target soll ein ZFS-Volume sein. Man könnte der Einfachheit halber auch einfach ein 30GB großes Flatfile nehmen. Wir nehmen ZFS.
ZFS
Wir gehen davon aus, dass der Server mit Debian wheezy installiert ist und bereits zfsonlinux/debian-zfs installiert ist. Wir nehmen ferner an, dass es einen zpool namens "tank" gibt, der ausreichend viel Platz und Performance bietet:
# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 5,44T 1,95T 3,48T 35% 1.00x ONLINE -
# zpool status pool: tank state: ONLINE scan: scrub repaired 0 in 11h40m with 0 errors on Wed Jan 22 11:25:42 2014 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 wwn-0x50014ee2b0b4a6c5-part1 ONLINE 0 0 0 wwn-0x50014ee058e266cd-part1 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 wwn-0x50014ee25e76e28b-part1 ONLINE 0 0 0 wwn-0x50014ee209153668-part1 ONLINE 0 0 0 errors: No known data errors
- Anlegen eines Filesystems mit dem Namen "tank/img". Das dient lediglich der Ordnung:
# zfs create tank/img
- Anlegen eines 30GB großen zvol mit dem Namen "tank/img/foo"
# zfs create -V 30GB tank/img/foo
Es entsteht nun ein Device /dev/zvol/tank/img/foo welches ein Symlink auf /dev/zd16 ist (in diesem Beispiel):
# ls -la /dev/zvol/tank/img/foo lrwxrwxrwx 1 root root 13 Mär 2 04:06 /dev/zvol/tank/img/foo -> ../../../zd16 # ls -la /dev/zd16 brw-rw---T 1 root disk 230, 16 Mär 2 04:06 /dev/zd16
iSCSI
Quelle: [1]
- Zunächst müssen die Packages iscsitarget und iscsitarget-dkms installiert werden
# apt-get install iscsitarget iscsitarget-dkms
- Anlegen einer Konfiguration, hier sinngemäß:
# cat /etc/iet/ietd.conf Target iqn.2014-02.de.sigsys:storage.vbox.foo.disk0 IncomingUser foo Neiz8eehah3zah5ho9ei OutgoingUser foo ShaeKoa8Quei MaxRecvDataSegmentLength 65536 MaxXmitDataSegmentLength 65536 Lun 0 Path=/dev/zvol/tank/img/foo,Type=blockio Alias vboxfoo0
Wichtig ist hier, dass MaxRecvDataSegmentLength und MaxXmitDataSegmentLength auf 65536 gesetzt werden. Nimmt man hier kleinere Werte kann der ganze Server crashen, wenn VirtualBox darauf zugreift.
- Aktivieren von iscsitarget in
# cat /etc/default/iscsitarget ISCSITARGET_ENABLE=true # ietd options # See ietd(8) for details ISCSITARGET_OPTIONS=""
- iscsitarget neu starten:
# service iscsitarget restart Removing iSCSI enterprise target devices: :. Removing iSCSI enterprise target modules: :. Starting iSCSI enterprise target service:Mar 2 05:10:26 kellermeister kernel: [ 5041.971210] iSCSI Enterprise Target Software - version 1.4.20.3 Mar 2 05:10:26 kellermeister kernel: [ 5041.971326] iscsi_trgt: Registered io type fileio Mar 2 05:10:26 kellermeister kernel: [ 5041.971330] iscsi_trgt: Registered io type blockio Mar 2 05:10:26 kellermeister kernel: [ 5041.971333] iscsi_trgt: Registered io type nullio . .
Damit ist der iSCSI-target (Storage Server) fertig eingerichtet. Das ZFS-Volume kann nun mit den ZFS üblichen Methoden verwaltet werden, zB snapshots anlegen und zurückrollen.
Konfiguration VirtualBox
- Zunächst soll eine VM namens "foo" angelegt werden. Das kann mit dem GUI erfolgen. Dabei wird dann keine Festplatte erzeugt, die Warnung ignorieren wir zunächst.
- Das GUI hat scheinbar keine Möglichkeit ein iSCSI-Target zu verwalten. Mit dem Commandline Tool "VBoxManage" geht es allerdings und wird dann auch im GUI entsprechend angezeigt:
$ VBoxManage storageattach foo --storagectl "SATA" --port 1 --device 0 --type hdd --medium iscsi --server 192.168.0.20 --target iqn.2014-02.de.sigsys:storage.vbox.foo.disk0 --username foo --password Neiz8eehah3zah5ho9ei
Der Rest funktioniert wie gewohnt, zum Beispiel die Installation eines OS per CD-Image.
Performancetest
Ein Ubuntu Server 12.04 im VirtualBox Gast wird installiert, dabei wird bei der Installation LVM verwendet. Die VM hat 2GB RAM, der PC, in dem VirtualBox läuft hat 8GB RAM. Nach der Installation kann mittels dd ein einfacher Performance-Test durchgeführt werden:
$ dd if=/dev/zero of=/tmp/big.8G bs=1024k count=8192
Das Ergebnis liegt hier bei ca 72MBytes/sec. Dabei ist anzumerken, dass der zpool "tank" auf dem iSCSI-Server über 4 Platten verteilt ist (2x Mirror). Erschwerend kommt noch hinzu, dass der Server "nur" ein HP microServer N36L ist, d.h. 1.3GHz CPU. Die Anbindung zwischen PC (VirtualBox) und Server (iSCSI Target) ist GBit über einen einfachen Switch (Latenzen!).
Angesichts der Ausstattung sind 72MBytes/sec lineares Schreiben aus einer VM heraus ganz passabel. YMMV.