Como o LVM encontra unidades após a instalação

6

Eu quero mover todos os meus 14,5 TB de unidades de mídia (não o sistema operacional) para um sistema de arquivos LVM combinado devido a problemas constantes que organizam as coisas para caber em vários sistemas de arquivos menores.

Minha pergunta é se, após a instalação, qualquer uma das 6 unidades se mover para um local diferente ( /dev/sd* ), isso será um problema? Eu sempre os montei baseados no UUID, mas eu não conheço o LVM o suficiente para saber como ele funciona com vários drives. Eu sei que ainda posso montar o sistema de arquivos com base no UUID, mas quero ter certeza de que o LVM não será confundido encontrando as partes individuais do sistema.

Eu tenho que perguntar isso já que, por algum motivo, se eu reiniciar com drives USB inseridos, eles recebem letras sd* mais baixas do que algumas das unidades de mídia e faz com que essas unidades de mídia sejam rearranjadas apenas para essa inicialização.

PS. Eu mantenho backups fora do site da minha mídia para que eu não estou preocupado se uma unidade falhar quebrando coisas. Apenas mencionado desde que minhas pesquisas do Google de LVM sempre têm alguém tentando falar com a pessoa porque um problema perde tudo.

    
por qawsedrf 14.01.2014 / 05:26

3 respostas

2

Cada objeto LVM (volume físico, grupo de volumes, volume lógico) possui um UUID. O LVM não se importa onde os volumes físicos estão localizados e os montará, desde que eles possam encontrá-los.

Por padrão, o LVM (especificamente vgscan , chamado de um script de inicialização) verifica todos os dispositivos de blocos com aparência provável no momento da inicialização. Você pode definir filtros em /etc/lvm.conf . Contanto que você não defina filtros restritivos, não importa como você conecta suas unidades. Você pode até mover partições enquanto o sistema não está rodando e o LVM ainda saberá como montá-las.

Você quase nunca precisa interagir com os UUIDs do LVM. Normalmente, você se referiria a um grupo de volumes por nome e a um volume lógico por seu nome dentro de seu grupo de volumes contendo.

Se você usa o LVM para todos os seus volumes, a única coisa que pode ser afetada pela distribuição aleatória de discos é o seu gerenciador de inicialização.

    
por 15.01.2014 / 00:47
4

Um pouco sobre o RAID

NOTA # 1: Tenha cuidado ao configurar o LVM. Nas versões mais antigas, o RAID não era suportado e, portanto, era necessário configurar o RAID (mdadm) junto com o LVM. Configurar seus discos usando apenas o LVM para agrupá-los coloca seus dados em risco! É muito mais sensato criar um RAID usando os discos e, em seguida, colocar o LVM no topo da matriz RAID.

NOTA # 2: Em versões mais recentes do LVM, agora há uma funcionalidade RAID real incluída no LVM.

trecho da página da Wikipédia do LVM

features:

  • Create RAID logical volumes (since recent LVM implementations, such as Red Hat Enterprise Linux v6 1): RAID1, RAID5, RAID6, etc.
  • Stripe whole or parts of logical volumes across multiple PVs, in a fashion similar to RAID 0.
  • Mirror whole or parts of logical volumes, in a fashion similar to RAID 1.

Exemplo

Da página lvcreate man.

  • Cria um volume lógico de 5GiB RAID10 "vg00 / my_lv", com 2 faixas em 2 espelhos de 2 vias. Observe que os argumentos -i e -m se comportam de maneira diferente. O -i especifica o número de faixas. O -m especifica o número de cópias adicionais:

    $ sudo lvcreate --type raid10 -L 5G -i 2 -m 1 -n my_lv vg00
    
  • O comando a seguir cria uma matriz RAID6 (3 faixas + 2 unidades de paridade implícitas) chamada my_lv no grupo de volume my_vg que tem tamanho 1G.

    $ sudo lvcreate --type raid6 -i 3 -L 1G -n my_lv my_vg
    

Sua pergunta sobre os UUIDs

Se você der uma olhada no arquivo lvm.conf do seu sistema, geralmente armazenado aqui, /etc/lvm/lvm.conf , você perceberá que existem regras que especificam quais dispositivos de bloco serão verificados.

trecho do meu sistema Fedora 19

# By default we accept every block device:
filter = [ "a/.*/" ]

# Exclude the cdrom drive
# filter = [ "r|/dev/cdrom|" ]

