web-dev-qa-db-fra.com

Comment demander à Curtin d'utiliser GPT au lieu de MBR avec MAAS?

Je déploie des nœuds AMD64 avec un premier disque de 3 To avec MAAS mais je n'obtiens qu'une partition de 2 To car Curtin utilise MBR au lieu de GPT pour le partitionnement.

2
sto

Curtin essaie de choisir le type de table de partition le plus approprié pour un nœud donné:

  • Pour les systèmes qui démarrent en mode BIOS, il s'agit par défaut d'une table de partition DOS stockée sur MBR
  • Pour les systèmes qui démarrent en mode UEFI (y compris les systèmes compatibles UEFI basés sur ARMv8 comme Cavium Thunder et APM X-Gene), la valeur par défaut est table de partition GPT

Par conséquent, le moyen le plus simple d'obtenir une table de partition GPT est de configurer le nœud pour démarrer en mode UEFI, qui est pris en charge à partir de MAAS 1.5 .

Il existe deux autres façons d'obtenir Curtin pour créer des partitions GPT:

  • Vous pouvez modifier la configuration de Curtin fournie par MAAS en Curtin dans /etc/maas/preseeds/curtin_userdata inclure:

    block-meta:
        format: gpt
    
  • Si vous avez jusqu'à 4 partitions, vous pouvez facilement convertir les tables de partitions DOS en partitions GPT après l'installation. Curtin fait un effort pour laisser suffisamment d'espace dans le partitionnement pour permettre à la conversion de se dérouler avec succès, et à partir de r224 et après, il le garantit . La conversion peut être effectuée avec:

    sgdisk --mbrtogpt <device>
    
2
kiko

J'ai essayé un certain nombre de solutions de contournement (y compris celle suggérée dans la solution de kiko) en vain.

Ce qui suit fonctionne de manière assez fiable, au moins avec MAAS 2.3.5 fonctionnant sur Xenial:

  1. Mettez en service le nœud et partitionnez son disque comme vous le feriez normalement (par exemple: à l'aide de l'interface utilisateur Web), mais arrêtez avant de déployer le nœud.
  2. Exécutez la requête de ligne de commande suivante: maas $USER block-devices read $nodeid ($nodeid peut être lu à partir de l'URL sur l'interface utilisateur Web par exemple; c'est un identifiant interne de six alphanum pour le nœud)
  3. Saisissez le périphérique de bloc id. Vous verrez que partition_table_type dit obstinément "MBR"
  4. Connectez-vous maintenant à la base de données Postgres de MAAS: Sudo -u postgres psql -d maasdb
  5. Mettez à jour le schéma de partitionnement vers GPT, update maasserver_partitiontable set table_type='GPT' where block_device_id=$block_dev_id (remplacez `$ block_dev_id par l'identifiant que vous avez lu à l'étape 3)
  6. Répétez éventuellement la requête de l'étape 2 et vérifiez que le partition_table_type a été mis à jour vers GPT.
  7. Déployez le nœud et profitez de votre table de partition GPT.

Ce n'est pas particulièrement joli car le piratage directement dans la base de données de MAAS semble un peu hors limites, mais c'est la meilleure chose jusqu'à ce qu'on nous donne un moyen de le faire via une API publique. Le type d'API que j'ai en tête serait comme: maas $USER block-device update $node_id $block_device_id partition_table_type=GPT. Cette API existe déjà et permet de mettre à jour le name du périphérique de bloc comme documenté , mais ignore le beaucoup plus utile partition_table_type attribut.

Remarque: si vous devez laisser de l'espace non partitionné sur le disque cible GPT, sachez que cette procédure semble déclencher une "fonctionnalité" par laquelle cet espace est absorbé par la dernière partition que vous disposez dans MAAS. Une solution de contournement consiste à créer une partition jetable et à la supprimer après le déploiement.

1
sxc731