Salut à tous.
Artemus24 a écrit :Il y a un léger problème, j'ai dû bidouiller dans ma partition pour diminuer sa volumétrie, sans perdre les données.
A mon interrogation, on peut en effet se passer de bidouiller dans la partition, comme je l'ai fait.
Alors comment procéder ?
1) il faut connaitre la taille d'occupation utilisée par les données dans la partition.
Pour cela, il suffit d'utiliser la commande suivante :
Ce qui donne dans l'exemple de ma partition "/dev/sda3" :
Code : Tout sélectionner
~> df -h /dev/sda3
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sda3 9,8G 46M 9,4G 1% /warehouse
~>
2) l'occupation est de 46M.
Oui mais voilà, je ne sais pas comment la commande "resize2fs" calcule ce minimum :
Code : Tout sélectionner
~> resize2fs -P /dev/sda3
resize2fs 1.44.5 (15-Dec-2018)
Estimated minimum size of the filesystem: 47437
~>
3) et si je calcule l'espace d'occupation par une autre méthode :
Code : Tout sélectionner
~> dumpe2fs -h /dev/sda3 | egrep '^Block count:|^Block size:|^Free blocks:'
dumpe2fs 1.44.5 (15-Dec-2018)
Block count: 2621440
Free blocks: 2552239
Block size: 4096
~>
~> echo EXT4: /dev/sda3: $((2621440-2552239))
EXT4: /dev/sda3: 69201
~>
Comme on le constate l'occupation n'est pas la même par ces deux méthodes.
A vrai dire, ce n'est pas bien grave de ne pas savoir quelle est la taille minimale.
Pourquoi ? Parce que nous allons l'arrondir à une valeur plus grande.
Dans cet exemple, je vais prendre 256M.
4) je retaille le système de fichier EXT4 :
Code : Tout sélectionner
~> resize2fs /dev/sda3 256M
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/sda3 to 65536 (4k) blocks.
The filesystem on /dev/sda3 is now 65536 (4k) blocks long.
~>
5) Je fais une vérification :
Code : Tout sélectionner
~> e2fsck -f /dev/sda3
e2fsck 1.44.5 (15-Dec-2018)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda3: 239/16384 files (0.0% non-contiguous), 21927/65536 blocks
~>
6) comme le BS (block size) est de 4K, pour calculer la taille exacte de 256M, je dois prendre :
--> 256M / 4K
--> 64K
Ceci sera la valeur du paramètre "count".
7) maintenant, je peux faire ma sauvegarde :
Code : Tout sélectionner
~> dd if=/dev/sda3 bs=4k count=64K | bzip2 -c > /root/sda3.img3.bz2
65536+0 enregistrements lus
65536+0 enregistrements écrits
268435456 octets (268 MB, 256 MiB) copiés, 14,0036 s, 19,2 MB/s
~>
C'est bon, nous avons sauvegardé nos 256M.
8) ce qui donne :
Code : Tout sélectionner
~> la sda3.img3.bz2
-rw-r--r-- 1 root root 7845209 nov. 21 20:52 sda3.img3.bz2
~>
C'est-à-dire une volumétrie de : 7,5M environ.
9) je fais le test de restauration de ma sauvegarde.
Je crée une partition "/dev/sda4" de 1G.
Puis je restaure ma sauvegarde :
Code : Tout sélectionner
~> bunzip2 -dc sda3.img3.bz2 | dd of=/dev/sda4 bs=4k
65536+0 enregistrements lus
65536+0 enregistrements écrits
268435456 octets (268 MB, 256 MiB) copiés, 5,24646 s, 51,2 MB/s
~>
Puis ensuite un :
Code : Tout sélectionner
~> resize2fs /dev/sda4
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/sda4 to 262144 (4k) blocks.
The filesystem on /dev/sda4 is now 262144 (4k) blocks long.
~>
pour agrandir à son maximum le système de fichier de la nouvelle partition.
Je monte la partition :
Code : Tout sélectionner
~> mkdir /mnt/test
~> mount /dev/sda4 /mnt/test
~> cd /mnt/test
/mnt/test> la
total 60
drwxr-xr-x 12 root root 4096 nov. 20 23:02 .
drwxr-xr-x 7 root root 4096 nov. 21 21:07 ..
drwxr-xr-x 3 root root 4096 nov. 20 23:02 configuration
drwxr-xr-x 6 root root 4096 nov. 20 23:01 firewall
drwx------ 2 root root 16384 nov. 16 04:49 lost+found
drwxr-xr-x 2 root root 4096 nov. 20 22:59 Musiques
drwxr-xr-x 7 root root 4096 nov. 20 22:59 Prog_Bash
drwxr-xr-x 13 root root 4096 nov. 16 06:42 Prog_C
drwxr-xr-x 3 root root 4096 nov. 20 23:02 Prog_Python
drwxr-xr-x 2 root root 4096 nov. 20 23:02 resolvconf
drwxr-xr-x 2 root root 4096 nov. 20 23:01 udev
drwxr-xr-x 2 root root 4096 nov. 20 23:24 vnc
/mnt/test>
/mnt/test> df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/root 20G 3,3G 16G 18% /
devtmpfs 3,9G 0 3,9G 0% /dev
tmpfs 3,9G 0 3,9G 0% /dev/shm
tmpfs 3,9G 9,5M 3,9G 1% /run
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup
tmpfs 3,9G 0 3,9G 0% /var/tmp
tmpfs 3,9G 16K 3,9G 1% /tmp
tmpfs 3,9G 372K 3,9G 1% /var/log
/dev/sda1 1022M 56M 967M 6% /boot
tmpfs 788M 0 788M 0% /run/user/0
tmpfs 788M 0 788M 0% /run/user/1000
/dev/sda4 944M 30M 878M 4% /mnt/test
/dev/sda3 9,8G 46M 9,6G 1% /warehouse
/mnt/test>
10) conclusion : il n'est pas nécessaire de faire la sauvegarde de la totalité de la partition.
Il est en effet inutile de sauvegarder des secteurs (ou des blocs) vide.
Nous pouvons remonter les blocs de celle-ci dans sa partie haute, à partir de la commande "resize2fs".
(je remercie Dyox de m'avoir communiqué cette astuce).
Puis enfin, faire la sauvegarde en prenant une taille un peu plus grande que le minimum d'occupation, comme je l'ai fait dans mon exemple.
Pour restaurer la sauvegarde, nous devons d'abord créer une nouvelle partition, dont j'ai volontairement mis à 1G.
Il n'est pas nécessaire de la formater puisque la restauration va tout écraser.
Et pour finir, utiliser "resize2fs" pour agrandir le système de fichier ext4.
@+