Vous essayez de redimensionner un système de fichiers qui a été créé avant que l' -O 64bit
option ne devienne par défaut. Il est possible de mettre à niveau votre système de fichiers ext vers des adresses 64 bits, ce qui lui permet de s'étendre sur des volumes beaucoup plus importants (1024 PiB au lieu de 16 TiB).
En supposant que votre appareil cible est appelé /dev/mapper/target-device
, voici ce que vous devez faire:
Conditions préalables
- Cette taille de volume doit être sauvegardée par RAID. Les erreurs de disque régulières seront causer d' autres dommages.
- Pourtant, RAID n'est pas une sauvegarde . Vous devez également conserver vos objets de valeur ailleurs.
- Redimensionnez et vérifiez d'abord tous les volumes environnants (tables de partition, chiffrement, lvm).
- Après avoir changé la configuration matérielle du RAID, Linux peut ou non reconnaître immédiatement la nouvelle taille maximale. Vérifiez
$ cat /proc/partitions
et redémarrez si nécessaire.
Utiliser un noyau stable récent et e2fsprogs
- Assurez-vous (vérifiez
uname -r
) que vous exécutez un noyau capable de gérer correctement les systèmes de fichiers 64 bits ext4 - vous souhaitez utiliser un 4.4.x
noyau ou une version ultérieure (Ubuntu 16 par défaut et supérieur).
Acquérir e2fsprogs d'au moins la version 1.43
Ubuntu 16.04
(2016-04-21) a été publié avec e2fsprogs 1.42.12
(2014-08-25)
e2fsprogs 1.43
(2016-05-17) est la première version capable de mettre à niveau la taille de l'adresse extfs.
Ubuntu 18.04
(2018-04-26) livré avec e2fsprogs 1.44.x
(bon!)
Si vous êtes sur 16.04
et ne pouvez pas mettre à niveau vers une version plus récente d'Ubuntu, vous devrez activer la prise en charge du package source et installer une version plus récente manuellement:
$ resize2fs
# if this prints version 1.43 or above, continue to step 1
$ sudo apt update
$ sudo apt install git
$ sudo apt build-dep e2fsprogs
$ cd $(mktemp -d)
$ git clone -b v1.44.2 https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git e2fsprogs && cd e2fsprogs
$ ./configure
$ make
$ cd resize
$ ./resize2fs
# this should print 1.43 or higher
# if this prints any lower version, panic
# use `./resize2fs` instead of `resize2fs` for the rest of the steps
Redimensionner
Étape 1: démonter correctement le système de fichiers
$ sudo umount /dev/mapper/target-device
Étape 2: recherchez des erreurs dans le système de fichiers
$ sudo e2fsck -fn /dev/mapper/target-device
Étape 3: activer la prise en charge 64 bits dans le système de fichiers
Consultez man tune2fs
et man resize2fs
- vous pouvez modifier certains indicateurs de système de fichiers.
$ sudo resize2fs -b /dev/mapper/target-device
Sur un disque dur RAID typique, cela prend 4 minutes de charge élevée d'E / S et du processeur.
Étape 4: redimensionner le système de fichiers
$ sudo resize2fs -p /dev/mapper/target-device
Si vous ne transmettez pas de taille sur la ligne de commande, resize2fs suppose "grandir sur tout l'espace disponible" - c'est généralement exactement ce que vous voulez. Le -p
drapeau a activé les barres de progression - mais celles-ci ne s'affichent qu'après certaines étapes initiales.
Sur un disque dur RAID typique, cela prend 4 minutes de charge élevée d'E / S et du processeur.
Vérifiez à nouveau
Vérifiez à nouveau le système de fichiers
$ sudo e2fsck -fn /dev/mapper/target-device
L'e2fsck des versions plus récentes peut suggérer de corriger les horodatages ou les arborescences d'étendue que les versions précédentes ont mal traitées. Ce n'est pas une indication d'un problème grave et vous pouvez choisir de le corriger maintenant ou plus tard.
Si des erreurs se produisent, ne paniquez pas et n'essayez pas d'écrire sur le volume; consultez quelqu'un ayant une connaissance approfondie du système de fichiers, car d'autres opérations pourraient probablement détruire des données!
Si aucune erreur ne se produit, remontez l'appareil:
$ sudo mount /dev/mapper/target-device
Succès!
Vous n'aurez pas besoin d'une version non Ubuntu d'e2fsprogs pour continuer à utiliser le système de fichiers mis à niveau - le noyau les prend en charge depuis un certain temps maintenant. Il était seulement nécessaire de lancer la mise à niveau.
Pour référence, il existe un message d'erreur similaire que mke2fs imprimera s'il est demandé de créer un énorme appareil avec des options inappropriées:
$ mke2fs -O ^64bit /dev/huge
mke2fs: Size of device (0x123456789 blocks) is too big to be expressed in 32 bits using a blocksize of 4096.
Cela m'est arrivé récemment, avec un Ubuntu 18.04 qui avait été mis à jour après avoir été installé initialement avec un Ubuntu 16.04 ... La matrice de stockage (/ dev / sdb) avait été initialement partitionnée en deux partitions de 14 To, et c'est en voulant agrandir la première partition à 28 To que le problème est survenu.
Je n'ai pas eu besoin de télécharger une nouvelle version de resize2fs car elle était très récente.
Le seul problème était de convertir la partition 1 64 bits qui avait été formatée en 32 bits ... Au lieu d'inviter le lecteur à consulter la documentation de tune2fs (comme le suggère Anx), je propose un vrai exemple!
Enfin, nous agrandissons la partition de disque!
la source