Présentation NAS - MiNET

Post on 06-Jul-2015

706 views 0 download

description

Présentation de l'infrastructure NAS de MiNET et des technologies Solaris et ZFS utilisées.

Transcript of Présentation NAS - MiNET

HULK/THORMehdi Sebbar - Juin 2012

mehdi@minet.netMiNET

lundi 4 juin 12

RAPPELS SUR L’INFRASTRUCTURE MINET

MAJ 26/05: Opportunity sur le prod

lundi 4 juin 12

POURQUOI UN NAS ?

On veut stocker les disques des VMsOn veut stocker des données importantes

lundi 4 juin 12

POURQUOI UN NAS ?

En local NAS

Pertes en cas de panneMigration a chaud difficile

High Availability (HA)Migration à chaud

Fiabilité (raid5, raidZ...)Possibilité de sauvegarder régulièrement

(snapshots, sync sur un autre NAS...)Techniques d’optimisation (compression,

deduplication...)Partage plus fin des données

On veut stocker les disques des VMsOn veut stocker des données importantes

lundi 4 juin 12

Les acteurs

lundi 4 juin 12

HULK

lundi 4 juin 12

HULK

lundi 4 juin 12

HULK ?

Processeur : Athlon II X6 1055T Mémoire : 8Gb

Carte réseau : 3 cartes gigabitDisques stockage : 5 x 2 To (5400 tr/min)Disque système : 80 giga (7200 tr/min)

Sous NexentaStor community edition, dérivé de Solaris

lundi 4 juin 12

Unix crée par Sun microsystemsRéputé stable et fiable

Compatible avec les binaires Linux

lundi 4 juin 12

FEATURES

ZFSZonesDtrace

Crossbow

Gestion des disques ~LVM

FilesystemRAID ~ mdadm Containers ~ openVZ

gestion des disquesfilesystem+extras

=LVM+mdam+FS

MonitoringLog

existe sur *BSD, OSX

Virtual interfacesVirtual switches

QOS

lundi 4 juin 12

Leader en Open Storage «As a general term, open storage refers to storage systems built with

an open architecture using industry-standard hardware and open-source software.»

Contribue à OpenStackNexantaStor = Opensolaris + Ubuntu Optimisé NAS, iSCSI, Fiber ChannelHulk : Community Edition, max 18To

lundi 4 juin 12

lundi 4 juin 12

lundi 4 juin 12

FEATURESTransactionnel: robuste

pas besoin de fsckPools (volumes)

raidZDeduplicationCompressionEncryptionSnapshots

clonessend/receive

SharesQuotas

lundi 4 juin 12

FEATURESTransactionnel: robuste

pas besoin de fsckPools (volumes)

raidZDeduplicationCompressionEncryptionSnapshots

clonessend/receive

SharesQuotas

lundi 4 juin 12

POOLS

Disk 1 Vdev file

storage pool

ZFS ZFS ZFS

Disk 1 Disk 2 Disk 3

Volume Volume Volume

FS FS FS

lundi 4 juin 12

les disques physiques sont donnés par la commande format ou dans /dev/dsk

Pool basique entre de 2 disques:zpool create tank c1t0d0 c1t1d0

Exemple:

mkfile 100m /Amkfile 100m /Bmkfile 100m /C

zpool create -f data /A /B zpool statuszpool listcp -r /etc/ssh /data

On veut ajouter un disque

zpool add -f data /C

lundi 4 juin 12

Mirror (raid1)

zpool create -f data mirror /A /B

On supprime un des disques:

zpool export datamv /A /A.oldzpool import -d /B datazpool status

On change le disque:

zpool replace -f data /A /C

raid 1+0

zpool create -f data mirror /A /B mirror /C /D

lundi 4 juin 12

RAIDZ ?

Problème du «RAID 5 write-hole»On utilise ça à MiNET

lundi 4 juin 12

Exemple:zpool create -f data raidz /A /B /Cdf -hzpool export datacat /dev/urandom > /Azpool import -d /B datazpool statuszpool replace -f data /A /D

A chaud, pas de délais de reconstruction, pas de coupure !

lundi 4 juin 12

DEDUPLICATION

Les données (fichiers, blocs, ou suites d’octets) sont checksummed grâce à une fonction de hash qui permet de détecter avec une haute probabilité les redondancesSi on utilise un algorithme de hash fiable comme le SHA256, la probabilité de collision est ~ 10^-77Utile pour des données redondées comme les disques de VMZFS fait de la dedup au niveau bloc, en temps réel : nécessite CPU/RAM !

lundi 4 juin 12

Exemple:zfs set dedup=on datacp -r .mozilla/ /data/mocp -r .mozilla/ /data/mo2cp -r .mozilla/ /data/mo3df -hzpool list

lundi 4 juin 12

ZFS DATASET

On peut en créer autant qu’on veut sur un poolPas besoin d’allouer ou de formaterOn utilise la commande zfs pour les administrerOn peut donner des propriétés distinctes à chaque datasets

storage pool

ZFS ZFS ZFS

lundi 4 juin 12

zfs create data/testle dataset est monté automatiquement

zfs listzfs rename data/test data/test_old

zfs get all data/test_oldOn voit que le dataset hérite des propriétés du pool parent

