Pré-preparando a receita do partman do Ubuntu usando LVM e RAID

4

Estou tentando instalar o servidor Ubuntu 12.04 e criei uma receita que criaria o RAID 1 em 2 drives e particionaria o mesmo usando o LVM. Infelizmente partman reclama quando cria volumes LVM dizendo que não há partições na receita que possam ser usadas com o LVM (no console ele reclama de receita inutilizável).

O layout que estou procurando é o RAID 1 em sdb e sdc (instalando a partir do pendrive USB, então é preciso usar sda) e depois usar o LVM para criar boot, root e swap.

O curioso é que, se eu mudar o ponto de montagem de boot_lv para casa, a receita funciona bem (além da montagem no lugar errado), mas ao montar em / boot ele falha

Eu sei que eu poderia usar partição primária separada / boot, mas alguém pode me dizer por que ela falha. Receita e opções relevantes abaixo.

## Partitioning using RAID
d-i     partman-auto/disk string /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-auto-lvm/new_vg_name string main_vg
d-i partman-auto/expert_recipe string           \
    multiraid ::                    \
        100 512 -1 raid         \
            $lvmignore{ }           \
            $primary{ }         \
            method{ raid }          \
        .                   \
        256 512 256 ext3            \
            $defaultignore{ }       \
            $lvmok{ }           \
            method{ format }        \
            format{ }           \
            use_filesystem{ }       \
            filesystem{ ext3 }      \
            mountpoint{ /boot }     \
            lv_name{ boot_lv }      \
        .                   \
        2000 5000 -1 ext4           \
            $defaultignore{ }       \
            $lvmok{ }           \
            method{ format }        \
            format{ }           \
            use_filesystem{ }       \
            filesystem{ ext4 }      \
            mountpoint{ / }         \
            lv_name{ root_lv }      \
        .                   \
        64 512 300% linux-swap          \
            $defaultignore{ }       \
            $lvmok{ }           \
            method{ swap }          \
            format{ }           \
            lv_name{ swap_lv }      \
        .

d-i partman-auto-raid/recipe string \
    1 2 0 lvm -                     \
          /dev/sdb1#/dev/sdc1       \
    .                               
d-i     mdadm/boot_degraded boolean true
#d-i     partman-md/confirm boolean true
#d-i     partman-partitioning/confirm_write_new_label boolean true
#d-i     partman/choose_partition select Finish partitioning and write changes to disk
#d-i     partman/confirm boolean true
#d-i     partman-md/confirm_nooverwrite  boolean true
#d-i     partman/confirm_nooverwrite boolean true 
    
por Swav 01.11.2013 / 10:19

2 respostas

1

Depois de um pouco de googling que encontrei abaixo do snippet de código do partman-auto-lvm, parece que se a receita do lvm detectar a partição / boot no LVM, ela resgatará embora seja perfeitamente possível ter o / boot no LVM. De acordo com minha pesquisa, antes do GRUB 2 você não podia inicializar a partir do LVM, então você precisava de uma partição de inicialização primária separada.

# Make sure a boot partition isn't marked as lvmok
if echo "$scheme" | grep lvmok | grep -q "[[:space:]]/boot[[:space:]]"; then
     bail_out unusable_recipe
fi

Uma solução alternativa seria especificar nenhum ponto de montagem e fazê-lo manualmente a partir das telas de configuração, o que acaba com o propósito da instalação autônoma em algum grau.

    
por 04.11.2013 / 11:07
1

Depois de algumas tentativas e erros, cheguei a uma receita e configurações abaixo, usei-a para pré-configurar nossos servidores com sucesso. No momento, ele substitui os discos sem confirmar as opções de ajuste antes de testá-lo.

## Partitioning using RAID
# The method should be set to "raid".
d-i     partman-auto/method string raid
# Specify the disks to be partitioned. They will all get the same layout,
# so this will only work if the disks are the same size.
d-i     partman-auto/disk string /dev/sda /dev/sdb

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-auto-lvm/new_vg_name string main_vg

# Next you need to specify the physical partitions that will be used. 
d-i partman-auto/expert_recipe string           \
    multiraid ::                    \
        256 512 256 raid            \
            $lvmignore{ }           \
            $primary{ }         \
            method{ raid }          \
            raidid{ 1 }         \
        .                   \
        4000 5000 -1 raid           \
            $lvmignore{ }           \
            method{ raid }          \
            raidid{ 2 }         \
        .                   \
        2000 5000 -1 ext4           \
            $defaultignore{ }       \
            $lvmok{ }           \
            method{ format }        \
            format{ }           \
            use_filesystem{ }       \
            filesystem{ ext4 }      \
            mountpoint{ / }         \
            lv_name{ root_lv }      \
        .                   \
        512 512 300% linux-swap         \
            $defaultignore{ }       \
            $lvmok{ }           \
            method{ swap }          \
            format{ }           \
            lv_name{ swap_lv }      \
        .


# Last you need to specify how the previously defined partitions will be
# used in the RAID setup. Remember to use the correct partition numbers
# for logical partitions. RAID levels 0, 1, 5, 6 and 10 are supported;
# devices are separated using "#".
# Parameters are:
# <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \
#          <devices> <sparedevices>

d-i partman-auto-raid/recipe string         \
    1 2 0 ext3 /boot                \
        raidid=1                \
    .                       \
    1 2 0 lvm -                 \
        raidid=2                \
    .



d-i     mdadm/boot_degraded boolean true
d-i     partman-md/confirm boolean true
d-i     partman-partitioning/confirm_write_new_label boolean true
d-i     partman/choose_partition select Finish partitioning and write changes to disk
d-i     partman/confirm boolean true
d-i     partman-md/confirm_nooverwrite  boolean true
d-i     partman/confirm_nooverwrite boolean true 
    
por 19.02.2015 / 00:53