# When testing I like to work with just loopback devices:
# filter = [ "a/loop/", "r/.*/" ]

# Or maybe all loops and ide drives except hdc:
# filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]

# Use anchors if you want to be really specific
# filter = [ "a|^/dev/hda8$|", "r/.*/" ]

As regras que começam com a| adicionam dispositivos, as regras que começam com r| removem os dispositivos da consideração.

NOTA: Você também pode descarregar a configuração usando o comando sudo lvm dumpconfig . Isso mostrará a configuração atual.

$ sudo lvm dumpconfig | head -10
devices {
    dir="/dev"
    scan="/dev"
    obtain_device_list_from_udev=1
    preferred_names=["^/dev/mpath/", "^/dev/mapper/mpath", "^/dev/[hs]d"]
    filter="a/.*/"
    cache_dir="/etc/lvm/cache"
    cache_file_prefix=""
    write_cache_state=1
    sysfs_scan=1
...

Um passeio por

Então, quando o seu sistema inicializa pela primeira vez, há um init / systemd / etc. serviço que inicia e invoca vgscan . Este aplicativo usa o arquivo lvm.conf para determinar quais dispositivos de bloco estão em jogo e quais não estão.

Você pode executar vgscan com opções adicionais para ver o que está fazendo. É seguro executar este comando depois.

Exemplo

Para obter mais detalhes, adicione mais opções -v para obter mais ou menos.

$ sudo vgscan -vvv |& less

etapa 1 - encontre dispositivos

Enquanto isso é executado, você pode ver como ele passa por todos os dispositivos de bloco da seguinte forma:

Wiping cache of LVM-capable devices
    /dev/sda: Added to device cache
    /dev/disk/by-id/ata-ST95005620AS_5YX1K0Q5: Aliased to /dev/sda in device cache
    /dev/disk/by-id/wwn-0x5000c50044b84d12: Aliased to /dev/sda in device cache
    /dev/sda1: Added to device cache
    /dev/disk/by-id/ata-ST95005620AS_5YX1K0Q5-part1: Aliased to /dev/sda1 in device cache
    /dev/disk/by-id/wwn-0x5000c50044b84d12-part1: Aliased to /dev/sda1 in device cache
    /dev/disk/by-uuid/190ba40f-0c79-462c-b592-0b3d6450f40a: Aliased to /dev/sda1 in device cache
    /dev/sda2: Added to device cache

Eventualmente, ele chegará a vários dispositivos que fazem parte de um LVM.

TH7Tn397qrQAETbHjeSaO0AwZk7zbm7r7NnkhRk9ndQ65S0K: Aliased to /dev/disk/by-id/dm-name-fedora_greeneggs-swap in device cache
        /dev/disk/by-uuid/5c863357-78a9-4e8d-a66a-c3bc25695ce8: Aliased to /dev/disk/by-id/dm-name-fedora_greeneggs-swap in device cache
        /dev/fedora_greeneggs/swap: Aliased to /dev/disk/by-id/dm-name-fedora_greeneggs-swap in device cache (preferred name)
        /dev/mapper/fedora_greeneggs-swap: Aliased to /dev/fedora_greeneggs/swap in device cache
        /dev/dm-1: Added to device cache
        /dev/disk/by-id/dm-name-fedora_greeneggs-root: Aliased to /dev/dm-1 in device cache (preferred name)
        /dev/disk/by-id/dm-uuid-LVM-UHlsLRdlvpobBVb5TH7Tn397qrQAETbHH5YiQx0WJaOqsUAs7hyr5FK8r0i0fR8D: Aliased to /dev/disk/by-id/dm-name-fedora_greeneggs-root in device cache

passo # 2 - encontre VG's

Em seguida, ele descobrirá quais VG (Volume Groups) estão presentes:

  Setting name to fedora_greeneggs
  Setting metadata/format to lvm2
  Setting id to 6Cf2tN-ayiy-PIO7-44We-20vs-oTEt-QWS3JR

etapa 3 - identificar os VE's

Uma vez identificado o VG, ele procurará identificar o LV (Volumes Lógicos).

        Allocated VG fedora_greeneggs at 0x206a1d0.
        /dev/sda2 0:      0   1956: swap(0:0)
        /dev/sda2 1:   1956 104353: home(0:0)
        /dev/sda2 2: 106309  12800: root(0:0)
  Found volume group "fedora_greeneggs" using metadata type lvm2

Neste ponto, o LVM (e seu sistema) agora identificaram quais dispositivos de bloco são membros de quais VGs.

UUIDs

Se você ainda não está convencido de que eles são usados em toda a pilha do LVM para identificar volumes físicos, grupos de volumes e volumes lógicos, você pode verificar a saída vgscan procurando por cadeias de caracteres que sejam UUID.

Por exemplo, um dos LVs no meu LVM VG tem esse bit em seu UUID, 5ece678c . A procura desta string em blkid output, bem como de vgscan , mostra isso:

$ blkid | grep 5ece678c
/dev/mapper/fedora_greeneggs-home: UUID="5ece678c-0382-4015-94e8-88c06ecdd872" TYPE="ext4" 

$ sudo vgscan -vvv |& grep 5ece678c
        /dev/disk/by-uuid/5ece678c-0382-4015-94e8-88c06ecdd872: Aliased to /dev/disk/by-id/dm-name-fedora_greeneggs-home in device cache

O disco físico que faz parte desse VG tem esse bit em seu UUID, 6Cf2tN :

$ blkid | grep 6Cf2tN
/dev/sda2: UUID="6Cf2tN-ayiy-PIO7-44We-20vs-oTEt-QWS3JR" TYPE="LVM2_member" 

$ sudo vgscan -vvv |& grep 6Cf2tN
      Setting id to 6Cf2tN-ayiy-PIO7-44We-20vs-oTEt-QWS3JR

O UUID do VG tem esse bit, UHlsLR . Isso não será exibido na saída de blkid , mas você pode usar vgs para localizar os UUIDs de todos os VGs.

$ sudo vgs -v |& grep UHlsLR
  fedora_greeneggs wz--n- 4.00m   1   3   0 465.27g    0  UHlsLR-dlvp-obBV-b5TH-7Tn3-97qr-QAETbH

$ sudo vgscan -vvv |& grep UHlsLR
        /dev/disk/by-id/dm-uuid-LVM-UHlsLRdlvpobBVb5TH7Tn397qrQAETbHjeSaO0AwZk7zbm7r7NnkhRk9ndQ65S0K: Aliased to /dev/disk/by-id/dm-name-fedora_greeneggs-swap in device cache
        /dev/disk/by-id/dm-uuid-LVM-UHlsLRdlvpobBVb5TH7Tn397qrQAETbHH5YiQx0WJaOqsUAs7hyr5FK8r0i0fR8D: Aliased to /dev/disk/by-id/dm-name-fedora_greeneggs-root in device cache
        /dev/disk/by-id/dm-uuid-LVM-UHlsLRdlvpobBVb5TH7Tn397qrQAETbHF4nEeJnAPJdZG6gNAs8DRGW7FegWi5JI: Aliased to /dev/disk/by-id/dm-name-fedora_greeneggs-home in device cache
        lvmcache: /dev/sda2: setting fedora_greeneggs VGID to UHlsLRdlvpobBVb5TH7Tn397qrQAETbH

Este último conjunto de comandos é interessante porque mostra o VGID UUID (VGID) junto com os LVs que estão dentro dele. Observe como o UUID para o VG é incorporado aos IDs do dispositivo /dev/disk/by-id/... ?

Indo mais longe

Se você é do tipo curioso, aconselho-o a dar uma olhada na saída de vgscan -vvv para pelo menos se familiarizar com o conteúdo. Se mais tarde você quiser explorar as coisas mais do que você pode usar as ferramentas de linha de comando listadas na página da página man lvm man para interagir com os vários níveis do LVM.

  • pvs - volumes físicos
  • vgs - grupos de volumes
  • lvs - volumes lógicos

Existe toda uma série de outras ferramentas, estas são algumas das mais comuns.

Referências

por 15.01.2014 / 03:33
1

Eu não tenho tempo para escrever uma resposta completa agora, mas essencialmente, você não tem quase nada com que se preocupar se montar com base no UUID. As coisas geralmente devem funcionar (isso é realmente porque os arquivos em /dev/mapper/ são ligados simbolicamente em /dev/disk/by-uuid/ , assim como os arquivos /dev/sdx* normais).

No entanto, você deve garantir que seus dispositivos LVM estejam configurados durante o initrd. Caso contrário, sua inicialização falhará, porque não será possível encontrar a raiz.

    
por 14.01.2014 / 05:30

Tags