Mise à jour : Debian 10.0 Buster
Le redimensionnement (augmentation ou réduction) d'une partition s'effectue par déplacement de la position de la fin de la partition.
Le déplacement du début de la partition nécessite une recopie qui peut-être effectuée, par exemple avec partclone : voir Clonage de partitions - Partclone.
Dans ce qui suit, on s'intéresse au redimensionnement des partitions non chiffrées, le redimensionnement de partitions chiffrées est décrite ici.
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
mkpart resizepart NUMBER END
mkpart PART-TYPE [FS-TYPE] START END
$ sudo aptitude install parted
$ aptitude versions parted
i A 3.2-25 stable 500
$ sudo aptitude install apcalc
L'agrandissement s'effectue en deux temps, agrandissement de la partition puis du système de fichier.
$ sudo parted /dev/sdb mktable msdos
$ sudo parted /dev/sdb mkpart primary ext2 1GiB 3GiB
$ sudo mkfs.ext4 /dev/sdb1
L'objectif est de déplacer la fin de la partition et du système de fichier intégré en 8GiB (premier secteur disponible), la nouvelle taille de partition sera donc de 7 GiB (8GiB - 1GiB)
$ sudo umount /dev/sdb1
$ calc 8*1024*1024*2-1
16777215
$ sudo parted /dev/sdb resizepart 1 16777215s
A noter que si la partition apparaît bien comme agrandie
$ sudo parted /dev/sdb unit GiB print
...
Number Start End Size File system Name Flag
1 1,00GiB 8,00GiB 7,00GiB primary ext4
le système de fichier a conservé sa taille d'origine
$ sudo mount /dev/sdb1 /mnt
$ sudo df -h /dev/sdb1
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sdb1 2,0G 6,0M 1,8G 1% /mnt
$ sudo umount /dev/sdb1
$ sudo e2fsck -f /dev/sdb1
$ sudo resize2fs /dev/sdb1
$ sudo mount /dev/sdb1 /mnt
$ df -BGB /dev/sdb1
Sys. de fichiers blocs de 1GB Utilisé Disponible Uti% Monté sur
/dev/sdb1 8GB 1GB 7GB 1% /mnt
Dans le cas d'une réduction, la modification s'effectue en deux étapes :
$ 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/sdb1 /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 /mnt
$ shasum256 -c --quiet /mnt/shalist
$ sudo umount /dev/sdb1
$ sudo e2fsck -f /dev/sdb1
$ sudo resize2fs /dev/sdb1
resize2fs 1.44.5 (15-Dec-2018)
The filesystem is already 1835008 (4k) blocks long. Nothing to do!
soit 7 GiB
$ calc 1835008*4/1024/1024
7
$ sudo e2fsck -f /dev/sdb1
$ sudo resize2fs -P /dev/sdb1
$ sudo e2fsck -f /dev/sdb1
$ sudo resize2fs -M /dev/sdb1
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/sdb1 to 517824 (4k) blocks.
The filesystem on /dev/sdb1 is now 517824 (4k) blocks long.
Le système de fichier fait désormais un peu moins de 2GiB
$ calc 517824*4/1024/1024
1.975341796875
$ sudo resize2fs /dev/sdb1 1,99G
Le système de fichier dans ce cas fera exactement 1,99 GiB
$ calc 3*1024*1024*2-1
6291455
$ sudo parted /dev/sdb resizepart 1 6291455s
$ sudo resize2fs /dev/sdb1
resize2fs 1.44.5 (15-Dec-2018)
Resizing the filesystem on /dev/sdb1 to 524288 (4k) blocks.
The filesystem on /dev/sdb1 is now 524288 (4k) blocks long.
$ sudo e2fsck -f /dev/sdb1
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/sdb1: 1012/131072 files (0.1% non-contiguous), 286025/524288 blocks
$ sudo mount /dev/sdb1 /mnt
$ shasum256 --quiet -c /mnt/shalist