Installer un SAN via iSCSI sur Linux Ubuntu Lucid Lynx 10.04

QNap TS 509Pro

De la vitesse en blocs

Espace, intégrité et vitesse d'accès aux informations. Le stockage des données reste une des préoccupations majeurs des utilisateurs de systèmes informatiques et rime avec SAN, NAS, NFS, Fiber Channel, iSCSI...
L'accès aux NAS se vulgarise pour les petites entreprise et des offres SAN font leur apparition.

Cet article fait un point sur l'intérêt des technologies SAN et vous présente l'installation d'un SAN sur Ubuntu Lucid Lynx 10.04

Qu'est ce qu'un SAN ?

SAN signifie Storage Network Area : zone de stockage réseau.

A ne pas confondre avec le NAS - Network Attached Storage - qui est un serveur de stockage dédié relié au réseau, supportant traditionnellement les protocoles de partage réseau NetBios, AFP, FTP, NFS compatibles avec les systèmes Microsoft, Apple et Unix, et la gestion de ses disques physiques en mode RAID pour sécuriser le stockage.

Les NAS, les serveurs bureautique Microsoft ou les serveurs Linux NFS exposent des partages d'espaces de stockage vus comme des disques distants par les clients.
Alors que le SAN expose des espaces de stockage qui sont vus comme des espaces de stockage physiques locaux par les clients.

L'avantage avancé pour le SAN est sa vitesse. Il utilise des protocoles spécifiques moins lourds que NFS.
Le plus courant est le FCoE - Fibre channel Over Ethernet - qui affiche un débit théorique de 8Gb/s. Ce protocole dédié s'affranchit de la couche TCP en s'appuyant sur des cartes réseaux spécifiques.
Le deuxième est le iSCSI - Internet SCSI - limité à 2Gb/s mais moins onéreux et plus facile à intégrer en 2009. iSCSI utilise toujours TCP pour communiquer, ce qui le ralentit mais lui permet d'être utilisé indifféremment depuis une machine physique ou virtuelle, sans ajout de driver spécifique.

A défaut de disposer d'un SAN en Fibre Channel, la suite de l'article est consacrée à iSCSI, intégré au NAS QNap 509 Pro.

NFS versus SAN

Le service offert par les protocoles de partage NFS et iSCSI est différent.

Un serveur NFS gère le partage, l'intégrité, le cache des données et des méta-données et les droits d'accès à ses fichiers auprès de plusieurs clients distants.

Un SAN partage un ensemble de blocs à un client unique. C'est tout.
C'est le client qui doit créer et gérer le système de fichier qui utilisera ces blocs, ainsi que les éventuelles autres fonctions nécessaires, le partage des fichiers en réseau par exemple...

Vous avez là la réponse principale au pourquoi un SAN est rapide, moins buggé et peu monter en charge plus facilement qu'un serveur NFS. La charge est répartie entre le SAN et ses clients et non centrée sur le serveur comme pour NFS.

Installer le protocole iSCSI

Listez les disques existants sur votre client :

# fdisk -l

 Disque /dev/sda: 100.0 Go, 100030242816 octets
 255 têtes, 63 secteurs/piste, 12161 cylindres
 Unités = cylindres de 16065 * 512 = 8225280 octets
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Identifiant de disque : 0xc2a156d7

 Périphérique Amorce  Début        Fin      Blocs     Id  Système
 /dev/sda1               1        1003     2369524   82  Linux swap / Solaris
 /dev/sda2   *         1004       12161    73714190   83  Linux

Sur le poste de travail, appelé l'initiateur en terminologie iSCSI, installez le paquet open-scsi :

# aptitude install open-iscsi

Recherchez les target - nom donné aux disques iSCSI - disponibles sur votre SAN :

# iscsiadm --mode discovery --type sendtargets --portal 192.168.2.200
192.168.2.200:3260,1 iqn.2004-04.com.qnap:ts-509:iscsi.test.8cab21
192.168.2.200:3260,1 iqn.2004-04.com.qnap:ts-509:iscsi.t1.8cab21

La target iqn.2004-04.com.qnap:ts-509:iscsi.test.8cab21 dans cet exemple est un disque SAN de 1Go. Connectez-vous au disque SAN :

# iscsiadm --mode node --targetname iqn.2004-04.com.qnap:ts-509:iscsi.test.8cab21 \
--portal 192.168.2.200 --login
Logging in to [iface: default, target: iqn.2004-04.com.qnap:ts-509:iscsi.test.8cab21, portal: 192.168.2.200,3260]
Login to [iface: default, target: iqn.2004-04.com.qnap:ts-509:iscsi.test.8cab21, portal: 192.168.2.200,3260]: successful

