Comment redimensionner / agrandir / agrandir une partition ext4 non LVM

20

J'ai déjà cherché sur les forums, mais je n'ai pas trouvé de bonne réponse appropriée:

J'ai un serveur Ubuntu 10.04 en tant qu'hôte KVM et un système invité, qui exécute également 10.04. Le système hôte utilise LVM et trois volumes logiques sont fournis à l'invité en tant que périphériques de bloc virtuel - un pour /, un pour / home et un pour swap. L'invité avait été partitionné sans LVM.

J'ai déjà agrandi le volume logique dans le système hôte - l'invité voit avec succès le plus grand disque virtuel. Cependant, ce disque virtuel contient une «bonne vieille» partition, qui a toujours l'ancienne petite taille.

La sortie de fdisk -l est

me@produktion:/$ LC_ALL=en_US sudo fdisk -l

Disk /dev/vda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c8ce7

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        3917    31455232   83  Linux

Disk /dev/vdb: 2147 MB, 2147483648 bytes
244 heads, 47 sectors/track, 365 cylinders
Units = cylinders of 11468 * 512 = 5871616 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f2bf7

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1         366     2095104   82  Linux swap / Solaris
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 32, 33) logical=(0, 43, 28)
Partition 1 has different physical/logical endings:
     phys=(260, 243, 47) logical=(365, 136, 44)

Disk /dev/vdc: 225.5 GB, 225485783040 bytes
255 heads, 63 sectors/track, 27413 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027f25

   Device Boot      Start         End      Blocks   Id  System
/dev/vdc1               1        9138    73398272   83  Linux

La sortie de l'impression séparée est

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  32.2GB  32.2GB  primary  ext4         boot


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  2146MB  2145MB  primary  linux-swap(v1)


Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

Ce que je veux réaliser, c'est simplement agrandir ou redimensionner la partition / dev / vdc1 pour qu'elle utilise tout l'espace fourni par le périphérique de bloc virtuel / dev / vdc. Le problème est que lorsque j'essaie de faire cela avec parted, il se plaint:

