5 votes

Préconfiguration partitionnement automatique

Je utilise les paramètres partman suivants pour les installations automatisées de VM depuis quelques années maintenant :

d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman/alignment string "optimal"
d-i partman-auto/expert_recipe string                         \
      boot-root ::                                            \
              64 512 300% linux-swap                          \
                      $primary{ }                             \
                      method{ swap } format{ }                \
              .                                               \
              500 10000 1000000000 ext4                       \
                      $primary{ } $bootable{ }                \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ / }                         \
              .
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

Cela crée une petite partition swap au début et utilise le reste du disque pour la partition racine. Cela fonctionne bien et permet une extension facile des partitions lorsque j'ai besoin d'augmenter la taille du disque virtuel.

Maintenant, j'essaie d'adapter cette recette pour installer un certain nombre de serveurs bare metal identiques. Pour ce faire, j'ai simplement échangé les partitions et ajusté les tailles à des valeurs plus raisonnables pour une machine avec 256 Go de RAM et un disque système de 460 Go (SSD en RAID matériel 1, mais cela ne devrait pas poser de problème) :

  boot-root ::                                            \
          32768 65536 1000000000 ext4                     \
                  $primary{ } $bootable{ }                \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext4 }    \
                  mountpoint{ / }                         \
          .                                               \
          16384 16384 65536 linux-swap                    \
                  $primary{ }                             \
                  method{ swap } format{ }                \
          .                                                 

Le reste des directives partman* sont identiques.

D'après ce que je comprends de la documentation (et des publications supplémentaires comme celle-ci), cela devrait créer une grande partition racine qui couvre presque tout le disque, avec une partition swap entre 16 et 64 Go à la fin.

Eh bien, ce n'est pas le cas. Cela crée une partition de 450 Mo, suivie d'une partition swap de 460 Go.

Description de l'image ici

Lorsque j'installe la même machine avec le préconfiguration pour les VM, les partitions sont créées correctement telles que définies dans le fichier préconfiguré :

Description de l'image ici

Alors, qu'est-ce que je fais de travers avec la recette pour la machine bare metal ?

Si cela est important, l'ISO d'installation est basée sur l'ISO serveur Ubuntu 16.04.5.

Sortie de fdisk /dev/sda et parted /dev/sda print :

Description de l'image ici

Quelques autres variantes que j'ai essayées :

# ceci appartient au dernier bloc, comme suggéré par @Peter
#d-i partman-basicfilesystems/choose_label string gpt
#d-i partman-basicfilesystems/default_label string gpt
#d-i partman-partitioning/choose_label string gpt
#d-i partman-partitioning/default_label string gpt
#d-i partman/choose_label string gpt
#d-i partman/default_label string gpt

d-i partman-auto/expert_recipe string                         \
      boot-root ::                                            \
##########################
              65536 1 -1 ext4                             \
                      $primary{ } $bootable{ }                \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ / }                         \
              .                                               \
              65536 65536 65536 linux-swap                    \
                      $primary{ }                             \
                      method{ swap } format{ }                \
              .                                               
##########################
#              1 1 -1 ext4                             \
#                      $primary{ } $bootable{ }                \
#                      method{ format } format{ }              \
#                      use_filesystem{ } filesystem{ ext4 }    \
#                      mountpoint{ / }                         \
#              .                                               \
#              65536 65536 65536 linux-swap                    \
#                      $primary{ }                             \
#                      method{ swap } format{ }                \
#              .                                               
##########################
#              32768 50 5242880 ext4                             \
#                      $primary{ } $bootable{ }                \
#                      method{ format } format{ }              \
#                      use_filesystem{ } filesystem{ ext4 }    \
#                      mountpoint{ / }                         \
#              .                                               \
#              16384 100 65536 linux-swap                    \
#                      $primary{ }                             \
#                      method{ swap } format{ }                \
#              .                                               
##########################
# utilisez avec les directives annotées partman-* ci-dessus
#              538 538 1075 free                           \
#                      $iflabel{ gpt }                     \
#                      $reusemethod{ }                     \
#                      method{ efi }                       \
#                            format{ }                     \
#              .                                           \
#              1 1 -1 ext4                                 \
#                  $primary{ } $bootable{ }                \
#                  method{ format } format{ }              \
#                  use_filesystem{ } filesystem{ ext4 }    \
#                  mountpoint{ / }                         \
#              .                                           \
#              65536 65536 65536 linux-swap                \
#                  $primary{ }                             \
#                  method{ swap } format { }               \              .                         
#              .

Cela ne fait aucune différence, la partition racine résultante a toujours seulement 453 Mo.

9voto

Peter Points 2426

Notes spéciales

