Comment redimensionner des partitions à l'aide de la ligne de commande sans utiliser d'interface graphique sur un serveur?

45

Je n'ai accès au serveur que via un terminal et je ne peux pas utiliser d'outils graphiques tels que GParted!
Je veux créer une nouvelle partition à partir d'une partie de la racine (environ 768 Mo) pour le swap.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  1.3G   18G   7% /
udev             10M     0   10M   0% /dev
tmpfs           199M  4.9M  194M   3% /run
tmpfs           100M   12K  100M   1% /run/user
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
Hamid FzM
la source

Réponses:

37

Vous ne pouvez pas réduire / éditer une partition si l'une des partitions du périphérique de stockage est montée. Donc, pour démonter et éditer le système de fichiers racine, le système d'exploitation doit être arrêté. Ensuite, démarrez dans un système en direct et éditez la partition comme décrit dans d'autres réponses.

Solution alternative: fichier d'échange

Au lieu de créer une partition entière, un fichier d'échange offre la possibilité de faire varier sa taille à la volée et est plus facilement supprimé. Le fichier d'échange peut être branché à chaud . c'est-à-dire peuvent être ajoutés et supprimés sans démontage / arrêt du système d'exploitation.

  1. Créez un fichier de 512 Mo appelé /swapfile. Ce sera notre fichier d'échange.

    fallocate -l 512M /swapfile  
    

    OU

    dd if=/dev/zero of=/swapfile bs=1M count=512
    
  2. Définissez les autorisations adéquates (car un fichier d'échange lisible par tout le monde constitue une énorme vulnérabilité locale):

    chmod 600 /swapfile
    
  3. Après avoir créé le fichier de taille correcte, formatez-le pour permuter:

    mkswap /swapfile
    
  4. Activer le fichier d'échange:

    swapon /swapfile
    
  5. Modifiez /etc/fstabet ajoutez une entrée pour le fichier d'échange:

    /swapfile none swap defaults 0 0
    

Plus de détails sur arch linux wiki .

totti
la source
Je pense que c'est la réponse la plus simple et efficace =)! Y a-t-il des implications à utiliser un fichier au lieu d'une partition?
Alaa Ali
2
Légèrement faible performance si le fichier est fragmenté. Les fichiers swap ou les partitions contiguës ne présentent aucun avantage en termes de performances. Les deux sont traités de la même manière.
Totti
1
Je pense que c'est la meilleure solution. Comme vous ne formatez pas, ne réduisez pas ou ne modifiez pas autrement la partition (tables), il n'y a aucun risque de perte de données.
R110
28

Tout d’abord, il est important de savoir que vous ne pouvez pas redimensionner pour réduire votre partition racine si vous l’utilisez (ceci est appelé réduction en ligne). Vous ne pouvez le cultiver qu'en ligne. Ceci est supporté par la resize2fscommande. Je vais assumer ce qui suit:

  • Vous ne voulez pas perdre vos informations sur la partition racine.
  • Vous n'avez pas d'accès physique au disque dur pour utiliser un LiveCD. Cela peut s’appliquer à un environnement virtuel ou distant. Dans le cas d'un ordinateur virtuel, vous pouvez toujours réussir à démarrer à partir d'un LiveCD si vous configurez la machine virtuelle pour démarrer à partir d'un LiveCD. Cela suppose que la machine virtuelle prend en charge la sortie de l’interface graphique de bureau à partir de laquelle vous exécuteriez l’application Gparted pour redimensionner facilement. Mais comme cela est moins probable, je suppose que vous ne pouvez pas.

Il existe 2 types de partitions que vous pouvez redimensionner, les partitions LVM ou les partitions Logical Volume Manager qui prennent en charge le redimensionnement en ligne (réduction / croissance) depuis la création de la galaxie et les partitions standard que la plupart d'entre nous utilisons. Actuellement, le système de fichiers btrfs (qui est encore en développement) est le seul à prendre en charge presque à 100% le redimensionnement en ligne complet (Shrink / Grow). Je vais expliquer comment faire les partitions normales que la plupart d'entre nous utilisons dans le système de fichiers ext4.

Redimensionnement (croissance) de la partition

Pour agrandir votre partition, vous pouvez le faire avec la racine montée. Pour ce faire, il suffit de:

sudo resize2fs /dev/sda1

A condition que vous ayez déjà l'espace vide prêt à être fusionné. Ensuite, je recommande de redémarrer pour que les modifications prennent effet correctement. La commande ci-dessus redimensionnerait au maximum autorisé. Si vous souhaitez redimensionner à une taille particulière, ajoutez simplement la taille à la fin:

sudo resize2fs /dev/sda1 25G

Notez que si vous souhaitez spécifier 25,4 Go, vous ne pouvez pas utiliser le ".". vous auriez besoin de descendre d'une unité de mesure. Dans ce cas, de Go à MB, cela ressemblerait à ceci:

sudo resize2fs /dev/sda1 25400M

De cette façon, vous aurez une partition de 25.4G

Redimensionnement (réduction) de la partition

La réduction de la partition est un processus en deux étapes qui implique:

  • Réduire la taille du système de fichiers du montant nécessaire.
  • Réduire la taille du périphérique de bloc sous-jacent pour qu'elle corresponde à celle du système de fichiers.

Avant de réduire la capacité d'un système de fichiers, vous devez réduire la taille du périphérique de blocage (qui peut être une partition ou un volume logique). Étant donné que cette option n'est disponible pour aucun des systèmes de fichiers ext *, vous ne pourrez pas la réduire de 20 Go à 19,5 Go pour créer le swap de 500 Mo.

Même Ext4 ne supporte pas la réduction en ligne. Si vous essayez de le faire, vous obtiendrez ce qui suit:

entrez la description de l'image ici

Pour autant que je sache, votre seul pari est de:

  • Installez une autre version d'Ubuntu sur le même serveur (sur une autre partition), qui peut ensuite être utilisée pour réduire la partition racine du serveur Ubuntu d'origine.

  • Installez le serveur Ubuntu à partir de zéro avec la taille souhaitée

  • Utilisez Ubuntu Server Live Image pour redimensionner la partition. Dans ce cas, vous devrez accéder à cet écran:

    entrez la description de l'image ici

    Et choisissez l'option Redimensionner comme indiqué dans l'image ci-dessus. À partir de là, vous sélectionnerez la nouvelle taille car à partir de là, vous pourrez démonter l’appareil et le réduire si vous le souhaitez.

Une aide supplémentaire est le support de système de fichiers gparted http://gparted.org/features.php qui donne une liste très détaillée des fichiers pris en charge et indique s’ils ont un redimensionnement en ligne complet. Btrfs est parmi eux.

Luis Alvarado
la source
Je suis curieux de savoir s'il existe d'autres systèmes de fichiers prenant en charge la réduction en ligne. zfs ou btrfs peut-être?
Seth
J'ai ajouté un lien en bas. Le noyau doit également le prendre en charge si le système de fichiers doit être redimensionné en ligne correctement.
Luis Alvarado
J'ai le serveur Ubuntu sur la machine VMware et sa taille de disque est 120G. Mais après utilisation première solution, j'obtiens cette erreur: Le système de fichiers est déjà 27262720 blocs longs. Rien à faire!
Dr.jacky
1
Merci @ Mr.Hyde. Il y avait plusieurs problèmes avec Workstation 10 et même 11. Je recommande 12 et pour Ubuntu, je mettrais également à jour le dernier ou le nouveau LTS, car il y avait également quelques problèmes. Dans mon cas, j'ai VMware Workstation 12.0.1 et Ubuntu 15.10 64 bits.
Luis Alvarado
4
Depuis la page de manuel resize2fs:The resize2fs program does not manipulate the size of partitions.
ACK_stoverflow
6

La réponse dépend si vous pouvez démonter la partition pour la réduire ou non. Dans votre cas, vous ne pouvez probablement pas démonter la partition. Sous Linux (UNIX / MAC OS), monter une partition signifie utiliser le système de fichiers et le mapper sur le point de montage (dans votre cas /). Le démontage signifie que vous arrêtez d'utiliser le système de fichiers et supprimez le mappage vers le point de montage. Vous ne pouvez pas démonter le système de fichiers contenant votre système d'exploitation en cours d'exécution.

Si la partition peut être démontée

Supposons que vous souhaitiez réduire une partition ext4 de 200 Go sur une partition /dev/sda4montée /data. Il contient actuellement de la musique et des films ou similaires, vous pouvez donc le démonter temporairement. Vous voulez créer un échange de 4 Go.

sudo umount /dev/sda4

démonter la partition.

sudo resize2fs /dev/sda4 196G

Redimensionner le système de fichiers ext4 à 196 Go, en supposant qu'il y ait suffisamment d'espace. Maintenant, vous devez réduire la partition. Je crois actuellement que vous devez utiliser cfdiskpour supprimer la partition existante et recréer une partition plus petite à la place. Vous pouvez ensuite créer une nouvelle partition pour le swap.

sudo cfdisk /dev/sda 

vous donnera une interface graphique pour inspecter votre table de partition. Je vous recommande de printplacer la table de partition dans un fichier ou un écran à ce stade, et de prendre note de la configuration actuelle en tant que sauvegarde. Vous pouvez ensuite sélectionner /dev/sda4et deletela partition. À sa place, free spacesera affiché. Utilisez cette option newpour créer une nouvelle partition avec 196 Go à la place et définissez le type sur ext4. Puis déplacez-vous vers l'espace libre final et créez la partition de swap de 4 Go avec le type swap. Remarque: je n'ai pas testé ces commandes car je ne peux pas jouer avec les miennes /pour le moment.

Si la partition ne peut pas être démontée

Vous ne pouvez pas réduire une partition ext3 / 4 montée (voir la page de manuel de resize2fs). Comme vous utilisez votre système d'exploitation à partir de /, vous ne pouvez pas démonter /. Cela signifie que vous devez démarrer un autre système d'exploitation (par exemple à partir d'une clé USB) pour pouvoir effectuer les modifications.

Dans votre cas, il s’agit d’un serveur distant (sur KVM probablement), de sorte que vous ne pourrez peut-être pas démarrer à partir d’une image USB / réelle du système d’exploitation. Il existe peut-être d'autres moyens de modifier le partitionnement de votre fournisseur vServer via une interface graphique d'administration. Je crois que c'est votre meilleur pari actuellement.

Noleti
la source