5 Récupération des fichiers perdus et endommagés

Ce chapitre décrit les procédures à suivre pour la restauration de fichiers individuels dans le système de fichiers. Il traite des sujets suivants :

Récupération de fichiers à l'aide d'un fichier de points de récupération

L'utilisation d'un fichier de points de récupération constitue l'approche la plus rapide, la plus fiable, la plus précise et la moins laborieuse pour récupérer des fichiers perdus ou endommagés. Par conséquent, si un fichier de points de récupération est disponible, procédez comme suit :

  1. Connectez-vous au serveur de métadonnées du système de fichiers en tant qu'utilisateur root.

    root@solaris:~# 
    
  2. Si ce n'est pas déjà fait, arrêtez l'archivage et le recyclage en suivant les procédures décrites à la Arrêt des processus d'archivage et de recyclage

  3. Dans le système de fichiers cible, créez un répertoire de récupération temporaire pour le stockage des fichiers récupérés.

    Dans cet exemple, le répertoire temporaire restore est créé sous le point de montage pour le système de fichiers recréé, /hsmfs1 :

    root@solaris:~# mkdir /hsmfs1/restore
    
  4. Empêchez à l'archiveur d'archiver à partir du répertoire temporaire. Exécutez la commande archive -r -n directory, où :

    • -r -n permet de désactiver de façon récursive l'archivage de fichiers se trouvant dans ou sous le répertoire indiqué.

    • directory désigne le chemin et le nom du répertoire du répertoire de récupération temporaire.

    root@solaris:~# archive -r -n /hsmfs1/restore
    
  5. Accédez au répertoire de récupération temporaire.

    root@solaris:~# cd /hsmfs1/restore
    
  6. Identifiez le dernier fichier de points de récupération disponible.

    Dans cet exemple, des fichiers de points de récupération datés ont été créés pour le système de fichiers hsmfs1 dans un emplacement connu : le sous-répertoire hsmfs1_recovery du système de fichiers indépendant /zfs1. Vous pourrez facilement trouver le fichier le plus récent, 20150324 :

    root@solaris:~# dir /zfs1/hsmfs1_recovery/
    20150321    20150322    20150323    20150324
    root@solaris:~# 
    
  7. Assurez-vous que le fichier à récupérer ne se trouve pas dans le fichier de points de récupération. Recherchez le fichier nécessaire dans la sortie de la commande samfsrestore -t -f recovery-point, où :

    • -t affiche une table des matières.

    • -f recovery-point-file spécifie le chemin d'accès et le nom du fichier de points de récupération sélectionné.

    Dans cet exemple, nous tentons de récupérer le fichier genw445. Nous exécutons la commande samfsrestore -t avec le fichier de point de récupération /zfs1/hsmfs1_recovery/20150324. Pour simplifier la recherche, nous insérons la sortie de samfsrestore -t dans la commande Solaris grep et l'expression régulière "genw445" (remarque : la commande ci-dessous est saisie sur une seule ligne ; le saut de ligne est échappé à l'aide de la barre oblique inverse) :

    root@solaris:~# samfsrestore -t -f /zfs1/hsmfs1_recovery/20150324 | \
    grep "genw445"
    ./genfiles/genw445
    root@solaris:~# 
    
  8. Restaurez les informations d'inode du fichier dans le répertoire actuel. Exécutez la commande samfsrestore -f recovery-point file, où :

    • -f recovery-point-file spécifie le chemin d'accès et le nom du fichier de points de récupération sélectionné.

    • file indique le chemin et le nom exacts que le fichier de point de récupération répertorie pour le fichier que vous souhaitez récupérer.

    Dans l'exemple, nous récupérons ./genfiles/genw445 à partir du fichier de point de récupération /zfs1/hsmfs1_recovery/20150324 (remarque : la commande ci-dessous est saisie sur une seule ligne ; le saut de ligne est échappé à l'aide de la barre oblique inverse) :

    root@solaris:~# samfsrestore -f /zfs1/hsmfs1_recovery/20150324 \
    ./genfiles/genw445
    root@solaris:~# 
    
  9. Assurez-vous que le fichier a été correctement restauré. Exécutez la commande sls -D file, où file spécifie le chemin et le nom du fichier relatif au répertoire de récupération temporaire.

    Dans l'exemple, le fichier genfiles/genw445 a été récupéré vers le répertoire temporaire /hsmfs1/restore/:

    root@solaris:~# sls -D genfiles/genw445
    genfiles/genw445:
      mode: -rw-r--r--    links:   1  owner: data        group: hsmfs1      
      length:     14975  inode:    25739.1
    offline; archdone;
    copy 1: ---- Mar  4 11:55 8ae.1 xt 000000
    copy 2: ---- Mar  4 15:51 cd3.7f57 xt 000000
      access:      Mar  4 11:55  modification: Mar  4 21:50
      changed:     Mar  4 11:50  attributes:   Mar  4 21:50
      creation:    Mar  4 11:50  residence:    Mar  4 21:50
    root@solaris:~# 
    
  10. Si le fichier a été correctement restauré, déplacez-le vers le bon emplacement dans le système de fichiers.

    Dans l'exemple, nous déplaçons le fichier genw445 du répertoire de travail temporaire /hsmfs1/restore/genfiles/ vers son emplacement d'origine dans /hsmfs1/genfiles/:

    root@solaris:~# mv -f genfiles/genw445 /hsmfs1/genfiles/genw445
    root@solaris:~# 
    
  11. Répétez cette procédure jusqu'à ce que tous les fichiers manquants aient pu être récupérés.

  12. Terminez la procédure de récupération. Accédez à la Restauration des systèmes de fichiers d'archivage pour un fonctionnement normal.

