[Partition Linux] Comment réduire la maison pour déplacer des secteurs, puis augmenter la taille de la racine

Chose que tu veux faire

Dans cet article, la partition racine Linux est devenue trop petite, nous allons donc réduire la partition home supplémentaire et étendre la partition racine.

Plus précisément, la configuration qui était comme ça au début

Device             Start       End   Sectors  Size Type
/dev/nvme0n1p1      2048    206847    204800  100M EFI System
/dev/nvme0n1p2    206848    239615     32768   16M Microsoft reserved
/dev/nvme0n1p3    239616 168011775 167772160   80G Microsoft basic data
/dev/nvme0n1p4 168011776 170108927   2097152    1G Windows recovery environment
/dev/nvme0n1p5 170108928 274966527 104857600   50G Microsoft basic data
/dev/nvme0n1p6 274966528 370976767  96010240 45.8G Linux root
/dev/nvme0n1p7 370976768 907847679 536870912  256G Linux home

Réduisez / dev / nvme0n1p7 de 56 Go et développez / dev / nvme0n1p6 de 50 Go pour effectuer la configuration suivante.

Device             Start       End   Sectors  Size Type
/dev/nvme0n1p1      2048    206847    204800  100M EFI System
/dev/nvme0n1p2    206848    239615     32768   16M Microsoft reserved
/dev/nvme0n1p3    239616 168011775 167772160   80G Microsoft basic data
/dev/nvme0n1p4 168011776 170108927   2097152    1G Windows recovery environment
/dev/nvme0n1p5 170108928 274966527 104857600   50G Microsoft basic data
/dev/nvme0n1p6 274966528 475834367 200867840 95.8G Linux root
/dev/nvme0n1p7 475834368 895264767 419430400  200G Linux home

Ce que j'ai fait

L'opération peut être divisée en les trois principaux suivants

  1. Réduisez la partition d'accueil / dev / nvme0n1p7
  2. Déplacez le secteur de départ de la partition home / dev / nvme0n1p7 pour créer un secteur non alloué après la partition racine / dev / nvme0n1p6
  3. Étendez la partition racine / dev / nvme0n1p6

Pour la raison de l'opération 2, dans le cas de cette configuration de partition, il y a une partition home dans le secteur sous la partition racine. En effet, il n'est pas possible de créer une partition sur plusieurs secteurs, donc après avoir réduit la partition d'origine, il est nécessaire de décaler le secteur de départ de la partition d'origine du montant que vous souhaitez étendre la partition racine.

Désormais, je vais vous expliquer étape par étape. Tout d'abord, démarrez Linux à partir de l'USB et affichez la console, car il peut s'agir de n'importe quelle distribution. Puisque l'environnement cette fois-ci est archlinux, le support d'installation de l'arch (archlinux-2019.12.01-x86_64.iso 2019.12.01-x86_64.iso))).

Si vous devez démarrer le système d'exploitation au milieu de votre travail, assurez-vous de passer à la fin de chaque étape avant de démarrer, car cela peut détruire le système de fichiers. En fait, nous avons confirmé que le système d'exploitation démarre sans problème à la fin de chaque étape.

ÉTAPE 1: Réduisez la partition d'accueil / dev / nvme0n1p7

Tout d'abord, vérifiez le système de fichiers avec la commande e2fsck (la prochaine commande resize2fs à utiliser ne peut pas être exécutée sans cette opération car elle vérifie l'espace libre en fonction de ce résultat).

On vous demandera si vous souhaitez optimiser l'arborescence d'extension en cours de route, mais il semble que vous n'ayez pas à le faire tant que l'arborescence d'extension ne dépasse pas la limite supérieure. J'ai procédé avec tout non. Référence: https://unix.stackexchange.com/questions/392537/inode-extent-tree-at-level-1-could-be-shorter-ignored

e2fsck -f <Le chemin du système de fichiers que vous souhaitez vérifier>
root@archiso ~ # e2fsck -f /dev/nvme0n1p7
e2fsck 1.45.4 (23-Sep-2019)
Pass 1: Checking inodes, blocks, and sizes
Inode 8404395 extent tree (at level 1) could be shorter. Optimize<y>? no
Inode 8404481 extent tree (at level 2) could be narrower. Optimize<y>? no
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/nvme0n1p7:2498456/16777216 files (0.9% non-contiguous), 32640354/67108864 blocks
e2fsck -f /dev/nvme0n1p7 7.08s user 0.82s system 6% cpu 2:07.42 total

Ensuite, exécutez le processus de réduction avec resize2fs.

resize2fs <Le chemin du système de fichiers que vous souhaitez réduire> <Taille de la partition après réduction(K,M,Peut être spécifié avec G etc.)> 
root@archiso ~ # resize2fs /dev/nvme0n1p7 200G
resize2fs 1.45.4 (23-Sep-2019)
Resizing the filesystem on /dev/nvme0n1p7 to 52428800 (4k) blocks.
The filesystem on /dev/nvme0n1p7 is now 52428800 (4k) blocks long.

resize2fs /dev/nvme0n1p7 200G 6.41s user 14.03s system 36% cpu 55.878 total

Jusqu'à présent, la réduction réelle du système de fichiers est terminée, mais ces informations ne sont pas reflétées dans le LVM (la couche où la taille de partition de chaque partition est enregistrée). Par conséquent, utilisez fdisk pour mettre à jour le LVM.

root@archiso ~ # fdisk <Volume contenant des partitions réduites>

Supprimez les informations de la partition réduite avec la commande d,
Recréez les informations en entrant les informations de partition modifiées à la taille après réduction avec la commande n.
Enregistrer dans LVM avec la commande w
root@archiso ~ # fdisk /dev/nvme0n1
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Partition number (1-7, default 7): 7

