Création d’un serveur SAN

Objectif:

Cet article est de donner la ligne à suivre pour mettre en place un SAN. Il a aussi le but d’être un mémo sur les étapes à suivre. Pour réduire les coûts, nous nous baserons sur des solutions de logiciel libre tel que CentOS pour la distribution ou encore OpenZFS pour le système de fichier. Ce dernier offrant multiple avantages facilitant la gestion des données aussi que la sauvegarde (snapshot, replication, compression, … etc).

Pour rappel, nous traitons le sujet dans son ensemble. Je resterais succins sur les choix techniques, à vous d’adapter suivant vos propres besoins et plateforme.

Contexte:

Pour mettre en place le SAN, nous allons utiliser un serveur IBM x3650 M2 disposant de 6 disques SAS 146Gb / 15K, ainsi qu’une carte réseau comprenant deux ports Gigabit. Pour ce qui est de la couche logiciel, comme mentionné ci-dessus nous allons utiliser CentOS en mariant OpenZFS et iSCSI pour une grande flexibilité.

Présentation:

Le SAN étant composé de 6 disques, nous allons procéder par un RAID1 comprenant deux disques. On y logera le système d’exploitation. Puis les 4 disques restant, seront chacun dans un RAID0 individuel. Cela pour que la couche ZFS puisse prendre pleinement le relais. La raison de ce choix, la carte RAID ne permettant pas de faire du Passthrough (donner la main au système).

Pour la partie réseau, le serveur est composé de 2 ports Gigabit et d’un port dédié pour la gestion du serveur (IMM), décomposé de la manière suivante:

  • Ligne cuivre (100 Mb/s): carte réseau IMM
  • Ligne cuivre eno1 (1 Gb/s): administration du serveur
  • Ligne cuivre eno2 (1 Gb/s): réseau privé comprenant SANs et un Cluster

Installation:

Dans les paragraphes suivants, nous allons décrire l’installation de la couche logiciel afin d’obtenir un SAN. Cela comprend la mise en place de CentOS en version 7, OpenZFS ainsi que la couche iSCSI. Enfin nous terminerons par l’ajout de Cockpit (management par interface web).

Système d’exploitation:

Nombreux tutoriels sont disponibles sur la toile pour l’installation de CentOS. Par contre pour éviter la problématique de l’évolution de shim & mokutil l’installation est en “Legacy Mode” et non en “UEFI”.

Malgré tout, voici quelques points à configurer afin de coller à notre installation.

Réseaux:

On désactive l’utilisation du protocole IPv6 sur les deux connexions Ethernet.

Pour la connexion eno1, du basique c’est le serveur DHCP/DNS qui est en charge de l’attribution.

Pour la connexion eno2, n’ayant pas de  serveur DHCP/DNS car non utile dans un réseau privée ayant que quelques machines, on passe en manuel pour l’attribution de l’ip ainsi que du masque de sous réseau.

Partitionnement:

Pour le partitionnement, il y a plusieurs écoles. Nous partons sur un partitionnement classique avec l’utilisation de l’EXT4 sur notre RAID1 composé de deux disques de 146Gb. N’ayant pas de besoin d’évolutivité de ce côté, l’utilisation de LVM n’a pas gain. Pour voir les différentes partitions ainsi que leurs tailles, cliquer sur l’image ci-dessous.

Autres:

Pour ce qui touche à la langue, clavier, packages, … je vous laisse le choix. Pour ma part, c’est l’utilisation de l’US et une installation minimal. L’environnement graphique (Gnome) n’est pas utile pour un serveur. Et je le complète avec Cockpit. Sinon penser à utiliser le service NTP (Network Time Protocol), afin que les machines soient bien synchronisées. Surtout lors de manipulation du fichier telle notre NAS sur un réseau. Mais aussi à la recherche de panne avec des journaux de bord synchronisé sur une heure unique.

/!\ Important: Pensez à mettre à jour la distribution à jour à la fin de l’installation.

Système de fichier:

Comme indiqué dans la présentation du billet, nous allons partir sur OpenZFS. Pour utiliser la couche ZFS sur notre CentOS qui ne possède pas se support par défaut. Mais par le biais du projet zfsonlinux, nous aurons la possibilité d’en profiter pleinnement. Après avoir pris soin de mettre à jour la distribution (7.6.1810), voici les étapes pour la mise en place.

  • Récupérer dans un premier tant le dépôt associé à votre version sur le dépot Github de zfsonlinux et installer-le

yum install http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm

  • Il y a deux façons de charger le module ZFS, soit par DKMS ou kABI. Rapidement, la différence c’est que par le biais de DKMS il y a recompiliation si vous changer de Kernel (Par exemple mise à jour). Pour ce qui est de kABI, il n’a pas besoin de cette phase de recompilation. Notre choix étant basé sur l’utilisation de kABI, il va falloir éditer de dépôt. Passer à 0 le champ “enabled” pour [zfs] et l’inverse pour [zfs-kmod]

vim /etc/yum.repos.d/zfs.repo

  • On passe à l’installation de ZFS

yum install zfs

  • Redémarrage du serveur

shutdown -r now

  • Après avoir repris la main sur le serveur (redémarrage), on charge le module ZFS

modprobe zfs

  • On valide qu’il est bien chargé

lsmod | grep zfs

  • Listons la structure de nos différents disques / partitions. Nous avons actuellement les 2 disques RAID 1 sous sda et les 4 disques sdb, sdc et sdd pour la création de notre pool

lsblk

  • A présent, création d’un pool type RAID-Z (équivalent à “mirror”)

zpool create tank raidz sdb sdc sdd sde

zpool status tank

  • Enfin, on regarde la taille disponible, l’espace libre, la santé …

zpool list

iSCSI:

Après avoir mis en place notre système de fichier, on peut à présent se concentrer sur la mise à disposition du stockage à l’aide d’une interface iSCSI.

Nous resterons sur la mise en place du Target (serveur), la partie Initiator (client) n’est pas traiter dans ce billet.

Pour faciliter la mise en place d’un Target, nous allons utiliser Targetcli. C’est un ensemble de puissant outils permettant la gestion fine d’un serveur iSCSI.

A noter que le SAN étant dédié à un Cluster (sous Proxmox) et une connexion “ZFS over iSCSI”, nous ne traiterons pas l’ajout de disque. Cela fera l’objet d’un autre billet.

  • Installation de targetcli, on lance le service et l’on active au démarrage

yum install targetcli

systemctl enable target

systemctl start target

  • On affiche le status

targetcli ls

  • Passons à la création d’un Target

iscsi/ create iqn.2019-02.lan.danslesairs.altair:cluster:vm-disks

  • Ne voulant pas écouter sur toutes les IP on procède par la suppression du portal 0.0.0.0:3260 et ajoutons 192.168.1.11:3260

cd iscsi/iqn.2019-02.lan.danslesairs.altair:cluster:vm-disks/tpg1/portals/

delete 0.0.0.0 3260

create 192.168.1.11 3260

  • Enfin on ajoute les clients ayant le droit de ce connecter

create iqn.1993-08.org.debian:01:888116de4c8a

create ...

  • Satisfait de la configuration, on la sauvegarde et on quitte

ls

saveconfig

exit

  • Ouverture du port de communication

firewall-cmd --add-port=3260/tcp --permanent

firewall-cmd --reload

  • Bilan avec l’ajout d’un disque par le biais du Cluster (Proxmox)

targetcli ls

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *