Mise à jour : Debian 10.6 Buster
Le redimensionnement (augmentation ou réduction) de partitions non chiffrées est décrit ici
Le redimensionnement de partitions chiffrées s'effectue selon le même principe, mais implique une étape supplémentaire de redimensionnement du container luks.
Dans ce qui suit, on suppose les formations chiffrées formatées en ext4
En cas d'erreur utilisateur ou logicielle, le risque de perte des données sur la partition concernée ou sur une autre partition du périphérique ou sur un autre périphérique ne pouvant être écarté, il est prudent avant de démarrer l'opération
de sauvegarder les données et en particulier celles du périphérique de stockage sur laquelle à lieu l'intervention
d'identifier avec certitude les volumes, partitions et périphériques à modifier
Commande Saisie unité ^^2 Affichage unité ^^2
parted s,KiB,MiB,GiB KiB,MiB,GiB avec option unit, par ex unit MiB
df - - - - - - K, M, G avec option -B --block-size), par exemple -BM
fdisk s et/ou K,M,G s et/ou K, M, G par défaut
gdisk s et/ou K,M,G s et/ou KiB,MiB,GiB par défaut
resizepart K,M,G block 4k = 4 x 1024
dd K,M,G
resizepart NUMBER END resize partition NUMBER
mkpart PART-TYPE [FS-TYPE] START END make a partition
Agrandissement de la partition
Agrandissement du volume chiffré (container)
Agrandissement du système de fichier
$ sudo parted /dev/sdb mktable msdos
$ sudo parted /dev/sdb mkpart primary ext2 1GiB 3GiB
$ sudo cryptsetup luksFormat /dev/sdb1
$ sudo cryptsetup open /dev/sdb1 secret
$ sudo mkfs.ext4 /dev/mapper/secret
L'objectif est de déplacer la fin de la partition et du système de fichier intégré en 8GiB (premier secteur disponible)
$ calc 8*1024*1024*2-1
16777215
$ sudo parted /dev/sdb resizepart 1 16777215s
Déverrouiller si ce n'est pas encore fait le container
$ sudo cryptsetup luksOpen /dev/sdb1 secret
Afficher la taille du container (les valeurs offset et size ne correspondent pas à l'exemple)
$ sudo cryptsetup status secret
/dev/mapper/test is active.
type: LUKS2
cipher: aes-xts-plain64
keysize: 512 bits
key location: keyring
device: /dev/nvme0n1p6
sector size: 512
offset: 32768 sectors
size: 159350784 sectors
mode: read/write
Noter que
Redimensionner le container (utiliser l'option -v pour avoir le message Command sucessful), le container s'adapte à la dimension maximale de la partition
$ sudo cryptsetup -v resize secret
Emplacement de clé 0 déverrouillé.
Opération réussie.
$ sudo e2fsck /dev/mapper/secret -f
......
$ sudo resize2fs /dev/mapper/secret
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/mapper/secret to 1830912 (4k) blocks.
The filesystem on /dev/mapper/secret is now 1830912 (4k) blocks long
Le système de fichier a maintenant une taille de environ 7GiB
$ calc 1830912*4/1024/1024
6.984375
$ sudo cryptsetup close secret
$ sudo cryptsetup open /dev/sdb1 secret
$ sudo mount /dev/mapper/secret /mnt
$ sudo df -BMiB /dev/mapper/secret
La modification s'effectue en trois étapes :
Réduction du système de fichier
Réduction du volume chiffré (container)
Réduction de la partition
$ sudo parted /dev/sdb mktable msdos
$ sudo parted /dev/sdb mkpart primary ext2 1GiB 8GiB
$ sudo mkfs.ext4 /dev/sdb1
Pour les besoins du test, elle contient 1000 fichiers de 1 MiB au contenu aléatoire, et un fichier de contrôle qui permettra de vérifier l'intégrité des fichiers après la réduction de la partition
$ sudo mount /dev/mapper/secret /mnt
$ su -c ' for i in {0001..1000};do dd if=/dev/urandom of=/mnt/urandom$i bs=1K count=1024;done'
$ sha256sum /mnt/urandom* |sudo tee /mnt/shalist
$ sudo umount /dev/mapper/mnt
En cas de succès, aucun message n'est affiché :
$ shasum256 -c --quiet /mnt/shalist
L'objectif est de réduire la taille de la partition à exactement 2GiB, ce qui revient à déplacer la fin de la partition en 3 GiB (premier secteur disponible
$ sudo cryptsetup luksOpen /dev/sdb1 secret
Note : Le système de fichier doit impérativement être démonté pour la suite des opérations
$ sudo e2fsk -fy /dev/mapper/secret
$ sudo resize2fs /dev/mapper/secret
resize2fs 1.44.5 (15-Dec-2018)
The filesystem is already 1830912 (4k) blocks long. Nothing to do!
$ calc 1830912*4/1024/1024
6.984375
Dans le cas présent, sa taille est d'environ 6,98 GiB (soit la taille de la partition moins l'en-tête luks (16 MiB pour un en-tête luks2).
$ sudo resize2fs -P /dev/mapper/secret
resize2fs 1.44.5 (15-Dec-2018)
Estimated minimum size of the filesystem: 505070
soit environ 1,92GiB
$ calc 505070*4/1024/1024
1.92668914794921875
$ sudo resize2fs -M /dev/mapper/secret 2G
$ sudo resize2fs -M /dev/mapper/secret
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/mapper/secret to 517789 (4k) blocks.
The filesystem on /dev/mapper/secret is now 505070 (4k) blocks long.
La taille du système de fichier est donc environ 1,92iB comme estimé préalablement
$ sudo cryptsetup resizepart --size xxxxxxx
$ sudo cryptsetup resizepart
$ calc 505070*4/1024
1972.9296875
$ sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file header
$ du -BMiB header
16MiB header
$ calc 1988.9296875/1024
1.94231414794921875
$ calc 3*1024*1024*2-1
6291455
$ sudo parted /dev/sdb resizepart 1 6291455s
$ sudo parted /dev/sdb unit GiB print free
...
Number Start End Size Type File system Flags
0,00GiB 1,00GiB 1,00GiB Free Space
1 1,00GiB 3,00GiB 2,00GiB primary
3,00GiB 14,9GiB 11,9GiB Free Space
$ sudo resize2fs /dev/mapper/secret
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/mapper/secret to 520192 (4k) blocks.
The filesystem on /dev/mapper/secret is now 520192 (4k) blocks long.
$ sudo mount /dev/mapper/secret /mnt
$ sha256sum -c --quiet /mnt/shalist