AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 953322
Accepted
Gerald Schneider
Gerald Schneider
Asked: 2019-02-12 02:04:30 +0800 CST2019-02-12 02:04:30 +0800 CST 2019-02-12 02:04:30 +0800 CST

Particionamento automático pré-seed

  • 772

Estou usando as seguintes partmanconfigurações para instalações automatizadas de VMs há alguns anos:

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

Isso cria uma pequena partição de troca no início e usa o restante do disco para a partição raiz. Isso funciona bem e permite fácil extensão de partição quando preciso aumentar o tamanho do disco virtual.

Agora estou tentando adaptar esta receita para instalar vários servidores bare metal idênticos. Para fazer isso, apenas troquei as partições e configurei os tamanhos para valores mais razoáveis ​​para uma máquina com 256 GB de RAM e 460 GB de disco do sistema (SSDs em um RAID1 de hardware, mas isso não deve importar):

  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{ }                \
          .                                                 

As demais partman*diretivas são idênticas.

Tanto quanto eu entendo a documentação (e posts adicionais como este ), isso deve criar uma grande partição raiz que abrange quase todo o disco, com uma partição swap entre 16 e 64 GB no final.

Bem, não. Ele cria uma partição de 450 MB, seguida por uma partição de troca de 460 GB.

insira a descrição da imagem aqui

Quando instalo a mesma máquina com o preseed para VMs, as partições são criadas corretamente conforme definido no arquivo preseed:

insira a descrição da imagem aqui

Então, o que estou fazendo de errado com a receita da máquina bare metal?

Se for importante, a iso de instalação é baseada na iso do servidor Ubuntu 16.04.5.

Saída de fdisk /dev/sdaeparted /dev/sda print :

insira a descrição da imagem aqui

Mais algumas variantes que tentei:

# this belongs to tha last block, as suggested by @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{ }                \
#              .                                               
##########################
# use along with the annoted partman-* directives above
#              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 { }               \              .                         
#              .

Não faz diferença, a partição raiz resultante sempre tem apenas 453 MB.

ubuntu
  • 2 2 respostas
  • 6572 Views

2 respostas

  • Voted
  1. Peter
    2019-02-20T12:52:38+08:002019-02-20T12:52:38+08:00

    Notas especiais

    Não foi mencionado se existe bios_grub, ESP, GPT ou MBR, ou qual método o firmware usa. Ao usar o GPT, você precisa de um ou outro (ou ambos). Então, o que acontecerá é que o instalador escolherá para você, com base em alguns critérios desconhecidos, provavelmente relacionados ao tamanho do disco. Para forçar o uso do GPT, você pode definir coisas assim (que lembro não necessariamente sempre funcionar, apesar de usar todos os 6 métodos que encontrei aqui):

    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
    

    Por exemplo, para bios_grub, você definiria:

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

    (não coloquei$iflabel{ gpt } lá, e isso pode ser útil porque se algo der errado e depois você converter de MBR para GPT, você quer o espaço reservado)

    E para EFI (copiando e colando descaradamente do Preseeding debian install - EFI e não removeu o iflabel):

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

    E para responder a pergunta

    Para usar o resto, você usa -1, não um número arbitrariamente grande e, em seguida, basta definir os outros números para valores falsos como 1. E eu também não confiaria nos intervalos ... Eu apenas uso um arquivo preseed diferente para hardware diferente , não as coisas automágicas do debian. Então eu configurei como apenas 65536, não um intervalo.

    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 { }               \
            .
    

    E certifique-se de que está realmente usando seu novo arquivo preseed. Eu gosto de colocá-lo na imagem initrd do netboot porque então ele não tem dependências de rede, etc. e acho que funciona muito bem. Se você alterar algo como o acima e não funcionar, verifique novamente e novamente. Se for http/tftp, verifique os logs http/tftp ou tcpdump. Ou faça uma mudança que você certamente notará, e veja se ela fez isso.

    Se for initrd, olhe no initrd e veja se realmente está lá. Por exemplo:

    cd emptydir
    gunzip -c path_to_initrd | cpio -i
    # It must be named "preseed.cfg" if it's in the initrd.
    cat preseed.cfg
    
    • 9
  2. Best Answer
    Gerald Schneider
    2019-02-21T23:41:04+08:002019-02-21T23:41:04+08:00

    TL;DR:

    A imagem errada foi montada. Obrigado a @Peter por me apontar dessa maneira.

    A longa história:

    Após o comentário de Peters, verifiquei novamente todo o meu pipeline de construção iso, os arquivos .seed, o isolinux txt.cfg, o logo de inicialização personalizado, o script bash que constrói o .iso, não encontrando nada de errado. Alterei o arquivo .preseed novamente, desta vez adicionando uma terceira partição que deveria ser montada como /var, reconstruí a imagem, cliquei em "Desmontar" e "Montar" na interface BMC do servidor, reiniciei, executei a instalação e adivinhem , era o mesmo layout de antes, sem partição adicional. Tornando-se suspeito, verifiquei /target/etc/issue:

    Ubuntu 16.04.1 LTS
    

    Isso deveria ter sido 16.04.5. Durante meus testes de instalação eu recriei o .iso do Ubuntu completamente, baseando-o em 16.04.5 em vez do anterior 16.04.1 (resultando em um nome iso diferente, porque o arquivo .iso contém o número da versão).

    Eu tenho duas maneiras de montar imagens ISO nessas placas SuperMicro. Posso me conectar a um único BMC e montar o ISO lá, ou posso usar o SuperMicro Server Manager para montar um ISO em várias máquinas ao mesmo tempo. Eu tinha várias máquinas para instalar, então naturalmente usei o método SSM e montei o ISO em todos os lugares.

    Depois de mudar para 16.04.5 só alterei o nome do arquivo diretamente no BMC do host em que estava trabalhando e montei novamente. eu só consigoThere is an iso file mounted. como confirmação, sem mais detalhes.

    Clicar no Savebotão na página de imagem de montagem resulta nesta mensagem de erro:

    insira a descrição da imagem aqui

    Eu não digitei o caminho dessa maneira, isso foi definido pelo Gerenciador do Servidor, então assumi que estava correto. Aparentemente não é. Depois disso, remontei o arquivo .iso com o Server Manager em vez do BMC diretamente e voila ...

    insira a descrição da imagem aqui

    Exatamente o que eu tinha configurado para testar isso.

    A moral da história: perdi cerca de uma semana do meu tempo (e parte do valioso tempo de vocês, pessoas prestativas) só por causa da estupidez de uma interface BMC barata. Tenha isso em mente e verifique novamente TUDO quando tiver problemas inexplicáveis.

    • 3

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve