Comment puis-je créer un script pour la création d'une seule partition qui utilise l'ensemble du périphérique?

9

J'utilise spécifiquement cela pour partitionner et monter des volumes EBS sur des instances Amazon EC2, mais cela devrait vraiment être généralement applicable à l'initialisation de tout nouveau lecteur.

Comme la question le dit, je veux créer un script pour la création d'une seule partition principale qui utilise tout l'espace disponible sur le périphérique donné. Je ne saurai pas à l'avance la taille de l'appareil et il pourrait être très grand (c'est-à-dire plusieurs To).

En recherchant cela, il semble que partedc'est la meilleure commande à utiliser pour les scripts. Je pense que quelque chose dans le sens de parted /dev/sdf mkpart primary 0 ENDce que je veux, mais j'ai du mal à trouver une façon élégante de déterminer ce que END devrait être. Quelqu'un connaît-il un moyen facile de le faire?

Mike Deck
la source

Réponses:

11

Vous pouvez faire ceci comme ceci:

parted /dev/sdf --script -- mkpart primary 0 -1
Gilles Quenot
la source
5

J'ai rencontré des problèmes lorsque j'ai essayé d'utiliser l'autre réponse. Ce qui a fonctionné pour moi, c'est d'utiliser plutôt l'approche des pourcentages comme ceci:

$ parted /dev/sdf --script -- mkpart primary 0% 100%

Il y a un problème partedet la façon dont il traite l'alignement des partitions. Ces 2 articles discutent un peu de la question:

Les calculs décrits dans ces articles n'ont tout simplement pas fonctionné dans mes scénarios. Enterré dans l'un des commentaires sur le second, un lien a suggéré à quelqu'un d'utiliser les pourcentages et cela a fonctionné.

Soit dit en passant, vous devrez généralement étiqueter le disque dur également. Pour ce faire via CLI avec parted:

$ parted /dev/sde --script -- mklabel msdos

-ou-

$ parted /dev/sde --script -- mklabel gpt

En fonction de votre disque dur.

slm
la source
gdisks'aligne correctement. À mon avis, partedc'est un gâchis. Il en fait trop - et les choses qu'il fait ne sont que faiblement connectées. C'est étrange de voir comment il crée des systèmes de fichiers et des tables de partition ensemble - les emplacements de disque pour les données qu'il écrit ne ressemblent en rien au même voisinage. Je n'ai commencé à comprendre le fonctionnement des disques que lorsque j'ai réalisé que la table de partition est une petite carte qui se trouve à sa tête, et elle indique au système d'exploitation où il peut rechercher un système de fichiers s'il le souhaite. Lorsque cela a cliqué, j'ai compris les superblocs et megaman et tout cela. Eh bien, j'aime le penser de toute façon.
mikeserv
Merci, le site des outils dans cet espace a toujours été un gâchis pour moi. Je mélange constamment sfdisk, fdisk, cfdisk, parted, etc. Je vais essayer fdisk et voir si c'est plus facile. Recherche principalement d'une option facile à exécuter à partir de l'option cli pour inclusion dans les scripts.
slm
Fondamentalement [gf]disk, ne discriminez pas leur stdin - ils ne se soucient pas si c'est à partir d'un termInal. Ainsi, toute séquence de commandes que vous saisiriez de manière interactive pour obtenir ce que vous voulez peut être directement traduite en printfscript. Toutes les nouvelles lignes de ma réponse ne sont que des (or press enter for default)options. C'est assez simple. Quand je joue avec eux, je vais /tmpet fallocate -l1g imgj'utilise mon nouveau /tmp/imgfichier comme disque - ils s'en moquent. Ils veulent juste écrire une table de partition. Si vous faites de même, regardez ce qui se passe strings -1 imgoccasionnellement.
mikeserv
Mais je mentais avant - Megaman reste mystérieux pour moi. Peut-être qu'il le fera toujours.
mikeserv
1
avec parted /dev/sdf --script -- mkpart primary 0 -1j'ai reçu un avertissement pour non aligné pour de meilleures performances. Tout s'est bien passé avec les pourcentages
nachoparker
2

Tu peux faire...

printf 'n\n\n\n\n\nw\n' | fdisk /dev/disk

... pour un type msdos. Pratiquement la même chose fonctionne pour gpt ...

printf 'n\n\n\n\n\nw\ny\n' | gdisk /dev/disk

Et vous pouvez étiqueter votre disque pendant la création du système de fichiers.

mikeserv
la source