Il n'a pas été mentionné s'il y a bios_grub, ESP, GPT ou MBR, ou quelle méthode le firmware utilise. Lorsque vous utilisez GPT, vous avez besoin de l'un ou l'autre (ou des deux). Ainsi, ce qui se passera est que l'installateur choisira pour vous, basé sur des critères inconnus, probablement liés à la taille du disque. Pour forcer l'utilisation de GPT, vous pouvez définir les choses comme ceci (ce dont je me souviens ne fonctionne pas nécessairement toujours, malgré avoir utilisé les 6 méthodes que j'ai trouvées ici) :

d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt

Par exemple, pour bios_grub, vous définiriez :

    1 1 1 free                          \
        $primary{}                      \
        $bios_boot{}                    \
        method{ biosgrub }              \
    .                                   \

(Je n'ai pas mis de $iflabel{ gpt } là-dedans, et cela peut être utile car si quelque chose ne va pas et que vous le convertissez ultérieurement de MBR en GPT, vous voulez l'espace réservé)

Et pour l'EFI (copiant sans vergogne et collant depuis Présélection de l'installation Debian - EFI et n'ayant pas supprimé le iflabel) :

    538 538 1075 free
        $iflabel{ gpt }
        $reusemethod{ }
        method{ efi }
        format{ } .

Et pour répondre à la question

Pour utiliser le reste, utilisez -1, pas un nombre arbitrairement énorme, puis définissez simplement les autres nombres à des valeurs bidon comme 1. Et je ne ferais pas confiance non plus aux plages... J'utilise simplement un fichier preseed différent pour différents matériels, pas les trucs automatiques de debian. Donc je le définis comme seulement 65536, pas une plage.

d-i partman-auto/expert_recipe string               \
    boot-root ::                                    \
        1 1 -1 ext4                                 \
            $primary{ } $bootable{ }                \
            method{ format } format{ }              \
            use_filesystem{ } filesystem{ ext4 }    \
            mountpoint{ / }                         \
        .                                           \
        65536 65536 65536 linux-swap                \
            $primary{ }                             \
            method{ swap } format{ }               \
        .

Et assurez-vous qu'il utilise vraiment votre nouveau fichier preseed. J'aime le mettre dans l'image initrd netboot car alors il n'a aucune dépendance au réseau, etc. et je trouve que cela fonctionne très bien. Si vous changez quelque chose comme ci-dessus et que cela ne fonctionne pas, vérifiez-le à nouveau, et encore. Si c'est http/tftp, vérifiez les journaux http/tftp ou tcpdump. Ou apportez un changement que vous remarquerez sûrement, et voyez s'il l'a fait.

Si c'est un initrd, regardez dans l'initrd et voyez s'il est vraiment là. Par exemple :

cd emptydir
gunzip -c path_to_initrd | cpio -i
# Il doit être nommé "preseed.cfg" s'il est dans l'initrd.
cat preseed.cfg

3voto

Gerald Schneider Points 17588

TL;DR:

La mauvaise image a été montée. Merci à @Peter de m'avoir orienté dans cette direction.

La longue histoire :

Après le commentaire de Peter, j'ai vérifié de nouveau tout mon processus de création d'iso, les fichiers .seed, le isolinux txt.cfg, le bootlogo personnalisé, le script bash qui crée l'.iso, sans rien trouver de mal. J'ai de nouveau changé le fichier .preseed, ajoutant cette fois une troisième partition qui devrait être montée en /var, reconstruit l'image, cliqué sur "Démonter" et "Monter" dans l'interface BMC du serveur, redémarré, lancé l'installation, et devinez quoi, c'était la même configuration qu'avant, aucune partition supplémentaire. Devenant méfiant, j'ai vérifié /target/etc/issue:

Ubuntu 16.04.1 LTS

Ça aurait dû être 16.04.5. Pendant mes tests d'installation, j'ai recréé complètement l'.iso Ubuntu, en me basant sur 16.04.5 au lieu du 16.04.1 précédent (résultant en un nom d'.iso différent, car le fichier .iso contient le numéro de version).

J'ai deux façons de monter des images ISO sur ces cartes SuperMicro. Je peux me connecter à un seul BMC et monter l'ISO là-bas, ou je peux utiliser le SuperMicro Server Manager pour monter un ISO sur plusieurs machines en même temps. J'avais plusieurs machines à installer, donc j'ai naturellement utilisé la méthode SSM et monté l'ISO partout.

Après être passé à 16.04.5, j'ai seulement changé le nom de fichier directement dans le BMC de l'hôte sur lequel je travaillais et je l'ai remonté. Je reçois seulement Il y a un fichier iso monté. comme confirmation, sans plus de détails.

En cliquant sur le bouton Enregistrer sur la page de montage de l'image, j'obtiens ce message d'erreur :

entrer la description de l'image ici

Je n'ai pas entré le chemin de cette manière, c'était défini par le Server Manager, donc je pensais que c'était correct. Apparemment non. Après cela, j'ai remonté le fichier .iso avec le Server Manager plutôt que avec le BMC directement, et voilà...

entrer la description de l'image ici

Exactement ce que j'avais configuré pour tester cela.

La morale de l'histoire : J'ai perdu environ une semaine de mon temps (et une partie du temps précieux de vous, gens serviables) juste à cause de la stupidité d'une interface BMC bon marché. Gardez cela à l'esprit et revérifiez TOUT lorsque vous rencontrez des problèmes inexplicables.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X