Répertoire /scratch ː Purge automatique
Page enfant de Storage and file management
Sur les grappes de Calcul Canada, le système de fichiers scratch sert au stockage rapide et temporaire des données utilisées en cours d'exécution. Pour leur part, les données qui doivent être stockées à long terme et les données de référence sont enregistrées dans l'espace /project ou dans une des zones d'archivage. Pour toujours garder suffisamment d'espace scratch, les fichiers sont supprimés périodiquement aux 60 jours, en fonction de leur âge; cette période correspond à un peu plus du double de la durée maximale d'une tâche.
Procédure
À la fin de chaque mois, les fichiers susceptibles d'être supprimés le 15 du mois suivant sont repérés. Au premier jour du mois, un message d'avertissement est affiché aux utilisateurs qui possèdent au moins un de ces fichiers et un avis leur est envoyé par courriel; cet avis contient aussi une liste de tous les fichiers susceptibles d'être supprimés. Vous avez donc deux semaines pour copier les fichiers que vous voulez conserver.
Le 12 du mois, un dernier avis est envoyé avec une liste à jour des fichiers susceptibles d'être supprimés le 15, ce qui vous laisse 72 heures pour déplacer vos fichiers. Le 15 du mois en fin de journée, tous les fichiers dans l'espace scratch pour lesquels ctime et atime sont de plus de 60 jours sont supprimés. Ces fichiers ne doivent pas se trouver dans l'espace scratch et Calcul Canada émet cet avertissement uniquement à titre de courtoisie.
Prenez note que le fait de copier un fichier ou d'utiliser la commande rsync pour le déplacer modifie atime et fait que le fichier ne sera pas considéré lors de la purge. Une fois les données déplacées, veuillez supprimer les fichiers et répertoires d'origine plutôt que d'attendre qu'ils soient supprimés par la procédure de purge.
Connaître l'âge d'un fichier
L'âge d'un fichier est déterminé par :
- atime, le moment du dernier accès et
- ctime, le moment de la dernière modification.
Pour trouver ctime utilisez
[name@server ~]$ ls -lc <filename>
Pour trouver atime utilisez
[name@server ~]$ ls -lu <filename>
Le paramètre (mtime) n'est pas utilisé parce que sa valeur peut être modifiée par l'utilisateur ou par un autre programme pour afficher une fausse information.
Il serait suffisant de n'utiliser que atime étant donné que sa valeur est mise à jour par le système en synchronisation avec ctime. Par contre, les programmes à l'intérieur de l'espace d'un utilisateur peuvent potentiellement modifier atime pour situer sa valeur dans le passé. Le fait d'utiliser aussi ctime ajoute un deuxième niveau de contrôle.
Mauvaises pratiques
Il demeure cependant possible de fausser l'âge des fichiers avec l'exécution périodique de la commande récursive touch. Notre équipe technique dispose toutefois de moyens pour détecter ce genre de pratique et les utilisateurs qui s'y prêtent seront priés de retirer les fichiers trafiqués de l'espace scratch.
Copier un dossier avec des symlinks de manière sécuritaire
Dans la plupart des cas, cp ou rsync seront suffisants pour copier des données de scratch vers votre projet. Mais si vous avez des liens symboliques (symlink) dans scratch, les copier causera problème car ils continueront de pointer vers scratch. Pour éviter cela, vous pouvez utiliser tar pour faire une archive de vos fichiers sur scratch, et ensuite l'extraire dans votre projet. Vous pouvez le faire d'un seul coup:
cd /scratch/.../your_data
mkdir project/.../your_data
tar cf - ./* | (cd /project/.../your_data && tar xf -)