web-dev-qa-db-fra.com

Déplacer la partition ext4

J'ai une partition ext4 à la fin d'un disque dur et je souhaite la redimensionner à la taille totale du disque (le reste du disque est vide). Ce n'est pas la partition racine, mais simplement une partition de données. Le démontage de la partition ne pose donc aucun problème. Le serveur Ubuntu est en cours d'exécution sur la machine, et aucun écran, clavier, souris ou lecteur de disque optique n'est connecté. Le démarrage d'un environnement en direct à utiliser cette approche serait un peu fastidieux et j'aimerais éviter cette.

Quelqu'un sait un moyen facile de faire cela? Pour moi, cela s'avère être une tâche beaucoup plus difficile que je ne l'aurais prévu, mais laissez-moi élaborer:

Bien sûr, les partitions de disques ont toutes été démontées lors des opérations suivantes. J'ai d'abord essayé via Parted: j'ai supprimé la première partition qui n'était plus nécessaire, puis j'ai voulu redimensionner ou déplacer la partition ext4. Mais Parted m'a dit qu'il ne pouvait pas le faire, en raison de certaines fonctionnalités du système de fichiers d'ext4 (avec un message d'erreur étrange: "Erreur: le système de fichiers a une fonctionnalité incompatible activée. Les fonctionnalités compatibles sont has_journal, dir_index, filetype, sparse_super et large_file . Utilisez tune2fs ou debugfs pour supprimer des fonctionnalités. "- Quelles sont donc les fonctionnalités incompatibles?); ce que j’ai tiré de cela, et en tant que réponse aux commentaires dans une autre question , il n’est pas possible pour Parted de changer le début d’une partition ext4.

Pourquoi gparted peut-il sembler faire l'affaire (voir la première question liée) sans se séparer?

Eh bien, comme j’avais assez d’espace au début du disque (plus que la taille de la partition à déplacer), j’ai pensé essayer une autre approche: créer une seconde partition à l’avant, copier le contenu de celle située à l’arrière. retour à celui-ci, puis supprimez l'ancienne partition et redimensionnez la nouvelle à la taille complète. Cependant, cela s'est également avéré impossible: après la création de la partition et la copie du contenu (via dd if=/dev/sdb2 of=/dev/sdb1), la partition ne peut pas être montée ("superblock de journal manquant").

Donc, pour le moment, je suis à court d'idées. Je vais probablement copier tout ce qui est vital sur un autre disque, supprimer à nouveau toutes les partitions et en créer une grande. Je me demande si c'est un tel problème - ou est-ce que je néglige l'évidence?

4
codeling

Cela prend un peu de temps, mais cela peut être fait si:

En supposant que/dev/sdb1 et que l’espace non alloué est plus grand que la quantité de données de/dev/sdb1:

Avant de commencer, créons des répertoires de points de montage dans /mnt/:

mkdir/mnt/old && mkdir/mnt/new

Le disque ressemble maintenant à ceci:

[(....... UNALLOCATED .........) (xxxx/dev/sdb1 xxxxxx)]
  • e2fsck -f -y -v /dev/sdb1 #juste pour être sûr qu'il n'y a pas d'erreur.
  • fdisk /dev/sdb
  • Appuyez sur: n p 2 wq
  • mkfs.ext4 /dev/sdb2
    Maintenant, le disque ressemble à ceci:
[(xxxxxx/dev/sdb2 xxxxxxxxxxx) (xxxx/dev/sdb1 xxxxxx)]
  • mount /dev/sdb2 /mnt/new && mount /dev/sdb1 /mnt/old
  • mv /mnt/old/* /mnt/new/ (Vous obtiendrez une erreur à propos de lost + found, vous pouvez l'ignorer)
  • cd / && umount /mnt/old && umount /mnt/new
  • cfdisk /dev/sdb
  • Supprimer sdb1
  • Choisir écrire
  • Supprimer sdb2
  • Choisir écrire
  • Créer nouveau, choisissez toute la taille disponible.
  • Ecrivez et quittez.
  • e2fsck -f /dev/sdb1
  • resize2fs /dev/sdb1 Maintenant, le disque ressemble à ceci:
[(xxxxxxxxxxxxxxxxxxx/dev/sdb1 xxxxxxxxxxxxxxxxxxx))]
  • mount /dev/sdb1 /your/mount/point

FINI!

2
Frantique

Voici comment je l'ai fait sur des machines sans tête avec un accès SSH uniquement: tilisez VNC et obtenez gparted pour le faire. Utilisez openbox pour un environnement minimal et supprimez-le une fois que c'est fait s'il ne s'agit que d'une seule fois.

 Sudo apt-get installer vnc4server openbox gparted 
 Vnc4server # définir un mot de passe, créer la configuration initiale 
 Vnc4server -kill: 1 
 Sed -i -e-s '/ x-window-manager/openbox-session/g '~/.vnc/xstartup 
 vnc4server 

Ouvrez le port entrant 5901 et accédez-y avec un client VNC. Cliquez avec le bouton droit pour démarrer le terminal dans openbox, et vous pourrez exécuter toutes les applications GTK +, y compris gparted. apt-get remove et autoremove si vous le souhaitez lorsque vous avez terminé.

2
ish

Je suis allé dans la direction de l'interface graphique:

1) Lancer le live linux CD (neuf dans mon cas)

2) Se connecter à Internet

3) se faire gparted

Sudo apt-get install gparted

4) Après avoir tout redimensionné dans la GUI soignée, lancez la réparation de démarrage.

5) https://help.ubuntu.com/community/Boot-Repair Cela revient essentiellement à l'obtenir et à le relancer:

Sudo add-apt-repository ppa:yannubuntu/boot-repair && Sudo apt-get update

Sudo apt-get install -y boot-repair && boot-repair

6) Sélectionnez la fixation des options communes et sélectionnez NON si elle vous demande si votre lecteur est amovible (si ce n’est pas le cas).

Résolu mon problème.

1
Piotr Jasiulewicz

Premièrement, j'aurais fait comme Frantique, sauf que j'aurais déménagé avec rsync car il est conçu pour en faire une copie avec tous les attributs intacts. La commande mv ne ferait pas cela.

Mais si je voulais vraiment faire un travail sérieux, car je déplacerais des choses de toute façon, j'aurais déplacé les données sur un volume LVM2, car cela facilite tellement la gestion des volumes, des disques et des partitions à l'avenir.

Comme si vous souhaitez ajouter plus d'espace, ajoutez simplement un disque au groupe de volumes. Ajouter, supprimer ou redimensionner des partitions, faites-le simplement sur le volume logique. Pas besoin de penser à la mise en page physique. Pour supprimer les données d'un disque qui commence à signaler de nombreuses erreurs, ajoutez simplement un nouveau disque, puis déplacez les données du disque défectueux, puis supprimez le disque du volume. Toutes les données déplacées d'un disque à un autre.

0
Anders

Tout d'abord, sauvegardez vos données, pour éviter la perte de données.

Étant donné que parted ne prend pas en charge ext4, vous devez utiliser resize2fs.

cfdisk/dev/sdx
  • Supprimer la partition. OUI, SUPPRIMEZ-LE! (Je sais, ça semble bizarre, mais croyez-moi, les données resteront là, juste NE PAS UTILISERmkfs.ext4!)
  • Et recréez-le avec la taille souhaitée. Vous devez le démarrer exactement au même endroit que l'original. Le point final peut se déplacer. Si vous manquez cela, vous perdrez les données!
resize2fs/dev/sdxY

Sans donner aucun autre paramètre à resize2fs, le système de fichiers sera étendu à la taille de la partition.


A propos des fonctionnalités incompatibles: c'est la extents qui est utilisée par ext4.

0
Frantique