Journal Sauvegarde données utilisateurs et serveurs

Posté par (page perso) .
Tags : aucun
3
2
juin
2010
Bonjour cher journal et cher lecteurs,

Ces mois passés et les prochains mois font l'objet d'une grande, lourde et complexe réflexion (et on rigole pas au fond) au sein de notre petit bureau. L'objet de cette réflexion est motivé par la refonte de notre infrastructure serveur. Pour simplifier nous passons de x serveurs physiques avec des volumes éparpillés un peu de partout à une structure centralisé au niveau du stockage.

Pour le moment les sauvegardes serveurs sont réalisées par un script shell maison (Backupeur) et la partie postes utilisateurs (Windows) est gérée par ntbackup (sans commentaire). Souhaitant faire évoluer tout ce petit monde je me suis orienté bien sûr vers les solutions OpenSource :

Pour Bacula, après avoir épluché en long, en travers, en tout ce que vous voulez je ne dirais qu'une chose : Mais c'est énorme ! Oui trop énorme pour notre petite infrastructure et extrêmement complexe à mettre en œuvre.

Pour BackupPC, très simple à installer (surtout avec CentOS et rpm), encore plus simple à configurer au niveau serveur. La partie poste utilisateur est très bien pensé puisque vous pouvez choisir entres différents modes de transferts (smb, rsync, rsyncd)... Et ça marche très bien même. Mais... il en fallait bien un, comment gérer le cas ou une personne peut se connecter à plusieurs postes.

Par exemple :
Toto est amené à ce connecter à plusieurs postes. Il possède son home (que se soit Windows ou Linux) qui est chargé à la connexion, dans le paramétrage de l'host sur le serveur BackupPC j'ai paramétré la gestion du transfert en rsyncd et j'ai créé un petit fichier de configuration qui va bien qui définit le home à sauvegarder. C'est à ce moment que ça devient plus compliqué :
Toto utilise son poste habituel mais pour une raison totalement inconnu aujourd'hui il en utilise un autre. Il se connecte et son home est chargé, la sauvegarde se lance à partir d'un autre host. Résultat ces fichiers sont dans deux répertoires host différents dans le dépôt.

je ne parle même pas du cas ou plusieurs utilisateurs peuvent se connecter à un même poste (à des moments différents)... Ça devient tordu...

Comment géré vous ce genre de cas et plus largement quelle solution avez-vous en place dans vos infrastructures ?

