présentation nas - minet
DESCRIPTION
Présentation de l'infrastructure NAS de MiNET et des technologies Solaris et ZFS utilisées.TRANSCRIPT
HULK/THORMehdi Sebbar - Juin 2012
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