(parted) select /dev/vdc                                                  
Using /dev/vdc
(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

(parted) resize 1                                                         
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Start?  [1049kB]?                                                         
End?  [75.2GB]? 224GB                                                     
Error: File system has an incompatible feature enabled.  Compatible features are has_journal, dir_index, filetype, sparse_super and large_file.  Use tune2fs
or debugfs to remove features.

Alors qu'est-ce que je peux faire? Il s'agit d'un système de production sans tête. Quel est un moyen sûr de développer cette partition? Je peux le démonter, cependant - ce n'est donc pas le problème.

Edit: Cfdisk a montré un petit espace libre non partitionné, puis la partition (marquée "boot" et Linux / ext3) puis le reste de l'espace non partitionné. Après avoir supprimé la partition et l'avoir recréée à l'aide de cfdisk - cfdisk affiche une grande zone partitionnée (ce qui me conviendrait) et en tant que type de système de fichiers uniquement "Linux"

Resize2fs renvoie cette erreur resize2fs 1.41.11 (14-Mar-2010) resize2fs: Bad magic number in super-block while trying to open /dev/vdc1 Couldn't find valid filesystem superblock

Mischa
la source

Réponses:

18

Cette page indique la façon de procéder: démonter, supprimer, recréer la partition avec la taille souhaitée et utiliser resize2fs pour étendre la partition. La page de manuel resize2fs est d'accord.

Je sais que «supprimer la partition» semble effrayant, mais cela ne change pas du tout les données. Cela change juste la chose qui fait référence au conteneur. Tant que vous ne le mkfs.ext4faites pas, vous devriez aller bien.

Votre point de départ de partition doit être le même qu'il était ou le système d'exploitation ne saura pas interpréter ce qui se cache derrière. Le point final peut ensuite être plus avancé pour créer une partition plus grande.

Je pense que l'erreur dans le commentaire est liée au déplacement du point de départ. Vous devez le démarrer exactement au même point qu'il a été démarré. Le point final peut se déplacer.

Crédit psusi pour suggérer fdisk au lieu de cfdisk et de confirmer la question du point de départ.

RobotHumains
la source
D'accord, j'ai supprimé la partition avec cfdisk et en ai créé une nouvelle. Mais je ne pouvais pas le redimensionner alors et je ne peux plus le monter.
Mischa
resize2fs 1.41.11 (14 mars 2010) resize2fs: mauvais numéro magique dans le superbloc lors de l'ouverture de / dev / vdc1 Impossible de trouver un superbloc de système de fichiers valide.
Mischa
1
en fait, cfdisk a montré un petit espace libre non partitionné, puis la partition (marquée comme "boot" et Linux / ext3) et ensuite le reste de l'espace non partitionné. Après avoir supprimé la partition et l'avoir recréée à l'aide de cfdisk - cfdisk affiche une grande zone partitionnée (ce qui me conviendrait) et en tant que système de fichiers, tapez uniquement "Linux".
Mischa
8
Vous devez recréer la partition afin qu'elle démarre exactement au même secteur qu'au départ. Vous ne pouvez pas faire cela avec cfdisk. Utilisez fdisk ou parted et mettez-les en mode secteur.
psusi
1
existe-t-il un moyen de redimensionner la partition ext4 de manière à déplacer le début de la partition? Parce que j'ai de l'espace libre devant la partition ext4 actuelle, pas à l'arrière ... heureusement, j'ai plus d'espace libre que la partition n'est grande, donc je suppose que je pourrais faire ce qui suit: copier toute la partition vers l'avant, supprimer celui à l'arrière, puis redimensionner celui déplacé à sa taille entière? mais cela me semble un terrible hack en ce moment ...
codeling
6

Un exemple:

/ dev / sdb2 est la partition / boot. Il fait 100 Mo, ce qui est plutôt petit. Pour augmenter cette partition ext4 sur un système en cours d'exécution (en tant que root ou sudo):

umount / boot

parted / dev / sdb

(séparé) imprimer

Modèle: ATA Patriot Torqx 2 (scsi)
Disque / dev / sdb: 32,0 Go
Taille du secteur (logique / physique): 512B / 512B
Table de partition: msdos

Numéro Début Fin Taille Type Système de fichiers
Indicateurs 1 1049 Ko 12,9 Go 12,9 Go type principal = 83
2 12,9 Go 13,0 Go 107 Mo type ext4 principal = 83

(séparé) rm 2

(séparé) mkpart

Type de partition? primaire / étendu?
type de système de fichiers principal ? [ext2]?
Début? 12,9 Go
Fin? 13,4 Go

(séparé) quitter

resize2fs / dev / sdb2

resize2fs 1.42.6 (21-sept-2012) Le
système de fichiers sur / dev / sdb2 est monté sur / boot; redimensionnement en ligne requis
old_desc_blocks = 1, new_desc_blocks = 2
Le système de fichiers sur / dev / sdb2 fait maintenant 498688 blocs.

terminé!

Toutes les données restent en place. / boot est prêt à l'emploi et 472MB gros (séparé n'est pas aussi sécurisé avec les tailles, lisez le manuel pour savoir pourquoi)

Toutes les données ont été sauvegardées auparavant, mais uniquement par mesure de précaution. Je recommande de faire de même.

Utilisez la commande suivante pour rechercher le processus qui arrête le démontage de / boot en cas d'échec:

lsof / boot

Bonne chance!

user157258
la source
2
Vous devez utiliser des unités de secteurs, et non des Go, pour être sûr de les placer exactement au même endroit.
psusi
0

Si vous essayez de supprimer et recréer une partition, lorsque votre partition a commencé en dessous de 2048, vous pourriez avoir des ennuis comme je l'étais avec resize2fs.

Couldn't find valid filesystem superblock.

Depuis la version 2.17.2 de fdisk , fdisk IIUC vous oblige à commencer à partir de 2048 afin de vous assurer que votre disque dur est "correctement aligné". Donc, si votre partition d'origine a commencé avant 2048, vous allez faire un tour cahoteux en essayant de recréer la partition.

La meilleure approche consiste à rsync lors du clonage d'un disque .

hendry
la source