Pour faire court, je dois effectuer tout cela automatiquement au démarrage (système embarqué).
Nos ingénieurs feront clignoter les images sur les appareils de production. Ces images contiendront une petite table de partition. Au démarrage, j'ai besoin d'étendre automatiquement la dernière partition (# 3) pour utiliser tout l'espace disponible sur le disque.
Voici ce que j'obtiens quand je regarde l'espace libre sur mon disque.
> parted /dev/sda print free
Model: Lexar JumpDrive (scsi)
Disk /dev/sda: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
17.4kB 1049kB 1031kB Free Space
1 1049kB 25.3MB 24.2MB fat16 primary legacy_boot
25.3MB 26.2MB 922kB Free Space
2 26.2MB 475MB 449MB ext4 primary
3 475MB 1549MB 1074MB ext4 primary
1549MB 32.0GB 30.5GB Free Space
J'ai besoin d'étendre la partition 3 par N (30,5 Go) nombre d'octets
Comment effectuer cette étape automatiquement, sans invite? Cela doit fonctionner avec une taille dynamique d'espace disponible après la 3e partition.
resizepart
commande, et cela fonctionne, mais cela nécessite une taille exacte. J'en ai besoin pour être dynamique.resize2fs
pourrait être ce que je recherche. linux.die.net/man/8/resize2fsRéponses:
Dans les versions actuelles de
parted
,resizepart
devrait fonctionner pour la partition (parted
comprend100%
ou des choses comme-1s
, cette dernière doit également--
arrêter les options d'analyse sur la ligne de commande). Pour déterminer la valeur exacte que vous pouvez utiliserunit s
,print free
.resize2fs
vient ensuite pour le système de fichiers.Les anciennes versions de
parted
avaient uneresize
commande qui redimensionnait à la fois la partition et le système de fichiers en une seule fois, cela fonctionnait même pourvfat
.Dans une modification de liseuse Kobo, j'ai utilisé cela pour redimensionner la 3e partition de la mémoire interne au maximum: (il suppose aveuglément qu'il n'y a pas de 4e partition et de table msdos et d'autres choses)
Vous pouvez donc également obtenir les valeurs
/sys/block/.../
si le noyau le prend en charge. Maisparted
laresize
commande a été supprimée , vous devez donc faire deux étapes maintenant,resizepart
pour agrandir la partition, et quel que soit l'outil que votre système de fichiers fournit pour l'agrandir, commeresize2fs
pourext*
.la source
parted
pas en charge l'extension automatique à partir de la ligne de commande? Parce qu'il le prend en charge de manière interactive. S'il est exécuté de manière interactive, il vous demandera si vous souhaitez corriger la table de partition GPT pour correspondre à la taille du disque (typefix
), puis vous pouvez exécuterresizepart 3 -1
. J'ai essayé de comprendre comment le faire à partir de la ligne de commande.Étant incapable de séparer correctement le script (il a demandé une confirmation parce que la partition était montée et contrairement à d'autres réponses que j'ai trouvées ne comprenait pas
-1s
ou100%
), je viens de trouver l'outil Growpart qui fait exactement cela.L'utilisation est simple:
growpart /dev/sda 3
(puisresize2fs /dev/sda3
, ou une autre commande appropriée pour le type de système de fichiers utilisé).Dans Debian et Ubuntu, il est empaqueté comme cloud-guest-utils .
la source
La bonne façon de le faire est d'utiliser le fait que parted a la notion de pourcentages. Donc
la source
Dans Ubuntu 18.04, je peux redimensionner pour remplir l'espace non alloué dans un script avec les éléments suivants:
Il peut ne pas être nécessaire de monter avant de redimensionner. Je l'ai fait pour supprimer une requête de resize2fs pour l'entrée utilisateur.
la source