Récupération des fichiers à l'aide des entrées du journal

Il est toujours fastidieux et laborieux de se baser sur le journal de l'archiveur et/ou les journaux de migration des médias pour effectuer la récupération de fichiers lorsque plusieurs fichiers sont inclus. Par conséquent, utilisez les procédures de cette section uniquement lorsqu'un point de récupération ne permet pas de restaurer le fichier requis.

Tandis que le processus de récupération de fichiers à partir d'un média d'archivage est foncièrement identique dans tous les cas, certains détails peuvent différer en fonction du type de fichier. Sélectionnez la procédure prévue pour le type de fichier que vous souhaitez restaurer :

Notez que les fichiers peuvent ne pas être restaurés précisément à l'emplacement souhaité lorsque vous récupérez une copie à partir du média. Les fichiers sont restaurés à leur emplacement à l'heure à laquelle la copie de l'archive a été effectuée. Les fichiers qui ont ensuite été déplacés ne sont pas restaurés dans le répertoire dans lequel ils ont été perdus.

Restauration des fichiers standard perdus et endommagés

Pour chaque fichier dont vous souhaitez effectuer la récupération, procédez comme suit :

  1. Si ce n'est pas déjà fait, connectez-vous au serveur de métadonnées du système de fichiers en tant qu'utilisateur root.

    root@solaris:~# 
    
  2. Si ce n'est pas déjà fait, arrêtez l'archivage et le recyclage en suivant les procédures décrites à la Arrêt des processus d'archivage et de recyclage

  3. Accédez au répertoire root du système de fichiers que vous restaurez.

    Les fichiers archive Oracle HSM stockent des copies en fonction du répertoire root du système de fichiers. Par conséquent, il est souhaitable de les restaurer à partir du répertoire root pour les restaurer dans leur emplacement d'origine.

    Dans cet exemple, la racine du système de fichiers hsmfs1 a été modifiée :

    root@solaris:~# cd /hsmfs1
    root@solaris:~# 
    
  4. Si vous possédez un journal de l'archiveur datant du dernier archivage du fichier standard, recherchez l'entrée la plus récente du fichier.

    Dans le premier exemple, nous recherchons une entrée le fichier standard (saisissez f) genA0 :

    A 2015/03/03 13:09:05 li VOL004 all.1 212.1 hsmfs1 1535.2 1971 genfiles/genA0 f 0 0
    

    Dans le second exemple, nous recherchons une entrée pour le fichier standard (saisissez f) spcC4 :

    A 2015/03/03 21:49:15 dk DISKVOL1/f2 all.1 2.2e9 hsmfs1 1511.2 8971 socfiles/spcC4 f 0 0
    
  5. Une fois que vous avez trouvé une entrée de journal pour le fichier recherché, notez le type de média, le numéro de série de volume du média ainsi que le chemin et le nom du fichier correspondant au répertoire root du système de fichiers.

    Dans le premier exemple, le fichier genA0 se trouve sur un volume à bande LTO (li) avec le numéro de série de volume (VSN) VOL004. Le fichier était à l'origine stocké dans le répertoire de système de fichiers /hsmfs1/genfiles/ :

    A 2015/03/03 13:09:05 li VOL004 all.1 212.1 hsmfs1 1535.2 1971 genfiles/genA0 f 0 0
    

    Dans le second exemple, le fichier spcC4 se trouve sur une archive de disque (dk) portant le numéro de série DISKVOL1. Le fichier était à l'origine stocké dans le répertoire de système de fichiers /hsmfs1/socfiles/ :

    A 2015/03/03 21:49:15 dk DISKVOL1/f2 all.1 2.2e9 hsmfs1 1511.2 8971 socfiles/spcC4 f 0 0
    
  6. Si un fichier requis se trouve sur un média à accès séquentiel, tel qu'une bande magnétique, notez également la valeur hexadécimale représentant la position de départ de du fichier d'archive (tar).

    Dans l'exemple, le fichier genA0 se trouve sur la bande démarrant à la position 0x212 (212) :

    A 2015/03/03 13:09:05 li VOL004 all.1 212.1 hsmfs1 1535.2 1971 genfiles/genA0 f 0 0
    
  7. Si un fichier requis se trouve sur un média à accès aléatoire, tel qu'un disque d'archivage, notez également le chemin d'accès et le nom du fichier tar par rapport au numéro de série du volume.

    Dans l'exemple, le fichier spcC4 se trouve dans le sous-répertoire f2 immédiatement sous le répertoire root du volume de disque DISKVOL1 :

    A 2015/03/03 21:49:15 dk DISKVOL1/f2 all.1 2.2e9 hsmfs1 1511.2 8971 socfiles/spcC4 f 0 0
    
  8. Si le fichier que vous restaurez est archivé sur le média d'archive, extrayez la copie d'archive du fichier manquant ou endommagé à partir du fichier tar sur le volume de disque. Exécutez la commande star -xv -f tarfile file, où :

    • tarfile est le nom du fichier d'archive

    • file est le chemin d'accès au répertoire root du système de fichiers et le nom du fichier que vous souhaitez restaurer.

    La commande star est une version Oracle HSM améliorée de la commande GNU tar restaurant les fichiers indiqués depuis le fichier d'archive.

    Dans cet exemple, nous extrayons le fichier de données socfiles/spcC4 du fichier tar DISKVOL1/f2. Le fichier est restauré vers /hsmfs1/socfiles/spcC4 :

    root@solaris:~# star -xvf DISKVOL1/f2 socfiles/spcC4
    
  9. Si vous avez restauré le fichier requis à partir d'une archive de disque, poursuivez la restauration des fichiers standard perdus et endommagés jusqu'à ce que tous les fichiers requis aient été restaurés.

  10. Si le fichier que vous restaurez est archivé sur un média amovible, une bande magnétique par exemple, créez un répertoire dans le système de fichiers restauré pour conserver les fichiers archive temporaires.

    Dans cet exemple, le répertoire /hsmfs1/tars est créé.

    root@solaris:~# mkdir /hsmfs1/tars
    
  11. Placez le média au début de l'en-tête tar du fichier archive contenant la copie archivée et lisez l'archive à partir du média dans la mémoire. Exécutez la commande request -m media-type -v volume-serial-number -p 0xposition path/requestfile, où :

    • -m media-type indique l'un des codes de type de média à deux caractères répertoriés dans Annexe B.

    • -v volume-serial-number indique le code alphanumérique à six caractères identifiant le volume de média.

    • -p 0xposition indique la position de départ hexadécimale que vous avez notée dans l'entrée de journal de l'archiveur.

    • path est le chemin d'accès au répertoire de récupération temporaire.

    • requestfile est le nom à utiliser pour le fichier tar en mémoire lu par la commande request à partir du média.

    Dans l'exemple, nous créons un fichier de requête, /hsmfs1/tars/currentrequest démarrant à la position 0x78 sur le volume LTO (li) VOL012 :

    root@solaris:~# request -m li -v VOL012 -p 0x78 /hsmfs1/tars/currentrequest
    
  12. Extrayez la copie archive du fichier manquant ou endommagé à partir du fichier tar en mémoire que vous avez créé à l'étape précédente. Exécutez la commande star -xv -f requestfile, où :

    • requestfile désigne le nom du fichier tar en mémoire.

    • file est le chemin d'accès au répertoire root du système de fichiers et le nom du fichier que vous souhaitez restaurer.

    La commande star est une version Oracle HSM améliorée de la commande GNU tar restaurant les fichiers indiqués depuis le fichier de requête (la copie en mémoire du fichier d'archive).

    Dans cet exemple, nous extrayons le fichier de données genfiles/genA0 du fichier de requête tars/currentrequest. Le fichier est alors restauré sur /hsmfs1/genfiles/genA0 :

    root@solaris:~# star -xvf tars/currentrequest genfiles/genA0
    
  13. Définissez tout attribut de fichier requis.

    Lorsque vous restaurez un fichier à partir d'un fichier tar sans fichier de points de récupération samfsdump ou qfsdump, les attributs du fichier d'origine sont perdus. Un fichier .inodes doit être entièrement créé pour le fichier à l'aide des valeurs d'attribut par défaut.

  14. Répétez cette procédure jusqu'à récupération de tous les fichiers requis.

  15. Si nécessaire, restaurez les fichiers segmentés perdus et endommagés et/ou les fichiers de dépassement de volume.

  16. Sinon, terminez la procédure de récupération. Accédez à la Restauration des systèmes de fichiers d'archivage pour un fonctionnement normal.

Restauration des fichiers segmentés perdus et endommagés

La restauration d'un fichier segmenté est très similaire à celle d'un fichier standard, à la différence que vous récupérez des segments individuels plutôt que le fichier lui-même. Pour restaurer le fichier, vous devez donc rassembler les segments au sein d'un fichier unique, avant de resegmenter le résultat. Pour chaque fichier dont vous souhaitez effectuer la récupération, procédez comme suit :

  1. Si ce n'est pas déjà fait, connectez-vous au serveur de métadonnées du système de fichiers en tant qu'utilisateur root.

    root@solaris:~# 
    
  2. Si ce n'est pas déjà fait, arrêtez l'archivage et le recyclage en suivant la procédure décrite à la Arrêt des processus d'archivage et de recyclage

  3. Si vous possédez un journal de l'archiveur datant de la période où le fichier segmenté a été archivé pour la dernière fois, recherchez les entrées pour les fichiers segmentés (saisissez S). Sélectionnez les entrées les plus récentes pour les segments du fichier recherché.

    A 2015/03/03 14:01:47 li VOL013 all.1 76a.1 hsmfs1 14.5 10485760 bf/dat011/1 S 0 51
    A 2015/03/03 14:04:11 li VOL013 all.1 2476f.5002 hsmfs1 15.5 10485760 bf/dat011/2 S 0 51
    A 2015/03/03 14:06:24 li VOL013 all.1 1409aa4.1 hsmfs1 16.5 184 bf/dat011/3 S 0 51
    
  4. Une fois que vous avez trouvé les entrées les plus récentes pour les segments, notez les détails suivants :

    • le type de média

    • le numéro de série de volume des volumes de média contenant des segments de fichiers

    • les positions de départ hexadécimales des fichiers d'archive (tar) contenant les segments

    • le chemin et le nom du fichier segmenté associé au répertoire root du système de fichiers

    • le nombre de segments dans le fichier.

    Dans l'exemple, le fichier dat011 est divisé en trois segments (1, 2 et 3). Les trois segments sont enregistrés dans trois fichiers d'archive, tous situés sur un seul volume de bande LTO (li) avec le numéro de série de volume VOL013. Les trois fichiers d'archive démarrent aux positions 0x76a (76a), 0x2476f (2476f) et 0x1409aa4 (1409aa4)

    A 2015/03/03 14:01:47 li VOL013 all.1 76a.1 hsmfs1 14.5 10485760 bf/dat011/1 S 0 51
    A 2015/03/03 14:04:11 li VOL013 all.1 2476f.5002 hsmfs1 15.5 10485760 bf/dat011/2 S 0 51
    A 2015/03/03 14:06:24 li VOL013 all.1 1409aa4.1 hsmfs1 16.5 184 bf/dat011/3 S 0 51
    
  5. Accédez au répertoire root du système de fichiers que vous restaurez.

    Les fichiers archive Oracle HSM stockent des copies en fonction du répertoire root du système de fichiers. Par conséquent, il est souhaitable de les restaurer à partir du répertoire root pour les restaurer dans leur emplacement d'origine.

    Dans cet exemple, la racine du système de fichiers hsmfs1 a été modifiée.

    root@solaris:~# cd /hsmfs1
    
  6. Créez un répertoire dans le système de fichiers restauré contenant les fichiers archive temporaires.

    Dans cet exemple, le répertoire /hsmfs1/tars est créé.

    root@solaris:~# mkdir /hsmfs1/tars
    
  7. Placez le média au début de chaque fichier archive contenant une copie archivée d'un ou de plusieurs segments de fichiers, et lisez l'archive à partir du média dans la mémoire. Exécutez la commande request -m media-type -v volume-serial-number -p 0xposition path/requestfile, où :

    • -m media-type indique l'un des codes de type de média à deux caractères répertoriés dans Annexe B.

    • -v volume-serial-number indique le code alphanumérique à six caractères identifiant le volume de média.

    • -p 0xposition indique la position de départ hexadécimale que vous avez notée dans l'entrée de journal de l'archiveur.

    • path est le chemin d'accès au répertoire de récupération temporaire.

    • requestfile est le nom à utiliser pour le fichier tar en mémoire lu par la commande request à partir du média.

    Dans cet exemple, deux fichiers de requête doivent être créés. Le premier, /hsmfs1/tars/request76a, charge le fichier d'archive qui débute à la position 0x76a sur LTO (li) VOL013. Cette archive contient les deux premiers segments. Le second fichier de requête, /hsmfs1/tars/request1409aa4, charge le fichier d'archive à la position 0x1409aa4, dans ce cas sur le même volume (les segments peuvent se trouver sur n'importe quel volume de la bibliothèque) :

    root@solaris:~# request -m li -v VOL013 -p 0x76a /hsmfs1/tars/request76a
    root@solaris:~# request -m li -v VOL013 -p 0x1409aa4 \
    /hsmfs1/tars/request1409aa4
    
  8. Extrayez chaque segment de la copie de sauvegarde du fichier manquant ou endommagé à partir du fichier tar en mémoire que vous avez créé à l'étape précédente. Exécutez la commande star -xv -f requestfile segment, où requestfile est le nom du fichier tar en mémoire et où segment est le chemin d'accès au répertoire root du système de fichiers et le nom de chaque segment du fichier à restaurer.

    La commande star est une version Oracle HSM améliorée du fichier GNU tar qui permet de restaurer les fichiers spécifiés à partir du fichier archive désigné à l'aide du fichier de requête.

    Dans cet exemple, deux des trois segments du fichier de données bf/dat011 sont extraits du fichier de requête (fichiers tar en mémoire) tars/request76a ; le troisième est extrait du fichier de requête tars/request1409aa4. Le fichier est restauré sur un répertoire, /hsmfs1/bf/dat011/ en trois parties distinctes :

    root@solaris:~# star -xvf tars/request76a bf/dat011/1
    root@solaris:~# star -xvf tars/request76a bf/dat011/2
    root@solaris:~# star -xvf tars/request1409aa4 bf/dat011/3
    

    En répertoriant le contenu de /hsmfs1/bf/dat011, un fichier numéroté de façon séquentielle est visible pour chaque segment restauré :

    root@solaris:~# ls /hsmfs/bf/dat011
    total 40968
    -rw-rw---- 1 root other 10485760 Mar  5 17:06 1
    -rw-rw---- 1 root other 10485760 Mar  5 17:06 2
    -rw-rw---- 1 root other      184 Mar  5 17:07 3
    root@solaris:~# 
    
  9. Réunissez les segments restaurés en un fichier unique, non segmenté et temporaire.

    Dans cet exemple, les trois segments du répertoire /hsmfs1/bf/dat011/ ont été concaténés pour créer le fichier /hsmfs1/bf/dat011file :

    root@solaris:~# cat /hsmfs/bf/dat011/1 /hsmfs/bf/dat011/2 \
    /hsmfs/bf/dat011/3 > /hsmfs/bf/dat011file
    root@solaris:~# 
    

    Lorsque le contenu de /hsmfs1/bf/ est répertorié, le nouveau fichier s'affiche avec le répertoire contenant les segments.

    root@solaris:~# ls -l /hsmfs/bf/dat011*
    drwxr-xr-x 2 root root      4096 Mar  5 17:06 dat011
    -rw-rw---- 1 root other 20971704 Mar  5 17:14 dat011file
    root@solaris:~# 
    
  10. Supprimez les segments et le répertoire qui les contient.

    root@solaris:~# rm -r /hsmfs/bf/dat011/ 
    root@solaris:~# 
    
  11. Créez un fichier vide à l'aide du chemin d'accès et du nom d'origine du fichier segmenté. Exécutez la commande touch file, où file est le chemin d'accès et le nom de fichier d'origine.

    Dans cet exemple, le fichier vide /hsmfs/bf/dat011 est créé, le nom d'origine du fichier segmenté que nous restaurons :

    root@solaris:~# touch /hsmfs/bf/dat011 
    root@solaris:~# 
    
  12. Définissez l'attribut de segment Oracle HSM sur le nouveau fichier vide créé. Exécutez la commande segment -l segment-length file, où segment-length est la longueur du segment que vous avez signalé dans l'entrée du journal de l'archiveur et où file est le chemin d'accès et le nom d'origine du fichier segmenté.

    Dans cet exemple, le journal de l'archiveur indique que la longueur du segment pour le fichier dat011 est 10485760 (le fichier termine au troisième segment, la longueur des données sur le média est donc inférieure à la longueur du segment) :

    A 2015/03/03 14:01:47 li VOL013 all.1 76a.1 hsmfs1 14.5 10485760 bf/dat011/1 S 0 51
    A 2015/03/03 14:04:11 li VOL013 all.1 76a.5002 hsmfs1 15.5 10485760 bf/dat011/2 S 0 51
    A 2015/03/03 14:06:24 li VOL013 all.1 1409aa4.1 hsmfs1 16.5 184 bf/dat011/3 S 0 51
    

    Pour le fichier vide, nous avons donc défini la longueur du segment sur 10485760 :

    root@solaris:~# segment -l 10485760 /hsmfs/bf/dat011 
    root@solaris:~# 
    
  13. Copiez le fichier temporaire non segmenté dans le fichier segmenté vide.

    Dans cet exemple, nous avons copié dat011file dans dat011 :

    root@solaris:~# cp /hsmfs/bf/dat011file /hsmfs/bf/dat011
    root@solaris:~# 
    

    Lorsque la commande sls -2K hsmfs/bf/dat011 est utilisée pour répertorier les segments (voir ci-dessous). Le fichier a donc été restauré.

    root@solaris:~# sls -2K /hsmfs/bf/dat011
    -rw-rw---- 1 root other        20971704     Mar  5 17:12 hsmfs/bf/dat011
    ---------- ----- sI {3,0,0,0}
    -rw-rw---- 1 root other        10485760     Mar  5 17:12 hsmfs/bf/dat011/1
    ---------- ----- sS
    -rw-rw---- 1 root other        10485760     Mar  5 17:12 hsmfs/bf/dat011/2
    ---------- ----- sS
    -rw-rw---- 1 root other             184     Mar  5 17:12 hsmfs/bf/dat011/3
    ---------- ----- sS
    
  14. Définissez tout autre attribut de fichier requis.

    Lorsque vous restaurez un fichier à partir d'un fichier tar sans fichier de points de récupération samfsdump ou qfsdump, les attributs du fichier d'origine sont perdus. Un fichier .inodes doit être entièrement créé pour le fichier à l'aide des valeurs d'attribut par défaut.

  15. Le fichier a maintenant été restauré. Supprimez le fichier temporaire non segmenté.

    Dans cet exemple, dat011file a été supprimé :

    root@solaris:~# rm /hsmfs/bf/dat011file
    root@solaris:~# 
    
  16. Répétez cette procédure jusqu'à récupération de tous les fichiers requis.

  17. Terminez la procédure de récupération. Accédez à la Restauration des systèmes de fichiers d'archivage pour un fonctionnement normal.

Restauration des fichiers de dépassement de volume perdus ou endommagés

Un fichier de dépassement de volume est un fichier standard réparti sur des volumes de média. La restauration d'un fichier de dépassement de volume est donc quasiment identique à celle de n'importe quel autre fichier standard. Toutefois, vous devez combiner des sections d'un fichier archive résidant sur plusieurs volumes en un fichier archive unique sur disque avant d'extraire le fichier de données de l'archive. Pour chaque fichier dont vous souhaitez effectuer la récupération, procédez comme suit :

  1. Si ce n'est pas déjà fait, connectez-vous au serveur de métadonnées du système de fichiers en tant qu'utilisateur root.

    root@solaris:~# 
    
  2. Si ce n'est pas déjà fait, arrêtez l'archivage et le recyclage en suivant la procédure décrite à la Arrêt des processus d'archivage et de recyclage

  3. Si vous possédez un journal de l'archiveur datant de la période où le fichier de dépassement de volume a été archivé pour la dernière fois, recherchez l'entrée la plus récente pour le fichier. Notez le(s) numéro(s) de série de volume du média, la longueur de chaque section du fichier, le chemin d'accès et le fichier correspondant au répertoire root du système de fichiers ainsi que le nombre de sections du fichier.

    Dans cet exemple, nous savons que le fichier /hsmfs1/rf/rf81 est un dépassement de volume car il s'agit d'un fichier f de type standard résidant sur deux volumes, VOL036 et VOL034, et possédant deux sections, 0 et 1 :

    A 2015/03/03 18:28:51 li VOL036 all.1 12d.1 hsmfs1 11731.1 89128448  rf/rf81 f 0 210
    A 2013/08/23 18:28:51 li VOL034 all.1 15f.0 hsmfs1 11731.1 525271552 rf/rf81 f 1 220
    
  4. Accédez au répertoire root du système de fichiers que vous restaurez.

    Les fichiers archive Oracle HSM stockent des copies en fonction du répertoire root du système de fichiers. Par conséquent, il est souhaitable de les restaurer à partir du répertoire root pour les restaurer dans leurs emplacements d'origine.

    Dans cet exemple, la racine du système de fichiers hsmfs1 a été modifiée.

    root@solaris:~# cd /hsmfs1
    
  5. Avant de continuer, assurez-vous que le système de fichiers contient suffisamment d'espace libre pour accueillir un fichier au moins deux fois plus volumineux que le fichier que vous récupérez.

    Pour le fichier de l'exemple, rf/rf81, environ 1,2 giga-octets d'espace libre est requis, en fonction des tailles des deux sections du fichier : 2 x (89 128 448 + 525 271 552) = 1 228 800 000 octets.

  6. Créez un répertoire dans le système de fichiers restauré contenant les fichiers archive temporaires.

    Dans cet exemple, le répertoire /hsmfs1/tars est créé.

    root@solaris:~# mkdir /hsmfs1/tars
    
  7. Placez le média au début de chaque fichier archive contenant une copie archivée d'un ou de plusieurs segments de fichiers, et lisez l'archive à partir du média dans la mémoire. Exécutez la commande request -m media-type -v volume-serial-number -p 0xposition path/requestfile, où :

    • -m media-type indique l'un des codes de type de média à deux caractères répertoriés dans Annexe B.

    • -v volume-serial-number indique le code alphanumérique à six caractères identifiant le volume de média.

    • -p 0xposition indique la position de départ hexadécimale que vous avez notée dans l'entrée de journal de l'archiveur.

    • path est le chemin d'accès au répertoire de récupération temporaire.

    • requestfile est le nom à utiliser pour le fichier tar en mémoire lu par la commande request à partir du média.

    Dans cet exemple, deux fichiers de requête sont créés. Le premier fichier de requête, /hsmfs1/tars/requestVOL036, charge le fichier archive qui débute à la position 0x12d sur le volume LTO (li) VOL036. Le second fichier de requête, /hsmfs1/tars/requestVOL034, charge le fichier d'archive à la position 0x15f sur LTO (li) VOL034 :

    root@solaris:~# request -m li -v VOL036 -p 0x12d /hsmfs1/tars/requestVOL036
    root@solaris:~# request -m li -v VOL034 -p 0x15f /hsmfs1/tars/requestVOL034
    
  8. Enregistrez tous les fichiers tar en mémoire que vous avez créés sur le disque en tant que section du fichier archive. Exécutez la commande dd if= requestfile of=archive_section, où requestfile est le chemin d'accès et le nom du fichier tar en mémoire et où archive_section est le chemin d'accès et le nom de chaque section du fichier archive.

    Dans cet exemple, les fichiers de requête (fichiers tar en mémoire), tars/requestVOL036 et tars/requestVOL034 en tant que tars/archive_part1 et tars/archive_part2 ont été enregistrés :

    root@solaris:~# dd if=tars/requestVOL036 of=tars/archive_part1
    root@solaris:~# dd if=tars/requestVOL034 of=tars/archive_part2
    root@solaris:~# 
    
  9. Réunissez les sections dans un seul fichier archive.

    Dans cet exemple, les deux sections tars/archive_part1 et tars/archive_part2 sont concaténées afin de créer un seul fichier archive, /tars/archive_complete :

    root@solaris:~# cat tars/archive_part1 tars/archive_part2 > \
    tars/archive_complete
    root@solaris:~# 
    
  10. Extrayez la copie de sauvegarde du fichier de dépassement de volume manquant ou endommagé à partir du fichier archive (tar) que vous avez créé à l'étape précédente. Exécutez la commande star -xv -f tarfile file, où tarfile est le nom du fichier archive et où file est le chemin d'accès au répertoire root du système de fichiers et le nom du fichier de dépassement de volume à restaurer.

    La commande star est une version Oracle HSM améliorée du fichier GNU tar qui permet de restaurer les fichiers spécifiés à partir du fichier archive désigné à l'aide du fichier de requête.

    Dans cet exemple, le fichier de dépassement de volume rf/rf81 est extrait du fichier tar tars/archive_complete :

    root@solaris:~# star -xvf tars/archive_complete rf/rf81
    
  11. Définissez tout autre attribut de fichier requis.

    Lorsque vous restaurez un fichier à partir d'un fichier tar sans fichier de points de récupération samfsdump ou qfsdump, les attributs du fichier d'origine sont perdus. Un fichier .inodes doit être entièrement créé pour le fichier à l'aide des valeurs d'attribut par défaut.

  12. Le fichier de dépassement de volume est à présent restauré. Supprimez le fichier temporaire.

    Dans cet exemple, dat011file a été supprimé :

    root@solaris:~# rm tars/archive_*
    root@solaris:~# 
    
  13. Répétez cette procédure jusqu'à récupération de tous les fichiers requis.

  14. Terminez la procédure de récupération. Accédez à la Restauration des systèmes de fichiers d'archivage pour un fonctionnement normal.

Récupération des copies d'archive endommagées

Une copie d'archive endommagée est une copie d'un fichier ne pouvant pas être retransférée sur le cache disque. Il peut arriver que le fichier ne puisse pas être créé en raison d'un problème d'E/S matériel intermittent. Le cas échéant, ce problème peut être facilement résolu. Parfois, la copie endommagée est altérée et les données sont irrécupérables. Dans ce cas, la seule solution est de récupérer le fichier à partir d'une autre copie.

Pour identifier et gérer des copies endommagées, procédez comme suit :

  1. Identifiez les fichiers dont des copies d'archive sont endommagées. Exécutez la commande sfind mountpoint -any_copy_d, où mountpoint est le répertoire où le système de fichiers récupéré est monté.

    Dans cet exemple, la recherche commence dans le répertoire /hsmfs1 où trois fichiers possédant des copies endommagées sont trouvés :

    root@solaris:~# sfind /hsmfs1 -any_copy_d
    ./genfiles/ab09
    ./genfiles/ab11
    ./genfiles/ay12
    root@solaris:~# 
    
  2. Pour chaque fichier identifié, recherchez les copies endommagées. Exécutez la commande sls -D file, où file est le chemin d'accès et le nom du fichier à vérifier.

    Les copies endommagées sont identifiées par un D. Dans cet exemple, copy 2 de /hsmfs1/genfiles/ab09 et copy 1 de /hsmfs1/genfiles/ab11 sont endommagées :

    root@solaris:~# sls -D /hsmfs1/genfiles/ab09
    /hsmfs1/genfiles/ab09:
      mode: -rw-r-----  links:   1  owner: root group: other
      length:    306581  admin id: 0  inode:    11748.11
      project: system(0)
      copy 1: ---- Mar 11 13:52       76f.421bc li VOL011
      copy 2: ---D Mar 31 14:02       286.1324f li VOL021
      access:   Mar 11 13:50  modification: Mar 11 13:50
      changed:  Mar 11 13:50  attributes:   Mar 11 13:50
      creation: Mar 11 13:50  residence:    Mar 11 13:50
    root@solaris:~# sls -D /hsmfs1/genfiles/ab11
    /hsmfs1/genfiles/ab11:
      mode: -rw-r-----  links:   1  owner: root group: other
      length:    380051  admin id: 0  inode:    1460.1
      project: system(0)
      copy 1: ---D Mar 01 10:21       431.21bc6 li VOL024
      access:   Mar 01 10:21  modification: Mar 01 10:21
      changed:  Mar 01 10:21  attributes:   Mar 01 10:21
      creation: Mar 01 10:21  residence:    Mar 01 10:21
    root@solaris:~# 
    
  3. S'il existe une autre copie, désarchivez la copie endommagée. Exécutez la commande unarchive -c CopyNumber file, où CopyNumber est un nombre entier représentant le numéro de copie et où file est le chemin d'accès et le nom du fichier endommagé. Arrêtez la procédure à cette étape.

    Lorsque vous désarchivez la copie endommagée, Oracle HSM est transféré de la copie restante et crée une copie d'archive supplémentaire à la prochaine exécution du processus de l'archiveur. Cet exemple contient une autre copie non endommagée de /hsmfs1/genfiles/ab09 qui permet d'annuler l'archivage de la copie endommagée, la copie 2 :

    root@solaris:~# unarchive -c 2 /hsmfs1/genfiles/ab09
    root@solaris:~# 
    
  4. Si vous ne disposez pas d'une autre copie, réparez la copie endommagée. Exécutez la commande undamage -cCopyNumber file, où CopyNumber est un nombre entier représentant le numéro de copie et où file est le chemin d'accès le nom du fichier endommagé.

    Il peut arriver qu'un fichier ne parvienne pas à effectuer un transfert en raison d'une erreur d'E/S matérielle intermittente. La suppression de l'indicateur de dommage et la réexécution du transfert peuvent résoudre ce problème. Cet exemple contient une seule copie de /hsmfs1/genfiles/ab11 :

    root@solaris:~# undamage -c1 /hsmfs1/genfiles/ab11
    
  5. Tentez de transférer la copie. Exécutez la commande stage -c CopyNumber -I file, où CopyNumber est un nombre entier représentant le numéro de copie et où file est le chemin d'accès et le nom du fichier.

    Le paramètre (immédiat) -I facultatif déplace l'opération de transfert en haut de la file d'attente :

    root@solaris:~# stage -c 1 -I /hsmfs1/genfiles/ab11
    
  6. Si le transfert réussit, arrêtez-vous à cette étape.

  7. Si le transfert échoue à nouveau, Oracle HSM définit à nouveau l'indicateur endommagé. Notez le numéro d'inode principal de la sortie de la commande sls -D pour la copie endommagée.

    Dans cet exemple, le numéro d'inode du fichier, /hsmfs1/genfiles/ab11, est 1460 :

    root@solaris:~# sls -D /hsmfs1/genfiles/ab11
    /hsmfs1/genfiles/ab11:
      mode: -rw-r-----  links:   1  owner: root group: other
      length:    380051  admin id: 0  inode:    1460.1
      project: system(0)
      copy 1: ---D Mar 01 10:21       431.21bc6 li VOL024
      ...
    root@solaris:~# 
    
  8. Recherchez les causes possibles. Commencez par rechercher des messages relatifs au transfert qui concernent l'inode du fichier contenant la copie endommagée dans le fichier Oracle HSM /var/adm/sam-log.

    La recherche peut être effectuée de différentes manières. Dans cet exemple, nous répertorions le contenu du fichier journal à l'aide de la commande cat de Solaris et transmettons la sortie vers grep et une expression régulière correspondant au numéro d'inode. Deux messages sont obtenus. Les deux indiquent une erreur d'E/S, l'un implique explicitement le nombre ordinal d'équipement (eq), 804, qui est l'un de nos lecteurs de bande :

    root@solaris:~# cat /var/adm/sam-log | grep "inode 1460"
    Mar 11 15:35:44 server1 genu-20[8899]: Stage request canceled for inode 1460 (eq 804): I/O error.
    Jan 11 15:35:44 server1 samfs[8894]: /sam4 inode 1460.1 - Archive copy 1 marked damaged: I/O error
    
  9. Si le fichier /var/adm/sam-log implique un nombre ordinal d'équipement Oracle HSM spécifique, examinez le journal de périphérique, /var/opt/SUNWsamfs/devlog/drive-equipment-number, où drive-equipment-number est le numéro ordinal répertorié dans le fichier /var/adm/sam-log.

  10. Si le problème semble spécifique à un lecteur donné, rendez le lecteur impliqué indisponible au processus de transfert à l'aide de la commande samcmd unavail drive-equipment-number. Réparez ensuite la copie, puis réessayez le transfert.

    root@solaris:~# samcmd unavail 804
    root@solaris:~# stage -c 1 -I /hsmfs1/genfiles/ab11
    root@solaris:~# undamage -c1 /hsmfs1/genfiles/ab11
    root@solaris:~# 
    
  11. Si le transfert échoue à nouveau et si aucun lecteur ne semble défectueux, tentez de récupérer la copie à l'aide des commandes request et star, comme décrit dans la Récupération des fichiers à l'aide des entrées du journal, ou d'utilitaires Solaris tels que tar et dd.

  12. Si vous ne parvenez toujours pas à récupérer le fichier et si la valeur des données le justifie, faites appel à un service de récupération des données. Pour obtenir de l'aide sur les médias de bande Oracle StorageTek, faites appel aux services de récupération de données de bande d'entreprise Oracle StorageTek. Connectez-vous au site My Oracle Support à l'adresse support.oracle.com. Ouvrez une demande d'assistance, sélectionnez dans la liste le modèle de lecteur de bande dans la catégorie de demande, puis sélectionnez Problèmes de média dans la sous-catégorie de la liste.

  13. Si le fichier s'avère irrécupérable, désarchivez la copie endommagée. Exécutez la commande unarchive -c CopyNumber file, où CopyNumber est un nombre entier représentant le numéro de copie et où file est le chemin d'accès et le nom du fichier endommagé.

    root@solaris:~# unarchive -c 1 /hsmfs1/genfiles/ab11
    root@solaris:~# 
    
  14. Résolvez tous les problèmes de disque ou de média identifiés par les fichiers journaux.

  15. Si vous avez désactivé les processus d'archivage, de transfert et de recyclage au cours d'une précédente étape, réactivez-les maintenant. Accédez à la Restauration des systèmes de fichiers d'archivage pour un fonctionnement normal.

  16. Sinon, arrêtez la procédure à cette étape.