Cela ne m'est jamais arrivé auparavant, mais je suis incapable d'effectuer une tâche simple telle que la compression d'un fichier de 18,5 Go sur Ubuntu Linux 18.04 avec l'un des outils de compression populaires tels que gzip , bzip2 y 7z . Tous signalent un message d'avertissement (et non d'erreur) similaire indiquant que la taille du fichier a changé pendant la compression, alors qu'en réalité aucun autre processus n'accède au fichier. Par exemple, en essayant de "tar-gz", l'outil rapporte : File shrank by <nnnnnnnn> bytes; padding with zeros
et se termine avec le code d'erreur 1, dont la page de manuel de tar indique qu'il est dû à un changement de fichier pendant la compression :
code de sortie 1 : Certains fichiers sont différents. Si tar a été invoqué avec la ligne de commande --compare (--diff, -d), cela signifie que certains fichiers de l'archive diffèrent de leurs fichiers d'origine. fichiers de l'archive diffèrent de leurs équivalents sur le disque. Si tar a été invoqué avec l'une des options --create, --append ou --update ce code de sortie signifie que certains fichiers ont été modifiés lors de leur pendant l'archivage et que l'archive résultante ne contient donc pas ne contient pas la copie exacte de l'ensemble de fichiers.
Le fichier est un VMDK, et bien sûr la VM associée est complètement arrêtée lorsque je le compresse. D'autre part, j'ai remarqué que tous les outils de compression échouent lorsque le fichier compressé atteint une taille d'environ 280 Mo.
J'ai déjà vérifié d'autres questions similaires sur ServerFault mais je n'ai toujours pas d'indice pour comprendre ce qui se passe. La réponse la plus votée à la question liée dit qu'il ne s'agit pas d'une erreur et que l'outil de compression ne fait que "simplifier" un tas d'octets nuls, mais si j'essaie d'exécuter la VM après avoir décompressé le fichier VMDK, elle échoue en affirmant que le disque est corrompu.
Je suis complètement bloqué sur ce point. Avez-vous une idée de ce qui peut se passer ?
UPDATE
En essayant de copier le fichier dans un autre répertoire à l'aide de la fonction cp
il a généré une erreur d'E/S lors de la lecture du fichier. D'un autre côté dmesg
a signalé des erreurs d'E/S lors de la lecture d'un bloc spécifique du fichier. Tout indique qu'il s'agit d'une erreur de disque (bien que e2fsck
dit que tout est OK et qu'il n'y a aucun bloc défectueux). Comme j'ai déjà une sauvegarde de la VM, je vais essayer de changer le disque de l'ordinateur hôte et de réinstaller une nouvelle copie d'Ubuntu et voir ce qui se passe. Je garde cette question affichée jusqu'à ce que j'obtienne des résultats.
0 votes
Pour vous assurer qu'aucun processus n'accède au fichier, vous pouvez utiliser l'option
lsof
commande.0 votes
@JoãoAlves Bonjour ! Je l'ai déjà fait ! J'ai même redémarré la machine hôte et tenté de compresser le fichier sans démarrer la VM.
0 votes
"En fait, aucun autre processus n'accède au fichier ....". Comment en être sûr ? Pour être vraiment très sûr, vous pouvez faire
sudo chattr +i my-file.vmdk
puis essayer de compresser. Veuillez également coller un exemple d'échec de la commande compress pour nous aider à comprendre exactement.0 votes
Veuillez exécuter
stat <filename>
et triple vérificationmtime/ctime
pour s'assurer que rien n'est en train de modifier le fichier.0 votes
@shodanshok, confirmé que rien ne change dans le fichier.
0 votes
@semisecure, je l'ai fait, mais j'ai obtenu les mêmes résultats. Exemple de commande de compression :
tar cvzSpf backup.tar.gz testmachine.vmdk
0 votes
Je suggérerais de copier le fichier (c'est-à-dire :
cp original.vmdk temp.vmkd
et d'essayer de compresser la copie. Cela change-t-il quelque chose ?0 votes
@shodanshok, justement, c'est ce que j'ai essayé de faire jusqu'à ce que j'obtienne une erreur de la part de
cp
. Veuillez lire la mise à jour de ma question.1 votes
Vérifier SMART d'un disque. Exécuter
e2fsck -c -f
pour vérifier s'il y a des blocs défectueux. Il suffit dee2fsck
n'effectue pas de balayage complet de la surface du disque pour détecter les blocs défectueux. Ou mieux, arrêtez immédiatement d'utiliser ce disque et faites-en un vidage s'il contient des informations précieuses (avecddrescue
).