Merci d'avance à vous tous :)
  • # Hum

    Posté par . Évalué à 7.

    Je ne suis pas sûr de comprendre ton problème.

    Soit ton problème est que les données de l'utilisateur ne sont pas centralisées, et tu attends que ce soit ta solution de sauvegarde qui gère cela. Si c'est le cas, désolé de te le dire, mais la sauvegarde ne devrait pas pallier à un défaut d'infrastructure, il faudrait peut-être penser à mettre en place un serveur de fichiers comme samba.

    Soit ton problème est que les données de l'utilisateur seront sauvées deux fois. C'est effectivement ennuyeux, et bien que ça ne soit pas nickel chrome, tu peux laisser ça en l'état. En effet BackupPC ne stocke qu'une seule fois un même fichier, et fait des hardlinks dessus pour toutes les copies de ce fichier, donc à part consommer plus de réseau lors de la sauvegarde, et plus de cpu pour les tâches nocturnes de backupPC, ça ne te coûtera pas plus cher.

    Hope it helps.
    • [^] # Re: Hum

      Posté par (page perso) . Évalué à 7.

      >L'objet de cette réflexion est motivé par la refonte de notre
      >infrastructure serveur. Pour simplifier nous passons de x serveurs
      >physiques avec des volumes éparpillés un peu de partout à une
      >structure centralisé au niveau du stockage.

      Ben, il semblerait que non...

      Ou son problème est: "on comprend rien au profils itinérants et au redirection de dossiers" ...

      J'arrive pas à comprendre si c'est le système de profil itinérant qu'il essaye de contourner...
      • [^] # Re: Hum

        Posté par (page perso) . Évalué à 2.

        L'autre gros point noir est l'impossibilité de gérer la notion d'utilisateur au niveau poste utilisateur. Je m'explique, lorsque vous créé un host à sauvegarder vous devez indiquer son nom (netbios, dns...), un nom d'utilisateur. Au niveau arborescence de fichiers BackupPC créé un sous répertoire par host mais sans faire intervenir le nom d'utilisateur. Résultat si un poste est utilisateur par plusieurs personnes à chaque fois un nom d'utilisateur différent donc un home différent, je ne vois vraiment pas comment gérer ce cas. Au début j'ai pensé que cette limitation était présente que pour l'environnement Windows, mais même pour un Linux le problème reste le même.

        On trouve ca sur son blog... En clair, il n'ont pas de serveur de fichier, tu avais vu juste ;)

        Du coup, je vois quand même pas le probleme, il fait une sauvegarde de "C:\Users" ou de "/home" ...
        • [^] # Re: Hum

          Posté par (page perso) . Évalué à 1.

          c:/document and settings ou /home, peut importe. Vue que je gère les deux plateformes et qu'il arrive qu'un user ce connecte sur un poste en windows ou sur un poste en linux.

          Born to Kill EndUser !

      • [^] # Re: Hum

        Posté par (page perso) . Évalué à 1.

        Je n'essaie pas de contourner le profil itinérant, mais comme je l'ai expliqué dans la réponse au premier commentaire, je ne peux pas tout faire transiter via le profil itinérant pour des raisons de volumes principalement sur les boîtes mails. Comme certains utilisateurs sont amenés à être en déplacement ils ont besoins d'avoir leur mail sur leur portables (pas de connexion externe pour le moment).

        Sur la nouvelle infra il est prévue que le répertoire "documents and settings" ou "home" soit stocké sur le NAS mais comment faire pour les autres données, c'est la mon gros problème.

        Born to Kill EndUser !

        • [^] # Re: Hum

          Posté par (page perso) . Évalué à 2.

          Pour les clients Windows, redirection de Appdata dans un lecteur réseau et sur les portable "Synchro fichier hors connexion"...

          Et tu auras tout sur le serveur...

          Pour les clients Linux, il faut bricoler un truc avec rsync, ca me semble la meilleur solution...
    • [^] # Re: Hum

      Posté par (page perso) . Évalué à 1.

      Soit ton problème est que les données de l'utilisateur ne sont pas centralisées, et tu attends que ce soit ta solution de sauvegarde qui gère cela. Si c'est le cas, désolé de te le dire, mais la sauvegarde ne devrait pas pallier à un défaut d'infrastructure, il faudrait peut-être penser à mettre en place un serveur de fichiers comme samba.

      Le profil itinérant est activé sur le contrôleur de domaine samba mais je ne fais pas transiter toute les informations du profil pour des raisons de trafic réseau et la raison principal est lié à une utilisation en local des mails outlook. La majorité des utilisateurs ont une boîte mail qui dépasse le giga et pour les plus extrêmes j'arrive à 30Go et ne me parler pas faire le ménage dans ces boîtes mails, les utilisateurs ne veulent pas en entendre parler. Surtout que pour Outlook il suffit de le lancer pour qu'il "modifie" les fichiers donc pour qu'il soit re-transférer lors de la fermeture de session de l'utilisateur.

      Soit ton problème est que les données de l'utilisateur seront sauvées deux fois. C'est effectivement ennuyeux, et bien que ça ne soit pas nickel chrome, tu peux laisser ça en l'état. En effet BackupPC ne stocke qu'une seule fois un même fichier, et fait des hardlinks dessus pour toutes les copies de ce fichier, donc à part consommer plus de réseau lors de la sauvegarde, et plus de cpu pour les tâches nocturnes de backupPC, ça ne te coûtera pas plus cher.
      C'est une très bonne nouvelle, mais sur quoi ce base BackupPC pour déterminer si le fichier est identique ? Le nom ? J'espère que non car ce n'est pas très fiable, il peut très bien arriver qu'un fichier provenant de différents profil/host soit identique mais que je le fichier ne contienne pas les même données.

      Juste pour être certain. Lorsque je vais dans le dépôt de BackupPC (/var/lib/BakcupPC/) j'ai un répertoire par host, jusque la normal. Si je rentre dans un host j'ai les sauvegardes. Maintenant si je regarde le fichier de config rsyncd d'un host j'ai défini, en répertoire à sauvegarder j'ai :
      [home]
      path = c:/document and settings/toto/Mes documents


      Premier problème, si tata vient à ce connecter, ces données ne seront pas sauvegardé puisque le fichier de config est paramétrer sur toto. Je pourrais remonter d'un niveau le répertoire à sauvegarder, donc à "document and settings" mais je ne trouve pas ça très élégant.

      Revenons à toto, il se connecte sur le poste 01 qui est celui qu'il utilise habituellement, pour une raison inconnue il doit utiliser le poste 02, il ouvre sa session, son profil est chargé via le profil itinérant (sauf ces mails), il boss et la sauvegarde ce lance ou bien il la lance. Ces fichiers vont être stockés au niveau de BackupPC dans le host 02 et non 01 ce qui est logique puisqu'il est connecté depuis 02. Toto revient le lendemain à sont poste 01 et il se rend compte qu'il s'est trompé dans une modification et il souhaite revenir à la version précédente de son fichier. Dans quel host va il devoir aller chercher son fichier ? 01 ou 02 ?

      Born to Kill EndUser !

      • [^] # Re: Hum

        Posté par . Évalué à 2.

        > C'est une très bonne nouvelle, mais sur quoi ce base BackupPC pour déterminer si le fichier est identique ? Le nom ? J'espère que non car ce n'est pas très fiable, il peut très bien arriver qu'un fichier provenant de différents profil/host soit identique mais que je le fichier ne contienne pas les même données.

        BackupPC fait un checksum cryptographique (md5 si ma mémoire est bonne) pour reconnaitre les fichiers identiques (ou pas) et dédupliquer.
        Il ne se base évidement pas sur le nom (il lui serait sinon impossible de backuper des serveurs similaires au même endroit ;).

        D'ailleurs, les arborescences de hardlinks (ce que tu vois dans "dans le dépôt de BackupPC (/var/lib/BakcupPC/) j'ai un répertoire par host") ne sont utilisés par le logiciel qu'à titre de métadonnées pour retrouver, justement, le nom d'un fichier ou le contenu d'un répertoire, parcourir facilement l'arborescence, etc. Les fichiers eux-même sont stockés dans le répertoire cpool/, non pas sous leur vrais noms, mais renommés selon leurs checksums md5 (par ex. /var/lib/backuppc/cpool/0/1/d/01d0016d1a30383ccd484a8913de6927).

        Ainsi, deux fichiers (qu'ils aient un nom différéent ou pas) ayant le même checksum ne sont pas dupliqués : backuppc place le fichier une première fois dans le cpool/ en le nommant d'après son checksum md5 ; la fois suivante (backup suivant de la même machine lorsque le fichier n'a pas changé, ou autre machine ayant le même fichier identique) il constate que le fichier ayant ce checksum existe déjà dans cpool/, et ne l'écrase pas. Pour la présentation de l'arborescence, il fait des liens hards portant les "vrais" noms des fichiers et pointant sur les fichiers du répertoire cpool/.

        Lorsque le fichier disparait d'un hote, backuppc n'efface que le lien hard ("le nom du fichier") correspondant. Un autre job, indépendant, passe régulièrement et repère les fichiers du cpool/ (ceux dont le nom est un md5) qui ne sont plus référencés par des hardlinks dans les répertoires contenant les arborescences des hotes (donc: qui ne sont plus utilisés nulle part), et il les effaces.

        > je pourrais remonter d'un niveau le répertoire à sauvegarder, donc à "document and settings" mais je ne trouve pas ça très élégant.

        Pourquoi pas élégant ?
        Avec ce procédé, tu inclus aussi le nom de l'utilisateur dans le backup (enfin, dans le path des fichiers). Faute de quoi, il te serai très difficile de retrouver le outlook.pst de l'user toto (au milieu des outlook.pst des autres users) pour le restorer.

        Cela te permet aussi de savoir très aisément "qui" (quel user) pèse combien dans tes backups, et d'éventuellement affiner les filtres de tris, etc.

        > Dans quel host va il devoir aller chercher son fichier ? 01 ou 02 ?

        L'interface web de backuppc permet de naviguer/browser les sauvegardes ordinateur par ordinateur, mais pas transversalement.
        Il faut donc que l'utilisateur se souvienne de l'hote sur lequel il était connecté au moment du backup, ou qu'il parcoure l'arborescence des hotes auxquel il est susceptible de s'être connecté. Ou qu'il demande à l'admin de faire un "find /var/lib -name '*lefichier*'" pour lui indiquer l'hote intéressant au jour j. Cela étant, une interface web de recherche transversale ne serait pas très dur à développer... (ou une script référençant, sur ton serveur samba, qui se connecte depuis où à quelle date: c'est dans les logs, génerer une page web est très simple).
        • [^] # Re: Hum

          Posté par . Évalué à 1.

          De mémoire les dernières versions de bacula devait proposer la déduplication aussi.
        • [^] # Re: Hum

          Posté par (page perso) . Évalué à 1.

          Merci pour toute les informations. Je comprends mieux le fonctionnement maintenant.

          Il faut donc que l'utilisateur se souvienne de l'hote sur lequel il était connecté au moment du backup
          C'est un gros problème, je connais très bien comment sont "mes" utilisateurs et je pense que c'est la même chose ailleurs. Je vois la conversation :

          Utilisateur : Je voudrais récupérer un fichier
          Moi : Oui c'est quoi le nom
          Utilisateur : euuuuu... il commence par "duchmole"
          Moi : Ouaiiiiiiii.... C'était hier ?
          Utilisateur : non y a deux ou trois jours
          Moi : ah il va falloir faire un choix, deux jours ou trois jours
          Utilisateur : On récupère les deux et on les compares
          Moi : Je les récupères et vous les comparés. Bon ok votre machine c'est laquelle
          Utilisateur : c'est celle dans mon bureau voyons
          Moi : Ok, je vous les envoies pas mail dans 5mn
          Utilisateur : Ok
          ... [pendant ce temps à VeraCruse]...
          Utilisateur (au téléphone) : C'est pas les bons fichiers
          Moi : Ah, vous voulez que je remonte plus loin ?
          Utilisateur : Non c'est sûr au plus j'ai bossé y a trois jours dessus
          Moi : Ok :( Vous l'avez peut être modifié depuis un autre poste
          Utilisateur : Ah oui c'est possible !
          Moi : Ces deux ou trois jours vous avez bossé sur quel ordinateurs ?
          Utilisateur : Ah ba je sais plus moi
          Moi : Moi non plus


          Résultat, je passe mon temps à chercher des fichiers éparpillés. C'est sûr qu'on restaure pas des fichiers tout les jours et puis y a pas 300 utilisateurs. Mais ce fonctionnement me parait totalement illogique. En plus de gérer le versionning de fichiers (ce qui est normal) on ajoute le versionning sur différent host. A l'heure de la centralisation de données et la réduction des coût... Sa m'étonne et puis niveau utilisation c'est pas le top.

          Depuis que j'ai pris la gestion de ce parc j'ai dissocié utilisateur et ordinateur (avec les moyens du bord à l'époque). Je part du principe qu'une machine n'est pas attribué à un utilisateur, vis et versa.

          Born to Kill EndUser !

          • [^] # Re: Hum

            Posté par (page perso) . Évalué à 2.

            C'est pas un logiciel de backup ce qu'il te faut; c'est un SCM genre subversion.

            http://subversion.tigris.org/

            Avec tortoiseSVN si c'est dans un environment windows.
            • [^] # Re: Hum

              Posté par (page perso) . Évalué à 1.

              Ça "pourrait" aller pour des informaticiens mais je suis le seul au boulot à l'être les autres considères l'ordinateur comme un outil et ils ne veulent/doivent pas perdre de temps avec des fonction complexe.

              Born to Kill EndUser !

          • [^] # Re: Hum

            Posté par . Évalué à 1.

            > je passe mon temps à chercher des fichiers éparpillés

            Les données importantes de l'utilisateur ne sont elles pas dans le profile stocké sur un serveur ? (si oui, peut-être le mieux serait de sauvegarder ce serveur ?).

            Peut-être que rdiff-backup ([http://rdiff-backup.nongnu.org]) conviendrait mieux étant donné tes contraintes.

            Il copie un répertoire (sur un desktop par ex.) vers un autre répertoire (sur un serveur par ex); le serveur est passif, ne se préocupe pas de savoir d'où (de quel hote) vient le fichier. Il n'a pas d'interface sympa qui permette aux utilisateurs non avertis de restorer eux-même les fichiers cependant.
  • # Je ne comprends pas ton problème

    Posté par . Évalué à 2.

    Moi j'utilise Backuppc et je le trouve très bien.

    Ce que je ne comprends pas, tu semble vouloir intégrer la sauvegarde de Toto sur chaque machine où il va se connecter ?

    Ou sinon tu peux choisir le dossier cible de sauvegarde pour chaque hôte, exemple:
    si toto se connecte sur machine1, dans backuppc tu rajoute la machine1, et tu sauvegarde /home/toto .

    Si un autre user se connecte sur cette machine tu fait de même /home/user/

    Aprés c'est vrai dans ton dossier de sauvegarde tu aura tes sauvegardes classés par hôtes, mais tu peux parcourir tes sauvegardes.

    Peux tu nous donner un peu plus d'informations car je ne comprends pas trop ton problème.
  • # NFS

    Posté par (page perso) . Évalué à 6.

    Perso, pour mon équipe j'ai mis en place du NFS avec un Annuaire LDAP pour des montages Autofs5

    En gros il y a un annuaire LDAP avec des Entrés NisMapEntries qui disent :
    - /users/toto -> machine1:/home/toto
    - /users/robert -> machine2:/home/robert
    et
    - user toto, home=/users/toto
    - user robert, home=/users/robert

    Et sur chaque machine, qui sont synchro avec le ldap et autofs et login avec ldap, on y accède avec :
    - /users/toto -> qui monte tout seul machine1:/home/toto
    - /users/robert -> qui monte tout seul machine2:/home/robert

    Et encore plus au top, sur machine2, l'user robert va se loguer et au lien de monter "machine2:/home/robert", il va faire un "mount -bind" de /home/robert vers /users/robert !

    Voila, ça marche qu'avec des machines Unix effectivement ... (et même Mac Os X ;-)

    Pour Windows, je ne saurais quoi te dire.....
  • # Et unison ?

    Posté par . Évalué à 2.

    D'après ce que je comprends, les utilisateurs travaillent en local sur des postes windows, et sauvegardent leur données sur un serveur. Généralement les utilisateurs utilisent toujours le même poste mais pas toujours...

    première solution : pourquoi pas un domaine samba ? en redirigeant les User Shell Folders en dehors de profile, sur le home, cela marche très bien... à condition d'être connecté en permanence. Donc exit les portables !

    Deuxième solution : unison [http://www.cis.upenn.edu/~bcpierce/unison/] La toute dernière version gère enfin l'unicode, et permet donc les synchros entre Windows et Linux sans soucis. C'est vraiment génial : la synchro est ultra efficace, sécurisée en ssh, et surtout cela marche à tous les coups, sans risque de perte de fichiers...

    Avec un tel système les utilisateurs peuvent continuer à avoir leur données en local, elles seront synchronisées sur le serveur à la demande, et les synchros passent très bien sur une adsl, sans besoin de vpn, il suffit d'une connexion ssh. Dans ce cas le backup du serveur est suffisant, et backuppc est ideal.

    Il faut un peu bricoler pour configurer correctement un client ssh sous windows avec les clés du serveur, mais une fois au point, c'est transparent pour l'utilisateur : il lance la synchro et c'est tout, au pire il doit choisir quoi faire si il y a des conflits de versions de fichiers, mais c'est plutôt simple. On peut utiliser soit la version GTK, soit en ligne de commande.
    • [^] # Re: Et unison ?

      Posté par . Évalué à 1.

      Ce sont de bonne solutions de réplicatin/synchronisation, mais pas des outils de backup.

      Par exemple: tu modifie un fichier, il est synchronisé partout. 15 jours après, tu veux récupérer la version d'avant. Zut. Ou bien: par prudence, pour éviter ce problème, tu ne synchronise qu'une fois de temps en temps. Et ton disque dur tombe en panne. Tu perd plusieurs jours de travail. Zut.

      Le serveur pourrais certe avoir du LVM et faire des snapshots, mais il faudrait aussi bricoler de quoi permettre aux utilisateurs de consulter trouver le bon snapshot, le monter, le naviguer, récupérer son fichier simplement ; et gérer les saturation disques, et décider automatiquement quel snap/archive effacer ; décider de la durée de conservation et scripter de quoi l'appliquer ; alerter s'il y a un défaut ; alerter si une machine n'a pas été backupée depuis longtemps ; arbitrer les accès concurents pour éviter que tout backup en même temps et sature les i/o ou le réseau, ... ce que font déjà les logiciels de backup classiques. Bref à ce stade il faudrait réinventer la roue.
  • # Bacula: faut pas avoir peur

    Posté par . Évalué à 2.

    Pour Bacula, il peut faire peur de 1er abord, mais il se configure très bien et n'est pas si dur à mettre en place. Si tu le souhaites, et que tu veux essayer, je peux t'envoyer ma configuration en exemple.
    Je n'ai pas le temps de faire un tutoriel accessible pour Mme Michu, mais vu que je lis qu'il fait peur assez souvent, je vais essayer de m'y atteler au plus vite.
  • # Pour des machines "partagées", c'est prévu d'origine

    Posté par . Évalué à 1.

    Lorsque user1 et user2 utilisent la machine pc1, dans le fichier /etc/backuppc/hosts, tu mets quelque chose du style :

    pc1_user1 0 prenom1.user1
    pc1_user2 0 prenom2.user2

    Puis tu crées deux fichiers de config :
    pc1-user1.pl et pc2-user2.pl qui contiennent les lignes :

    pc1-user1.pl :
    $Conf{ClientNameAlias} = 'pc1'
    ... (options spécifiques à cet utilisateur/machine, dont le/les répertoires à sauvegarder)

    pc2-user2.pl :
    $Conf{ClientNameAlias} = 'pc1'
    ... (options spécifiques à cet utilisateur/machine, dont le/les répertoires à sauvegarder)


    Chacun ne verra que les fichiers qui lui appartiennent ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.