Notes resize disk FS

Exemple

Install de growpart

apt-get install cloud-guest-utils

Création du système de fichier

Voir gdisk et parted pour GPT

dd if=/dev/zero of=/home/disktest bs=1024k count=500 #fallocate -l 500M /home/disktest losetup /dev/loop2 /home/disktest fdisk /dev/loop2 # The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8). # blockdev --rereadpt /dev/loop2 # sfdisk -R /dev/loop2 # ioctl BLKRRPART # kpartx -u /dev/loop2p1 # hdparm -z # ioctl BLKRRPART partprobe /dev/loop2 # ioctl BLKPG² # udevadm settle # (systemd-udev-settle.service) # Voir aussi addpart / delpart (kernel) mkfs.ext4 /dev/loop2p1 mkdir /mnt/test mount /dev/loop2p1 /mnt/test echo plop > /mnt/test/plop.txt

Augmentation de la taille du disque

dd if=/dev/zero bs=1024k count=500 >> /home/disktest

Rafraîchissement de la taille

# lsblk |grep loop2
loop2 7:2 0 500M 0 loop
└─loop2p1 259:0 0 499M 0 loop /mnt/test
# losetup /dev/loop2
/dev/loop2: [65028]:12 (/home/disktest)
# lsblk |grep loop2
loop2 7:2 0 500M 0 loop
└─loop2p1 259:0 0 499M 0 loop /mnt/test
# losetup -c /dev/loop2
# lsblk |grep loop2
loop2 7:2 0 1000M 0 loop
└─loop2p1 259:0 0 499M 0 loop /mnt/test

Redimensionnement de la partition
extend a partition in a partition table to fill available space

growpart /dev/loop2 1

Redimensionnement du système de fichier

# df -hP /mnt/test/
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/loop2p1 476M 2,3M 445M 1% /mnt/test
# resize2fs /dev/loop2p1
resize2fs 1.42.12 (29-Aug-2014)
Le système de fichiers de /dev/loop2p1 est monté sur /mnt/test ; le changement de taille doit être effectué en ligne
old_desc_blocks = 2, new_desc_blocks = 4
Le système de fichiers sur /dev/loop2p1 a maintenant une taille de 1022956 blocs (1k).
# df -hP /mnt/test/
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/loop2p1 960M 2,5M 909M 1% /mnt/test

A l'inverse de growpart, il peut être utile de redimensionner un fichier img pour le réduire / tronquer (shrink) pour qu'il ne dépasse pas la taille de la sommes des partitions.

$ fdisk -l myimage.img
Disk myimage.img: 6144 MB, 6144000000 bytes, 12000000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ea37d
Device Boot Start End Blocks Id System
myimage.img1 2048 9181183 4589568 b W95 FAT3

truncate --size=$[(9181183+1)*512] myimage.img

Source : https://softwarebakery.com/shrinking-images-on-linux

Anciennes notes

dd if=/dev/zero bs=1024k count=1000 >> /var/lib/libvirt/images/debianwheezy.qcow2 dd if=/dev/zero of=filename bs=1 count=1 seek=newsize conv=notrunc

Backup extended partition table

sfdisk -d /dev/hda > /tmp/hda

Restore extended partition table

sfdisk /dev/hda < /tmp/hda

A vérifier ! (manip dangereuse)

echo ", +" | sfdisk -N 1 /dev/vda partprobe /dev/vda resize2fs /dev/vda1

Autres

Taille disque en Go

echo $(( $(blockdev --getsize64 /dev/sda) / 1024 / 1024 / 1024 ))

GPT parted

Voir aussi gdisk

Redimensionnement agrandissement d'une partition GPT

Run parted on your device: parted /dev/sdX
Change display unit to sectors: unit s
Print current partition table and note the start sector for your partition: p
Delete your partition (won’t delete the data or filesystem): rm <number>
Recreate the partition with the starting sector from above: mkpart primary <start> <end>
Exit parted: quit
Check the filesystem: sudo e2fsck -f /dev/sdXX
Resize filesystem: sudo resize2fs /dev/sdXX

sudo parted /dev/vda
#unit s
#unit GB
#unit %
(parted)print free
(parted)resizepart 2 100%
(parted)quit

sudo fdisk -l /dev/vda | grep ^/dev
sudo parted /dev/vda
(parted)print free
(parted)resizepart 5 100%
(parted)quit