J'ai un disque de 400 Go avec une partition ext4 de 320 Go. Je voudrais agrandir la partition ext4 pour utiliser l'espace gauche (80 Go d'espace libre).
+--------------------------------+--------+
| ext4 | Free |
+--------------------------------+--------+
Comment pourrais-je faire ça?
J'ai vu des gens utiliser resize2fs
mais je ne comprends pas s'il redimensionne la partition.
Une autre solution serait d'utiliser fdisk
mais je ne veux pas supprimer ma partition et perdre des données. Comment pourrais-je simplement agrandir la partition sans perdre aucun fichier?
Remarque: je parle d'une partition de données non montée sans LVM et j'ai des sauvegardes, mais je voudrais éviter de passer un peu de temps sur la récupération.
Vous devez commencer avec la partition démontée. Si vous ne pouvez pas le démonter (par exemple, c'est votre partition racine ou autre chose que le système doit exécuter), utilisez quelque chose comme System Rescue CD à la place.
Exécutez parted
ou gparted
si vous préférez une interface graphique et redimensionnez la partition pour utiliser l'espace supplémentaire. Je préfère gparted
car cela vous donne une belle représentation graphique, très similaire à celle que vous avez dessinée dans votre question.
resize2fs /dev/whatever
e2fsck /dev/whatever
(juste pour savoir si vous êtes du bon côté)
Remontez votre partition.
Bien que je n'aie jamais vu cela échouer, sauvegardez d'abord vos données!
Oui, vous pouvez faire croître EXT4 fs en ligne si vous avez déjà partitionné. Avez-vous trié la partition? Avez-vous LVM?
Sudo resize2fs /dev/drive_to_grow
fdisk
redimensionnera votre partition, c'est vrai, mais s'il s'agit d'une partition racine (ou s'il s'agit d'une partition montée), elle devra d'abord être démontée. Donc, très probablement hors ligne!
Comme pour tout ce qui concerne les opérations disque/fs, je recommande fortement d'avoir une sauvegarde et un processus de récupération testé et bien compris.
Remarque: sur certains serveurs VDS, vous pouvez avoir une partition racine non principale et devez d'abord redimensionner le conteneur de partition étendue
Par exemple, vous venez de mettre à jour votre plan et avez quelque chose comme:
Disk /dev/vda: 83886080s
Number Start End Size Type File system Flags
1 2048s 194559s 192512s primary ext2 boot
2 196606s 51197951s 51001346s extended
5 196608s 51197951s 51001344s logical ext4
Ici/dev/vda2 - est votre conteneur étendu. Et/dev/vda5 - partition principale dont nous avons besoin pour redimensionner à l'espace disponible complet.
La manière la plus simple:
apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space
parted
can resize
partitions et leurs systèmes de fichiers.
Parted ne fonctionne pas sur ext4 sur Centos. J'ai dû utiliser fdisk pour supprimer et recréer la partition, qui (j'ai validé) fonctionne sans perdre de données. J'ai suivi les étapes à http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ . Les voici, en bref:
$ Sudo fdisk /dev/sdx
> c
> u
> p
> d
> p
> w
$ Sudo fdisk /dev/sdx
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w
Vous pouvez utiliser fdisk
ou cfdisk
pour modifier (ou recréer) la partition (assurez-vous simplement de ne pas modifier sa limite de début), puis redémarrez et resize2fs
. Mais en général, il est préférable d'utiliser LVM-2 au lieu de MBR/GPT car cela vous permet d'apporter ces modifications sans redémarrage du noyau.
Juste pour clarifier comment je fais cela pour quiconque lit encore ce fil.
Si c'est la partition de démarrage que vous souhaitez redimensionner, vous devez alors démarrer à partir d'un lecteur de secours bootcd ou bootusb qui n'est qu'un Live Linux. Cela vous permet d'exécuter Linux sur la machine autre que le lecteur que vous souhaitez modifier.
Je pense que le meilleur cd ou usb "de secours" dans ce cas serait un USB ou un CD gparted amorçable
Cas dans lesquels vous avez besoin d'une image de secours
1. La partition à développer est la dernière partition, mais vous avez démarré à partir d'elle et ne pouvez pas la démonter.
sda1 = démarrage (ou échange)
sda2 = swap (ou boot)
sda3 = /
Espace inutilisé
Si vous souhaitez modifier une partition montée qui n'est pas la partition "racine" (/), comme/home qui est une partition différente, il n'est pas nécessaire d'utiliser une image de secours. Cela est particulièrement vrai s'il s'agit de la dernière partition.
sda1 = démarrage
sda2 = /
sda3 =/home
espace inutilisé
-ou-
sda1 = /
sda2 =/home
espace inutilisé
C'est la situation que j'ai lorsque je prends une image à partir d'un petit lecteur ou SSD et que je la déplace vers un SSD plus grand.
Dans ce cas, il vous suffit de démonter/home pendant que vous l'étendez. Mais pour démonter/home, vous devez vous assurer que vous n'êtes connecté à aucun compte utilisateur dont le répertoire home est dedans. Étant donné que le répertoire personnel de l'utilisateur "root" se trouve directement sous le système root/comme dans/root, si vous pouvez vous connecter à root, vous pouvez démonter/home
Je me déconnecte d'une session GUI (KDE/Gnome/etc) et j'utilise [CTRL] + [ALT] + [F1] pour ouvrir une session Shell.
Si vous venez de vous déconnecter d'une connexion utilisateur, cela peut prendre 20 à 30 secondes à Linux pour terminer la fermeture de tous les fichiers.
1. umount/home (je réessaye cette commande si elle échoue pendant 30 secondes maximum, puis regarde d'autres sessions pour voir si je suis "cd/home/xxx" quelque part.)
2. parted/dev/sda
une. redimensionner x (x = partition que vous souhaitez redimensionner, utilisez "p" pour obtenir une liste des partitions)
b. Entrez le dernier secteur de redimensionnement = "-1" (moins 1 signifie 1 secteur à partir de la fin du disque)
c. q (quitte parti)
3 resize2fs/dev/sda "x" (x = partition à redimensionner. Cela remonte également le système de fichiers)
4. df -m (je vérifie/home pour vérifier qu'il est redimensionné)
Je n'ai jamais perdu de fichiers ni corrompu le lecteur à l'aide de cette méthode.
Bonne chance
On m'a demandé de développer un disque monté en tant que/scratch sur un serveur Dell exécutant CentOS 7 sans interrompre les utilisateurs actuels. Il s'agissait d'une partition XFS sur un disque RAID 0 avec une étiquette de disque GPT normale. Cela fonctionnerait pour une partition ext4 presque exactement de la même manière - voir plus loin.
C'est ainsi que je l'ai fait sans démonter, redémarrer ou interrompre les opérations sur le système. Je viens d'utiliser les commandes Linux (et les outils RAID de Dell):
/sys/block/sdb/size
Était toujours à la valeur inférieure. Cela a été corrigé à l'aide de la commande: echo 1 > /sys/block/sdb/device/rescan
parted
pour modifier le label du disque et déplacer sa copie à la fin du disque vers la nouvelle fin de disque. Heureusement, il a deviné exactement ce que je voulais faire sans encouragement et m'a incité. Tout d'abord, la copie du label de disque: Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the disk is smaller. Fix, by moving the backup to the end (and removing the old backup)? Fix/Ignore/Cancel? F
Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 7811891200 blocks) or continue with the current setting? Fix/Ignore? F
parted
ne me laissait pas faire cela pendant que le disque était encore monté - j'ai donc utilisé fdisk
à la place: fdisk /dev/sdb d 1 n 1 (defaults were correct for full size of disk) t 1 11 (That's Microsoft basic data - which is the same as xfs). w
parted
à ce stade pour donner à la partition le même nom qu'auparavant car fdisk
ne prend pas en charge les noms de partitions. Un détail mineur.partprobe /dev/sdb
(Et partprobe /dev/sdb1
Pour faire bonne mesure) pour que le système d'exploitation relise la table de partition. Je pense que seule la première commande a réellement fait une différence.xfs_growfs -d /scratch
Qui n'a pris que 1,6 seconde pour agrandir la partition à sa taille finale, remplissant le disque nouvellement développé.Cela fonctionnerait également avec les volumes ext4: la seule différence serait d'utiliser resize2fs /dev/sdb1
Au lieu de xfs_growfs -d /scratch
- et d'utiliser le numéro de type de partition correct pour ext4 au lieu de xfs. La commande fdisk peut répertorier les numéros de type pour les systèmes de disques courants, y compris ext4.
La réponse acceptée est quelque peu dépassée: le redimensionnement d'un système de fichiers ext4 est mieux fait en ligne plutôt que hors ligne, car le chemin du code d'extension en ligne est beaucoup plus couramment utilisé que celui hors ligne.
La chose la plus difficile est probablement d'étendre la partition sous-jacente, sauf si vous utilisez LVM et vous avez de l'espace libre dans votre groupe de volumes. Pour développer une partition en ligne, vous pouvez utiliser fdisk
ou parted
; ensuite, vous deviez exécuter kpartx <device>
pour informer le noyau de la modification. Si vous utilisez LVM, vous devez pvresize
la partition juste redimensionnée avant lvresize
le volume.
Enfin, vous pouvez émettre resize2fs
votre système de fichiers.