Partition 7 has been deleted.

Command (m for help): n
Partition number (7-128, default 7): 
First sector (370976768-1000215182, default 370976768): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (370976768-1000215182, default 1000215182): +200G

Created a new partition 7 of type 'Linux filesystem' and of size 200 GiB.
Partition #7 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: n

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

À ce stade, la réduction de «/ dev / nvme0n1p7» est terminée.

ÉTAPE2: Déplacez le secteur de départ de la partition d'accueil / dev / nvme0n1p7 et créez un secteur non alloué après la partition racine / dev / nvme0n1p6

Utilisez sfdisk pour déplacer la partition. Cette commande met également à jour le LVM, cette étape est donc tout ce que vous devez faire.

Veuillez noter que ce processus prend du temps. Dans ce cas, c'était un SSD et je pensais que cela prendrait des dizaines de minutes, mais cela a pris environ 6 heures.

echo '+<La taille que vous souhaitez déplacer(=Taille étendue de la partition racine)>' | sfdisk --move-data <Volume contenant la partition que vous souhaitez déplacer> -N <Numéro de version à déplacer>
root@archiso ~ # echo '+50G' | sfdisk --move-data /dev/nvme0n1 -N 7
Checking that no-one is using this disk right now ... OK

Disk /dev/nvme0n1: 476.96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: KXG50ZNV512G TOSHIBA                    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 80F7A56F-2E69-49B5-8A44-09E9998615AE

Old situation:

Device             Start       End   Sectors  Size Type
/dev/nvme0n1p1      2048    206847    204800  100M EFI System
/dev/nvme0n1p2    206848    239615     32768   16M Microsoft reserved
/dev/nvme0n1p3    239616 168011775 167772160   80G Microsoft basic data
/dev/nvme0n1p4 168011776 170108927   2097152    1G Windows recovery environment
/dev/nvme0n1p5 170108928 274966527 104857600   50G Microsoft basic data
/dev/nvme0n1p6 274966528 370976767  96010240 45.8G Linux filesystem
/dev/nvme0n1p7 370976768 790407167 419430400  200G Linux home

/dev/nvme0n1p7:
New situation:
Disklabel type: gpt
Disk identifier: 80F7A56F-2E69-49B5-8A44-09E9998615AE

Device             Start       End   Sectors  Size Type
/dev/nvme0n1p1      2048    206847    204800  100M EFI System
/dev/nvme0n1p2    206848    239615     32768   16M Microsoft reserved
/dev/nvme0n1p3    239616 168011775 167772160   80G Microsoft basic data
/dev/nvme0n1p4 168011776 170108927   2097152    1G Windows recovery environment
/dev/nvme0n1p5 170108928 274966527 104857600   50G Microsoft basic data
/dev/nvme0n1p6 274966528 370976767  96010240 45.8G Linux filesystem
/dev/nvme0n1p7 475834368 895264767 419430400  200G Linux home

Data move:
 typescript file : /root/sfdisk-nvme0n1p7.move
 old start: 370976768, new start: 475834368 (move 419430400 sectors)

ÉTAPE 3: étendre la partition racine / dev / nvme0n1p6

resize2fs a une fonction pour changer la taille de la partition en fonction des informations fdisk. Par conséquent, mettez d'abord à jour les informations sur le LVM avec fdisk et effectuez l'expansion réelle avec resize2fs.

Pour fdisk, utilisez la commande suivante comme dans STEP1.

root@archiso ~ # fdisk <Volume contenant la partition que vous souhaitez agrandir>

Supprimez les informations de la partition que vous souhaitez étendre avec la commande d,
Entrez les informations de partition redimensionnées avec la commande n pour recréer les informations.
Enregistrer dans LVM avec la commande w
root@archiso ~ # fdisk /dev/nvme0n1
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Partition number (1-7, default 7): 6

Partition 6 has been deleted.

Command (m for help): n
Partition number (6,8-128, default 6): 6
First sector (274966528-1000215182, default 274966528): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (274966528-475834367, default 475834367): 

Created a new partition 6 of type 'Linux filesystem' and of size 95.8 GiB.
Partition #6 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: n

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Ensuite, après avoir exécuté le même e2fsck que STEP1, exécutez resize2fs sans spécifier la taille de la partition. Contrairement au temps de réduction, l'expansion a été achevée en un instant.

root@archiso ~ # e2fsck -f /dev/nvme0n1p6
(Omission:Le résultat de l'exécution sera similaire à celui de STEP1)

root@archiso ~ # resize2fs /dev/nvme0n1p6
resize2fs 1.45.4 (23-Sep-2019)
Resizing the filesystem on /dev/nvme0n1p6 to 25108480 (4k) blocks.
The filesystem on /dev/nvme0n1p6 is now 25108480 (4k) blocks long.

Ceci termine le processus.

Résumé

Resize2fs est pratique pour mettre à l'échelle les partitions, et --move-data de sfdisk est pratique pour déplacer des secteurs!

Lors du passage dans un secteur, je pensais que je devais utiliser dd pour m'en débarrasser, mais utiliser sfdisk a résolu le problème en un seul coup! !!

Recommended Posts

[Partition Linux] Comment réduire la maison pour déplacer des secteurs, puis augmenter la taille de la racine
[Linux] Comment subdiviser des fichiers et des dossiers
Comment basculer entre les shells Linux et Mac
Étapes pour changer les partitions, y compris la zone système Linux et la zone de démarrage
[Google Colab] Comment interrompre l'apprentissage, puis le reprendre