Administration Unix Solaris
Petit retour sur la mise oeuvre d'une carte Fusion IO sous Solaris 10x64. J'ai été amené à tester un des produit de la gamme Fusion IO pour répondre à différentes problèmatiques liées aux bases de données Oracle et Sybase (les différents tests ont été effectués avec la carte ioDrive Duo à 1,28 To).
L'installation du driver n'a rien de bien sorcier (un simple pkgadd, merci du peu). Il se peut que le module ne soit pas chargé automatiquement après l'installation du package, il vous suffit alors d'utiliser add_drv pour le faire. Une fois le package installé et le module chargé, vous pouvez utiliser votre carte.
# cd /opt/fusionio/bin
# ./fio-status -a
Found 2 ioDrives in this system with 1 ioDrive Duo
Fusion-io driver version: 2.3.1 build 123
Adapter: ioDrive Duo
Fusion-io ioDrive Duo 1.28TB, Product Number:FS3-202-641-CS SN:100364
ioDrive Duo HL, PN:00190000107, Mfr:004, Date:20110104
External Power: NOT connected
Powerloss protection: available
PCIE Bus voltage: avg 12.20V, min 12.11V, max 12.21V
PCIE Bus current: avg 0.91A, max 2.76A
PCIE Bus power: avg 11.07W, max 27.49W
PCIE Power limit threshold: 24.75W
Connected ioDimm modules:
fct0: Fusion-io ioDrive Duo 1.28TB, Product Number:FS3-202-641-CS SN:72376
fct1: Fusion-io ioDrive Duo 1.28TB, Product Number:FS3-202-641-CS SN:72417
fct0 Attached as 'fioa' (block device)
Fusion-io ioDrive Duo 1.28TB, Product Number:FS3-202-641-CS SN:72376
ioDIMM3 640GB MLC, PN:00276700501, Mfr:004, Date:20110103
Located in slot 1 Lower of ioDrive Duo SN:100364
Powerloss protection: protected
PCI:0c:00.0
Vendor:1aed, Device:1005, Sub vendor:1aed, Sub device:1010
Firmware v5.0.7, rev 101971
640.00 GBytes block device size, 812 GBytes physical device size
Format: block, v300, 1,250,001,920 sectors, 512 bytes per sector
Error correction: 39 bits per 960 bytes
FPGA ID:0 Format UID:000000011ab80132db170041f8755400
Internal temperature: 49.7 degC, max 54.1 degC
Board temperature: 40 degC
Internal voltage: avg 0.996V, max 1.005V
Aux voltage: avg 2.429V, max 2.429V
Media status: Healthy; Reserves: 100.00%, warn at 10.00%
Lifetime data volumes:
Physical bytes written: 238,962,192,171,536
Physical bytes read : 233,379,513,217,664
RAM usage:
Current: 206,100,480 bytes
Peak : 275,838,976 bytes
fct1 Attached as 'fiob' (block device)
Fusion-io ioDrive Duo 1.28TB, Product Number:FS3-202-641-CS SN:72417
ioDIMM3 640GB MLC, PN:00276700501, Mfr:004, Date:20110103
Located in slot 0 Upper of ioDrive Duo SN:100364
Powerloss protection: protected
PCI:0b:00.0
Vendor:1aed, Device:1005, Sub vendor:1aed, Sub device:1010
Firmware v5.0.7, rev 101971
640.00 GBytes block device size, 812 GBytes physical device size
Format: block, v300, 1,250,001,920 sectors, 512 bytes per sector
Error correction: 39 bits per 960 bytes
FPGA ID:0 Format UID:000000011ae10132db170041f8755400
Internal temperature: 54.6 degC, max 59.6 degC
Board temperature: 44 degC
Internal voltage: avg 1.017V, max 1.025V
Aux voltage: avg 2.435V, max 2.438V
Media status: Healthy; Reserves: 100.00%, warn at 10.00%
Lifetime data volumes:
Physical bytes written: 247,334,121,450,136
Physical bytes read : 244,476,258,760,136
RAM usage:
Current: 209,283,072 bytes
Peak : 277,673,984 bytes
Quelques précausions avant de commencer à l'utiliser la carte : mettre à jour le firmware de la carte (fio-update-iodrive) et la formater avant utilisation.
# ./fio-detach /dev/fct0
Detaching: [====================] (100%) |
# ./fio-detach /dev/fct1
Detaching: [====================] (100%) |
# ./fio-format /dev/fct0
Creating a standard block device of size 640.00GBytes (596.05GiBytes).
Using block (sector) size of 512 bytes.
WARNING: Formatting will destroy any existing data on the device!
Do you wish to continue [y/n]? y
Formatting: [====================] (100%) \
Format successful.
# ./fio-format /dev/fct1
Creating a standard block device of size 640.00GBytes (596.05GiBytes).
Using block (sector) size of 512 bytes.
WARNING: Formatting will destroy any existing data on the device!
Do you wish to continue [y/n]? y
Formatting: [====================] (100%) |
Formatting: [====================] (100%)
Format successful.
# ./fio-attach /dev/fct0
Attaching: [====================] (100%) -
fioa
# ./fio-attach /dev/fct1
Attaching: [====================] (100%) -
fiob
Nous voiçi donc avec une unité de stockage prête à l'emploi. A vous de choisir le LVM (SVM, ZFS) selon vos uses et coutumes. Pour les amateurs de VxVM sous Solaris, je pense qu'il n'y a pas de problèmes (les tests restent à être réalisés, je susi preneur de l'information).
Ci-joint quelques tests comparatifs entre du stockage SAN et la carte Fusion IO. Tous les tests ont été réalisés avec l'utilitaire filebench.
Configuration SAN :
Configuration Fusion IO :
Résultats :
Configuration SAN sans directio
filebench> load oltp
[...]
filebench> set $dir=/filebench
filebench> set $iosize=8192
filebench> set $filesize=2147483648
filebench> run runtime
[...]
9894: 2585.561: IO Summary: 87982 ops, 1466.331 ops/s, (741/719 r/w), 11.2mb/s, 2890us cpu/op, 243.7ms latency
9894: 2585.561: Shutting down processes
9894: 2588.876: Deleting ISM...
Configuration SAN avec directio
filebench> load oltp
[...]
filebench> set $dir=/filebench
filebench> set $iosize=8192
filebench> set $logfilesize=2147483648
filebench> run runtime
[...]
12702: 2205.474: IO Summary: 485747 ops, 8095.346 ops/s, (4038/4016 r/w), 62.9mb/s, 523us cpu/op, 13.6ms latency
12702: 2205.474: Shutting down processes
12702: 2207.606: Deleting ISM...
Configuration Fusion IO
filebench> load oltp
[...]
filebench> set $dir=/fusionio
filebench> set $iosize=8192
filebench> set $filesize=2147483648
filebench> run runtime
[...]
24859: 2337.767: IO Summary: 2287573 ops, 38045.769 ops/s, (18937/18914 r/w), 296.9mb/s, 223us cpu/op, 8.4ms latency
24859: 2337.767: Shutting down processes
24859: 2339.914: Deleting ISM...
Les résultats parlent d'eux-mêmes, non ? Le débit sur la carte Fusion IO avoisine les 300 Mb/s ?! Le fait d'utiliser de ZFS compressé permet en plus d'augmenter de manière significative la capacité de stockage de la carte (sans altérer ses incroyables capacités).
Juste un petit bémol, sur une infrastructure de production, il est conseillé d'avoir une solution de secours. Avec ce type de configuration, l'utilisation d'outils de clustering classique ne permettent pas une bascule efficace (récupération des données entre les deux serveurs). Il faut donc se poser la question suivante : Comment répliquer les données ? Il faut donc mettre en oeuvre d'autres outils : par exemple Dataguard pour Oracle ou des outils de réplication de données sur IP comme AVS.
Ci-joint quelques références sur ce sujet :