Présentation NAS - MiNET

38
HULK/THOR Mehdi Sebbar - Juin 2012 [email protected] MiNET lundi 4 juin 12

description

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

Transcript of Présentation NAS - MiNET

Page 1: Présentation NAS - MiNET

HULK/THORMehdi Sebbar - Juin 2012

[email protected]

lundi 4 juin 12

Page 2: Présentation NAS - MiNET

RAPPELS SUR L’INFRASTRUCTURE MINET

MAJ 26/05: Opportunity sur le prod

lundi 4 juin 12

Page 3: Présentation NAS - MiNET

POURQUOI UN NAS ?

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

lundi 4 juin 12

Page 4: Présentation NAS - MiNET

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

Page 5: Présentation NAS - MiNET

Les acteurs

lundi 4 juin 12

Page 6: Présentation NAS - MiNET

HULK

lundi 4 juin 12

Page 7: Présentation NAS - MiNET

HULK

lundi 4 juin 12

Page 8: Présentation NAS - MiNET

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

Page 9: Présentation NAS - MiNET

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

Compatible avec les binaires Linux

lundi 4 juin 12

Page 10: Présentation NAS - MiNET

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

Page 11: Présentation NAS - MiNET

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

Page 12: Présentation NAS - MiNET

lundi 4 juin 12

Page 13: Présentation NAS - MiNET

lundi 4 juin 12

Page 14: Présentation NAS - MiNET

FEATURESTransactionnel: robuste

pas besoin de fsckPools (volumes)

raidZDeduplicationCompressionEncryptionSnapshots

clonessend/receive

SharesQuotas

lundi 4 juin 12

Page 15: Présentation NAS - MiNET

FEATURESTransactionnel: robuste

pas besoin de fsckPools (volumes)

raidZDeduplicationCompressionEncryptionSnapshots

clonessend/receive

SharesQuotas

lundi 4 juin 12

Page 16: Présentation NAS - MiNET

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

Page 17: Présentation NAS - MiNET

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

Page 18: Présentation NAS - MiNET

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

Page 19: Présentation NAS - MiNET

RAIDZ ?

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

lundi 4 juin 12

Page 20: Présentation NAS - MiNET

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

Page 21: Présentation NAS - MiNET

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

Page 22: Présentation NAS - MiNET

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

lundi 4 juin 12

Page 23: Présentation NAS - MiNET

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

Page 24: Présentation NAS - MiNET

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

Page 25: Présentation NAS - MiNET

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

Page 26: Présentation NAS - MiNET

THOR

lundi 4 juin 12

Page 27: Présentation NAS - MiNET

THOR

lundi 4 juin 12

Page 28: Présentation NAS - MiNET

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

Page 29: Présentation NAS - MiNET

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

Page 30: Présentation NAS - MiNET

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

Page 31: Présentation NAS - MiNET

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

Page 32: Présentation NAS - MiNET

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

Page 33: Présentation NAS - MiNET

NAPP-IT

lundi 4 juin 12

Page 34: Présentation NAS - MiNET

Ç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

Page 35: Présentation NAS - MiNET

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

Page 36: Présentation NAS - MiNET

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

Page 37: Présentation NAS - MiNET

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

Page 38: Présentation NAS - MiNET

lundi 4 juin 12