Est-il possible de dd le disque en cours de démarrage?

23

J'ai une copie de FreeNAS fonctionnant sur un disque USB en direct. Et j'aimerais en faire une copie de sauvegarde.

Tout en essayant d'éviter de briser un système fonctionnant parfaitement, serais-je en mesure d'accéder au dddisque pendant que le système d'exploitation fonctionne?

Ou devrais-je arrêter la machine et faire fonctionner ddune autre machine?

stuartc
la source

Réponses:

16

Vous pouvez exécuter ddsur le disque en cours d'exécution. Cela devrait être évité en cas de modifications importantes de la structure du disque. Vous devriez également fschkla destination une fois que vous avez terminé. Plus le système est silencieux pendant la sauvegarde, mieux c'est.

L'exécution d'une sauvegarde à froid (système de fichiers non monté) est la meilleure option si vous souhaitez utiliser `dd '.

Il existe de meilleures options pour sauvegarder un système en cours d'exécution.

  • tarou cpiolira les fichiers et traitera raisonnablement bien les fichiers ouverts. Vous manquerez probablement certaines des modifications qui se produisent pendant la sauvegarde.
  • rsyncse comporte comme taren ce qui concerne les fichiers ouverts et les modifications manquantes pendant la sauvegarde. Il peut être utilisé pour effectuer la sauvegarde initiale et effectue très bien les sauvegardes incrémentielles. Lors de l'exécution d'une sauvegarde incrémentielle, il peut ignorer la copie de parties inchangées du fichier.

Si vous sauvegardez un système de fichiers avec des fichiers de données de base de données, étudiez la prise en charge des sauvegardes à chaud.

BillThor
la source
De bons points sur l'utilisation d'outils de niveau supérieur - tar, cpioet rsynctous fonctionnent dans le système de fichiers , donc cela peut être approprié. dd, OTOH, fonctionne directement avec les blocs de disques, contournant le FS.
Piskvor
16

Il est techniquement possible (comme dans "se tirer une balle dans le pied"), mais très déconseillé, surtout si l'une des partitions du disque est accessible en écriture.

Imaginez ce scénario:

  • dd commence à lire le disque au début et se dirige gaiement vers la fin.
  • À mi-chemin, le système d'exploitation écrit un fichier sur le disque. Le fichier est cependant quelque peu fragmenté - une partie est physiquement située vers le début du disque et une autre vers la fin.
  • Aucun problème pour le système d'exploitation - il écrit très bien le fichier et le pousse hors de ses caches d'écriture; il est maintenant correctement écrit sur le disque.
  • Le problème est avec votre sauvegarde: dda déjà passé et copié la première partie du fichier, donc elle capturera un état incohérent quand elle arrivera à la deuxième partie - chaque partie sera d'une version différente!

Si vous êtes capable de remonter toutes les partitions sur le disque USB en lecture seule, ce problème ne devrait pas se produire (accent sur " ne devrait pas"); cela nécessite cependant une préparation / installation hors ligne et une configuration de démarrage importantes pour la /partition - je ne pense pas que vous puissiez normalement remonter le /r / o à la volée, il y aura plusieurs choses suspendues nécessitant un r / w accès.

Ainsi, l'exécution de la copie ne cassera probablement pas le système en cours d'exécution, mais ne vous donnera pas de sauvegarde fonctionnelle , rendant la tâche théorique. Je recommande fortement de faire la copie hors ligne - ce qui nécessiterait l'arrêt de la machine.

Piskvor
la source
1
Merci pour une excellente réponse, j'espérais une issue facile, mais vous avez raison, je ne peux pas imaginer un bon scénario découlant de ce que vous avez souligné.
stuartc
1
@stuartc: Cela nécessiterait une coopération importante de la part du pilote FS - informant le processus de copie de chaque modification qui s'est produite depuis le début de la copie, et si elle atteint un état cohérent. S'il s'agit d'un problème majeur, examinez les systèmes de fichiers qui prennent en charge les instantanés, tels que btrfs.
Piskvor
4

Vous ne devez jamais créer une image d'une partition montée. Peu importe si vous avez démarré ou non.

Mais vous aurez du mal à démonter la partition à partir de laquelle vous avez démarré.

Der Hochstapler
la source
4

Pour cela, j'utilise dump(8)sur FreeBSD. Par exempledump -auLf /mnt/some-other-disk/root.dmp /

L' -Loption permet la copie d'un système de fichiers en direct en prenant un instantané.

Les vidages peuvent être restaurés à l'aide de restore(8).

Cela pourrait ne fonctionner qu'avec UFS; Je ne suis pas sûre à propos de ça.

maxelost
la source
0

Il est étonnant de voir combien de conseils de sauvegarde ne mentionnent pas les éléments suivants:

Le système Linux (et la plupart des OS multi-threads) doivent généralement être au repos pendant que vous sauvegardez et restaurez.

Cela est plus facile à réaliser en n'exécutant pas de système d'exploitation dessus pendant que vous essayez de le créer.

Pour la sauvegarde et la restauration, il peut être monté, et en fait probablement doit l'être, mais pas par le système d'exploitation en cours d'exécution comme racine (/).


Raison: dans chaque système d'exploitation multitâche, y compris Linux, il existe des threads de code simultanés qui affectent les fichiers, ce qui rend impossible la réalisation de sauvegardes ou de restaurations précises de l'ensemble de fichiers à l'échelle du système.

En particulier, pendant que vous saisissez des fichiers, il peut y avoir une autre tâche à créer ou à supprimer des fichiers de telle sorte que votre sauvegarde ne représentera pas une image vraie et précise du système de fichiers à un moment donné. Si vous essayez de restaurer cette sauvegarde, vous aurez une corruption de données qui entraînera des plantages et d'autres anomalies.


Options: Les sauvegardes doivent être effectuées soit par des logiciels spéciaux et / ou des systèmes de disques (comme Acronis sur Windows par exemple qui peut sauvegarder un système d'exploitation en cours d'exécution), soit par un système d'exploitation secondaire externe accédant aux fichiers du système d'exploitation non en cours d'exécution que vous essayez de sauvegarde ou restauration.

!!! Ainsi, lorsque vous voyez des pages Web vous invitant à utiliser Deja-dup par exemple pour effectuer vos sauvegardes, cela ne fonctionne que pour /homeet UNIQUEMENT si vous /homen'exécutez aucun programme affectant pendant que vous exécutez deja-dup. (Et même alors, vous voudrez peut-être croiser les doigts à moins que vous ne sachiez vraiment ce qui pourrait éventuellement toucher vos fichiers via un démon.)

Vue elliptique
la source
0

Je le fais déjà avec un environnement de test réussi, avec fsck et rsync à la fin pour améliorer les chances d'une bonne copie de l'appareil.

Joao
la source
1
Pouvez-vous expliquer comment vous utilisez rsyncpour améliorer un vidage de disque entier (système de fichiers entier) fait avec  dd? (Et, si vous y avez accès rsync, pourquoi ne l'utiliseriez-vous pas simplement comme outil de sauvegarde principal plutôt que secondaire, compagnon?)……………………………… Veuillez ne pas répondre dans les commentaires; modifiez  votre réponse pour la rendre plus claire et plus complète.
Scott