Si l'accès à la target est restreint à un compte, le user/passwd vous sera demandé.

Vérifiez vos partitions disques :

# fdisk -l

 Disque /dev/sda: 100.0 Go, 100030242816 octets
 255 têtes, 63 secteurs/piste, 12161 cylindres
 Unités = cylindres de 16065 * 512 = 8225280 octets
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Identifiant de disque : 0xc2a156d7

 Périphérique Amorce  Début        Fin      Blocs     Id  Système
 /dev/sda1               1        1003     2369524   82  Linux swap / Solaris
 /dev/sda2   *         1004       12161    73714190   83  Linux

 Disque /dev/sdb: 1073 Mo, 1073741824 octets
 34 têtes, 61 secteurs/piste, 1011 cylindres
 Unités = cylindres de 2074 * 512 = 1061888 octets
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Identifiant de disque : 0x00000000

 Le disque /dev/sdb ne contient pas une table de partition valide

Le nouveau périphérique /dev/sdb est le disque SAN.

Utiliser le disque SAN

Procédez comme pour un disque traditionnel. Formatez le :

# mkfs.ext4 /dev/sdb

Attention à bien remplacer sdb par le bon périphérique sur votre poste.
La partition est prête à être montée et utilisée :

# mount /dev/sdb /mnt

Montage automatique d'un périphérique SAN au démarrage

Si vous souhaitez que ce périphérique - ou node - soit démarré automatiquement lors du prochain redémarrage, vous devez éditer les fichiers de configuration iSCSI.

Vous pouvez soit modifier le paramétrage général en éditant le fichier /etc/iscsi/iscsid.conf et en y modifiant le paramètre suivant

node.startup = automatic

Soit modifier de la même manière spécifiquement la configuration de ce node, dans l'exemple le fichier /etc/iscsi/nodes/iqn.2004-04.com.qnap:ts-509:iscsi.test.8cab21/192.168.2.200,3260,1/default.

Il vous reste à mettre à jour le fichier /etc/fstab en ajoutant la ligne :

/dev/sdb /mnt ext4 relatime 0 0

Benchmark SAN versus NFS

Un benchmark doit être interprété avec prudence. Il ne présente que des tendances et ne peut faire foi en dehors de mesurer un scénario qui correspond à votre utilisation.
Un serveur Web et un serveur de base de données ne font pas du tout les mêmes accès sur un SAN...

Aussi, j'écarte les très sophistiqués outils de benchs d'IO disque iozone et bonnie pour me limiter à un protocole simple :

  • mesurer les temps de recopie de mon répertorie local /var sur le disque SAN analysé,
  • puis faire un tar du disque SAN en local.

/var contient 7600 fichiers pour 490Mo. La bande passante est de 100Mb. Le client et le SAN sont des Intel Dual-Core dédié aux tests. Les système de fichiers utilisent ext4. NFS est en v3.

Les résultats pour le disque SAN sont :

# time rsync -a /var /mnt
real    3m34.517s

# time tar cf var.tar /mnt/var
real    3m8.703s

Les résultats pour le disque NFS sont :

# time rsync -a /var /mnt
real    6m37.225s

#  time tar cf var2.tar /mnt/var
real    2m39.330s

Les résultats pour le disque local, un Raptor Sata2, sont :

# time rsync -a /var /mnt
real    0m58.538s

#  time tar cf var3.tar /mnt/var
real    0m38.230s

Soit le tableau de synthèse :

Mo/s Ecriture Lecture
Disque local 30.5 36.6
SAN 2.3 2.6
NFS 1.2 3.0

Une conclusion serait que SAN est plus rapide que NFS, surtout en écriture.
Les spécifications de SAN datant de 2004 versus 1995 pour NFS v3, rien d'anormal.

Bien sûr, les systèmes professionnels SAN offrent probablement de meilleures performances, les disques SCSI à 15000 tours, voir les SSD - Solid State Drive -... SAN n'est pas encore un concurrent sérieux pour les disques locaux.

Commentaires

Les SAN peuvent ils remplacer les serveurs de fichiers Windows ?

Oui. Des extensions logiciels Windows payantes sont disponibles et permettent à Windows d'utiliser des SAN iSCSI.

L'usage d'un SAN sous Windows a d'autant plus de sens que son système de partage de fichiers aka SAMBA sous Linux est encore plus lent que NFS...