Como configurar volumes LVM RAID + 2 via preseed?

4

Internamente, usamos o Ubuntu (14.04 Trusty) em nossas estações de trabalho e até agora fizemos todas as nossas construções manualmente, incluindo a criação de volumes criptografados por RAID / LVM / LUKS. Isso não é escalável e agora estou trabalhando para automatizar alguns de nossos processos para reduzir a quantidade de envolvimento "prático" necessário para construir uma nova estação de trabalho.

Nossa configuração de disco rígido é a seguinte:

  • / dev / sda & amp; / dev / sdb são discos rígidos de 1Tb particionados de forma idêntica e RAIDed
    • 1Gb partição com RAID 1 contendo sistema de arquivos ext4 montado como / boot
    • Restante da unidade RAID 1 contendo um PV / VG do LVM (vg_raid)
      • 8Gb LV para espaço de troca
      • Restante de espaço - LV contendo sistema de arquivos ext4 montado como /
  • / dev / sdc SSD de 128 Gb
    • Partição única contendo um PV / VG do LVM (vg_ssd)
    • Único LV usando todo o espaço disponível contendo um sistema de arquivos ext4 que é montado em / ssd

Particionados desta maneira, temos um sistema de arquivos raiz grande e redundante para armazenamento geral de dados e uma partição menor na qual arquivos que são sensíveis à velocidade de E / S podem ser inseridos (por exemplo, bancos de dados MySQL).

Estou tentando replicar isso em um partman expert_recipe com configuração relacionada para que possa ser criado pelo instalador do Ubuntu. Minha principal questão é que não parece haver um mecanismo (funcionando?) Na "linguagem" da receita do partman para especificar que um LV específico precisa ser criado em um grupo colume específico, e quais volumes físicos LVM são atribuídos a cada um deles. grupo de volumes. Eu tinha uma versão anterior dessa configuração funcionando sem tentar particionar / formatar / montar qualquer volume em /dev/sdc , mas assim que a unidade extra "não-RAID" está envolvida, não consigo expressar o que quero em a receita do parceiro.

A parte relevante do meu arquivo preseed.cfg é a seguinte:

d-i partman-auto/disk string /dev/sda /dev/sdb /dev/sdc
d-i partman-auto/method string raid
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-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/new_vg_name string vg_raid vg_ssd
d-i partman-auto-lvm/guided_size string max
d-i partman-auto/expert_recipe string                              \
      boot-root ::                                                 \
              512 10 1024 raid                                     \
                      $primary{ } $lvmignore{ } $bootable{ }       \
                      method{ raid }                               \
                      device{ /dev/sda /dev/sdb }                  \
                      vg_name{ vg_raid }                           \
              .                                                    \
              4096 20 -1 raid                                      \
                      $primary{ } $lvmignore{ }                    \
                      method{ raid }                               \
                      device{ /dev/sda /dev/sdb }                  \
              .                                                    \
              2048 20 -1 lvm                                       \
                      $primary{ }                                  \
                      $defaultignore{ }                            \
                      method{ lvm }                                \
                      device{ /dev/sdc }                           \
                      vg_name{ vg_ssd }                            \
              .                                                    \
              8192 100 -1 ext4                                     \
                      $defaultignore $lvmok{ }                     \
                      in_vg{ vg_raid }                             \
                      lv_name{ lv_root }                           \
                      method{ format } format{ }                   \
                      use_filesystem{ } filesystem{ ext4 }         \
                      mountpoint{ / }                              \
                      device{ /dev/sda /dev/sdb }                  \
              .                                                    \
              4096 100 100% linux-swap                             \
                      $defaultignore $lvmok{ }                     \
                      in_vg{ vg_raid }                             \
                      lv_name{ lv_swap }                           \
                      method{ swap } format{ }                     \
                      device{ /dev/sda /dev/sdb }                  \
              .                                                    \
              2048 100 -1 ext4                                     \
                      $defaultignore $lvmok{ }                     \
                      method{ format } format{ }                   \
                      use_filesystem{ } filesystem{ ext4 }         \
                      device{ /dev/sdc }                           \
                      in_vg{ vg_ssd }                              \
                      lv_name{ lv_ssd }                            \
                      mountpoint{ /ssd }                           \
              .                                                    \
d-i partman-auto-raid/recipe string                              \
    1 2 0 ext4 /boot  /dev/sda1#/dev/sdb1                    .   \
    1 2 0 lvm  -      /dev/sda2#/dev/sdb2                    .
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman-lvm/confirm boolean true
d-i partman-md/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman-md/confirm_nooverwrite boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman/mount_style select label

Você notará que tentei ser bem específico sobre quais partições / volumes serão colocados em quais discos, mas o partman não parece honrar pelo menos parte dessa configuração. Eu também mantive os tamanhos mínimos de volume bem pequenos enquanto testo essa configuração em uma VM. Quando executo uma instalação com essa configuração em uma VM do VirtualBox com unidades menores, a instalação falha com a mensagem de erro:

Error while setting up RAID
An unexpected error occurred while setting up a preseeded RAID configuration.

Check /var/log/syslog or see virtual console 4 for the details.

A seção relevante do syslog é a seguinte:

Jan 13 02:41:54 md-devices: mdadm: No arrays found in config file or automatically
Jan 13 02:41:54 partman:   No matching physical volumes found
Jan 13 02:41:54 partman:   Reading all physical volumes.  This may take a while...
Jan 13 02:41:54 partman:   
Jan 13 02:41:54 partman: No volume groups found
Jan 13 02:41:54 partman: 
Jan 13 02:41:54 partman-lvm:   
Jan 13 02:41:54 partman-lvm: No volume groups found
Jan 13 02:41:54 partman-lvm: 
Jan 13 02:41:56 partman-auto: Available disk space (4294) too small for expert recipe (4608); skipping
Jan 13 02:41:57 kernel: [   91.295036] Adding 2095100k swap on /dev/sdc5.  Priority:-1 extents:1 across:2095100k FS
Jan 13 02:41:57 partman: mke2fs 1.42.9 (4-Feb-2014)
Jan 13 02:41:57 apt-install: Queueing package mdadm for later installation
Jan 13 02:41:57 partman-auto-raid: Error: No recipe specified in partman-auto-raid/recipe

Eu suspeito que a linha 4a da parte inferior é mais relevante, como você pode ver que o partman foi adiante e criou o espaço de troca em /dev/sdc , que não era o que eu queria.

Eu tentei várias variações de como as partições são especificadas. Eu pesquisei muito sobre termos de versões relacionadas a receitas de parceiros e preseed em geral, e não consigo encontrar uma referência canônica para as diferentes opções de configuração em uma receita e por que elas são aplicáveis. Eu encontrei um número de exemplos de RAID, e muitos exemplos de LVM, mas nada que mistura os dois da maneira que eu estou tentando usá-los. Este tópico da lista de discussão debian-user sugere que o que eu quero fazer não é possível, e isso parece acompanhar minha impressão de que a linguagem da receita do parceiro não possui as ferramentas necessárias para descrever o que estou tentando alcançar.

Se alguém puder apontar o que estou fazendo de errado com minha configuração, ou até mesmo alguns materiais de referência bons sobre o partman expert_recipe e a linguagem de configuração envolvida, isso seria muito apreciado. Neste ponto, parece que posso automatizar toda a minha instalação, exceto a parte de particionamento, que é realmente a principal coisa que eu queria automatizar!

    
por Jim OHalloran 13.01.2015 / 05:35

0 respostas