zfs set dedup=off data/test_oldzfs get -r dedup datazfs set compression=on data/test_old

zfs set quota=50G data/test_oldOn peut faire des quotas par users et groups

zfs set sharenfs=rw data/test_oldattention aux droits (cf chown dans les references)

zfs destroy data/test_old

lundi 4 juin 12

SNAPSHOT

zfs snasphot pool/dataset@nom_du_snapshotzfs list -t allzfs rollback pool/dataset@nom_du_snapshotzfs destroy pool/dataset@nom_du_snapshot

lundi 4 juin 12

THOR

lundi 4 juin 12

THOR

lundi 4 juin 12

THOR

En cas de panne critique de Hulk, on a plus les disques de VMSComment récupérer les données ?

lundi 4 juin 12

THOR

En cas de panne critique de Hulk, on a plus les disques de VMSComment récupérer les données ?

Hulk ThorEn synchronisant Hulk et Thor régulièrement.

lundi 4 juin 12

ZFS SEND / ZFS RECEIVEOn envoie que des snapshotszfs snapshot data/test@20120530

On envoie le snapshot dans un fichier:zfs send data/test@20120530 > file

On peut même compresser !zfs send data/test@20120530 | gzip > file.gz

Encrypter !zfs send data/test@20120530 | gzip | openssl enc -aes-256-cbc -a -salt > file.gz.ssl

Et récupérer biensûr !zfs receive data/backup < fileopenssl enc -d -aes-256-cbc -a -in file.gz.ssl | gunzip | zfs receive data/backup

Mais surtout pour envoyer sur Thor on utilise ssh !zfs send data/test@20120530 | ssh 192.168.102.140 zfs receive data/test

Le premier send envoie tout le snapshot, il est donc long, ensuite on envoie des incréments:zfs send -i data/test@20120530 data/test@20120531 | ssh 192.168.102.140 zfs receive data/test

Attention, le snapshot de destination doit etre en lecture seule: zfs set readonly=on data/testlundi 4 juin 12

Le script de backup

Sur Hulk tout les jours (cron)/root/scriptSync.py <dataset>

On vérifie la connexion vers ThorOn récupère le dernier snapshot du dataset snapPrecedent présent sur ThorOn crée sur Hulk un snapshot snapOn envoie l’incrément entre snapPrecedent et snap sur Thor via zfs send et sshOn vérifie que le snapshot snap est présent sur ThorOn supprime les précédents snapshots sur Hulk sauf snap

lundi 4 juin 12

Le script de backup

Sur Hulk tout les jours (cron)/root/scriptSync.py <dataset>

Hulk Thor

On vérifie la connexion vers ThorOn récupère le dernier snapshot du dataset snapPrecedent présent sur ThorOn crée sur Hulk un snapshot snapOn envoie l’incrément entre snapPrecedent et snap sur Thor via zfs send et sshOn vérifie que le snapshot snap est présent sur ThorOn supprime les précédents snapshots sur Hulk sauf snap

lundi 4 juin 12

NAPP-IT

lundi 4 juin 12

ÇA TOMBE EN PANNESi Hulk tombe en panne:

disque en panne: vérifier avec zpool status l’état du raid Z, remplacer le disque (possible à chaud mais vaut mieux éteindre Hulk)

Sinon: éteindre Hulk, désactiver readonly sur le snapshot de Thor, activer les partages NFS, changer les ips.

lundi 4 juin 12

ON PEUT AMÉLIORER QUOI ?

Script de suppression auto des plus vieux snaps sur ThorFaire un script pour automatiser la transition Hulk->Thor

Activer les interfaces virtuelles (crossbow), activer les partages NFS

link aggregation sur Thorjumbo frames partout

lundi 4 juin 12

CE QUE L’ON A PAS ABORDÉ+FUN

crossbow

openVZ + crossbow + ZFS = ZonesZFS + DTrace + Zones + KVM = SmartOS

Freebsd + ZFS = freenas le mieux c’est solaris ! Openindiana

lundi 4 juin 12

LECTURE/RÉFÉRENCESLecture:Le wikiThe ZFS doc: http://docs.oracle.com/cd/E19082-01/817-2271/index.htmlBonne doc: http://hub.opensolaris.org/bin/download/Community+Group+zfs/docs/zfslast.pdfZFS send and receive: http://www.128bitstudios.com/2010/07/23/fun-with-zfs-send-and-receive/ZFS Deduplication: https://blogs.oracle.com/bonwick/entry/zfs_deduphttp://www.zfsbuild.com/http://hub.opensolaris.org/bin/view/Project+crossbow/WebHomeProbleme du write hole sur raid5: http://en.wikipedia.org/wiki/RAID_5_write_holehttps://blogs.oracle.com/orasysat/entry/so_what_makes_zfs_soprobleme de chown sur NFS: http://www.oracle.com/technetwork/database/clusterware/overview/thirdvoteonnfs-129371.pdf

References:http://www.dataspan.com/uploads/images/de-duplication-sml.pnghttp://cdn1.iconfinder.com/data/icons/database/PNG/128/Database_3.pnghttp://www.picturesdepot.com/wallpapers/207155/davids+hulk.htmlhttp://ftp-admin.blogspot.co.uk/2011/11/raid-z.html

lundi 4 juin 12

lundi 4 juin 12