5 votes

Impossible de compresser un fichier de 18 Go sur Ubuntu Linux 18.04

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.

3voto

Claudix Points 181

OK, je réponds à ma propre question qui peut servir à quelqu'un d'autre pour réaliser s'il/elle a réellement des problèmes de matériel.

Après avoir essayé plusieurs fois de compresser le fichier problématique (même avec différents compresseurs), j'ai juste essayé de copier le fichier dans un autre répertoire en utilisant cp qui a signalé une erreur d'E/S lors de la lecture du fichier :

cp: reading `filename': Input/output error

Un coup d'œil rapide sur dmesg a confirmé l'erreur matérielle, en signalant une erreur d'E/S dans la lecture d'un bloc spécifique sur le disque.

J'ai démarré l'OS en mode d'urgence et j'ai exécuté e2fsck -vf /dev/sda1 Pourtant, il n'a pas signalé de mauvais bloc. Dans les commentaires à ma question, l'utilisateur Nikita Kipriyanov a suggéré d'exécuter e2fsck -c -f que je n'ai pas eu l'occasion d'exécuter parce que j'avais déjà changé le disque. Le site -c traite spécifiquement des blocs défectueux, selon la norme page d'accueil :

fait en sorte que e2fsck utilise le programme badblocks(8) pour effectuer une analyse en lecture seule du périphérique afin de trouver d'éventuels blocs défectueux. Si des blocs défectueux sont trouvés, ils sont ajoutés à l'inode des blocs défectueux pour empêcher qu'ils soient alloués à un fichier ou un répertoire. Si cette option est spécifiée deux fois, alors l'analyse des blocs défectueux sera effectuée en utilisant un test non destructif en lecture-écriture.

Le lecteur peut peut-être exécuter cette commande comme le suggère Nikita comme solution de contournement, mais quand un disque commence à donner des erreurs matérielles, la meilleure option est d'essayer de sauvegarder autant d'informations que possible et de déplacer le système vers un nouveau disque frais.

Bonne chance !

1 votes

Vous pouvez toujours vérifier le disque après qu'il a été modifié. Il suffit de le connecter à un autre ordinateur :) Nous procédons toujours à une telle analyse post-mortem, juste pour être sûrs. Et, les disques toujours meurent après un certain temps d'utilisation, c'est pourquoi vous devez disposer d'un système essentiel de surveillance de l'état des disques avec alertes ! Il sauvegarde les données...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X