Question Le meilleur moyen d'éviter que le système racine ne se remplisse lorsqu'un montage échoue?


Nous avons un serveur Web interne (virtualisé, hébergeant ReviewBoard, mais pas très pertinent) et nous avons un mode de défaillance relativement cohérent avec des montages NFS en échec qui provoquent / se remplissent. Distro est Ubuntu (ne demandez pas) si une solution dépend d'une distribution différente, sa mise en œuvre sera plus lente.

Les sauvegardes sont effectuées sur / mnt / backup /, qui est supposé monter NFS sur un autre système. Malheureusement, lorsque le montage échoue ou tombe, des sauvegardes sont effectuées sur le système de fichiers racine, qui, comme vous pouvez l'imaginer, ne prend pas longtemps avant / est complet, puis les services commencent à échouer.

Un certain nombre de solutions possibles ont été discutées.

  1. Surveillez / mnt / backups et assurez-vous que ce n'est pas root. Peut-être un travail cron.

  2. Utilisez / mnt / protected / backups et montez / protected en premier sur un petit système de fichiers, peut-être un montage en boucle sur un fichier local, de sorte que le risque d'échec est bien moindre.

  3. Chmod a-rwx / mnt / backups (le point de montage du système de fichiers racine). Je ne sais pas si monter sur un réalisateur protégé marchera, je pense que ça marche.

  4. Sur l’arborescence montée, créez un répertoire appelé "Sauvegardes", puis un lien symbolique "ln - s / mnt / sauvegarde / Sauvegardes / Sauvegardes". L'utilisation de / Backups pour les sauvegardes échouera à moins que / mnt / backup ne soit monté, car l'arborescence locale ne contient pas le sous-répertoire.

  5. Vérifier que le répertoire est correctement monté dans le script de sauvegarde.

Je suis intéressé par tout commentaire sur ces approches, sur les inconvénients ou sur toute technique supplémentaire que les gens utilisent comme moyen standard de protéger le système de fichiers racine de ce type de méchanceté.


14
2017-12-05 01:59


origine




Réponses:


Numéro 5 - Mettez un test dans votre script de sauvegarde pour vous assurer que le répertoire est monté avant de continuer. Le script doit échouer si le montage n'est pas disponible ou présent. Ou vous pouvez simplement vous assurer que les éléments sont montés avant d'exécuter la sauvegarde.

Essaie le mountpoint commande, qui vérifie si un répertoire spécifié est un point de montage:

mountpoint -q /mnt/backups || mount /mnt/backups


13
2017-12-05 02:31



Hmm, je suppose que j'ajouterais || echo "Les montages / mnt / sauvegardes ont échoué" 2> & 1 Ou peut-être existent-ils simplement. En tout cas, merci !!! - Peter


La solution la plus sûre consiste à rendre le point de montage non lisible. Ce serait votre solution n ° 3. Cependant, vous devez effectuer une étape supplémentaire. chattr +i /mnt/backups. En effet, même sans autorisation, root pourrait toujours écrire dans le répertoire. Avec chattr +i (définit le drapeau immuable) pas même la racine ne peut y écrire. Une fois que le montage est monté, les autorisations importent peu, car les autorisations appartiendront au répertoire distant et non au répertoire local.


20
2017-12-05 16:15



C'est un bon truc - jamais pensé à utiliser 'chattr' - warren
J'utilise cette technique sur tous mes points de montage. - 3dinfluence
J'ai essayé avec encfs un système de fichiers fusible. Cela donne une erreur: fusermount: user has no write access to mountpoint - ctrl-alt-delor
C’est la solution que j’utilise normalement et je pense que ce devrait être la réponse acceptée. - shodanshok


Ce qu'a dit ewwhite. En outre, une surveillance supplémentaire de la santé du système de base ne serait pas une mauvaise idée.

Quelque chose comme Monit peut vérifier pour voir combien d'espace est laissé. Si vous souhaitez vous consacrer pleinement à la surveillance du système, vous pouvez regarder Nagios, mais Monit est léger et fera les bases.

Comme vous utilisez Ubuntu, Monit est déjà dans le référentiel, vous pouvez donc faire "sudo apt-get install monit", puis commencer à regarder les fichiers de configuration pour lui dire d'envoyer des alertes au bon endroit, de surveiller les bons services, etc. Voici un rapide Didacticiel.


3
2017-12-05 02:40





Voici un one-line que vous pouvez exécuter en tant que tâche cron, en supposant que la monture en question est dans fstab:

if mountpoint -q /mnt ; then : ; else mount /mnt ; fi

1
2017-08-16 18:32





Pour une solution à plus long terme: Vous ne savez pas comment faire cela sur Ubuntu (je suis centré sur l’homme RH) ou si cela vaut la peine (si vous n’avez qu’une seule machine), mais une méthodologie qui a fonctionné pour nous pendant BEAUCOUP d’années consiste à créer une logique séparée. les volumes, les systèmes de fichiers et même les groupes de volumes sur les ordinateurs serveurs. Nous avons donc l'habitude de créer des volumes logiques LVM pour /, / tmp. / usr, / usr / local, / opt, / home, / var, espace d'échange et une partition séparée pour / boot. Cette approche complique encore plus la tâche des systèmes de fichiers de remplir et de désactiver le système. En réalité, cette approche rendra presque impossible le remplissage du système / file. Vous devez toujours regarder / tmp, / var bien sûr. Si nous devons héberger des données, nous créons un groupe de volumes totalement différent. Cette approche présente également d'autres avantages: étendre les systèmes de fichiers à volonté, les déplacer, en créer de nouveaux, etc. Et comme note historique, nous avons reporté cette méthode sur Linux à partir du système d'exploitation AIX dans les années 1990!


0
2018-03-13 11:33



Donc, votre solution pour empêcher le système de fichiers de se remplir si un montage échoue consiste à ajouter plus de montages? Quoi? - Patrick