GNU/Linux >> Tutoriels Linux >  >> Linux

Que sont les fichiers fragmentés sous Linux

Avez-vous déjà observé une différence dans l'utilisation du disque de certains fichiers lors de l'utilisation des commandes du et ls. Par exemple :

$ du -sh /u02/ticoprd/redo/*
515M redo1a.rdo
524M redo3b.rdo
518M redo4a.rdo
$ ls -ltrh /u02/ticoprd/redo/*
-rw-r----- 1 oticoprd dba 1.1G Aug 4 01:09 redo1a.rdo
-rw-r----- 1 oticoprd dba 1.1G Aug 4 02:32 redo3b.rdo
-rw-r----- 1 oticoprd dba 1.1G Aug 4 03:51 redo4a.rdo

Nous pouvons voir que la commande "ls" affiche la taille du fichier à 1,1 Go alors que la taille du fichier de commande "du" n'est que de 515 Mo. Ces fichiers sont des fichiers fragmentés. Le "ls" affiche la taille apparente du fichier et "du" affiche la taille réelle du fichier résidant sur le disque.

Un fichier fragmenté est un type de fichier informatique qui tente d'utiliser plus efficacement l'espace du système de fichiers lorsque les blocs alloués au fichier sont pour la plupart vides. Ceci est réalisé en écrivant de brèves informations (métadonnées) représentant les blocs vides sur le disque au lieu de l'espace "vide" réel qui constitue le bloc, en utilisant moins d'espace disque (c'est-à-dire que les fichiers épars contiennent des blocs de zéros dont l'existence est enregistrée, mais n'ont pas espace alloué sur le disque). La taille complète du bloc est écrite sur le disque en tant que taille réelle uniquement lorsque le bloc contient des données "réelles" (non vides).

Lors de la lecture de fichiers épars, le système de fichiers convertit de manière transparente les métadonnées représentant des blocs vides en blocs "réels" remplis de zéro octet au moment de l'exécution. L'application n'a pas connaissance de cette conversion. Les fichiers fragmentés sont couramment utilisés pour les images de disque, les instantanés de base de données, les fichiers journaux, etc.

L'avantage des fichiers fragmentés est que le stockage n'est alloué qu'en cas de besoin :l'espace disque est économisé et des fichiers volumineux peuvent être créés même s'il n'y a pas suffisamment d'espace libre sur le système de fichiers.

Les inconvénients sont que les fichiers épars peuvent devenir fragmentés. Les rapports d'espace libre du système de fichiers peuvent être trompeurs et la copie d'un fichier clairsemé avec un programme qui ne les prend pas explicitement en charge peut copier la totalité de la taille non compressée du fichier, y compris les sections clairsemées, principalement nulles, qui ne sont pas sur le disque - perdre les avantages de la propriété sparse dans le fichier.

Nous pouvons voir ce comportement avec le fichier /var/log/lastlog.

# ls -lh /var/log/lastlog
-rw-r--r--. 1 root root 144K Sep 8 22:45 /var/log/lastlog
# du -sh /var/log/lastlog
40K /var/log/lastlog 

Création d'un fichier fragmenté

Nous pouvons créer un fichier sparse en utilisant la commande dd :

# dd if=/dev/zero of=sparse_file bs=1 count=0 seek=512M
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000381714 s, 0.0 kB/s
# ls -hl sparse_file
-rw-r--r--. 1 root root 512M Sep 9 00:13 sparse_file
# du -sh sparse_file
0 sparse_file

Pour voir l'utilisation du disque du fichier avec la commande "ls", nous pouvons utiliser l'option "-s":

# ls -lhs sparse_file
0 -rw-r--r--. 1 root root 512M Sep 9 00:13 sparse_file

Pour voir la taille apparente du fichier en utilisant "du", nous pouvons utiliser l'option -apparent-size :

# du -h --apparent-size sparse_file
512M sparse_file 

Copier le fichier sparse avec la commande "cp"

Le "cp" prend en charge les fichiers fragmentés et est bon pour le détecter, il suffit donc d'exécuter "cp". Mais cp a une option –sparse=WHEN.

# cp --sparse=always sparse_file sparse_file.2


Linux
  1. Déplacer des fichiers sur Linux sans mv

  2. Qu'est-ce qu'un numéro d'inode sous Linux ?

  3. Comment créer des fichiers fragmentés sous Linux à l'aide de la commande "dd"

  4. Que sont les fichiers /dev/zero et /dev/null sous Linux

  5. Quelles sont les différentes façons de définir les autorisations de fichiers, etc. sur gnu/linux

Commande Cp sous Linux (Copier des fichiers)

Qu'est-ce qu'umask sous Linux ?

Comment renommer un ou plusieurs fichiers sous Linux

Que sont les inodes sous Linux ?

Qu'est-ce qu'un fichier .bashrc sous Linux ?

Comment compresser un fichier sous Linux