Red Hat Training
A Red Hat training course is available for RHEL 8
Configuração e gerenciamento de volumes lógicos
Um guia para a configuração e gerenciamento dos volumes lógicos da LVM
Resumo
Tornando o código aberto mais inclusivo
A Red Hat tem o compromisso de substituir a linguagem problemática em nosso código, documentação e propriedades da web. Estamos começando com estes quatro termos: master, slave, blacklist e whitelist. Por causa da enormidade deste esforço, estas mudanças serão implementadas gradualmente ao longo de vários lançamentos futuros. Para mais detalhes, veja a mensagem de nosso CTO Chris Wright.
Fornecendo feedback sobre a documentação da Red Hat
Agradecemos sua contribuição em nossa documentação. Por favor, diga-nos como podemos melhorá-la. Para fazer isso:
Para comentários simples sobre passagens específicas:
- Certifique-se de que você está visualizando a documentação no formato Multi-page HTML. Além disso, certifique-se de ver o botão Feedback no canto superior direito do documento.
- Use o cursor do mouse para destacar a parte do texto que você deseja comentar.
- Clique no pop-up Add Feedback que aparece abaixo do texto destacado.
- Siga as instruções apresentadas.
Para enviar comentários mais complexos, crie um bilhete Bugzilla:
- Ir para o site da Bugzilla.
- Como Componente, use Documentation.
- Preencha o campo Description com sua sugestão de melhoria. Inclua um link para a(s) parte(s) relevante(s) da documentação.
- Clique em Submit Bug.
Capítulo 1. Volumes lógicos
O gerenciamento de volume cria uma camada de abstração sobre o armazenamento físico, permitindo criar volumes lógicos de armazenamento. Isto proporciona uma flexibilidade muito maior em diversas formas do que a utilização direta do armazenamento físico. Além disso, a configuração do armazenamento de hardware é escondida do software para que ele possa ser redimensionado e movido sem parar aplicações ou desmontar sistemas de arquivos. Isto pode reduzir os custos operacionais.
Os volumes lógicos oferecem as seguintes vantagens em relação ao uso direto do armazenamento físico:
Capacidade flexível
Ao utilizar volumes lógicos, os sistemas de arquivo podem se estender por vários discos, já que é possível agregar discos e partições em um único volume lógico.
Piscinas de armazenamento redimensionáveis
Você pode estender os volumes lógicos ou reduzir os volumes lógicos em tamanho com comandos de software simples, sem reformatar e reparticionar os dispositivos de disco subjacentes.
Relocalização de dados on-line
Para implantar subsistemas de armazenamento mais novos, mais rápidos ou mais resilientes, você pode mover os dados enquanto seu sistema estiver ativo. Os dados podem ser rearranjados em discos enquanto os discos estiverem em uso. Por exemplo, você pode esvaziar um disco permutável a quente antes de removê-lo.
Nome conveniente do dispositivo
Os volumes de armazenamento lógico podem ser gerenciados em grupos personalizados e definidos pelo usuário.
Tiras de disco
Você pode criar um volume lógico que risca os dados em dois ou mais discos. Isto pode aumentar drasticamente a produção.
Espelhamento de volumes
Os volumes lógicos proporcionam uma forma conveniente de configurar um espelho para seus dados.
Instantâneos de volume
Usando volumes lógicos, você pode tirar instantâneos do dispositivo para backups consistentes ou para testar o efeito das mudanças sem afetar os dados reais.
Volumes finos
Os volumes lógicos podem ser provisionados de forma fina. Isto permite criar volumes lógicos maiores do que as extensões disponíveis.
Volumes de cache
Um volume lógico de cache usa um pequeno volume lógico que consiste em dispositivos de blocos rápidos (como unidades SSD) para melhorar o desempenho de um volume lógico maior e mais lento, armazenando os blocos freqüentemente usados no volume lógico menor e mais rápido.
1.1. Visão geral da arquitetura LVM
A unidade de armazenamento físico subjacente de um volume lógico LVM é um dispositivo de bloco, como uma partição ou disco inteiro. Este dispositivo é inicializado como um LVM physical volume (PV).
Para criar um volume lógico LVM, os volumes físicos são combinados em um volume group (VG). Isto cria um pool de espaço em disco a partir do qual os volumes lógicos LVM (LVs) podem ser alocados. Este processo é análogo à maneira pela qual os discos são divididos em partições. Um volume lógico é usado por sistemas de arquivos e aplicações (como bancos de dados).
Figura 1.1, “Componentes lógicos de volume LVM” mostra os componentes de um simples volume lógico LVM:
Figura 1.1. Componentes lógicos de volume LVM

1.2. Volumes físicos
A unidade de armazenamento físico subjacente de um volume lógico LVM é um dispositivo de bloco, como uma partição ou disco inteiro. Para usar o dispositivo para um volume lógico LVM, o dispositivo deve ser inicializado como um volume físico (PV). A inicialização de um dispositivo de bloco como volume físico coloca uma etiqueta perto do início do dispositivo.
Por padrão, a etiqueta da LVM é colocada no segundo setor de 512 bytes. Você pode sobrescrever este padrão colocando a etiqueta em qualquer um dos 4 primeiros setores ao criar o volume físico. Isto permite que os volumes LVM coexistam com outros usuários destes setores, se necessário.
Uma etiqueta LVM fornece a identificação correta e o pedido de um dispositivo físico, uma vez que os dispositivos podem surgir em qualquer ordem quando o sistema é inicializado. Uma etiqueta LVM permanece persistente em todas as reinicializações e em todo um cluster.
A etiqueta LVM identifica o dispositivo como um volume físico LVM. Ela contém um identificador aleatório único (o UUID) para o volume físico. Ele também armazena o tamanho do dispositivo de bloco em bytes, e registra onde os metadados do LVM serão armazenados no dispositivo.
Os metadados do LVM contêm os detalhes de configuração dos grupos de volume do LVM em seu sistema. Por padrão, uma cópia idêntica dos metadados é mantida em cada área de metadados em cada volume físico dentro do grupo de volume. Os metadados do LVM são pequenos e armazenados como ASCII.
Atualmente o LVM permite armazenar 0, 1 ou 2 cópias idênticas de seus metadados em cada volume físico. O padrão é 1 cópia. Uma vez configurado o número de cópias de metadados sobre o volume físico, não é possível alterar esse número posteriormente. A primeira cópia é armazenada no início do dispositivo, logo após a etiqueta. Se houver uma segunda cópia, ela é colocada no final do dispositivo. Se você acidentalmente sobrescrever a área no início do disco, escrevendo em um disco diferente do que você pretende, uma segunda cópia dos metadados no final do dispositivo lhe permitirá recuperar os metadados.
1.2.1. LVM layout de volume físico
Figura 1.2, “Layout do volume físico” mostra o layout de um volume físico LVM. A etiqueta LVM está no segundo setor, seguida da área de metadados, seguida do espaço utilizável no dispositivo.
No núcleo do Linux (e em todo este documento), os setores são considerados de 512 bytes de tamanho.
Figura 1.2. Layout do volume físico

1.2.2. Partições múltiplas em um disco
O LVM permite a criação de volumes físicos a partir de partições de disco. A Red Hat recomenda que você crie uma única partição que cubra o disco inteiro para rotular como um volume físico LVM pelas seguintes razões:
Conveniência administrativa
É mais fácil acompanhar o hardware em um sistema se cada disco real aparecer apenas uma vez. Isto se torna particularmente verdadeiro se um disco falhar. Além disso, vários volumes físicos em um único disco podem causar um aviso do kernel sobre tipos de partição desconhecidos na inicialização.
Desempenho de striping
A LVM não pode dizer que dois volumes físicos estão no mesmo disco físico. Se você criar um volume lógico listrado quando dois volumes físicos estão no mesmo disco físico, as faixas podem estar em partições diferentes no mesmo disco. Isto resultaria em uma diminuição do desempenho em vez de um aumento.
Embora não seja recomendado, pode haver circunstâncias específicas quando for necessário dividir um disco em volumes físicos LVM separados. Por exemplo, em um sistema com poucos discos pode ser necessário mover dados em torno de partições quando você estiver migrando um sistema existente para volumes LVM. Além disso, se você tiver um disco muito grande e quiser ter mais de um grupo de volumes para fins administrativos, então é necessário particionar o disco. Se você tiver um disco com mais de uma partição e ambas as partições estiverem no mesmo grupo de volumes, tenha o cuidado de especificar quais partições devem ser incluídas em um volume lógico ao criar volumes listrados.
1.3. Grupos de volume
Os volumes físicos são combinados em grupos de volume (VGs). Isto cria um pool de espaço em disco a partir do qual os volumes lógicos podem ser alocados.
Dentro de um grupo de volume, o espaço em disco disponível para alocação é dividido em unidades de tamanho fixo chamadas extensões. Uma extensão é a menor unidade de espaço que pode ser alocada. Dentro de um volume físico, as extensões são chamadas de extensões físicas.
Um volume lógico é alocado em extensões lógicas do mesmo tamanho que as extensões físicas. O tamanho da extensão é, portanto, o mesmo para todos os volumes lógicos do grupo de volume. O grupo de volume mapeia os extensões lógicas em extensões físicas.
1.4. LVM volumes lógicos
Na LVM, um grupo de volumes é dividido em volumes lógicos. Um administrador pode aumentar ou diminuir os volumes lógicos sem destruir os dados, ao contrário das partições de disco padrão. Se os volumes físicos em um grupo de volumes estiverem em unidades separadas ou matrizes RAID, então os administradores também podem espalhar um volume lógico pelos dispositivos de armazenamento.
Você pode perder dados se encolher um volume lógico para uma capacidade menor do que os dados sobre o volume exigem. Para garantir a máxima flexibilidade, crie volumes lógicos para atender às suas necessidades atuais e deixe o excesso de capacidade de armazenamento sem alocação. Você pode estender com segurança os volumes lógicos para usar o espaço não alocado, dependendo de suas necessidades.
Nos servidores AMD, Intel, sistemas ARM e IBM Power Systems, o carregador de inicialização não consegue ler volumes LVM. Você deve fazer uma partição de disco padrão, não LVM, para sua partição /boot. No IBM Z, o carregador de inicialização zipl suporta /boot em volumes lógicos LVM com mapeamento linear. Por padrão, o processo de instalação sempre cria as partições / e swap dentro dos volumes LVM, com uma partição /boot separada em um volume físico.
As seções seguintes descrevem os diferentes tipos de volumes lógicos.
1.4.1. Volumes lineares
Um volume linear agrega espaço de um ou mais volumes físicos em um volume lógico. Por exemplo, se você tiver dois discos de 60GB, você pode criar um volume lógico de 120GB. O armazenamento físico é concatenado.
A criação de um volume linear atribui uma gama de extensões físicas a uma área de um volume lógico em ordem. Por exemplo, como mostrado em Figura 1.3, “Mapeamento de Extensão”, extensões lógicas de 1 a 99 poderiam mapear um volume físico e extensões lógicas de 100 a 198 poderiam mapear um segundo volume físico. Do ponto de vista da aplicação, há um dispositivo que tem 198 extensões em tamanho.
Figura 1.3. Mapeamento de Extensão

Os volumes físicos que compõem um volume lógico não precisam ter o mesmo tamanho. Figura 1.4, “Volume linear com volumes físicos desiguais” mostra o grupo de volume VG1
com um tamanho de extensão física de 4MB. Este grupo de volume inclui 2 volumes físicos denominados PV1
e PV2
. Os volumes físicos são divididos em unidades de 4MB, já que esse é o tamanho da extensão. Neste exemplo, PV1
tem 200 extensões em tamanho (800MB) e PV2
tem 100 extensões em tamanho (400MB). Pode-se criar um volume linear de qualquer tamanho entre 1 e 300 extensões (4MB a 1200MB). Neste exemplo, o volume linear denominado LV1
é de 300 extensões.
Figura 1.4. Volume linear com volumes físicos desiguais

Você pode configurar mais de um volume lógico linear de qualquer tamanho que desejar do pool de extensões físicas. Figura 1.5, “Múltiplos volumes lógicos” mostra o mesmo grupo de volume que em Figura 1.4, “Volume linear com volumes físicos desiguais”, mas neste caso dois volumes lógicos foram esculpidos do grupo de volume: LV1
, que é 250 extensões em tamanho (1000MB) e LV2
que é 50 extensões em tamanho (200MB).
Figura 1.5. Múltiplos volumes lógicos

1.4.2. Volumes lógicos listrados
Quando você escreve os dados em um volume lógico LVM, o sistema de arquivo estabelece os dados em todos os volumes físicos subjacentes. Você pode controlar a forma como os dados são escritos nos volumes físicos criando um volume lógico listrado. Para leituras e gravações sequenciais grandes, isto pode melhorar a eficiência da E/S dos dados.
A striping melhora o desempenho escrevendo dados para um número pré-determinado de volumes físicos de forma arredondada. Com a striping, as E/S podem ser feitas em paralelo. Em algumas situações, isto pode resultar em ganho de desempenho quase linear para cada volume físico adicional na listra.
A ilustração a seguir mostra os dados sendo listrados em três volumes físicos. Nesta figura:
- a primeira faixa de dados é escrita no primeiro volume físico
- a segunda faixa de dados é escrita para o segundo volume físico
- a terceira faixa de dados é escrita para o terceiro volume físico
- a quarta faixa de dados é escrita no primeiro volume físico
Em um volume lógico listrado, o tamanho da listra não pode exceder o tamanho de uma extensão.
Figura 1.6. Dados de striping em três PVs

Os volumes lógicos listrados podem ser estendidos concatenando outro conjunto de dispositivos no final do primeiro conjunto. Para estender um volume lógico listrado, entretanto, deve haver espaço livre suficiente no conjunto de volumes físicos subjacentes que compõem o grupo de volume para suportar a listra. Por exemplo, se você tiver uma faixa de duas vias que utiliza um grupo de volume inteiro, adicionar um único volume físico ao grupo de volume não lhe permitirá estender a faixa. Ao invés disso, você deve adicionar pelo menos dois volumes físicos ao grupo de volume.
1.4.3. Volumes lógicos RAID
O LVM suporta níveis RAID 0, 1, 4, 5, 6, e 10.
Um volume LVM RAID tem as seguintes características:
- Os volumes lógicos RAID criados e gerenciados pela LVM alavancam os drivers de kernel de múltiplos dispositivos (MD).
- Você pode dividir temporariamente as imagens RAID1 da matriz e fundi-las novamente na matriz mais tarde.
- Os volumes LVM RAID suportam snapshots.
Aglomerados
Os volumes lógicos RAID não são sensíveis a aglomerações.
Embora você possa criar e ativar volumes lógicos RAID exclusivamente em uma máquina, você não pode ativá-los simultaneamente em mais de uma máquina.
Subvolumes
Quando você cria um volume lógico RAID, o LVM cria um subvolume de metadados que é uma extensão em tamanho para cada dado ou subvolume de paridade na matriz.
Por exemplo, a criação de uma matriz RAID1 de duas vias resulta em dois subvolumes de metadados (lv_rmeta_0
e lv_rmeta_1
) e dois subvolumes de dados (lv_rimage_0
e lv_rimage_1
). Da mesma forma, criar uma faixa de 3 vias (mais 1 dispositivo de paridade implícita) RAID4 resulta em 4 subvolumes de metadados (lv_rmeta_0
, lv_rmeta_1
, lv_rmeta_2
, e lv_rmeta_3
) e 4 subvolumes de dados (lv_rimage_0
, lv_rimage_1
, lv_rimage_2
, e lv_rimage_3
).
Integridade
Você pode perder dados quando um dispositivo RAID falha ou quando ocorre corrupção suave. A corrupção suave no armazenamento de dados implica que os dados recuperados de um dispositivo de armazenamento são diferentes dos dados gravados naquele dispositivo. A adição de integridade a um RAID LV ajuda a mitigar ou prevenir a corrupção branda. Para saber mais sobre corrupção branda e como adicionar integridade a um RAID LV, consulte Seção 10.6, “Usando integridade DM com RAID LV”.
1.4.4. Volumes lógicos de fornecimento fino (volumes finos)
Os volumes lógicos podem ser provisionados de forma fina. Isto permite criar volumes lógicos maiores do que as extensões disponíveis. Usando thin provisioning, você pode gerenciar um pool de armazenamento de espaço livre, conhecido como thin pool, que pode ser alocado a um número arbitrário de dispositivos quando necessário pelas aplicações. Você pode então criar dispositivos que podem ser vinculados ao thin pool para alocação posterior quando uma aplicação realmente escreve para o volume lógico. O thin pool pode ser expandido dinamicamente quando necessário para alocação econômica de espaço de armazenamento.
Os volumes finos não são suportados através dos nós em um cluster. O pool fino e todos os seus volumes finos devem ser ativados exclusivamente em um único nó de cluster.
Ao utilizar thin provisioning, um administrador de armazenamento pode comprometer excessivamente o armazenamento físico, muitas vezes evitando a necessidade de comprar armazenamento adicional. Por exemplo, se cada dez usuários solicitarem um sistema de arquivo de 100GB para sua aplicação, o administrador de armazenamento pode criar o que parece ser um sistema de arquivo de 100GB para cada usuário, mas que é apoiado por menos armazenamento real que é usado somente quando necessário. Ao utilizar thin provisioning, é importante que o administrador de armazenamento monitore o pool de armazenamento e acrescente mais capacidade se este começar a ficar cheio.
Para garantir que todo o espaço disponível possa ser utilizado, a LVM suporta o descarte de dados. Isto permite a reutilização do espaço que antes era utilizado por um arquivo descartado ou outro intervalo de blocos.
Os volumes finos fornecem suporte para uma nova implementação de volumes lógicos de cópia-em-escrita (COW), que permitem que muitos dispositivos virtuais compartilhem os mesmos dados no pool fino.
1.4.5. Volumes instantâneos
O recurso LVM snapshot oferece a capacidade de criar imagens virtuais de um dispositivo em um determinado instante sem causar uma interrupção do serviço. Quando uma mudança é feita no dispositivo original (a origem) após uma foto, o recurso de foto faz uma cópia da área de dados alterada como estava antes da mudança para que possa reconstruir o estado do dispositivo.
A LVM apóia snapshots com pouco tempo de fornecimento.
Como um instantâneo copia apenas as áreas de dados que mudam depois que o instantâneo é criado, o recurso de instantâneo requer uma quantidade mínima de armazenamento. Por exemplo, com uma origem raramente atualizada, 3-5 % da capacidade da origem é suficiente para manter o instantâneo.
As cópias instantâneas de um sistema de arquivo são cópias virtuais, não um backup de mídia real para um sistema de arquivo. Os instantâneos não fornecem um substituto para um procedimento de backup.
O tamanho do instantâneo rege a quantidade de espaço reservado para armazenar as mudanças no volume de origem. Por exemplo, se você fizer um instantâneo e depois sobrescrever completamente a origem, o instantâneo teria que ser pelo menos tão grande quanto o volume de origem para segurar as mudanças. Você precisa dimensionar um instantâneo de acordo com o nível de mudança esperado. Assim, por exemplo, um instantâneo de curta duração de um volume mais lido, como /usr
, precisaria de menos espaço do que um instantâneo de longa duração de um volume que vê um número maior de escritas, como /home
.
Se um instantâneo estiver cheio, o instantâneo se torna inválido, uma vez que não pode mais rastrear as mudanças no volume de origem. Você deve monitorar regularmente o tamanho do instantâneo. Os instantâneos são totalmente redimensionáveis, porém, se você tiver a capacidade de armazenamento, poderá aumentar o tamanho do volume do instantâneo para evitar que ele caia. Por outro lado, se você achar que o volume da foto é maior do que você precisa, você pode reduzir o tamanho do volume para liberar espaço que é necessário para outros volumes lógicos.
Quando você cria um sistema de arquivo instantâneo, o acesso completo de leitura e escrita à origem permanece possível. Se um pedaço de um instantâneo for alterado, esse pedaço é marcado e nunca é copiado do volume original.
Há vários usos para o recurso de instantâneo:
- Normalmente, um instantâneo é tirado quando é necessário fazer um backup em um volume lógico sem interromper o sistema ao vivo que está continuamente atualizando os dados.
-
Você pode executar o comando
fsck
em um sistema de arquivo instantâneo para verificar a integridade do sistema de arquivo e determinar se o sistema de arquivo original requer reparo do sistema de arquivo. - Como o instantâneo é lido/escrito, você pode testar aplicações contra os dados de produção tirando um instantâneo e executando testes contra o instantâneo, deixando os dados reais intocados.
- Você pode criar volumes LVM para uso com a Virtualização da Red Hat. Snapshots LVM podem ser usados para criar snapshots de imagens de convidados virtuais. Estes snapshots podem fornecer uma maneira conveniente para modificar os convidados existentes ou criar novos convidados com o mínimo de armazenamento adicional.
Você pode usar a opção --merge
do comando lvconvert
para fundir um instantâneo em seu volume de origem. Um uso para este recurso é realizar o rollback do sistema se você tiver perdido dados ou arquivos ou se precisar restaurar seu sistema a um estado anterior. Após fundir o volume de snapshot, o volume lógico resultante terá o nome do volume de origem, número menor e UUID e o snapshot fundido é removido.
1.4.6. Volumes de fotos de última geração
O Red Hat Enterprise Linux fornece suporte para volumes de instantâneos pouco fornecidos. Os volumes de snapshot finos permitem que muitos dispositivos virtuais sejam armazenados no mesmo volume de dados. Isto simplifica a administração e permite o compartilhamento de dados entre os volumes de snapshot.
Como para todos os volumes de instantâneos LVM, assim como para todos os volumes finos, os volumes de instantâneos finos não são suportados em todos os nós de um cluster. O volume de instantâneos deve ser ativado exclusivamente em um único nó de cluster.
Os volumes finos proporcionam os seguintes benefícios:
- Um volume fino de instantâneo pode reduzir o uso do disco quando há vários instantâneos com o mesmo volume de origem.
- Se houver vários instantâneos da mesma origem, então uma gravação na origem fará com que uma operação COW preserve os dados. Aumentar o número de instantâneos da origem não deve resultar em uma grande desaceleração.
- Os volumes finos podem ser usados como uma origem lógica de volume para outro instantâneo. Isto permite uma profundidade arbitrária de instantâneos recursivos (instantâneos de instantâneos de instantâneos de instantâneos...).
- Um instantâneo de um volume lógico fino também cria um volume lógico fino. Isto não consome espaço de dados até que uma operação COW seja necessária, ou até que o próprio instantâneo seja escrito.
- Um volume de instantâneo fino não precisa ser ativado com sua origem, portanto, um usuário pode ter apenas a origem ativa enquanto houver muitos volumes de instantâneos inativos da origem.
- Quando você apaga a origem de um volume de imagens de origem, cada imagem desse volume de origem se torna um volume independente de imagens de origem. Isto significa que, ao invés de fundir um instantâneo com seu volume de origem, você pode optar por excluir o volume de origem e então criar um novo instantâneo com uma fina previsão usando esse volume independente como o volume de origem para o novo instantâneo.
Embora haja muitas vantagens no uso de volumes finos, há alguns casos de uso para os quais o recurso de volume de instantâneos LVM antigo pode ser mais apropriado às suas necessidades:
- Não se pode mudar o tamanho de um pedaço de uma piscina fina. Se a piscina fina tiver um pedaço de tamanho grande (por exemplo, 1MB) e você precisar de uma foto de curta duração para a qual um pedaço de tamanho tão grande não seja eficiente, você pode optar por usar o recurso de foto mais antigo.
- Não é possível limitar o tamanho de um volume fino; o instantâneo utilizará todo o espaço da piscina fina, se necessário. Isto pode não ser apropriado para suas necessidades.
Em geral, você deve considerar as exigências específicas de seu site ao decidir qual o formato de instantâneo a ser utilizado.
1.4.7. Volumes de Cache
LVM suporta o uso de dispositivos de blocos rápidos (como unidades SSD) como caches de gravação ou caches de gravação para dispositivos de blocos maiores e mais lentos. Os usuários podem criar volumes lógicos de cache para melhorar o desempenho de seus volumes lógicos existentes ou criar novos volumes lógicos de cache compostos de um dispositivo pequeno e rápido acoplado a um dispositivo grande e lento.
Capítulo 2. Gerenciamento do armazenamento local usando as funções do sistema RHEL
Para gerenciar LVM e sistemas de arquivos locais (FS) usando o Ansible, você pode usar a função storage
, que é uma das funções do Sistema RHEL disponível no RHEL 8.
O uso da função storage
permite automatizar a administração de sistemas de arquivos em discos e volumes lógicos em múltiplas máquinas e em todas as versões da RHEL, começando com a RHEL 7.7.
Para mais informações sobre os papéis do Sistema RHEL e como aplicá-los, consulte Introdução aos papéis do Sistema RHEL.
2.1. Introdução à função de armazenamento
A função storage
pode administrar:
- Sistemas de arquivos em discos que não foram particionados
- Grupos completos de volumes LVM incluindo seus volumes lógicos e sistemas de arquivo
Com o papel storage
você pode realizar as seguintes tarefas:
- Criar um sistema de arquivo
- Remover um sistema de arquivo
- Montar um sistema de arquivo
- Desmontar um sistema de arquivo
- Criar grupos de volume LVM
- Remover grupos de volume LVM
- Criar volumes lógicos
- Remover volumes lógicos
- Criar volumes RAID
- Remover volumes RAID
- Criar pools LVM com RAID
- Remover as piscinas LVM com RAID
2.2. Parâmetros que identificam um dispositivo de armazenamento no papel do sistema de armazenamento
Sua configuração de funções storage
afeta apenas os sistemas de arquivos, volumes e pools que você lista nas seguintes variáveis.
storage_volumes
Lista de sistemas de arquivos em todos os discos não particionados a serem gerenciados.
Atualmente, as partições não têm suporte.
storage_pools
Lista de piscinas a serem administradas.
Atualmente, o único tipo de piscina suportada é a LVM. Com LVM, os pools representam grupos de volume (VGs). Sob cada pool há uma lista de volumes a serem gerenciados pela função. Com o LVM, cada volume corresponde a um volume lógico (LV) com um sistema de arquivo.
2.3. Exemplo Livro de reprodução possível para criar um sistema de arquivo XFS em um dispositivo de bloco
Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage
para criar um sistema de arquivos XFS em um dispositivo de bloco usando os parâmetros padrão.
A função storage
pode criar um sistema de arquivo somente em um disco não particionado, inteiro ou em um volume lógico (LV). Ele não pode criar o sistema de arquivo em uma partição.
Exemplo 2.1. Um playbook que cria XFS em /dev/sdb
--- - hosts: all vars: storage_volumes: - name: barefs type: disk disks: - sdb fs_type: xfs roles: - rhel-system-roles.storage
-
O nome do volume (
barefs
no exemplo) é atualmente arbitrária. A funçãostorage
identifica o volume pelo dispositivo de disco listado sob o atributodisks:
. -
Você pode omitir a linha
fs_type: xfs
porque XFS é o sistema de arquivo padrão no RHEL 8. Para criar o sistema de arquivo em um LV, forneça a configuração LVM sob o atributo
disks:
, incluindo o grupo de volume envolvente. Para detalhes, veja Exemplo Livro de exemplo para gerenciar volumes lógicos.Não forneça o caminho para o dispositivo LV.
Recursos adicionais
-
Para detalhes sobre os parâmetros utilizados na função do sistema
storage
, consulte o arquivo/usr/share/ansible/roles/rhel-system-roles.storage/README.md
.
2.4. Exemplo Livro de reprodução possível para montar persistentemente um sistema de arquivo
Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage
para montar imediata e persistentemente um sistema de arquivos XFS.
Exemplo 2.2. Um playbook que monta um sistema de arquivo em /dev/sdb para /mnt/dados
--- - hosts: all vars: storage_volumes: - name: barefs type: disk disks: - sdb fs_type: xfs mount_point: /mnt/data roles: - rhel-system-roles.storage
-
Este playbook adiciona o sistema de arquivo ao arquivo
/etc/fstab
, e monta o sistema de arquivo imediatamente. -
Se o sistema de arquivo no dispositivo
/dev/sdb
ou o diretório de pontos de montagem não existir, o playbook os cria.
Recursos adicionais
-
Para detalhes sobre os parâmetros utilizados na função do sistema
storage
, consulte o arquivo/usr/share/ansible/roles/rhel-system-roles.storage/README.md
.
2.5. Exemplo Livro de exercícios possível para gerenciar volumes lógicos
Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage
para criar um volume lógico LVM em um grupo de volumes.
Exemplo 2.3. Um playbook que cria um volume lógico mylv no grupo de volume myvg
- hosts: all vars: storage_pools: - name: myvg disks: - sda - sdb - sdc volumes: - name: mylv size: 2G fs_type: ext4 mount_point: /mnt roles: - rhel-system-roles.storage
O grupo de volume
myvg
é composto pelos seguintes discos:-
/dev/sda
-
/dev/sdb
-
/dev/sdc
-
-
Se o grupo de volume
myvg
já existe, o playbook adiciona o volume lógico ao grupo de volume. -
Se o grupo de volume
myvg
não existe, o playbook o cria. -
O playbook cria um sistema de arquivo Ext4 no volume lógico
mylv
e monta persistentemente o sistema de arquivo em/mnt
.
Recursos adicionais
-
Para detalhes sobre os parâmetros utilizados na função do sistema
storage
, consulte o arquivo/usr/share/ansible/roles/rhel-system-roles.storage/README.md
.
2.6. Exemplo Livro de reprodução possível para permitir o descarte em bloco online
Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage
para montar um sistema de arquivo XFS com o descarte de blocos on-line habilitado.
Exemplo 2.4. Um playbook que permite o descarte de blocos online em /mnt/dados/
--- - hosts: all vars: storage_volumes: - name: barefs type: disk disks: - sdb fs_type: xfs mount_point: /mnt/data mount_options: discard roles: - rhel-system-roles.storage
Recursos adicionais
- Este playbook também realiza todas as operações do exemplo de montagem persistente descrito em Exemplo Um playbook possível para montar persistentemente um sistema de arquivo.
-
Para detalhes sobre os parâmetros utilizados na função do sistema
storage
, consulte o arquivo/usr/share/ansible/roles/rhel-system-roles.storage/README.md
.
2.7. Exemplo Livro de reprodução possível para criar e montar um sistema de arquivo Ext4
Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage
para criar e montar um sistema de arquivos Ext4.
Exemplo 2.5. Um playbook que cria Ext4 em /dev/sdb e o monta em /mnt/dados
--- - hosts: all vars: storage_volumes: - name: barefs type: disk disks: - sdb fs_type: ext4 fs_label: label-name mount_point: /mnt/data roles: - rhel-system-roles.storage
-
O playbook cria o sistema de arquivos no disco
/dev/sdb
. -
O playbook monta persistentemente o sistema de arquivo no
/mnt/data
diretório. -
A etiqueta do sistema de arquivo é
label-name
.
Recursos adicionais
-
Para detalhes sobre os parâmetros utilizados na função do sistema
storage
, consulte o arquivo/usr/share/ansible/roles/rhel-system-roles.storage/README.md
.
2.8. Exemplo Livro de reprodução possível para criar e montar um sistema de arquivo ext3
Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage
para criar e montar um sistema de arquivos Ext3.
Exemplo 2.6. Um playbook que cria Ext3 em /dev/sdb e o monta em /mnt/dados
--- - hosts: all vars: storage_volumes: - name: barefs type: disk disks: - sdb fs_type: ext3 fs_label: label-name mount_point: /mnt/data roles: - rhel-system-roles.storage
-
O playbook cria o sistema de arquivos no disco
/dev/sdb
. -
O playbook monta persistentemente o sistema de arquivo no
/mnt/data
diretório. -
A etiqueta do sistema de arquivo é
label-name
.
Recursos adicionais
-
Para detalhes sobre os parâmetros utilizados na função do sistema
storage
, consulte o arquivo/usr/share/ansible/roles/rhel-system-roles.storage/README.md
.
2.9. Configuração de um volume RAID utilizando a função do sistema de armazenamento
Com o Sistema Função storage
, você pode configurar um volume RAID na RHEL usando a Plataforma de Automação Possível Red Hat Ansible Automation. Nesta seção, você aprenderá como configurar um livro de jogo possível com os parâmetros disponíveis para configurar um volume RAID de acordo com suas necessidades.
Pré-requisitos
Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.
NotaVocê não precisa ter a Plataforma de Automação Possível da Red Hat instalada nos sistemas nos quais você deseja implantar a solução
storage
.-
Você tem o pacote
rhel-system-roles
instalado no sistema a partir do qual você deseja executar o playbook. -
Você tem um arquivo de inventário detalhando os sistemas nos quais você deseja implantar um volume RAID usando o sistema
storage
Função do sistema.
Procedimento
Criar um novo
playbook.yml
arquivo com o seguinte conteúdo:- hosts: all vars: storage_safe_mode: false storage_volumes: - name: data type: raid disks: [sdd, sde, sdf, sdg] raid_level: raid0 raid_chunk_size: 32 KiB mount_point: /mnt/data state: present roles: - name: rhel-system-roles.storage
AtençãoOs nomes dos dispositivos podem mudar em certas circunstâncias; por exemplo, quando você adiciona um novo disco a um sistema. Portanto, para evitar a perda de dados, não recomendamos o uso de nomes de disco específicos no livro de reprodução.
Opcional. Verificar a sintaxe do playbook.
# ansible-playbook --syntax-check playbook.yml
Execute o playbook em seu arquivo de inventário:
# ansible-playbook -i inventory.file /path/to/file/playbook.yml
Recursos adicionais
- Para mais informações sobre o RAID, consulte Gerenciando RAID.
-
Para detalhes sobre os parâmetros utilizados na função do sistema de armazenamento, consulte o arquivo
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
.
2.10. Configuração de um pool LVM com RAID utilizando a função de sistema de armazenamento
Com o Sistema Função storage
, você pode configurar um pool LVM com RAID na RHEL usando a Plataforma de Automação Possível da Red Hat. Nesta seção você aprenderá como configurar um playbook Ansible com os parâmetros disponíveis para configurar um pool LVM com RAID.
Pré-requisitos
Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.
NotaVocê não precisa ter a Plataforma de Automação Possível da Red Hat instalada nos sistemas nos quais você deseja implantar a solução
storage
.-
Você tem o pacote
rhel-system-roles
instalado no sistema a partir do qual você deseja executar o playbook. -
Você tem um arquivo de inventário detalhando os sistemas nos quais você deseja configurar um pool LVM com RAID usando o sistema
storage
Função do sistema.
Procedimento
Criar um novo
playbook.yml
arquivo com o seguinte conteúdo:- hosts: all vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm disks: [sdh, sdi] raid_level: raid1 volumes: - name: my_pool size: "1 GiB" mount_point: "/mnt/app/shared" fs_type: xfs state: present roles: - name: rhel-system-roles.storage
NotaPara criar um pool LVM com RAID, você deve especificar o tipo de RAID usando o parâmetro
raid_level
.Opcional. Verificar a sintaxe do playbook.
# ansible-playbook --syntax-check playbook.yml
Execute o playbook em seu arquivo de inventário:
# ansible-playbook -i inventory.file /path/to/file/playbook.yml
Recursos adicionais
- Para mais informações sobre o RAID, consulte Gerenciando RAID.
-
Para detalhes sobre os parâmetros utilizados na função do sistema de armazenamento, consulte o arquivo
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
.
2.11. Criação de um volume codificado LUKS usando a função de armazenamento
Você pode usar o papel storage
para criar e configurar um volume criptografado com LUKS, executando um livro de brincadeiras Ansible playbook.
Pré-requisitos
Você tem o Red Hat Ansible Engine instalado no sistema a partir do qual você deseja executar o playbook.
NotaVocê não precisa ter a Plataforma de Automação Possível da Red Hat instalada nos sistemas nos quais você deseja criar o volume.
-
Você tem o pacote
rhel-system-roles
instalado no controlador Ansible. - Você tem um arquivo de inventário detalhando os sistemas nos quais você deseja implantar um volume codificado LUKS usando a função de sistema de armazenamento.
Procedimento
Criar um novo
playbook.yml
arquivo com o seguinte conteúdo:- hosts: all vars: storage_volumes: - name: barefs type: disk disks: - sdb fs_type: xfs fs_label: label-name mount_point: /mnt/data encryption: true encryption_password: your-password roles: - rhel-system-roles.storage
Opcional. Verificar a sintaxe do playbook:
# ansible-playbook --syntax-check playbook.yml
Execute o playbook em seu arquivo de inventário:
# ansible-playbook -i inventory.file /path/to/file/playbook.yml
Recursos adicionais
- Para mais informações sobre a LUKS, veja 17. Criptografando dispositivos de blocos usando LUKS...
-
Para detalhes sobre os parâmetros utilizados na função do sistema
storage
, consulte o arquivo/usr/share/ansible/roles/rhel-system-roles.storage/README.md
.
Recursos adicionais
Para mais informações, instale o pacote
rhel-system-roles
e veja os seguintes diretórios:-
/usr/share/doc/rhel-system-roles/storage/
-
/usr/share/ansible/roles/rhel-system-roles.storage/
-
Capítulo 3. Implantação de LVM
Os seguintes procedimentos representam a configuração básica para volumes lógicos LVM em um sistema operacional recém-instalado.
3.1. Criação de volume físico LVM
Este procedimento descreve como criar e rotular volumes físicos LVM (PVs).
Pré-requisitos
-
O pacote
lvm2
está instalado.
Procedimento
Para criar múltiplos volumes físicos, use os nomes de dispositivos com espaço delimitado como argumentos para o comando
pvcreate
:# pvcreate /dev/vdb1 /dev/vdb2
Isto coloca uma etiqueta em /dev/vdb1 e /dev/vdb2, marcando-os como volumes físicos pertencentes à LVM.
Para mais informações, consulte a página de manual
pvcreate
.
3.2. Criação de grupo de volume LVM
Este procedimento descreve como criar um grupo de volume LVM (VG).
Pré-requisitos
-
O pacote
lvm2
está instalado. - São criados um ou mais volumes físicos. Veja as instruções de como fazê-lo em Seção 3.1, “Criação de volume físico LVM”.
Procedimento
Para criar um grupo de volume, use o seguinte comando:
# vgcreate myvg /dev/vdb1 /dev/vdb2
Isto cria uma VG com o nome de myvg. Os PVs /dev/vdb1 e /dev/vdb2 são o nível básico de armazenamento para a VG myvg.
Para mais informações, consulte a página de manual
vgcreate
.
É possível estender o VG acima com os PVs mais tarde. Para estender uma VG, use o seguinte comando:
# vgextend myvg /dev/vdb3
3.3. Criação do volume lógico LVM
Este procedimento descreve como criar o volume lógico LVM (LV).
Pré-requisitos
-
O pacote
lvm2
está instalado. - O grupo de volume é criado. Veja as instruções de como fazê-lo em Seção 3.2, “Criação de grupo de volume LVM”.
Procedimento
Para criar um volume lógico, use o seguinte comando:
# lvcreate -n lv01 -L 500M myvg
A opção
-n
permite que o usuário defina o nome LV para lv01. A opção-L
permite que o usuário defina o tamanho do LV em unidades de Mb neste exemplo, mas é possível utilizar qualquer outra unidade. O tipo de BT é linear por padrão, mas o usuário pode especificar o tipo desejado usando a opção--type
.ImportanteO comando falhará se a VG não tiver um número suficiente de extensões físicas livres para o tamanho e tipo solicitados.
Para mais informações, consulte a página de manual
lvcreate
.
Capítulo 4. Configuração de volumes lógicos LVM
Os seguintes procedimentos fornecem exemplos de tarefas básicas de administração da LVM.
4.1. Usando comandos CLI
As seções seguintes descrevem algumas características operacionais gerais dos comandos LVM CLI.
Especificação de unidades em um argumento de linha de comando
Quando os tamanhos são exigidos em um argumento de linha de comando, as unidades podem sempre ser especificadas explicitamente. Se você não especificar uma unidade, então é assumido um padrão, geralmente KB ou MB. Os comandos LVM CLI não aceitam frações.
Ao especificar unidades em um argumento de linha de comando, LVM é insensível a maiúsculas e minúsculas; especificar M ou m é equivalente, por exemplo, e são usadas potências de 2 (múltiplos de 1024). Entretanto, ao especificar o argumento --units
em um comando, a minúscula indica que as unidades estão em múltiplos de 1024, enquanto a maiúscula indica que as unidades estão em múltiplos de 1000.
Especificação de grupos de volumes e volumes lógicos
Observe o seguinte ao especificar grupos de volumes ou volumes lógicos em um comando LVM CLI.
-
Quando os comandos tomam como argumentos nomes de grupos de volume ou de volumes lógicos, o nome completo do caminho é opcional. Um volume lógico chamado
lvol0
em um grupo de volume chamadovg0
pode ser especificado comovg0/lvol0
. - Quando uma lista de grupos de volume for necessária, mas for deixada vazia, uma lista de todos os grupos de volume será substituída.
-
Quando uma lista de volumes lógicos é necessária, mas um grupo de volumes é dado, uma lista de todos os volumes lógicos nesse grupo de volumes será substituída. Por exemplo, o comando
lvdisplay vg0
exibirá todos os volumes lógicos do grupo de volumesvg0
.
Aumentando a verbosidade da produção
Todos os comandos LVM aceitam um argumento -v
, que pode ser inserido várias vezes para aumentar a verbosidade de saída. Os exemplos a seguir mostram a saída padrão do comando lvcreate
.
# lvcreate -L 50MB new_vg
Rounding up size to full physical extent 52.00 MB
Logical volume "lvol0" created
O seguinte comando mostra a saída do comando lvcreate
com o argumento -v
.
# lvcreate -v -L 50MB new_vg
Rounding up size to full physical extent 52.00 MB
Archiving volume group "new_vg" metadata (seqno 1).
Creating logical volume lvol0
Creating volume group backup "/etc/lvm/backup/new_vg" (seqno 2).
Activating logical volume new_vg/lvol0.
activation/volume_list configuration setting not defined: Checking only host tags for new_vg/lvol0.
Creating new_vg-lvol0
Loading table for new_vg-lvol0 (253:0).
Resuming new_vg-lvol0 (253:0).
Wiping known signatures on logical volume "new_vg/lvol0"
Initializing 4.00 KiB of logical volume "new_vg/lvol0" with value 0.
Logical volume "lvol0" created
Os argumentos -vv
, -vvv
e -vvvv
mostram cada vez mais detalhes sobre a execução do comando. O argumento -vvvv
fornece a quantidade máxima de informações neste momento. O exemplo a seguir mostra as primeiras linhas de saída para o comando lvcreate
com o argumento -vvvv
especificado.
# lvcreate -vvvv -L 50MB new_vg
#lvmcmdline.c:913 Processing: lvcreate -vvvv -L 50MB new_vg
#lvmcmdline.c:916 O_DIRECT will be used
#config/config.c:864 Setting global/locking_type to 1
#locking/locking.c:138 File-based locking selected.
#config/config.c:841 Setting global/locking_dir to /var/lock/lvm
#activate/activate.c:358 Getting target version for linear
#ioctl/libdm-iface.c:1569 dm version OF [16384]
#ioctl/libdm-iface.c:1569 dm versions OF [16384]
#activate/activate.c:358 Getting target version for striped
#ioctl/libdm-iface.c:1569 dm versions OF [16384]
#config/config.c:864 Setting activation/mirror_region_size to 512
...
Exibindo ajuda para comandos LVM CLI
Você pode exibir ajuda para qualquer um dos comandos da LVM CLI com o argumento --help
do comando.
# commandname --help
Para exibir a página de homem para um comando, execute o comando man
:
# man commandname
O comando man lvm
fornece informações gerais on-line sobre a LVM.
4.2. Criação de um volume lógico LVM em três discos
Este procedimento de exemplo cria um volume lógico LVM chamado mylv
que consiste nos discos em /dev/sda1
, /dev/sdb1
, e /dev/sdc1
.
Para utilizar discos em um grupo de volume, rotulá-los como volumes físicos LVM com o comando
pvcreate
.AtençãoEste comando destrói quaisquer dados em
/dev/sda1
,/dev/sdb1
, e/dev/sdc1
.#
pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
Physical volume "/dev/sda1" successfully created Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully createdCrie um grupo de volumes que consiste nos volumes físicos LVM que você criou. O seguinte comando cria o grupo de volume
myvg
.#
vgcreate myvg /dev/sda1 /dev/sdb1 /dev/sdc1
Volume group "myvg" successfully createdVocê pode usar o comando
vgs
para exibir os atributos do novo grupo de volume.#
vgs
VG #PV #LV #SN Attr VSize VFree myvg 3 0 0 wz--n- 51.45G 51.45GCrie o volume lógico a partir do grupo de volume que você criou. O seguinte comando cria o volume lógico
mylv
a partir do grupo de volumemyvg
. Este exemplo cria um volume lógico que utiliza 2 gigabytes do grupo de volume.#
lvcreate -L 2G -n mylv myvg
Logical volume "mylv" createdCriar um sistema de arquivo sobre o volume lógico. O seguinte comando cria um sistema de arquivo em
ext4
sobre o volume lógico.#
mkfs.ext4 /dev/myvg/mylv
mke2fs 1.44.3 (10-July-2018) Creating filesystem with 524288 4k blocks and 131072 inodes Filesystem UUID: 616da032-8a48-4cd7-8705-bd94b7a1c8c4 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: doneOs seguintes comandos montam o volume lógico e informam o uso do espaço em disco do sistema de arquivos.
#
mount /dev/myvg/mylv /mnt
#df
Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/myvg-mylv 1998672 6144 1871288 1% /mnt
4.3. Criação de um volume lógico RAID0 (listrado)
Um volume lógico RAID0 espalha dados lógicos de volume através de múltiplos subvolumes de dados em unidades de tamanho de faixa.
O formato para o comando para criar um volume RAID0 é o seguinte.
lvcreate --type raid0[_meta] --stripes Stripes --stripesize StripeSize VolumeGroup [PhysicalVolumePath...]
Tabela 4.1. Parâmetros de criação de comandos RAID0
Parâmetro | Descrição |
---|---|
|
A especificação |
| Especifica o número de dispositivos para distribuir o volume lógico. |
| Especifica o tamanho de cada listra em kilobytes. Esta é a quantidade de dados que é escrita em um dispositivo antes de passar para o dispositivo seguinte. |
| Especifica o grupo de volume a ser utilizado. |
| Especifica os dispositivos a serem utilizados. Se isto não for especificado, a LVM escolherá o número de dispositivos especificados pela opção Stripes, um para cada faixa. |
Este procedimento de exemplo cria um volume lógico LVM RAID0 chamado mylv
que risca os dados nos discos em /dev/sda1
, /dev/sdb1
, e /dev/sdc1
.
Rotule os discos que você usará no grupo de volume como volumes físicos LVM com o comando
pvcreate
.AtençãoEste comando destrói quaisquer dados em
/dev/sda1
,/dev/sdb1
, e/dev/sdc1
.#
pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
Physical volume "/dev/sda1" successfully created Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully createdCriar o grupo de volume
myvg
. O seguinte comando cria o grupo de volumemyvg
.#
vgcreate myvg /dev/sda1 /dev/sdb1 /dev/sdc1
Volume group "myvg" successfully createdVocê pode usar o comando
vgs
para exibir os atributos do novo grupo de volume.#
vgs
VG #PV #LV #SN Attr VSize VFree myvg 3 0 0 wz--n- 51.45G 51.45GCrie um volume lógico RAID0 a partir do grupo de volume que você criou. O seguinte comando cria o volume RAID0
mylv
a partir do grupo de volumemyvg
. Este exemplo cria um volume lógico de 2 gigabytes de tamanho, com três faixas e uma faixa de 4 kilobytes.#
lvcreate --type raid0 -L 2G --stripes 3 --stripesize 4 -n mylv myvg
Rounding size 2.00 GiB (512 extents) up to stripe boundary size 2.00 GiB(513 extents). Logical volume "mylv" created.Criar um sistema de arquivo no volume lógico RAID0. O seguinte comando cria um sistema de arquivo em
ext4
no volume lógico.#
mkfs.ext4 /dev/myvg/mylv
mke2fs 1.44.3 (10-July-2018) Creating filesystem with 525312 4k blocks and 131376 inodes Filesystem UUID: 9d4c0704-6028-450a-8b0a-8875358c0511 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: doneOs seguintes comandos montam o volume lógico e informam o uso do espaço em disco do sistema de arquivos.
#
mount /dev/myvg/mylv /mnt
#df
Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/myvg-mylv 2002684 6168 1875072 1% /mnt
4.4. Renomeando volumes lógicos LVM
Este procedimento renomeia um volume lógico existente usando a interface de linha de comando LVM.
Procedimento
- Se o volume lógico estiver atualmente montado, desmonte o volume.
Se o volume lógico existir em um ambiente agrupado, desative o volume lógico em todos os nós onde ele está ativo. Use o seguinte comando em cada um desses nós:
[root@node-n]# lvchange -- ativar n vg-name/lv-name
Use o utilitário
lvrename
para renomear um volume lógico existente:# lvrename vg-name original-lv-name new-lv-name
Opcionalmente, você pode especificar os caminhos completos para os dispositivos:
# lvrename /dev/vg-name/original-lv-name /dev/vg-name/new-lv-name
Recursos adicionais
-
A página do homem
lvrename(8)
4.5. Remoção de um disco de um volume lógico
Estes procedimentos de exemplo mostram como você pode remover um disco de um volume lógico existente, seja para substituir o disco ou para usar o disco como parte de um volume diferente. Para remover um disco, é necessário primeiro mover as extensões do volume físico do LVM para um disco ou conjunto de discos diferente.
4.5.1. Movendo extensões para os volumes físicos existentes
Neste exemplo, o volume lógico é distribuído por quatro volumes físicos no grupo de volume myvg
.
# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdb1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdc1 myvg lvm2 a- 17.15G 12.15G 5.00G
/dev/sdd1 myvg lvm2 a- 17.15G 2.15G 15.00G
Estes exemplos deslocam as extensões do /dev/sdb1
para que ele possa ser removido do grupo de volume.
Se houver extensões livres suficientes nos outros volumes físicos do grupo de volume, você pode executar o comando
pvmove
no dispositivo que você deseja remover sem outras opções e as extensões serão distribuídas para os outros dispositivos.Em um cluster, o comando
pvmove
pode mover somente o volume lógico que está ativo exclusivamente em um único nó.#
pvmove /dev/sdb1
/dev/sdb1: Moved: 2.0% ... /dev/sdb1: Moved: 79.2% ... /dev/sdb1: Moved: 100.0%Após o comando
pvmove
ter terminado a execução, a distribuição de extensões é a seguinte:#
pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used /dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G /dev/sdb1 myvg lvm2 a- 17.15G 17.15G 0 /dev/sdc1 myvg lvm2 a- 17.15G 12.15G 5.00G /dev/sdd1 myvg lvm2 a- 17.15G 2.15G 15.00GUse o comando
vgreduce
para remover o volume físico/dev/sdb1
do grupo de volume.#
vgreduce myvg /dev/sdb1
Removed "/dev/sdb1" from volume group "myvg" # pvs PV VG Fmt Attr PSize PFree /dev/sda1 myvg lvm2 a- 17.15G 7.15G /dev/sdb1 lvm2 -- 17.15G 17.15G /dev/sdc1 myvg lvm2 a- 17.15G 12.15G /dev/sdd1 myvg lvm2 a- 17.15G 2.15G
O disco pode agora ser removido fisicamente ou alocado a outros usuários.
4.5.2. Movendo Extensões para um Novo Disco
Neste exemplo, o volume lógico é distribuído em três volumes físicos no grupo de volume myvg
, como segue:
# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G
/dev/sdb1 myvg lvm2 a- 17.15G 15.15G 2.00G
/dev/sdc1 myvg lvm2 a- 17.15G 15.15G 2.00G
Este procedimento de exemplo move as extensões do /dev/sdb1
para um novo dispositivo, /dev/sdd1
.
Criar um novo volume físico a partir de
/dev/sdd1
.#
pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully createdAdicionar o novo volume físico
/dev/sdd1
ao grupo de volume existentemyvg
.#
vgextend myvg /dev/sdd1
Volume group "myvg" successfully extended #pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used /dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G /dev/sdb1 myvg lvm2 a- 17.15G 15.15G 2.00G /dev/sdc1 myvg lvm2 a- 17.15G 15.15G 2.00G /dev/sdd1 myvg lvm2 a- 17.15G 17.15G 0Use o comando
pvmove
para mover os dados de/dev/sdb1
para/dev/sdd1
.#
pvmove /dev/sdb1 /dev/sdd1
/dev/sdb1: Moved: 10.0% ... /dev/sdb1: Moved: 79.7% ... /dev/sdb1: Moved: 100.0% #pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used /dev/sda1 myvg lvm2 a- 17.15G 7.15G 10.00G /dev/sdb1 myvg lvm2 a- 17.15G 17.15G 0 /dev/sdc1 myvg lvm2 a- 17.15G 15.15G 2.00G /dev/sdd1 myvg lvm2 a- 17.15G 15.15G 2.00GDepois de ter retirado os dados de
/dev/sdb1
, você pode removê-los do grupo de volume.#
vgreduce myvg /dev/sdb1
Removed "/dev/sdb1" from volume group "myvg"
Agora você pode realocar o disco para outro grupo de volume ou remover o disco do sistema.
4.6. Configuração de números de dispositivos persistentes
Os números de dispositivos maiores e menores são alocados dinamicamente na carga do módulo. Algumas aplicações funcionam melhor se o dispositivo de bloco for sempre ativado com o mesmo número de dispositivo (maior e menor). Você pode especificá-los com os comandos lvcreate
e lvchange
, usando os seguintes argumentos:
--persistente y --major major -menor minor
Use um grande número menor para ter certeza de que ele não foi alocado a outro dispositivo de forma dinâmica.
Se você estiver exportando um sistema de arquivo usando NFS, especificar o parâmetro fsid
no arquivo de exportação pode evitar a necessidade de definir um número de dispositivo persistente dentro do LVM.
4.7. Especificação do tamanho da extensão da LVM
Quando volumes físicos são usados para criar um grupo de volume, seu espaço em disco é dividido em 4MB de extensão, por padrão. Esta extensão é a quantidade mínima pela qual o volume lógico pode ser aumentado ou diminuído em tamanho. Grandes números de extensões não terão impacto no desempenho de E/S do volume lógico.
Você pode especificar o tamanho de extensão com a opção -s
para o comando vgcreate
se o tamanho de extensão padrão não for adequado. Você pode colocar limites no número de volumes físicos ou lógicos que o grupo de volume pode ter usando os argumentos -p
e -l
do comando vgcreate
.
4.8. Gerenciando volumes lógicos LVM usando as funções do Sistema RHEL
Esta seção descreve como aplicar a função storage
para realizar as seguintes tarefas:
- Criar um volume lógico LVM em um grupo de volume composto de vários discos.
- Criar um sistema de arquivo ext4 com uma determinada etiqueta no volume lógico.
- Montar de forma persistente o sistema de arquivo ext4.
Pré-requisitos
-
Um livro de brincadeiras possível, incluindo o papel
storage
Para obter informações sobre como aplicar um caderno de atividades, consulte Aplicando um papel.
4.8.1. Exemplo Livro de exercícios possível para gerenciar volumes lógicos
Esta seção fornece um exemplo de um livro de brincadeiras possível. Este playbook aplica o papel storage
para criar um volume lógico LVM em um grupo de volumes.
Exemplo 4.1. Um playbook que cria um volume lógico mylv no grupo de volume myvg
- hosts: all vars: storage_pools: - name: myvg disks: - sda - sdb - sdc volumes: - name: mylv size: 2G fs_type: ext4 mount_point: /mnt roles: - rhel-system-roles.storage
O grupo de volume
myvg
é composto pelos seguintes discos:-
/dev/sda
-
/dev/sdb
-
/dev/sdc
-
-
Se o grupo de volume
myvg
já existe, o playbook adiciona o volume lógico ao grupo de volume. -
Se o grupo de volume
myvg
não existe, o playbook o cria. -
O playbook cria um sistema de arquivo Ext4 no volume lógico
mylv
e monta persistentemente o sistema de arquivo em/mnt
.
Recursos adicionais
-
Para detalhes sobre os parâmetros utilizados na função do sistema
storage
, consulte o arquivo/usr/share/ansible/roles/rhel-system-roles.storage/README.md
.
4.8.2. Recursos adicionais
-
Para mais informações sobre a função
storage
, consulte Gerenciando o armazenamento local usando as funções do Sistema RHEL.
4.9. Remoção de volumes lógicos LVM
Este procedimento remove um volume lógico existente usando a interface de linha de comando LVM.
Os seguintes comandos removem o volume lógico /dev/vg-name/lv-name
do grupo de volume vg-name
.
Procedimento
- Se o volume lógico estiver atualmente montado, desmonte o volume.
Se o volume lógico existir em um ambiente agrupado, desative o volume lógico em todos os nós onde ele está ativo. Use o seguinte comando em cada um desses nós:
[root@node-n]# lvchange -- ativar n vg-name/lv-name
Remova o volume lógico usando o utilitário
lvremove
:# lvremove /dev/vg-name/lv-name Do you really want to remove active logical volume "lv-name"? [y/n]: y Logical volume "lv-name" successfully removed
NotaNeste caso, o volume lógico não foi desativado. Se você desativasse explicitamente o volume lógico antes de removê-lo, você não veria a solicitação de verificar se deseja remover um volume lógico ativo.
Recursos adicionais
-
A página do homem
lvremove(8)
Capítulo 5. Modificando o tamanho de um volume lógico
Após ter criado um volume lógico, você pode modificar o tamanho do volume.
5.1. Volumes lógicos crescentes
Para aumentar o tamanho de um volume lógico, use o comando lvextend
.
Ao estender o volume lógico, você pode indicar quanto deseja estender o volume, ou quão grande você quer que seja depois de estendê-lo.
O seguinte comando estende o volume lógico /dev/myvg/homevol
para 12 gigabytes.
# lvextend -L12G /dev/myvg/homevol
lvextend -- extending logical volume "/dev/myvg/homevol" to 12 GB
lvextend -- doing automatic backup of volume group "myvg"
lvextend -- logical volume "/dev/myvg/homevol" successfully extended
O seguinte comando adiciona outro gigabyte ao volume lógico /dev/myvg/homevol
.
# lvextend -L+1G /dev/myvg/homevol
lvextend -- extending logical volume "/dev/myvg/homevol" to 13 GB
lvextend -- doing automatic backup of volume group "myvg"
lvextend -- logical volume "/dev/myvg/homevol" successfully extended
Como no comando lvcreate
, você pode usar o argumento -l
do comando lvextend
para especificar o número de extensões pelas quais aumentar o tamanho do volume lógico. Você também pode usar este argumento para especificar uma porcentagem do grupo de volume, ou uma porcentagem do espaço livre restante no grupo de volume. O seguinte comando estende o volume lógico chamado testlv
para preencher todo o espaço não alocado no grupo de volume myvg
.
# lvextend -l +100%FREE /dev/myvg/testlv
Extending logical volume testlv to 68.59 GB
Logical volume testlv successfully resized
Depois de estender o volume lógico, é necessário aumentar o tamanho do sistema de arquivo para corresponder.
Por padrão, a maioria das ferramentas de redimensionamento do sistema de arquivos aumentará o tamanho do sistema de arquivos para ser o tamanho do volume lógico subjacente, de modo que você não precisa se preocupar em especificar o mesmo tamanho para cada um dos dois comandos.
5.2. Cultivar um sistema de arquivo em um volume lógico
Para cultivar um sistema de arquivo em um volume lógico, execute os seguintes passos:
Determinar se há espaço não alocado suficiente no grupo de volume existente para estender o volume lógico. Caso contrário, executar o procedimento a seguir:
-
Crie um novo volume físico com o comando
pvcreate
. -
Use o comando
vgextend
para ampliar o grupo de volume que contém o volume lógico com o sistema de arquivo que você está crescendo para incluir o novo volume físico.
-
Crie um novo volume físico com o comando
-
Quando o grupo de volume for suficientemente grande para incluir o sistema de arquivo maior, estenda o volume lógico com o comando
lvresize
. - Redimensionar o sistema de arquivo no volume lógico.
Note que você pode usar a opção -r
do comando lvresize
para estender o volume lógico e redimensionar o sistema de arquivo subjacente com um único comando
5.3. Volumes lógicos retráteis
Você pode reduzir o tamanho de um volume lógico com o comando lvreduce
.
A retração não é suportada em um sistema de arquivo GFS2 ou XFS, portanto não se pode reduzir o tamanho de um volume lógico que contenha um sistema de arquivo GFS2 ou XFS.
Se o volume lógico que você está reduzindo contém um sistema de arquivo, para evitar a perda de dados, você deve garantir que o sistema de arquivo não está usando o espaço no volume lógico que está sendo reduzido. Por este motivo, recomenda-se usar a opção --resizefs
do comando lvreduce
quando o volume lógico contiver um sistema de arquivo. Quando você usa esta opção, o comando lvreduce
tenta reduzir o sistema de arquivo antes de reduzir o volume lógico. Se o encolhimento do sistema de arquivo falhar, como pode ocorrer se o sistema de arquivo estiver cheio ou se o sistema de arquivo não suportar o encolhimento, então o comando lvreduce
falhará e não tentará encolher o volume lógico.
Na maioria dos casos, o comando lvreduce
adverte sobre uma possível perda de dados e pede uma confirmação. Entretanto, você não deve confiar nestes avisos de confirmação para evitar a perda de dados porque em alguns casos você não verá estes avisos, tais como quando o volume lógico estiver inativo ou quando a opção --resizefs
não for utilizada.
Note que o uso da opção --test
do comando lvreduce
não indica onde a operação é segura, pois esta opção não verifica o sistema de arquivo ou não testa o redimensionamento do sistema de arquivo.
O seguinte comando reduz o volume lógico lvol1
no grupo de volume vg00
para 64 megabytes. Neste exemplo, lvol1
contém um sistema de arquivo, que este comando redimensiona junto com o volume lógico. Este exemplo mostra a saída para o comando.
# lvreduce --resizefs -L 64M vg00/lvol1
fsck from util-linux 2.23.2
/dev/mapper/vg00-lvol1: clean, 11/25688 files, 8896/102400 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vg00-lvol1 to 65536 (1k) blocks.
The filesystem on /dev/mapper/vg00-lvol1 is now 65536 blocks long.
Size of logical volume vg00/lvol1 changed from 100.00 MiB (25 extents) to 64.00 MiB (16 extents).
Logical volume vg00/lvol1 successfully resized.
A especificação do sinal - antes do valor de redimensionamento indica que o valor será subtraído do tamanho real do volume lógico. O exemplo seguinte mostra o comando que você usaria se, em vez de encolher um volume lógico para um tamanho absoluto de 64 megabytes, você quisesse encolher o volume em um valor de 64 megabytes.
# lvreduce --resizefs -L -64M vg00/lvol1
5.4. Ampliação de um volume lógico listrado
A fim de aumentar o tamanho de um volume lógico listrado, deve haver espaço livre suficiente nos volumes físicos subjacentes que compõem o grupo de volume para suportar a listra. Por exemplo, se você tiver uma faixa de duas vias que utilize um grupo de volume inteiro, adicionar um único volume físico ao grupo de volume não lhe permitirá estender a faixa. Ao invés disso, você deve adicionar pelo menos dois volumes físicos ao grupo de volume.
Por exemplo, considere um grupo de volumes vg
que consiste de dois volumes físicos subjacentes, como exibido com o seguinte comando vgs
.
# vgs
VG #PV #LV #SN Attr VSize VFree
vg 2 0 0 wz--n- 271.31G 271.31G
Você pode criar uma faixa usando todo o espaço do grupo de volume.
#lvcreate -n stripe1 -L 271.31G -i 2 vg
Using default stripesize 64.00 KB Rounding up size to full physical extent 271.31 GB Logical volume "stripe1" created #lvs -a -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Devices stripe1 vg -wi-a- 271.31G /dev/sda1(0),/dev/sdb1(0)
Note que o grupo de volume agora não tem mais espaço livre.
# vgs
VG #PV #LV #SN Attr VSize VFree
vg 2 1 0 wz--n- 271.31G 0
O seguinte comando acrescenta outro volume físico ao grupo de volume, que então tem 135 gigabytes de espaço adicional.
#vgextend vg /dev/sdc1
Volume group "vg" successfully extended #vgs
VG #PV #LV #SN Attr VSize VFree vg 3 1 0 wz--n- 406.97G 135.66G
Neste ponto você não pode estender o volume lógico listrado até o tamanho total do grupo de volume, porque dois dispositivos subjacentes são necessários para riscar os dados.
# lvextend vg/stripe1 -L 406G
Using stripesize of last segment 64.00 KB
Extending logical volume stripe1 to 406.00 GB
Insufficient suitable allocatable extents for logical volume stripe1: 34480
more required
Para estender o volume lógico listrado, adicionar outro volume físico e depois estender o volume lógico. Neste exemplo, tendo adicionado dois volumes físicos ao grupo de volume, podemos estender o volume lógico até o tamanho total do grupo de volume.
#vgextend vg /dev/sdd1
Volume group "vg" successfully extended #vgs
VG #PV #LV #SN Attr VSize VFree vg 4 1 0 wz--n- 542.62G 271.31G #lvextend vg/stripe1 -L 542G
Using stripesize of last segment 64.00 KB Extending logical volume stripe1 to 542.00 GB Logical volume stripe1 successfully resized
Se você não tiver dispositivos físicos subjacentes suficientes para estender o volume lógico listrado, é possível estender o volume de qualquer forma, se não importar que a extensão não seja listrada, o que pode resultar em um desempenho desigual. Ao adicionar espaço ao volume lógico, a operação padrão é usar os mesmos parâmetros de striping do último segmento do volume lógico existente, mas você pode sobrepor esses parâmetros. O exemplo a seguir estende o volume lógico em tiras existente para usar o espaço livre restante após o comando inicial lvextend
falhar.
#lvextend vg/stripe1 -L 406G
Using stripesize of last segment 64.00 KB Extending logical volume stripe1 to 406.00 GB Insufficient suitable allocatable extents for logical volume stripe1: 34480 more required #lvextend -i1 -l+100%FREE vg/stripe1
Capítulo 6. Gerenciamento de grupos de volume LVM
Esta seção descreve os comandos que executam os vários aspectos da administração de grupos de volume.
6.1. Grupos de volume
Os volumes físicos são combinados em grupos de volume (VGs). Isto cria um pool de espaço em disco a partir do qual os volumes lógicos podem ser alocados.
Dentro de um grupo de volume, o espaço em disco disponível para alocação é dividido em unidades de tamanho fixo chamadas extensões. Uma extensão é a menor unidade de espaço que pode ser alocada. Dentro de um volume físico, as extensões são chamadas de extensões físicas.
Um volume lógico é alocado em extensões lógicas do mesmo tamanho que as extensões físicas. O tamanho da extensão é, portanto, o mesmo para todos os volumes lógicos do grupo de volume. O grupo de volume mapeia os extensões lógicas em extensões físicas.
6.2. Exibição de grupos de volume
Há dois comandos que você pode usar para exibir as propriedades dos grupos de volume LVM: vgs
e vgdisplay
. O comando vgscan
, que verifica todos os dispositivos de bloco LVM suportados no sistema para grupos de volume, também pode ser usado para exibir os grupos de volume existentes.
O comando vgs
fornece informações de grupo de volume em uma forma configurável, exibindo uma linha por grupo de volume. O comando vgs
fornece um grande controle de formato, e é útil para a criação de scripts.
O comando vgdisplay
exibe as propriedades do grupo de volume (tais como tamanho, extensões, número de volumes físicos, etc.) em uma forma fixa. O exemplo a seguir mostra a saída do comando vgdisplay
para o grupo de volume new_vg
. Se você não especificar um grupo de volume, todos os grupos de volume existentes são exibidos.
# vgdisplay new_vg
--- Volume group ---
VG Name new_vg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 11
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 51.42 GB
PE Size 4.00 MB
Total PE 13164
Alloc PE / Size 13 / 52.00 MB
Free PE / Size 13151 / 51.37 GB
VG UUID jxQJ0a-ZKk0-OpMO-0118-nlwO-wwqd-fD5D32
O exemplo a seguir mostra a saída do comando vgscan
.
# vgscan
Reading all physical volumes. This may take a while...
Found volume group "new_vg" using metadata type lvm2
Found volume group "officevg" using metadata type lvm2
6.3. Combinando grupos de volume
Para combinar dois grupos de volume em um único grupo de volume, use o comando vgmerge
. Você pode fundir um volume inativo com um volume ativo ou inativo de destino se a extensão física do volume for igual e os resumos de volume físico e lógico de ambos os grupos de volume se encaixarem nos limites dos grupos de volume de destino.
O seguinte comando funde o grupo de volume inativo my_vg
com o grupo de volume ativo ou inativo databases
dando informações verbosas sobre o tempo de execução.
# vgmerge -v databases my_vg
6.4. Divisão de um grupo de volume
Neste procedimento de exemplo, um grupo de volume existente consiste em três volumes físicos. Se houver espaço suficiente não utilizado nos volumes físicos, um novo grupo de volumes pode ser criado sem a adição de novos discos.
Na montagem inicial, o volume lógico mylv
é esculpido do grupo de volume myvg
, que por sua vez consiste nos três volumes físicos, /dev/sda1
, /dev/sdb1
, e /dev/sdc1
.
Após a conclusão deste procedimento, o grupo de volume myvg
será composto por /dev/sda1
e /dev/sdb1
. Um segundo grupo de volume, yourvg
, consistirá de /dev/sdc1
.
Use o comando
pvscan
para determinar quanto espaço livre está atualmente disponível no grupo de volume.#
pvscan
PV /dev/sda1 VG myvg lvm2 [17.15 GB / 0 free] PV /dev/sdb1 VG myvg lvm2 [17.15 GB / 12.15 GB free] PV /dev/sdc1 VG myvg lvm2 [17.15 GB / 15.80 GB free] Total: 3 [51.45 GB] / in use: 3 [51.45 GB] / in no VG: 0 [0 ]Mova todos os extensões físicas utilizadas em
/dev/sdc1
para/dev/sdb1
com o comandopvmove
. O comandopvmove
pode levar muito tempo para ser executado.Em um cluster, o comando
pvmove
pode mover somente o volume lógico que está ativo exclusivamente em um único nó.#
pvmove /dev/sdc1 /dev/sdb1
/dev/sdc1: Moved: 14.7% /dev/sdc1: Moved: 30.3% /dev/sdc1: Moved: 45.7% /dev/sdc1: Moved: 61.0% /dev/sdc1: Moved: 76.6% /dev/sdc1: Moved: 92.2% /dev/sdc1: Moved: 100.0%Depois de mover os dados, você pode ver que todo o espaço em
/dev/sdc1
é gratuito.#
pvscan
PV /dev/sda1 VG myvg lvm2 [17.15 GB / 0 free] PV /dev/sdb1 VG myvg lvm2 [17.15 GB / 10.80 GB free] PV /dev/sdc1 VG myvg lvm2 [17.15 GB / 17.15 GB free] Total: 3 [51.45 GB] / in use: 3 [51.45 GB] / in no VG: 0 [0 ]Para criar o novo grupo de volume
yourvg
, use o comandovgsplit
para dividir o grupo de volumemyvg
.O seguinte comando divide o grupo de volume
yourvg
do grupo de volumemyvg
, movendo o volume físico/dev/sdc1
para o novo grupo de volumeyourvg
.#
lvchange -a n /dev/myvg/mylv
#vgsplit myvg yourvg /dev/sdc1
Volume group "yourvg" successfully split from "myvg"Você pode usar o comando
vgs
para ver os atributos dos dois grupos de volumes.#
vgs
VG #PV #LV #SN Attr VSize VFree myvg 2 1 0 wz--n- 34.30G 10.80G yourvg 1 0 0 wz--n- 17.15G 17.15GApós criar o novo grupo de volume, crie o novo volume lógico
yourlv
.#
lvcreate -L 5G -n yourlv yourvg
Logical volume "yourlv" createdCrie um sistema de arquivo no novo volume lógico e monte-o.
#
mkfs.ext4 /dev/yourvg/yourlv
mke2fs 1.44.3 (10-July-2018) Creating filesystem with 524288 4k blocks and 131072 inodes Filesystem UUID: 616da032-8a48-4cd7-8705-bd94b7a1c8c4 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done #mount /dev/yourvg/yourlv /mnt
6.5. Renomeando grupos de volume LVM
Este procedimento renomeia um grupo de volume existente usando a interface de linha de comando LVM.
Procedimento
Se o grupo de volume existir em um ambiente agrupado, desative o grupo de volume em todos os nós onde ele está ativo. Use o seguinte comando em cada um desses nós:
[root@node-n]# vgchange -- ativar n vg-name
Use o utilitário
vgrename
para renomear um grupo de volume existente:# vgrename original-vg-name new-vg-name
Opcionalmente, você pode especificar os caminhos completos para os dispositivos:
# vgrename /dev/original-vg-name /dev/new-vg-name
Recursos adicionais
-
A página do homem
vgrename(8)
6.6. Movendo um grupo de volume para outro sistema
Você pode mover todo um grupo de volume LVM para outro sistema. É recomendado que você use os comandos vgexport
e vgimport
quando fizer isso.
Você pode usar o argumento --force
do comando vgimport
. Isto permite importar grupos de volumes que estão faltando volumes físicos e posteriormente executar o comando vgreduce --removemissing
.
O comando vgexport
torna inacessível ao sistema um grupo de volume inativo, o que permite destacar seus volumes físicos. O comando vgimport
torna um grupo de volume acessível a uma máquina novamente após o comando vgexport
tê-lo tornado inativo.
Para mover um grupo de volume de um sistema para outro, execute os seguintes passos:
- Certifique-se de que nenhum usuário esteja acessando os arquivos nos volumes ativos do grupo de volumes, depois desmonte os volumes lógicos.
-
Use o argumento
-a n
do comandovgchange
para marcar o grupo de volume como inativo, o que impede qualquer outra atividade no grupo de volume. Use o comando
vgexport
para exportar o grupo de volume. Isto impede que ele seja acessado pelo sistema do qual você está removendo-o.Depois de exportar o grupo de volume, o volume físico aparecerá como estando em um grupo de volume exportado quando você executar o comando
pvscan
, como no exemplo a seguir.#
pvscan
PV /dev/sda1 is in exported VG myvg [17.15 GB / 7.15 GB free] PV /dev/sdc1 is in exported VG myvg [17.15 GB / 15.15 GB free] PV /dev/sdd1 is in exported VG myvg [17.15 GB / 15.15 GB free] ...Quando o sistema for desligado em seguida, você pode desconectar os discos que constituem o grupo de volume e conectá-los ao novo sistema.
-
Quando os discos estiverem conectados ao novo sistema, use o comando
vgimport
para importar o grupo de volume, tornando-o acessível ao novo sistema. -
Ative o grupo de volume com o argumento
-a y
do comandovgchange
. - Montar o sistema de arquivo para torná-lo disponível para uso.
6.7. Remoção de volumes físicos de um grupo de volume
Para remover volumes físicos não utilizados de um grupo de volume, use o comando vgreduce
. O comando vgreduce
diminui a capacidade de um grupo de volume ao remover um ou mais volumes físicos vazios. Isto libera esses volumes físicos para serem usados em diferentes grupos de volume ou para serem removidos do sistema.
Antes de remover um volume físico de um grupo de volume, você pode ter certeza de que o volume físico não é usado por nenhum volume lógico, usando o comando pvdisplay
.
# pvdisplay /dev/hda1
-- Physical volume ---
PV Name /dev/hda1
VG Name myvg
PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV# 1
PV Status available
Allocatable yes (but full)
Cur LV 1
PE Size (KByte) 4096
Total PE 499
Free PE 0
Allocated PE 499
PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7
Se o volume físico ainda estiver sendo usado, você terá que migrar os dados para outro volume físico usando o comando pvmove
. Em seguida, use o comando vgreduce
para remover o volume físico.
O seguinte comando remove o volume físico /dev/hda1
do grupo de volume my_volume_group
.
# vgreduce my_volume_group /dev/hda1
Se um volume lógico contém um volume físico que falha, você não pode usar esse volume lógico. Para remover volumes físicos ausentes de um grupo de volumes, você pode usar o parâmetro --removemissing
do comando vgreduce
, se não houver volumes lógicos alocados nos volumes físicos ausentes.
Se o volume físico que falhar contém uma imagem de espelho de um volume lógico de um segmento do tipo mirror
, você pode remover essa imagem do espelho com o comando vgreduce --removemissing --mirrorsonly --force
. Isto remove apenas os volumes lógicos que são imagens-espelho do volume físico.
6.8. Remoção de grupos de volume LVM
Este procedimento remove um grupo de volume existente usando a interface de linha de comando LVM.
Pré-requisitos
- O grupo de volume não contém volumes lógicos. Para remover volumes lógicos de um grupo de volume, ver Seção 4.9, “Remoção de volumes lógicos LVM”.
Procedimento
Se o grupo de volume existir em um ambiente agrupado, pare o espaço de bloqueio do grupo de volume em todos os outros nós. Use o seguinte comando em todos os nós, exceto no nó onde você está realizando a remoção:
[root@node-n]# vgchange --lockstop vg-name
Aguarde que o cadeado pare.
Para remover o grupo de volume, use o utilitário
vgremove
:# vgremove vg-name Volume group "vg-name" successfully removed
Recursos adicionais
-
A página do homem
vgremove(8)
6.9. Recursos adicionais
-
A página do homem
vgchange(8)
Capítulo 7. Gerenciando volumes físicos LVM
Há uma variedade de comandos e procedimentos que você pode usar para gerenciar os volumes físicos da LVM.
7.1. Procura de dispositivos de bloco a serem utilizados como volumes físicos
Você pode procurar dispositivos de bloco que podem ser usados como volumes físicos com o comando lvmdiskscan
, como mostrado no exemplo a seguir.
# lvmdiskscan
/dev/ram0 [ 16.00 MB]
/dev/sda [ 17.15 GB]
/dev/root [ 13.69 GB]
/dev/ram [ 16.00 MB]
/dev/sda1 [ 17.14 GB] LVM physical volume
/dev/VolGroup00/LogVol01 [ 512.00 MB]
/dev/ram2 [ 16.00 MB]
/dev/new_vg/lvol0 [ 52.00 MB]
/dev/ram3 [ 16.00 MB]
/dev/pkl_new_vg/sparkie_lv [ 7.14 GB]
/dev/ram4 [ 16.00 MB]
/dev/ram5 [ 16.00 MB]
/dev/ram6 [ 16.00 MB]
/dev/ram7 [ 16.00 MB]
/dev/ram8 [ 16.00 MB]
/dev/ram9 [ 16.00 MB]
/dev/ram10 [ 16.00 MB]
/dev/ram11 [ 16.00 MB]
/dev/ram12 [ 16.00 MB]
/dev/ram13 [ 16.00 MB]
/dev/ram14 [ 16.00 MB]
/dev/ram15 [ 16.00 MB]
/dev/sdb [ 17.15 GB]
/dev/sdb1 [ 17.14 GB] LVM physical volume
/dev/sdc [ 17.15 GB]
/dev/sdc1 [ 17.14 GB] LVM physical volume
/dev/sdd [ 17.15 GB]
/dev/sdd1 [ 17.14 GB] LVM physical volume
7 disks
17 partitions
0 LVM physical volume whole disks
4 LVM physical volumes
7.2. Definição do tipo de divisória para um volume físico
Se você estiver usando um dispositivo de disco inteiro para seu volume físico, o disco não deve ter uma tabela de partições. Para partições de disco DOS, o id da partição deve ser ajustado para 0x8e usando o comando fdisk
ou cfdisk
ou um equivalente. Para dispositivos de disco inteiro, somente a tabela de partição deve ser apagada, o que efetivamente destruirá todos os dados naquele disco. Você pode remover uma tabela de partição existente zerando o primeiro setor com o seguinte comando:
# dd if=/dev/zero of=PhysicalVolume bs=512 count=1
7.3. Redimensionamento de um volume físico LVM
Se você precisar alterar o tamanho de um dispositivo de bloco subjacente por qualquer motivo, use o comando pvresize
para atualizar o LVM com o novo tamanho. Você pode executar este comando enquanto o LVM estiver usando o volume físico.
7.4. Remoção de volumes físicos
Se um dispositivo não for mais necessário para uso pela LVM, você pode remover a etiqueta da LVM com o comando pvremove
. A execução do comando pvremove
zera os metadados do LVM em um volume físico vazio.
Se o volume físico que você deseja remover atualmente faz parte de um grupo de volume, você deve removê-lo do grupo de volume com o comando vgreduce
.
# pvremove /dev/ram15
Labels on physical volume "/dev/ram15" successfully wiped
7.5. Adicionando volumes físicos a um grupo de volume
Para adicionar volumes físicos adicionais a um grupo de volume existente, use o comando vgextend
. O comando vgextend
aumenta a capacidade de um grupo de volume ao adicionar um ou mais volumes físicos livres.
O seguinte comando adiciona o volume físico /dev/sdf1
ao grupo de volume vg1
.
# vgextend vg1 /dev/sdf1
7.6. Remoção de volumes físicos de um grupo de volume
Para remover volumes físicos não utilizados de um grupo de volume, use o comando vgreduce
. O comando vgreduce
diminui a capacidade de um grupo de volume ao remover um ou mais volumes físicos vazios. Isto libera esses volumes físicos para serem usados em diferentes grupos de volume ou para serem removidos do sistema.
Antes de remover um volume físico de um grupo de volume, você pode ter certeza de que o volume físico não é usado por nenhum volume lógico, usando o comando pvdisplay
.
# pvdisplay /dev/hda1
-- Physical volume ---
PV Name /dev/hda1
VG Name myvg
PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV# 1
PV Status available
Allocatable yes (but full)
Cur LV 1
PE Size (KByte) 4096
Total PE 499
Free PE 0
Allocated PE 499
PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7
Se o volume físico ainda estiver sendo usado, você terá que migrar os dados para outro volume físico usando o comando pvmove
. Em seguida, use o comando vgreduce
para remover o volume físico.
O seguinte comando remove o volume físico /dev/hda1
do grupo de volume my_volume_group
.
# vgreduce my_volume_group /dev/hda1
Se um volume lógico contém um volume físico que falha, você não pode usar esse volume lógico. Para remover volumes físicos ausentes de um grupo de volumes, você pode usar o parâmetro --removemissing
do comando vgreduce
, se não houver volumes lógicos alocados nos volumes físicos ausentes.
Se o volume físico que falhar contém uma imagem de espelho de um volume lógico de um segmento do tipo mirror
, você pode remover essa imagem do espelho com o comando vgreduce --removemissing --mirrorsonly --force
. Isto remove apenas os volumes lógicos que são imagens-espelho do volume físico.
Capítulo 8. Exibição de componentes LVM
LVM oferece uma variedade de maneiras de exibir os componentes LVM, bem como de personalizar a exibição. Esta seção resume o uso dos comandos básicos de exibição do LVM.
8.1. Exibição de informações LVM com o comando lvm
O comando lvm
fornece várias opções embutidas que você pode usar para exibir informações sobre suporte e configuração de LVM.
lvm devtypes
Exibe os tipos reconhecidos de dispositivos de blocos incorporados
lvm formats
Exibe formatos de metadados reconhecidos.
lvm help
Exibe o texto de ajuda da LVM.
lvm segtypes
Exibe os tipos de segmentos de volume lógicos reconhecidos.
lvm tags
Exibe quaisquer tags definidas neste host.
lvm version
Exibe as informações da versão atual.
8.2. Exibição de volumes físicos
Há três comandos que você pode usar para exibir as propriedades dos volumes físicos da LVM: pvs
, pvdisplay
, e pvscan
.
O comando pvs
fornece informações de volume físico em uma forma configurável, exibindo uma linha por volume físico. O comando pvs
fornece uma grande quantidade de controle de formato, e é útil para o script.
O comando pvdisplay
fornece uma saída verbosa de múltiplas linhas para cada volume físico. Ele exibe as propriedades físicas (tamanho, extensões, grupo de volume, etc.) em um formato fixo.
O exemplo a seguir mostra a saída do comando pvdisplay
para um único volume físico.
# pvdisplay
--- Physical volume ---
PV Name /dev/sdc1
VG Name new_vg
PV Size 17.14 GB / not usable 3.40 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 4388
Free PE 4375
Allocated PE 13
PV UUID Joqlch-yWSj-kuEn-IdwM-01S9-XO8M-mcpsVe
O comando pvscan
escaneia todos os dispositivos de bloco LVM suportados no sistema em busca de volumes físicos.
O comando a seguir mostra todos os dispositivos físicos encontrados:
# pvscan
PV /dev/sdb2 VG vg0 lvm2 [964.00 MB / 0 free]
PV /dev/sdc1 VG vg0 lvm2 [964.00 MB / 428.00 MB free]
PV /dev/sdc2 lvm2 [964.84 MB]
Total: 3 [2.83 GB] / in use: 2 [1.88 GB] / in no VG: 1 [964.84 MB]
Você pode definir um filtro no arquivo lvm.conf
para que este comando evite a leitura de volumes físicos específicos.
8.3. Exibição de grupos de volume
Há dois comandos que você pode usar para exibir as propriedades dos grupos de volume LVM: vgs
e vgdisplay
. O comando vgscan
, que verifica todos os dispositivos de bloco LVM suportados no sistema para grupos de volume, também pode ser usado para exibir os grupos de volume existentes.
O comando vgs
fornece informações de grupo de volume em uma forma configurável, exibindo uma linha por grupo de volume. O comando vgs
fornece um grande controle de formato, e é útil para a criação de scripts.
O comando vgdisplay
exibe as propriedades do grupo de volume (tais como tamanho, extensões, número de volumes físicos, etc.) em uma forma fixa. O exemplo a seguir mostra a saída do comando vgdisplay
para o grupo de volume new_vg
. Se você não especificar um grupo de volume, todos os grupos de volume existentes são exibidos.
# vgdisplay new_vg
--- Volume group ---
VG Name new_vg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 11
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 51.42 GB
PE Size 4.00 MB
Total PE 13164
Alloc PE / Size 13 / 52.00 MB
Free PE / Size 13151 / 51.37 GB
VG UUID jxQJ0a-ZKk0-OpMO-0118-nlwO-wwqd-fD5D32
O exemplo a seguir mostra a saída do comando vgscan
.
# vgscan
Reading all physical volumes. This may take a while...
Found volume group "new_vg" using metadata type lvm2
Found volume group "officevg" using metadata type lvm2
8.4. Exibindo volumes lógicos
Há três comandos que você pode usar para exibir as propriedades dos volumes lógicos da LVM: lvs
, lvdisplay
, e lvscan
.
O comando lvs
fornece informações de volume lógico em uma forma configurável, exibindo uma linha por volume lógico. O comando lvs
fornece uma grande quantidade de controle de formato, e é útil para o scripting.
O comando lvdisplay
exibe as propriedades lógicas de volume (como tamanho, layout e mapeamento) em um formato fixo.
O seguinte comando mostra os atributos de lvol2
em vg00
. Se os volumes lógicos instantâneos foram criados para este volume lógico original, este comando mostra uma lista de todos os volumes lógicos instantâneos e seu status (ativo ou inativo) também.
# lvdisplay -v /dev/vg00/lvol2
O comando lvscan
procura todos os volumes lógicos do sistema e os lista, como no exemplo a seguir.
# lvscan
ACTIVE '/dev/vg0/gfslv' [1.46 GB] inherit
Capítulo 9. Relatórios personalizados para LVM
LVM fornece uma ampla gama de opções de configuração e linha de comando para produzir relatórios personalizados e para filtrar a saída do relatório. Para uma descrição completa dos recursos e capacidades do relatório LVM, consulte a página de manual lvmreport
(7).
Você pode produzir relatórios concisos e personalizáveis de objetos LVM com os comandos pvs
, lvs
, e vgs
. Os relatórios que estes comandos geram incluem uma linha de saída para cada objeto. Cada linha contém uma lista ordenada de campos de propriedades relacionadas com o objeto. Há cinco maneiras de selecionar os objetos a serem relatados: por volume físico, grupo de volume, volume lógico, segmento de volume físico, e segmento de volume lógico.
Você pode relatar informações sobre volumes físicos, grupos de volume, volumes lógicos, segmentos de volume físico e segmentos lógicos de volume de uma só vez com o comando lvm fullreport
. Para obter informações sobre este comando e suas capacidades, consulte a página de manual lvm-fullreport
(8).
LVM suporta relatórios de registro, que contêm um registro de operações, mensagens e status por objeto com identificação completa do objeto coletado durante a execução do comando LVM. Para maiores informações sobre o relatório de log LVM. veja a página de manual lvmreport
(7).
9.1. Controle do formato do visor da LVM
Se você usa o comando pvs
, lvs
, ou vgs
determina o conjunto padrão de campos exibidos e a ordem de ordenação. Você pode controlar a saída destes comandos com os seguintes argumentos:
Você pode mudar quais campos são exibidos para algo diferente do padrão usando o argumento
-o
. Por exemplo, o seguinte comando exibe apenas o nome e o tamanho do volume físico.#
pvs -o pv_name,pv_size
PV PSize /dev/sdb1 17.14G /dev/sdc1 17.14G /dev/sdd1 17.14GVocê pode anexar um campo à saída com o sinal de mais ( ), que é usado em combinação com o argumento -o.
O exemplo a seguir mostra a UUID do volume físico, além dos campos padrão.
#
pvs -o +pv_uuid
PV VG Fmt Attr PSize PFree PV UUID /dev/sdb1 new_vg lvm2 a- 17.14G 17.14G onFF2w-1fLC-ughJ-D9eB-M7iv-6XqA-dqGeXY /dev/sdc1 new_vg lvm2 a- 17.14G 17.09G Joqlch-yWSj-kuEn-IdwM-01S9-X08M-mcpsVe /dev/sdd1 new_vg lvm2 a- 17.14G 17.14G yvfvZK-Cf31-j75k-dECm-0RZ3-0dGW-UqkCSA adição do argumento
-v
a um comando inclui alguns campos extras. Por exemplo, o comandopvs -v
exibirá os camposDevSize
ePV UUID
, além dos campos padrão.#
pvs -v
Scanning for physical volume names PV VG Fmt Attr PSize PFree DevSize PV UUID /dev/sdb1 new_vg lvm2 a- 17.14G 17.14G 17.14G onFF2w-1fLC-ughJ-D9eB-M7iv-6XqA-dqGeXY /dev/sdc1 new_vg lvm2 a- 17.14G 17.09G 17.14G Joqlch-yWSj-kuEn-IdwM-01S9-XO8M-mcpsVe /dev/sdd1 new_vg lvm2 a- 17.14G 17.14G 17.14G yvfvZK-Cf31-j75k-dECm-0RZ3-0dGW-tUqkCSO argumento
--noheadings
suprime a linha de títulos. Isto pode ser útil para escrever roteiros.O exemplo seguinte utiliza o argumento
--noheadings
em combinação com o argumentopv_name
, que gerará uma lista de todos os volumes físicos.#
pvs --noheadings -o pv_name
/dev/sdb1 /dev/sdc1 /dev/sdd1O
--separator separator
o argumento usa separator para separar cada campo.O exemplo a seguir separa os campos de saída padrão do comando
pvs
com um sinal de igual (=).#
pvs --separator =
PV=VG=Fmt=Attr=PSize=PFree /dev/sdb1=new_vg=lvm2=a-=17.14G=17.14G /dev/sdc1=new_vg=lvm2=a-=17.14G=17.09G /dev/sdd1=new_vg=lvm2=a-=17.14G=17.14GPara manter os campos alinhados ao usar o argumento
separator
, use o argumentoseparator
em conjunto com o argumento--aligned
.#
pvs --separator = --aligned
PV =VG =Fmt =Attr=PSize =PFree /dev/sdb1 =new_vg=lvm2=a- =17.14G=17.14G /dev/sdc1 =new_vg=lvm2=a- =17.14G=17.09G /dev/sdd1 =new_vg=lvm2=a- =17.14G=17.14G
Você pode usar o argumento -P
do comando lvs
ou vgs
para exibir informações sobre um volume falho que de outra forma não apareceria na saída.
Para uma lista completa de argumentos de exibição, consulte as páginas de manual pvs
(8), vgs
(8) e lvs
(8).
Os campos de grupo de volume podem ser misturados com campos de volume físico (e segmento de volume físico) ou com campos de volume lógico (e segmento de volume lógico), mas os campos de volume físico e de volume lógico não podem ser misturados. Por exemplo, o seguinte comando exibirá uma linha de saída para cada volume físico.
# vgs -o +pv_name
VG #PV #LV #SN Attr VSize VFree PV
new_vg 3 1 0 wz--n- 51.42G 51.37G /dev/sdc1
new_vg 3 1 0 wz--n- 51.42G 51.37G /dev/sdd1
new_vg 3 1 0 wz--n- 51.42G 51.37G /dev/sdb1
9.2. Campos de exibição de objetos LVM
Esta seção fornece uma série de tabelas que listam as informações que você pode exibir sobre os objetos LVM com os comandos pvs
, vgs
, e lvs
.
Por conveniência, um prefixo de nome de campo pode ser descartado se corresponder ao padrão para o comando. Por exemplo, com o comando pvs
, name
significa pv_name
, mas com o comando vgs
, name
é interpretado como vg_name
.
Executar o seguinte comando é o equivalente a executar pvs -o pv_free
.
# pvs -o free
PFree
17.14G
17.09G
17.14G
O número de caracteres nos campos de atributos em pvs
, vgs
, e lvs
pode aumentar em lançamentos posteriores. Os campos de caracteres existentes não mudarão de posição, mas novos campos podem ser adicionados ao final. Você deve levar isto em consideração ao escrever scripts que buscam caracteres de atributo específicos, buscando o caractere com base em sua posição relativa até o início do campo, mas não por sua posição relativa até o final do campo. Por exemplo, para pesquisar o caractere p
no nono bit do campo lv_attr
, você poderia pesquisar a string "^/........p/", mas não deve pesquisar a string "/*p$/".
Tabela 9.1, “Os campos de exibição do comando pvs” lista os argumentos de exibição do comando pvs
, juntamente com o nome do campo como aparece na exibição do cabeçalho e uma descrição do campo.
Tabela 9.1. Os campos de exibição do comando pvs
Argumento | Cabeçalho | Descrição |
---|---|---|
| DevSize | O tamanho do dispositivo subjacente sobre o qual o volume físico foi criado |
| 1º PE | Offset até o início da primeira extensão física no dispositivo subjacente |
| Attr | Status do volume físico: (a)llocalizável ou e(x)portado. |
| Fmt |
O formato dos metadados do volume físico ( |
| PFree | O espaço livre restante no volume físico |
| PV | O nome do volume físico |
| Atribuir | Número de extensões físicas utilizadas |
| PE | Número de extensões físicas |
| SSize | O tamanho do segmento do volume físico |
| Início | A extensão física inicial do segmento de volume físico |
| PSize | O tamanho do volume físico |
| Etiquetas PV | Etiquetas LVM anexadas ao volume físico |
| Usado | A quantidade de espaço atualmente utilizada no volume físico |
| UUID PV | A UUID do volume físico |
O comando pvs
exibe os seguintes campos por padrão: pv_name
, vg_name
, pv_fmt
, pv_attr
, pv_size
, pv_free
. A exibição é ordenada por pv_name
.
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G
/dev/sdd1 new_vg lvm2 a- 17.14G 17.13G
Usando o argumento -v
com o comando pvs
adiciona os seguintes campos à exibição padrão: dev_size
, pv_uuid
.
# pvs -v
Scanning for physical volume names
PV VG Fmt Attr PSize PFree DevSize PV UUID
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G 17.14G onFF2w-1fLC-ughJ-D9eB-M7iv-6XqA-dqGeXY
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G 17.14G Joqlch-yWSj-kuEn-IdwM-01S9-XO8M-mcpsVe
/dev/sdd1 new_vg lvm2 a- 17.14G 17.13G 17.14G yvfvZK-Cf31-j75k-dECm-0RZ3-0dGW-tUqkCS
Você pode usar o argumento --segments
do comando pvs
para exibir informações sobre cada segmento de volume físico. Um segmento é um grupo de extensões. A visualização de um segmento pode ser útil se você quiser ver se seu volume lógico está fragmentado.
O comando pvs --segments
exibe os seguintes campos por padrão: pv_name
, vg_name
, pv_fmt
, pv_attr
, pv_size
, pv_free
, pvseg_start
, pvseg_size
. A exibição é ordenada por pv_name
e pvseg_size
dentro do volume físico.
# pvs --segments
PV VG Fmt Attr PSize PFree Start SSize
/dev/hda2 VolGroup00 lvm2 a- 37.16G 32.00M 0 1172
/dev/hda2 VolGroup00 lvm2 a- 37.16G 32.00M 1172 16
/dev/hda2 VolGroup00 lvm2 a- 37.16G 32.00M 1188 1
/dev/sda1 vg lvm2 a- 17.14G 16.75G 0 26
/dev/sda1 vg lvm2 a- 17.14G 16.75G 26 24
/dev/sda1 vg lvm2 a- 17.14G 16.75G 50 26
/dev/sda1 vg lvm2 a- 17.14G 16.75G 76 24
/dev/sda1 vg lvm2 a- 17.14G 16.75G 100 26
/dev/sda1 vg lvm2 a- 17.14G 16.75G 126 24
/dev/sda1 vg lvm2 a- 17.14G 16.75G 150 22
/dev/sda1 vg lvm2 a- 17.14G 16.75G 172 4217
/dev/sdb1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdc1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdd1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sde1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdf1 vg lvm2 a- 17.14G 17.14G 0 4389
/dev/sdg1 vg lvm2 a- 17.14G 17.14G 0 4389
Você pode usar o comando pvs -a
para ver dispositivos detectados pela LVM que não foram inicializados como volumes físicos da LVM.
# pvs -a
PV VG Fmt Attr PSize PFree
/dev/VolGroup00/LogVol01 -- 0 0
/dev/new_vg/lvol0 -- 0 0
/dev/ram -- 0 0
/dev/ram0 -- 0 0
/dev/ram2 -- 0 0
/dev/ram3 -- 0 0
/dev/ram4 -- 0 0
/dev/ram5 -- 0 0
/dev/ram6 -- 0 0
/dev/root -- 0 0
/dev/sda -- 0 0
/dev/sdb -- 0 0
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G
/dev/sdc -- 0 0
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G
/dev/sdd -- 0 0
/dev/sdd1 new_vg lvm2 a- 17.14G 17.14G
Tabela 9.2, “campos de exibição vgs” lista os argumentos de exibição do comando vgs
, juntamente com o nome do campo como aparece na exibição do cabeçalho e uma descrição do campo.
Tabela 9.2. campos de exibição vgs
Argumento | Cabeçalho | Descrição |
---|---|---|
| #LV | O número de volumes lógicos que o grupo de volumes contém |
| MaxLV | O número máximo de volumes lógicos permitidos no grupo de volume (0 se ilimitado) |
| MaxPV | O número máximo de volumes físicos permitidos no grupo de volume (0 se ilimitado) |
| #PV | O número de volumes físicos que definem o grupo de volumes |
| #SN | O número de instantâneos que o grupo de volume contém |
| Attr | Status do grupo de volume: (w)riteable, (r)eadonly, resi(z)eable, e(x)portted, (p)artial e (c)lustered. |
| #Extremo | O número de extensões físicas no grupo de volume |
| Ext | O tamanho das extensões físicas no grupo de volume |
| Fmt |
O formato dos metadados do grupo de volume ( |
| VFree | Tamanho do espaço livre restante no grupo de volume |
| Grátis | Número de extensões físicas livres no grupo de volume |
| VG | O nome do grupo de volume |
| Seq | Número que representa a revisão do grupo de volume |
| VSize | O tamanho do grupo de volume |
| SYS ID | LVM1 ID do sistema |
| Tags VG | Etiquetas LVM anexadas ao grupo de volume |
| VG UUID | A UUID do grupo de volume |
O comando vgs
exibe os seguintes campos por padrão: vg_name
, pv_count
, lv_count
, snap_count
, vg_attr
, vg_size
, vg_free
. A exibição é ordenada por vg_name
.
# vgs
VG #PV #LV #SN Attr VSize VFree
new_vg 3 1 1 wz--n- 51.42G 51.36G
Usando o argumento -v
com o comando vgs
adiciona os seguintes campos à exibição padrão: vg_extent_size
, vg_uuid
.
# vgs -v
Finding all volume groups
Finding volume group "new_vg"
VG Attr Ext #PV #LV #SN VSize VFree VG UUID
new_vg wz--n- 4.00M 3 1 1 51.42G 51.36G jxQJ0a-ZKk0-OpMO-0118-nlwO-wwqd-fD5D32
Tabela 9.3, “campos de exibição de lvs” lista os argumentos de exibição do comando lvs
, juntamente com o nome do campo como aparece na exibição do cabeçalho e uma descrição do campo.
Em versões posteriores do Red Hat Enterprise Linux, a saída do comando lvs
pode ser diferente, com campos adicionais na saída. A ordem dos campos, entretanto, permanecerá a mesma e quaisquer campos adicionais aparecerão no final da exibição.
Tabela 9.3. campos de exibição de lvs
Argumento | Cabeçalho | Descrição |
---|---|---|
*
* | Pedaço | Tamanho da unidade em um volume instantâneo |
| Cópia% |
A porcentagem de sincronização de um volume lógico espelhado; também usada quando os extensões físicas estão sendo movidos com o comando |
| Dispositivos | Os dispositivos subjacentes que compõem o volume lógico: os volumes físicos, os volumes lógicos e os extensões físicas e lógicas iniciais |
| Ancestrais | Para fotos de piscinas finas, os antepassados do volume lógico |
| Descendentes | Para fotos de piscinas finas, os descendentes do volume lógico |
| Attr | O status do volume lógico. Os bits do atributo volume lógico são os seguintes: * Bit 1: Tipo de volume: (m)irritado, (M)irritado sem sincronia inicial, (o)rigin, (O)rigin com foto de fusão, (r)aid, ®aid sem sincronia inicial, (s)napshot, (S)napshot, (p)vmove, (v)irtual, espelho ou raid (i)mage, espelho ou raid (I)mage out-of-sync, espelho (l)og dispositivo, sob (c)onversion, thin (V)olume, (t)hin pool, (T)hin pool data, raid ou thin pool m(e)tadata ou pool metadata spare, * Bit 2: Permissões: (w)riteable, (r)ead-only, ®ead-only activation of non-read-only volume
* Bit 3: Política de alocação: (a)nywhere, (c)ontiguous, (i)nherited, c(l)ing, (n)ormal. Isto é capitalizado se o volume estiver atualmente bloqueado contra mudanças de alocação, por exemplo, durante a execução do comando * Bit 4: fixo (m)inor * Bit 5: Estado: (a)ctive, (s)uspended, (I)nvalid snapshot, invalid (S)uspended snapshot, snapshot (m)erge failed, suspended snapshot (M)erge failed, mapped (d)evice present without tables, mapped device present with (i)nactive table * Bit 6: dispositivo (o)caneta * Bit 7: Tipo de alvo: (m)irritor, (r)aid, (s)napshot, (t)hin, (u)nknown, (v)irtual. Isto agrupa volumes lógicos relacionados com o mesmo alvo central. Assim, por exemplo, imagens de espelho, logs de espelho assim como os próprios espelhos aparecem como (m) se eles usarem o driver do kernel do dispositivo original, enquanto que os equivalentes de raid usando o driver do kernel do md raid aparecem todos como (r). Instantâneos usando o driver do dispositivo original aparecem como (s), enquanto que instantâneos de volumes finos usando o driver de provisionamento fino aparecem como (t). * Bit 8: Os blocos de dados recém-alocados são sobrescritos com blocos de (z)eroes antes do uso.
* Bit 9: Volume Saúde: (p)artial, (r)efresh needed, (m)ismatches exist, (w)ritemostly. (p)artial significa que um ou mais dos Volumes Físicos que este Volume Lógico utiliza está faltando no sistema. (r)efresh significa que um ou mais dos Volumes Físicos que este Volume Lógico RAID utiliza sofreu um erro de escrita. O erro de escrita pode ser devido a uma falha temporária desse Volume Físico ou a uma indicação de que ele está falhando. O dispositivo deve ser atualizado ou substituído. (m)ismatches significa que o volume lógico RAID tem partes da matriz que não são coerentes. Inconsistências são descobertas ao iniciar uma operação em * Bit 10: ativação s(k)ip: este volume é sinalizado para ser pulado durante a ativação. |
| KMaj | Número real do dispositivo principal do volume lógico (-1 se inativo) |
| KMIN | Número real do dispositivo menor do volume lógico (-1 se inativo) |
| Maj | O número do dispositivo principal persistente do volume lógico (-1 se não especificado) |
| Min | O número de dispositivo menor persistente do volume lógico (-1 se não especificado) |
| LV | O nome do volume lógico |
| LSize | O tamanho do volume lógico |
| Tags LV | Etiquetas LVM anexadas ao volume lógico |
| UUID LV | A UUID do volume lógico. |
| Log | Dispositivo sobre o qual reside o registro espelho |
| Módulos | Objetivo correspondente do gerador de dispositivos do núcleo, necessário para usar este volume lógico |
| Mudança |
Fonte volume físico de um volume lógico temporário criado com o comando |
| Origem | O dispositivo de origem de um volume instantâneo |
*
* | Região | O tamanho da unidade de um volume lógico espelhado |
| #Seg | O número de segmentos no volume lógico |
| SSize | O tamanho dos segmentos no volume lógico |
| Início | Deslocamento do segmento no volume lógico |
| Etiquetas de segmento | Etiquetas LVM anexadas aos segmentos do volume lógico |
| Tipo | O tipo de segmento de um volume lógico (por exemplo: espelho, listrado, linear) |
| Snap% | Porcentagem atual de um volume de instantâneo que está em uso |
| #Str | Número de listras ou espelhos em um volume lógico |
*
* | Listra | Tamanho da unidade da listra em um volume lógico listrado |
O comando lvs
fornece a seguinte exibição por padrão. A exibição padrão é ordenada por vg_name
e lv_name
dentro do grupo de volume.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
origin VG owi-a-s--- 1.00g
snap VG swi-a-s--- 100.00m origin 0.00
Um uso comum do comando lvs
é anexar devices
ao comando para exibir os dispositivos subjacentes que compõem o volume lógico. Este exemplo também especifica a opção -a
para exibir os volumes internos que são componentes dos volumes lógicos, tais como espelhos RAID, entre parênteses. Este exemplo inclui um volume RAID, um volume listrado, e um volume ligeiramente polarizado.
# lvs -a -o +devices
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
raid1 VG rwi-a-r--- 1.00g 100.00 raid1_rimage_0(0),raid1_rimage_1(0)
[raid1_rimage_0] VG iwi-aor--- 1.00g /dev/sde1(7041)
[raid1_rimage_1] VG iwi-aor--- 1.00g /dev/sdf1(7041)
[raid1_rmeta_0] VG ewi-aor--- 4.00m /dev/sde1(7040)
[raid1_rmeta_1] VG ewi-aor--- 4.00m /dev/sdf1(7040)
stripe1 VG -wi-a----- 99.95g /dev/sde1(0),/dev/sdf1(0)
stripe1 VG -wi-a----- 99.95g /dev/sdd1(0)
stripe1 VG -wi-a----- 99.95g /dev/sdc1(0)
[lvol0_pmspare] rhel_host-083 ewi------- 4.00m /dev/vda2(0)
pool00 rhel_host-083 twi-aotz-- <4.79g 72.90 54.69 pool00_tdata(0)
[pool00_tdata] rhel_host-083 Twi-ao---- <4.79g /dev/vda2(1)
[pool00_tmeta] rhel_host-083 ewi-ao---- 4.00m /dev/vda2(1226)
root rhel_host-083 Vwi-aotz-- <4.79g pool00 72.90
swap rhel_host-083 -wi-ao---- 820.00m /dev/vda2(1227)
Usando o argumento -v
com o comando lvs
adiciona os seguintes campos à exibição padrão: seg_count
, lv_major
, lv_minor
, lv_kernel_major
, lv_kernel_minor
, lv_uuid
.
# lvs -v
Finding all logical volumes
LV VG #Seg Attr LSize Maj Min KMaj KMin Origin Snap% Move Copy% Log Convert LV UUID
lvol0 new_vg 1 owi-a- 52.00M -1 -1 253 3 LBy1Tz-sr23-OjsI-LT03-nHLC-y8XW-EhCl78
newvgsnap1 new_vg 1 swi-a- 8.00M -1 -1 253 5 lvol0 0.20 1ye1OU-1cIu-o79k-20h2-ZGF0-qCJm-CfbsIx
Você pode usar o argumento --segments
do comando lvs
para exibir informações com colunas padrão que enfatizam as informações do segmento. Quando você usa o argumento segments
, o prefixo seg
é opcional. O comando lvs --segments
exibe os seguintes campos por padrão: lv_name
, vg_name
, lv_attr
, stripes
, segtype
, seg_size
. A exibição padrão é ordenada por vg_name
, lv_name
dentro do grupo de volume, e seg_start
dentro do volume lógico. Se os volumes lógicos estivessem fragmentados, a saída deste comando mostraria isso.
# lvs --segments
LV VG Attr #Str Type SSize
LogVol00 VolGroup00 -wi-ao 1 linear 36.62G
LogVol01 VolGroup00 -wi-ao 1 linear 512.00M
lv vg -wi-a- 1 linear 104.00M
lv vg -wi-a- 1 linear 104.00M
lv vg -wi-a- 1 linear 104.00M
lv vg -wi-a- 1 linear 88.00M
Usando o argumento -v
com o comando lvs --segments
adiciona os seguintes campos à exibição padrão: seg_start
, stripesize
, chunksize
.
# lvs -v --segments
Finding all logical volumes
LV VG Attr Start SSize #Str Type Stripe Chunk
lvol0 new_vg owi-a- 0 52.00M 1 linear 0 0
newvgsnap1 new_vg swi-a- 0 8.00M 1 linear 0 8.00K
O exemplo a seguir mostra a saída padrão do comando lvs
em um sistema com um volume lógico configurado, seguido pela saída padrão do comando lvs
com o argumento segments
especificado.
#lvs
LV VG Attr LSize Origin Snap% Move Log Copy% lvol0 new_vg -wi-a- 52.00M #lvs --segments
LV VG Attr #Str Type SSize lvol0 new_vg -wi-a- 1 linear 52.00M
9.3. Ordenação de relatórios LVM
Normalmente toda a saída do comando lvs
, vgs
, ou pvs
tem que ser gerada e armazenada internamente antes de poder ser classificada e as colunas alinhadas corretamente. Você pode especificar o argumento --unbuffered
para exibir a saída não classificada assim que ela for gerada.
Para especificar uma lista alternativa ordenada de colunas a serem ordenadas, use o argumento -O
de qualquer um dos comandos do relatório. Não é necessário incluir estes campos dentro da própria saída.
O exemplo a seguir mostra a saída do comando pvs
que exibe o nome do volume físico, tamanho e espaço livre.
# pvs -o pv_name,pv_size,pv_free
PV PSize PFree
/dev/sdb1 17.14G 17.14G
/dev/sdc1 17.14G 17.09G
/dev/sdd1 17.14G 17.14G
O exemplo a seguir mostra a mesma saída, ordenada pelo campo de espaço livre.
# pvs -o pv_name,pv_size,pv_free -O pv_free
PV PSize PFree
/dev/sdc1 17.14G 17.09G
/dev/sdd1 17.14G 17.14G
/dev/sdb1 17.14G 17.14G
O exemplo a seguir mostra que você não precisa exibir o campo no qual você está classificando.
# pvs -o pv_name,pv_size -O pv_free
PV PSize
/dev/sdc1 17.14G
/dev/sdd1 17.14G
/dev/sdb1 17.14G
Para exibir uma ordenação inversa, preceda um campo especificado após o argumento -O
com o caracter -
.
# pvs -o pv_name,pv_size,pv_free -O -pv_free
PV PSize PFree
/dev/sdd1 17.14G 17.14G
/dev/sdb1 17.14G 17.14G
/dev/sdc1 17.14G 17.09G
9.4. Especificação das unidades para a exibição de um relatório LVM
Para especificar as unidades para a exibição do relatório da LVM, use o argumento --units
do comando do relatório. Você pode especificar (b)ytes, (k)ilobytes, (m)egabytes, (g)igabytes, (t)erabytes, (e)xabytes, (p)etabytes, e (h)uman-readable. A exibição padrão é legível por humanos. Você pode anular o padrão definindo o parâmetro units
na seção global
do arquivo /etc/lvm/lvm.conf
.
O exemplo a seguir especifica a saída do comando pvs
em megabytes ao invés dos gigabytes padrão.
# pvs --units m
PV VG Fmt Attr PSize PFree
/dev/sda1 lvm2 -- 17555.40M 17555.40M
/dev/sdb1 new_vg lvm2 a- 17552.00M 17552.00M
/dev/sdc1 new_vg lvm2 a- 17552.00M 17500.00M
/dev/sdd1 new_vg lvm2 a- 17552.00M 17552.00M
Por padrão, as unidades são exibidas em potências de 2 (múltiplos de 1024). Pode-se especificar que as unidades sejam exibidas em múltiplos de 1000, capitalizando a especificação da unidade (B, K, M, G, T, H).
O seguinte comando exibe a saída como um múltiplo de 1024, o comportamento padrão.
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 17.14G 17.14G
/dev/sdc1 new_vg lvm2 a- 17.14G 17.09G
/dev/sdd1 new_vg lvm2 a- 17.14G 17.14G
O seguinte comando exibe a saída como um múltiplo de 1000.
# pvs --units G
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 18.40G 18.40G
/dev/sdc1 new_vg lvm2 a- 18.40G 18.35G
/dev/sdd1 new_vg lvm2 a- 18.40G 18.40G
Você também pode especificar (s)ectores (definidos como 512 bytes) ou unidades personalizadas.
O exemplo a seguir mostra a saída do comando pvs
como um número de setores.
# pvs --units s
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 35946496S 35946496S
/dev/sdc1 new_vg lvm2 a- 35946496S 35840000S
/dev/sdd1 new_vg lvm2 a- 35946496S 35946496S
O exemplo a seguir mostra a saída do comando pvs
em unidades de 4 MB.
# pvs --units 4m
PV VG Fmt Attr PSize PFree
/dev/sdb1 new_vg lvm2 a- 4388.00U 4388.00U
/dev/sdc1 new_vg lvm2 a- 4388.00U 4375.00U
/dev/sdd1 new_vg lvm2 a- 4388.00U 4388.00U
9.5. Exibição da saída do comando LVM em formato JSON
Você pode usar a opção --reportformat
dos comandos de exibição da LVM para exibir a saída no formato JSON.
O exemplo a seguir mostra a saída do lvs
no formato padrão padrão.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
my_raid my_vg Rwi-a-r--- 12.00m 100.00
root rhel_host-075 -wi-ao---- 6.67g
swap rhel_host-075 -wi-ao---- 820.00m
O comando a seguir mostra a saída da mesma configuração LVM quando você especifica o formato JSON.
# lvs --reportformat json
{
"report": [
{
"lv": [
{"lv_name":"my_raid", "vg_name":"my_vg", "lv_attr":"Rwi-a-r---", "lv_size":"12.00m", "pool_lv":"", "origin":"", "data_percent":"", "metadata_percent":"", "move_pv":"", "mirror_log":"", "copy_percent":"100.00", "convert_lv":""},
{"lv_name":"root", "vg_name":"rhel_host-075", "lv_attr":"-wi-ao----", "lv_size":"6.67g", "pool_lv":"", "origin":"", "data_percent":"", "metadata_percent":"", "move_pv":"", "mirror_log":"", "copy_percent":"", "convert_lv":""},
{"lv_name":"swap", "vg_name":"rhel_host-075", "lv_attr":"-wi-ao----", "lv_size":"820.00m", "pool_lv":"", "origin":"", "data_percent":"", "metadata_percent":"", "move_pv":"", "mirror_log":"", "copy_percent":"", "convert_lv":""}
]
}
]
}
Você também pode definir o formato do relatório como uma opção de configuração no arquivo /etc/lvm/lvm.conf
, usando a configuração output_format
. A configuração --reportformat
da linha de comando, entretanto, tem precedência sobre esta configuração.
9.6. Exibição do log de comando LVM
Tanto os comandos LVM orientados a relatórios como os orientados a processos podem relatar o log de comando se isso for ativado com a configuração log/report_command_log
. Você pode determinar o conjunto de campos a serem exibidos e ordenados para este relatório.
Os exemplos a seguir configuram o LVM para gerar um relatório de registro completo para os comandos LVM. Neste exemplo, você pode ver que ambos os volumes lógicos lvol0
e lvol1
foram processados com sucesso, assim como o grupo de volumes VG
que contém os volumes.
#lvmconfig --type full log/command_log_selection
command_log_selection="all" #lvs
Logical Volume ============== LV LSize Cpy%Sync lvol1 4.00m 100.00 lvol0 4.00m Command Log =========== Seq LogType Context ObjType ObjName ObjGrp Msg Errno RetCode 1 status processing lv lvol0 vg success 0 1 2 status processing lv lvol1 vg success 0 1 3 status processing vg vg success 0 1 #lvchange -an vg/lvol1
Command Log =========== Seq LogType Context ObjType ObjName ObjGrp Msg Errno RetCode 1 status processing lv lvol1 vg success 0 1 2 status processing vg vg success 0 1
Para mais informações sobre a configuração de relatórios e logs de comando LVM, consulte a página de manual lvmreport
.
Capítulo 10. Configuração de volumes lógicos RAID
Você pode criar, ativar, alterar, remover, exibir e usar volumes LVM RAID.
10.1. Volumes lógicos RAID
O LVM suporta níveis RAID 0, 1, 4, 5, 6, e 10.
Um volume LVM RAID tem as seguintes características:
- Os volumes lógicos RAID criados e gerenciados pela LVM alavancam os drivers de kernel de múltiplos dispositivos (MD).
- Você pode dividir temporariamente as imagens RAID1 da matriz e fundi-las novamente na matriz mais tarde.
- Os volumes LVM RAID suportam snapshots.
Aglomerados
Os volumes lógicos RAID não são sensíveis a aglomerações.
Embora você possa criar e ativar volumes lógicos RAID exclusivamente em uma máquina, você não pode ativá-los simultaneamente em mais de uma máquina.
Subvolumes
Quando você cria um volume lógico RAID, o LVM cria um subvolume de metadados que é uma extensão em tamanho para cada dado ou subvolume de paridade na matriz.
Por exemplo, a criação de uma matriz RAID1 de duas vias resulta em dois subvolumes de metadados (lv_rmeta_0
e lv_rmeta_1
) e dois subvolumes de dados (lv_rimage_0
e lv_rimage_1
). Da mesma forma, criar uma faixa de 3 vias (mais 1 dispositivo de paridade implícita) RAID4 resulta em 4 subvolumes de metadados (lv_rmeta_0
, lv_rmeta_1
, lv_rmeta_2
, e lv_rmeta_3
) e 4 subvolumes de dados (lv_rimage_0
, lv_rimage_1
, lv_rimage_2
, e lv_rimage_3
).
Integridade
Você pode perder dados quando um dispositivo RAID falha ou quando ocorre corrupção suave. A corrupção suave no armazenamento de dados implica que os dados recuperados de um dispositivo de armazenamento são diferentes dos dados gravados naquele dispositivo. A adição de integridade a um RAID LV ajuda a mitigar ou prevenir a corrupção branda. Para saber mais sobre corrupção branda e como adicionar integridade a um RAID LV, consulte Seção 10.6, “Usando integridade DM com RAID LV”.
10.2. Níveis RAID e suporte linear
RAID suporta várias configurações, incluindo níveis 0, 1, 4, 5, 6, 10, e linear. Estes tipos de RAID são definidos como segue:
- Nível 0
RAID nível 0, muitas vezes chamado striping, é uma técnica de mapeamento de dados com faixas orientadas para o desempenho. Isto significa que os dados que estão sendo escritos na matriz são divididos em faixas e escritos nos discos dos membros da matriz, permitindo um alto desempenho de E/S a baixo custo inerente, mas não oferece redundância.
Muitas implementações de nível 0 RAID apenas riscam os dados através dos dispositivos membros até o tamanho do menor dispositivo da matriz. Isto significa que se você tiver vários dispositivos com tamanhos ligeiramente diferentes, cada dispositivo é tratado como se fosse do mesmo tamanho que o menor drive. Portanto, a capacidade de armazenamento comum de uma matriz de nível 0 é igual à capacidade do menor disco membro em um RAID de Hardware ou a capacidade da menor partição membro em um RAID de Software multiplicada pelo número de discos ou partições da matriz.
- Nível 1
RAID nível 1, ou mirroring, fornece redundância ao escrever dados idênticos para cada disco membro da matriz, deixando uma cópia "espelhada" em cada disco. O espelhamento permanece popular devido a sua simplicidade e alto nível de disponibilidade de dados. O nível 1 opera com dois ou mais discos, e oferece muito boa confiabilidade dos dados e melhora o desempenho para aplicações de leitura intensiva, mas a um custo relativamente alto.
O nível RAID 1 tem um custo elevado porque você escreve as mesmas informações em todos os discos da matriz, fornece confiabilidade de dados, mas de uma maneira muito menos eficiente em termos de espaço do que os níveis RAID baseados na paridade, como o nível 5. Entretanto, esta ineficiência de espaço vem com um benefício de desempenho: os níveis RAID baseados em paridade consomem consideravelmente mais energia da CPU para gerar a paridade enquanto o nível RAID 1 simplesmente grava os mesmos dados mais de uma vez para os múltiplos membros RAID com muito pouca sobrecarga de CPU. Como tal, o nível RAID 1 pode superar os níveis RAID baseados na paridade em máquinas onde o RAID por software é empregado e os recursos da CPU na máquina são tributados consistentemente com operações que não sejam atividades RAID.
A capacidade de armazenamento da matriz de nível 1 é igual à capacidade do menor disco rígido espelhado em um RAID de hardware ou a menor partição espelhada em um RAID de software. A redundância de nível 1 é a maior possível entre todos os tipos de RAID, sendo que a matriz pode operar com apenas um único disco presente.
- Nível 4
O nível 4 utiliza a paridade concentrada em um único drive de disco para proteger os dados. A informação da paridade é calculada com base no conteúdo do resto dos discos membros da matriz. Esta informação pode então ser usada para reconstruir os dados quando um disco da matriz falhar. Os dados reconstruídos podem então ser usados para satisfazer as solicitações de E/S para o disco com falha antes de ser substituído e para repovoar o disco com falha após a sua substituição.
Como o disco de paridade dedicado representa um gargalo inerente em todas as transações de gravação no array RAID, o nível 4 raramente é usado sem tecnologias de acompanhamento, como o cache de gravação, ou em circunstâncias específicas onde o administrador do sistema está intencionalmente projetando o dispositivo RAID de software com este gargalo em mente (como um array que terá poucas ou nenhumas transações de gravação uma vez que o array estiver preenchido com dados). O RAID nível 4 é tão raramente usado que não está disponível como opção no Anaconda. Entretanto, ele pode ser criado manualmente pelo usuário, se realmente necessário.
A capacidade de armazenamento do Hardware RAID nível 4 é igual à capacidade da menor partição membro multiplicada pelo número de partições minus one. O desempenho de uma matriz RAID nível 4 é sempre assimétrico, o que significa que a leitura é melhor que a escrita. Isto porque as gravações consomem CPU extra e largura de banda da memória principal ao gerar paridade, e também consomem largura de banda extra do barramento ao escrever os dados reais em discos, porque você está escrevendo não apenas os dados, mas também a paridade. As leituras só precisam ler os dados e não a paridade, a menos que a matriz esteja em um estado degradado. Como resultado, as leituras geram menos tráfego para os discos e através dos ônibus do computador para a mesma quantidade de transferência de dados em condições normais de operação.
- Nível 5
Este é o tipo mais comum de RAID. Ao distribuir a paridade entre todas as unidades de disco de um array, o RAID nível 5 elimina o gargalo de gravação inerente ao nível 4. O único gargalo de desempenho é o próprio processo de cálculo da paridade. Com CPUs e software RAID modernos, isso normalmente não é um gargalo, uma vez que as CPUs modernas podem gerar paridade muito rapidamente. Entretanto, se você tiver um número suficientemente grande de dispositivos membros em uma matriz RAID5 de software, de tal forma que a velocidade de transferência de dados combinados entre todos os dispositivos seja suficientemente alta, então este gargalo pode começar a entrar em jogo.
Assim como no nível 4, o nível 5 tem um desempenho assimétrico e lê textos com um desempenho substancialmente superior ao desempenho. A capacidade de armazenamento do RAID nível 5 é calculada da mesma forma que com o nível 4.
- Nível 6
Este é um nível comum de RAID quando a redundância e preservação de dados, e não o desempenho, são as principais preocupações, mas onde a ineficiência de espaço do nível 1 não é aceitável. O nível 6 utiliza um esquema de paridade complexo para ser capaz de se recuperar da perda de quaisquer dois drives da matriz. Este esquema de paridade complexo cria uma carga de CPU significativamente maior nos dispositivos RAID de software e também impõe uma carga maior durante as transações de gravação. Como tal, o nível 6 é consideravelmente mais assimétrico no desempenho do que os níveis 4 e 5.
A capacidade total de uma matriz RAID nível 6 é calculada de forma semelhante ao RAID nível 5 e 4, exceto que você deve subtrair 2 dispositivos (ao invés de 1) da contagem do dispositivo para o espaço de armazenamento da paridade extra.
- Nível 10
Este nível RAID tenta combinar as vantagens de desempenho do nível 0 com a redundância do nível 1. Ele também ajuda a aliviar parte do espaço desperdiçado em matrizes de nível 1 com mais de 2 dispositivos. Com o nível 10, é possível, por exemplo, criar uma matriz de 3 drives configurada para armazenar apenas 2 cópias de cada pedaço de dados, o que então permite que o tamanho total da matriz seja 1,5 vezes o tamanho dos menores dispositivos em vez de apenas igualar o menor dispositivo (como seria com um array de 3 dispositivos, nível 1). Isto evita o uso do processo de CPU para calcular a paridade como com o RAID nível 6, mas é menos eficiente em termos de espaço.
A criação de RAID nível 10 não é suportada durante a instalação. É possível criar um manualmente após a instalação.
- RAID Linear
O RAID linear é um agrupamento de drives para criar um drive virtual maior.
Em RAID linear, os pedaços são alocados sequencialmente de um drive membro, indo para o próximo drive somente quando o primeiro é completamente preenchido. Este agrupamento não oferece nenhum benefício de desempenho, pois é improvável que qualquer operação de E/S seja dividida entre os drives membros. O RAID linear também não oferece redundância e diminui a confiabilidade. Se algum drive membro falhar, não será possível utilizar todo o conjunto. A capacidade é o total de todos os discos dos membros.
10.3. Tipos de segmentos RAID LVM
Para criar um volume lógico RAID, você especifica um tipo de raid como o argumento --type
do comando lvcreate
. A tabela a seguir descreve os possíveis tipos de segmentos RAID.
Para a maioria dos usuários, especificar um dos cinco tipos primários disponíveis (raid1
, raid4
, raid5
, raid6
, raid10
) deve ser suficiente.
Tabela 10.1. Tipos de segmentos RAID LVM
Tipo de segmento | Descrição |
---|---|
|
Espelhamento RAID1. Este é o valor padrão para o argumento |
| Disco de paridade dedicado RAID4 |
|
O mesmo que |
|
|
|
|
|
|
|
|
|
O mesmo que |
|
|
|
|
|
|
|
|
| Striping. RAID0 espalha dados lógicos de volume através de múltiplos subvolumes de dados em unidades de tamanho de listra. Isto é usado para aumentar o desempenho. Os dados de volume lógico serão perdidos se qualquer um dos subvolumes de dados falhar. |
10.4. Criação de volumes lógicos RAID
Esta seção fornece exemplos de comandos que criam diferentes tipos de volume lógico RAID.
Você pode criar matrizes RAID1 com diferentes números de cópias de acordo com o valor especificado para o argumento -m
. Da mesma forma, você especifica o número de faixas para um volume lógico RAID 4/5/6 com o -i argument
. Você também pode especificar o tamanho das faixas com o argumento -I
.
O seguinte comando cria uma matriz RAID1 de 2 vias chamada my_lv
no grupo de volume my_vg
que é de um gigabyte em tamanho.
# lvcreate --type raid1 -m 1 -L 1G -n my_lv my_vg
O seguinte comando cria uma matriz RAID5 (3 stripes 1 unidade de paridade implícita) chamada my_lv
no grupo de volume my_vg
que é um gigabyte em tamanho. Observe que você especifica o número de faixas exatamente como faz para um volume de faixas LVM; o número correto de unidades de paridade é adicionado automaticamente.
# lvcreate --type raid5 -i 3 -L 1G -n my_lv my_vg
O seguinte comando cria um array RAID6 (3 stripes 2 unidades de paridade implícita) chamado my_lv
no grupo de volume my_vg
que é um gigabyte em tamanho.
# lvcreate --type raid6 -i 3 -L 1G -n my_lv my_vg
10.5. Criação de um volume lógico RAID0 (listrado)
Um volume lógico RAID0 espalha dados lógicos de volume através de múltiplos subvolumes de dados em unidades de tamanho de faixa.
O formato para o comando para criar um volume RAID0 é o seguinte.
lvcreate --type raid0[_meta] --stripes Stripes --stripesize StripeSize VolumeGroup [PhysicalVolumePath...]
Tabela 10.2. Parâmetros de criação de comandos RAID0
Parâmetro | Descrição |
---|---|
|
A especificação |
| Especifica o número de dispositivos para distribuir o volume lógico. |
| Especifica o tamanho de cada listra em kilobytes. Esta é a quantidade de dados que é escrita em um dispositivo antes de passar para o dispositivo seguinte. |
| Especifica o grupo de volume a ser utilizado. |
| Especifica os dispositivos a serem utilizados. Se isto não for especificado, a LVM escolherá o número de dispositivos especificados pela opção Stripes, um para cada faixa. |
Este procedimento de exemplo cria um volume lógico LVM RAID0 chamado mylv
que risca os dados nos discos em /dev/sda1
, /dev/sdb1
, e /dev/sdc1
.
Rotule os discos que você usará no grupo de volume como volumes físicos LVM com o comando
pvcreate
.AtençãoEste comando destrói quaisquer dados em
/dev/sda1
,/dev/sdb1
, e/dev/sdc1
.#
pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1
Physical volume "/dev/sda1" successfully created Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully createdCriar o grupo de volume
myvg
. O seguinte comando cria o grupo de volumemyvg
.#
vgcreate myvg /dev/sda1 /dev/sdb1 /dev/sdc1
Volume group "myvg" successfully createdVocê pode usar o comando
vgs
para exibir os atributos do novo grupo de volume.#
vgs
VG #PV #LV #SN Attr VSize VFree myvg 3 0 0 wz--n- 51.45G 51.45GCrie um volume lógico RAID0 a partir do grupo de volume que você criou. O seguinte comando cria o volume RAID0
mylv
a partir do grupo de volumemyvg
. Este exemplo cria um volume lógico de 2 gigabytes de tamanho, com três faixas e uma faixa de 4 kilobytes.#
lvcreate --type raid0 -L 2G --stripes 3 --stripesize 4 -n mylv myvg
Rounding size 2.00 GiB (512 extents) up to stripe boundary size 2.00 GiB(513 extents). Logical volume "mylv" created.Criar um sistema de arquivo no volume lógico RAID0. O seguinte comando cria um sistema de arquivo em
ext4
no volume lógico.#
mkfs.ext4 /dev/myvg/mylv
mke2fs 1.44.3 (10-July-2018) Creating filesystem with 525312 4k blocks and 131376 inodes Filesystem UUID: 9d4c0704-6028-450a-8b0a-8875358c0511 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: doneOs seguintes comandos montam o volume lógico e informam o uso do espaço em disco do sistema de arquivos.
#
mount /dev/myvg/mylv /mnt
#df
Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/myvg-mylv 2002684 6168 1875072 1% /mnt
10.6. Usando integridade DM com RAID LV
Enquanto o RAID ajuda a evitar a perda de dados quando um dispositivo falha, o uso da integridade do mapeador de dispositivos (DM) com um RAID LV reduz o risco de perda de dados quando os dados em um dispositivo RAID são corrompidos. Leia esta seção para saber mais sobre como você pode proteger seus dados contra corrupção suave com a integridade do DM.
10.6.1. Proteção de dados com integridade de DM
Dependendo do tipo de configuração, um RAID LV evita a perda de dados quando um dispositivo falha. Se um dispositivo que compreende uma matriz RAID falhar, os dados podem ser recuperados de outros dispositivos que fazem parte desse RAID LV. Entretanto, uma configuração RAID não garante a integridade dos dados em si. Corrupção leve, corrupção silenciosa, erros leves e erros silenciosos são termos que descrevem dados que se tornaram corrompidos, mesmo que o projeto do sistema e o software continuem a funcionar como esperado.
A corrupção suave no armazenamento de dados implica que os dados recuperados de um dispositivo de armazenamento são diferentes dos dados escritos para aquele dispositivo. Os dados corrompidos podem existir indefinidamente nos dispositivos de armazenamento. Você pode não descobrir estes dados corrompidos até que recupere e tente usar estes dados.
A integridade é usada com níveis RAID 1, 4, 5, 6 e 10 para ajudar a mitigar ou prevenir a perda de dados devido à corrupção suave. A camada RAID garante que uma cópia não corrompida dos dados possa corrigir os erros de corrupção suave. A camada de integridade fica acima de cada imagem RAID enquanto um sub LV extra armazena os metadados de integridade (checksums de dados) para cada imagem RAID. Quando se recupera dados de um RAID LV com integridade, os checksums dos dados de integridade analisam os dados quanto à corrupção. Se for detectada corrupção, a camada de integridade retorna uma mensagem de erro, e a camada RAID recupera uma cópia não corrompida dos dados de outra imagem RAID. A camada RAID reescreve automaticamente os dados não corrompidos sobre os dados corrompidos para reparar a corrupção suave.
Você pode adicionar integridade de DM a um RAID LV ao criá-lo, ou pode adicionar integridade de DM a um RAID LV que já existe. Ao criar um RAID LV com integridade, ou adicionar integridade a um já existente, é necessário espaço de armazenamento adicional para os metadados de integridade. Para cada imagem RAID, cada 500MB de dados requer 4MB de espaço de armazenamento adicional para armazenar os metadados de integridade.
10.6.1.1. Considerações ao adicionar a integridade de DM
Ao criar um novo RAID LV com integridade DM ou adicionar integridade a um RAID LV existente, certas considerações se aplicam:
- A integridade do DM requer espaço de armazenamento adicional porque adiciona checksums aos dados.
- Enquanto algumas configurações RAID são mais impactadas do que outras, adicionar a integridade da DM afeta o desempenho devido à latência ao acessar os dados. Uma configuração RAID1 normalmente oferece melhor desempenho do que o RAID5 ou suas variantes.
- O tamanho do bloco de integridade RAID também impacta o desempenho. A configuração de um bloco de integridade RAID de tamanho maior oferece melhor desempenho. Entretanto, um tamanho de bloco de integridade RAID menor oferece maior retrocompatibilidade.
- Há dois modos de integridade disponíveis: bitmap ou diário. O modo de integridade bitmap normalmente oferece melhor desempenho do que o modo de diário.
Se você tiver problemas de desempenho, recomendamos que você use RAID1 com integridade ou que teste o desempenho de uma configuração RAID particular para garantir que ela atenda às suas exigências.
10.6.2. Criando um RAID LV com integridade DM
Quando você cria um RAID LV, adicionar a integridade do DM ajuda a mitigar o risco de perda de dados devido à corrupção suave.
Pré-requisitos
- Você deve ter acesso à raiz.
Procedimento
Para criar um RAID LV com integridade DM, execute o seguinte comando:
# lvcreate --type <raid-level> --raidintegrity y -L <usable-size> -n <logical-volume> <volume-group>
onde
<raid-level>
- Especifica o nível RAID do RAID LV que você deseja criar.
<usable-size>
- Especifica o tamanho utilizável em MB.
<logical-volume>
- Especifica o nome do LV que você deseja criar.
<volume-group>
- Especifica o nome do grupo de volume que você deseja criar o RAID LV sob.
No exemplo a seguir, criamos um RAID LV com integridade chamado test-lv
no grupo de volume test-vg
, com um tamanho utilizável de 256M e RAID nível 1.
Exemplo RAID LV com integridade
# lvcreate --type raid1 --raidintegrity y -L256M -n test-lv test-vg Creating integrity metadata LV test-lv_rimage_0_imeta with size 8.00 MiB. Logical volume "test-lv_rimage_0_imeta" created. Creating integrity metadata LV test-lv_rimage_1_imeta with size 8.00 MiB. Logical volume "test-lv_rimage_1_imeta" created. Logical volume "test-lv" created.
10.6.3. Adicionando a integridade de DM a um RAID LV existente
Você pode adicionar integridade de DM a um RAID LV existente para ajudar a mitigar o risco de perda de dados devido à corrupção suave.
Pré-requisitos
- Você deve ter acesso à raiz.
Procedimento
Para adicionar integridade de DM a um RAID LV existente, execute o seguinte comando:
# lvconvert --raidintegrity y <volume-group>/<logical-volume>
onde
<volume-group>
- Especifica o nome do grupo de volume que você deseja criar o RAID LV sob.
<logical-volume>
- Especifica o nome do LV que você deseja criar.
10.6.4. Removendo a integridade de um RAID LV
A adição de integridade a um RAID LV limita o número de operações que você pode realizar nesse RAID LV. Portanto, você deve remover a integridade antes de executar determinadas operações.
Pré-requisitos
- Você deve ter acesso à raiz.
Procedimento
Para remover a integridade de um RAID LV, execute o seguinte comando:
# lvconvert --raidintegrity n <volume-group>/<logical-volume>
onde
<volume-group>
- Especifica o nome do grupo de volume que você deseja criar o RAID LV sob.
<logical-volume>
- Especifica o nome do LV que você deseja criar.
10.6.5. Visualizando informações sobre integridade da DM
Quando você criar um RAID LV com integridade ou quando adicionar integridade a um RAID LV existente, use o seguinte comando para visualizar informações sobre a integridade:
# lvs -a <volume-group>
onde <volume-group> é o nome do grupo de volume que contém o RAID LV com integridade.
O exemplo a seguir mostra informações sobre o test-lv
RAID LV que foi criado no grupo de volume test-vg
.
# lvs -a test-vg LV VG Attr LSize Origin Cpy%Sync test-lv test-vg rwi-a-r--- 256.00m 2.10 [test-lv_rimage_0] test-vg gwi-aor--- 256.00m [test-lv_rimage_0_iorig] 93.75 [test-lv_rimage_0_imeta] test-vg ewi-ao---- 8.00m [test-lv_rimage_0_iorig] test-vg -wi-ao---- 256.00m [test-lv_rimage_1] test-vg gwi-aor--- 256.00m [test-lv_rimage_1_iorig] 85.94 [test-lv_rimage_1_imeta] test-vg ewi-ao---- 8.00m [test-lv_rimage_1_iorig] test-vg -wi-ao---- 256.00m [test-lv_rmeta_0] test-vg ewi-aor--- 4.00m [test-lv_rmeta_1] test-vg ewi-aor--- 4.00m
Sincronização
Quando você criar um RAID LV com integridade ou adicionar integridade a um RAID LV existente, recomendamos que você aguarde a sincronização da integridade e os metadados do RAID para completar antes de usar o LV. Caso contrário, a inicialização em segundo plano pode afetar o desempenho do LV. A coluna Cpy%Sync
indica o progresso da sincronização tanto para o RAID LV de nível superior quanto para cada imagem RAID. A imagem RAID é indicada na coluna LV por raid_image_N
. Consulte a coluna LV para garantir que o progresso da sincronização exiba 100%
para o nível superior do RAID LV e para cada imagem RAID.
Imagens RAID usando integridade
O atributo g
nos atributos listados sob a coluna Attr
indica que a imagem RAID está usando integridade. Os checksums de integridade são armazenados no _imeta
RAID LV.
Para exibir o tipo para cada RAID LV, adicione a opção -o segtype
ao comando lvs
:
# lvs -a my-vg -o+segtype LV VG Attr LSize Origin Cpy%Sync Type test-lv test-vg rwi-a-r--- 256.00m 87.96 raid1 [test-lv_rimage_0] test-vg gwi-aor--- 256.00m [test-lv_rimage_0_iorig] 100.00 integrity [test-lv_rimage_0_imeta] test-vg ewi-ao---- 8.00m linear [test-lv_rimage_0_iorig] test-vg -wi-ao---- 256.00m linear [test-lv_rimage_1] test-vg gwi-aor--- 256.00m [test-lv_rimage_1_iorig] 100.00 integrity [test-lv_rimage_1_imeta] test-vg ewi-ao---- 8.00m linear [test-lv_rimage_1_iorig] test-vg -wi-ao---- 256.00m linear [test-lv_rmeta_0] test-vg ewi-aor--- 4.00m linear [test-lv_rmeta_1] test-vg ewi-aor--- 4.00m linear
Desajustes de integridade
Há um contador incremental que conta o número de desajustes detectados em cada imagem RAID. Para visualizar os descasamentos de dados detectados pela integridade em uma determinada imagem RAID, execute o seguinte comando:
# lvs -o integritymismatches <volume-group>/<logical-volume>_raid-image_<n>
onde
<volume-group>
- Especifica o nome do grupo de volume que você deseja criar o RAID LV sob.
<logical-volume>
- Especifica o nome do LV que você deseja criar.
<n>
- Especifica a imagem RAID para a qual você deseja visualizar as informações de descoordenação de integridade.
Você deve executar o comando para cada imagem RAID que você deseja visualizar. No exemplo a seguir, veremos os desajustes de dados de rimage_0
sob test-vg/test-lv
.
# lvs -o+integritymismatches test-vg/test-lv_rimage_0 LV VG Attr LSize Origin Cpy%Sync IntegMismatches [test-lv_rimage_0] test-vg gwi-aor--- 256.00m [test-lv_rimage_0_iorig] 100.00 0
Podemos ver que a integridade não detectou nenhum desajuste de dados e, portanto, o contador IntegMismatches
mostra zero (0).
Desajustes de integridade nos logs de mensagens do kernel
Você também pode encontrar informações de integridade de dados nos logs de mensagens do kernel, como mostrado nos exemplos a seguir.
Example of dm-integrity mismatches from the kernel message logs
dispositivo-mestre: integridade: dm-12: Checksum falhou no setor 0x24e7
Example of dm-integrity data corrections from the kernel message logs
md/raid1:mdX: erro de leitura corrigido (8 setores em 9448 em dm-16)
10.6.6. Recursos adicionais
-
Para mais informações sobre todas as opções disponíveis, consulte a(s) página(s) de comando
lvmraid
.
10.7. Controlar a taxa de inicialização dos volumes RAID
Quando você cria volumes lógicos RAID10, as E/S de fundo necessárias para inicializar os volumes lógicos com uma operação sync
podem excluir outras operações de E/S para dispositivos LVM, tais como atualizações de metadados de grupos de volumes, particularmente quando você está criando muitos volumes lógicos RAID. Isto pode fazer com que as outras operações LVM diminuam a velocidade.
Você pode controlar a taxa na qual um volume lógico RAID é inicializado, implementando a aceleração da recuperação. Você controla a taxa na qual as operações do sync
são realizadas definindo a taxa mínima e máxima de E/S para essas operações com as opções --minrecoveryrate
e --maxrecoveryrate
do comando lvcreate
. Você especifica estas opções da seguinte forma.
--maxrecoveryrate Rate[bBsSkKmMgG]
Define a taxa máxima de recuperação para um volume lógico RAID, de modo que não exclua as operações de E/S nominais. O Rate é especificado como uma quantidade por segundo para cada dispositivo da matriz. Se nenhum sufixo for dado, então o kiB/sec/dispositivo é assumido. Ajustar a taxa de recuperação para 0 significa que ela não será limitada.
--minrecoveryrate Rate[bBsSkKmMgG]
Define a taxa mínima de recuperação para um volume lógico RAID para garantir que as operações de E/S para
sync
alcancem um rendimento mínimo, mesmo quando a E/S nominal pesada está presente. O Rate é especificado como uma quantidade por segundo para cada dispositivo da matriz. Se nenhum sufixo for dado, então o kiB/sec/dispositivo é assumido.
O seguinte comando cria uma matriz RAID10 de 2 vias com 3 faixas de tamanho de 10 gigabytes com uma taxa máxima de recuperação de 128 kiB/seg/dispositivo. O array é denominado my_lv
e está no grupo de volume my_vg
.
# lvcreate --type raid10 -i 2 -m 1 -L 10G --maxrecoveryrate 128 -n my_lv my_vg
Você também pode especificar taxas de recuperação mínimas e máximas para uma operação de lavagem RAID.
10.8. Conversão de um dispositivo Linear em um dispositivo RAID
Você pode converter um volume lógico linear existente para um dispositivo RAID usando o argumento --type
do comando lvconvert
.
O seguinte comando converte o volume lógico linear my_lv
no grupo de volume my_vg
para uma matriz RAID1 de 2 vias.
# lvconvert --type raid1 -m 1 my_vg/my_lv
Como os volumes lógicos RAID são compostos de pares de metadados e subvolume de dados, quando você converte um dispositivo linear para uma matriz RAID1, um novo subvolume de metadados é criado e associado ao volume lógico original em (um dos) mesmos volumes físicos em que o volume linear está. As imagens adicionais são adicionadas em pares de metadados/subvolume de dados. Por exemplo, se o dispositivo original for o seguinte:
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices
my_lv /dev/sde1(0)
Após a conversão para uma matriz RAID1 de 2 vias, o dispositivo contém os seguintes pares de sub-volumes de dados e metadados:
#lvconvert --type raid1 -m 1 my_vg/my_lv
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(256) [my_lv_rmeta_1] /dev/sdf1(0)
Se a imagem dos metadados que se pareia com o volume lógico original não puder ser colocada no mesmo volume físico, o lvconvert
falhará.
10.9. Conversão de um volume lógico LVM RAID1 para um volume lógico linear LVM
Você pode converter um volume lógico RAID1 LVM existente para um volume lógico linear LVM com o comando lvconvert
, especificando o argumento -m0
. Isto remove todos os subvolumes de dados RAID e todos os subvolumes de metadados RAID que compõem a matriz RAID, deixando a imagem RAID1 de nível superior como o volume lógico linear.
O exemplo a seguir mostra um volume lógico LVM RAID1 existente.
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices
my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0)
[my_lv_rimage_0] /dev/sde1(1)
[my_lv_rimage_1] /dev/sdf1(1)
[my_lv_rmeta_0] /dev/sde1(0)
[my_lv_rmeta_1] /dev/sdf1(0)
O seguinte comando converte o volume lógico LVM RAID1 my_vg/my_lv
para um dispositivo linear LVM.
#lvconvert -m0 my_vg/my_lv
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv /dev/sde1(1)
Ao converter um volume lógico LVM RAID1 para um volume linear LVM, é possível especificar quais volumes físicos devem ser removidos. O seguinte exemplo mostra o layout de um volume lógico LVM RAID1 composto de duas imagens: /dev/sda1
e /dev/sdb1
. Neste exemplo, o comando lvconvert
especifica que você deseja remover /dev/sda1
, deixando /dev/sdb1
como o volume físico que compõe o dispositivo linear.
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sda1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rmeta_0] /dev/sda1(0) [my_lv_rmeta_1] /dev/sdb1(0) #lvconvert -m0 my_vg/my_lv /dev/sda1
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv /dev/sdb1(1)
10.10. Conversão de um dispositivo LVM espelhado em um dispositivo RAID1
Você pode converter um dispositivo LVM espelhado existente com um tipo de segmento mirror
para um dispositivo LVM RAID1 com o comando lvconvert
, especificando o argumento --type raid1
. Isto renomeia os subvolumes espelhados (mimage
) para subvolumes RAID (rimage
). Além disso, o registro espelho é removido e os subvolumes de metadados (rmeta
) são criados para os subvolumes de dados nos mesmos volumes físicos que os subvolumes de dados correspondentes.
O exemplo a seguir mostra o layout de um volume lógico espelhado my_vg/my_lv
.
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices
my_lv 15.20 my_lv_mimage_0(0),my_lv_mimage_1(0)
[my_lv_mimage_0] /dev/sde1(0)
[my_lv_mimage_1] /dev/sdf1(0)
[my_lv_mlog] /dev/sdd1(0)
O seguinte comando converte o volume lógico espelhado my_vg/my_lv
para um volume lógico RAID1.
#lvconvert --type raid1 my_vg/my_lv
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(0) [my_lv_rmeta_0] /dev/sde1(125) [my_lv_rmeta_1] /dev/sdf1(125)
10.11. Redimensionamento de um volume lógico RAID
Você pode redimensionar um volume lógico RAID das seguintes maneiras;
-
Você pode aumentar o tamanho de um volume lógico RAID de qualquer tipo com o comando
lvresize
oulvextend
. Isto não altera o número de imagens RAID. Para volumes lógicos RAID listrados aplicam-se as mesmas restrições de arredondamento de listras que quando se cria um volume lógico RAID listrado.
-
Você pode reduzir o tamanho de um volume lógico RAID de qualquer tipo com o comando
lvresize
oulvreduce
. Isto não altera o número de imagens RAID. Como com o comandolvextend
, aplicam-se as mesmas restrições de arredondamento de listras que quando se cria um volume lógico RAID listrado.
-
Você pode alterar o número de faixas em um volume lógico RAID listrado (
raid4/5/6/10
) com o parâmetro--stripes N
do comandolvconvert
. Isto aumenta ou reduz o tamanho do volume lógico RAID pela capacidade das listras adicionadas ou removidas. Observe que os volumesraid10
são capazes apenas de adicionar listras. Esta capacidade é parte do recurso RAID reshaping que permite alterar os atributos de um volume lógico RAID mantendo o mesmo nível de RAID. Para informações sobre remodelação RAID e exemplos de como usar o comandolvconvert
para remodelar um volume lógico RAID, consulte a página de manuallvmraid
(7).
10.12. Mudando o número de imagens em um dispositivo RAID1 existente
Você pode alterar o número de imagens em uma matriz RAID1 existente, assim como pode alterar o número de imagens na implementação anterior do espelhamento LVM. Use o comando lvconvert
para especificar o número de pares de metadados/dados adicionais a serem adicionados ou removidos.
Quando você adiciona imagens a um dispositivo RAID1 com o comando lvconvert
, você pode especificar o número total de imagens para o dispositivo resultante, ou pode especificar quantas imagens adicionar ao dispositivo. Opcionalmente, você também pode especificar em quais volumes físicos os novos pares de metadados/dados de imagem residirão.
Subvolumes de metadados (denominados rmeta
) sempre existem nos mesmos dispositivos físicos que suas contrapartes de subvolume de dados rimage
). Os pares de metadados/subvolume de dados não serão criados nos mesmos volumes físicos que os de outro par de metadados/subvolume de dados na matriz RAID (a menos que você especifique --alloc anywhere
).
O formato para o comando de adicionar imagens a um volume RAID1 é o seguinte:
lvconvert -m new_absolute_count vg/lv [removable_PVs] lvconvert -m +num_additional_images vg/lv [removable_PVs]
Por exemplo, o seguinte comando exibe o dispositivo LVM my_vg/my_lv
, que é uma matriz RAID1 de 2 vias:
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices
my_lv 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0)
[my_lv_rimage_0] /dev/sde1(0)
[my_lv_rimage_1] /dev/sdf1(1)
[my_lv_rmeta_0] /dev/sde1(256)
[my_lv_rmeta_1] /dev/sdf1(0)
O seguinte comando converte o dispositivo RAID1 de 2 vias my_vg/my_lv
para um dispositivo RAID1 de 3 vias:
#lvconvert -m 2 my_vg/my_lv
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 6.25 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(0) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rimage_2] /dev/sdg1(1) [my_lv_rmeta_0] /dev/sde1(256) [my_lv_rmeta_1] /dev/sdf1(0) [my_lv_rmeta_2] /dev/sdg1(0)
Quando você adiciona uma imagem a uma matriz RAID1, você pode especificar quais volumes físicos usar para a imagem. O seguinte comando converte o dispositivo RAID1 de 2 vias my_vg/my_lv
para um dispositivo RAID1 de 3 vias, especificando que o volume físico /dev/sdd1
seja usado para a matriz:
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 56.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sda1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rmeta_0] /dev/sda1(0) [my_lv_rmeta_1] /dev/sdb1(0) #lvconvert -m 2 my_vg/my_lv /dev/sdd1
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 28.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sda1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sda1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
Para remover imagens de uma matriz RAID1, use o seguinte comando. Quando você remover imagens de um dispositivo RAID1 com o comando lvconvert
, você pode especificar o número total de imagens para o dispositivo resultante, ou você pode especificar quantas imagens a serem removidas do dispositivo. Você também pode especificar opcionalmente os volumes físicos dos quais remover o dispositivo.
lvconvert -m new_absolute_count vg/lv [removable_PVs] lvconvert -m -num_fewer_images vg/lv [removable_PVs]
Além disso, quando uma imagem e seu subvolume de metadados associado são removidos, quaisquer imagens de números mais altos serão deslocadas para baixo para preencher o espaço. Se você remover lv_rimage_1
de uma matriz RAID1 de 3 vias que consiste de lv_rimage_0
, lv_rimage_1
e lv_rimage_2
, isto resulta em uma matriz RAID1 que consiste de lv_rimage_0
e lv_rimage_1
. O subvolume lv_rimage_2
será renomeado e assumirá o slot vazio, tornando-se lv_rimage_1
.
O exemplo a seguir mostra o layout de um volume lógico RAID1 de 3 vias my_vg/my_lv
.
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices
my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
[my_lv_rimage_0] /dev/sde1(1)
[my_lv_rimage_1] /dev/sdf1(1)
[my_lv_rimage_2] /dev/sdg1(1)
[my_lv_rmeta_0] /dev/sde1(0)
[my_lv_rmeta_1] /dev/sdf1(0)
[my_lv_rmeta_2] /dev/sdg1(0)
O seguinte comando converte o volume lógico RAID1 de 3 vias em um volume lógico RAID1 de 2 vias.
#lvconvert -m1 my_vg/my_lv
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdf1(0)
O seguinte comando converte o volume lógico RAID1 de 3 vias em um volume lógico RAID1 de 2 vias, especificando o volume físico que contém a imagem a ser removida como /dev/sde1
.
#lvconvert -m1 my_vg/my_lv /dev/sde1
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sdf1(1) [my_lv_rimage_1] /dev/sdg1(1) [my_lv_rmeta_0] /dev/sdf1(0) [my_lv_rmeta_1] /dev/sdg1(0)
10.13. Separação de uma imagem RAID como um volume lógico separado
Você pode dividir uma imagem de um volume lógico RAID para formar um novo volume lógico.
O formato do comando de divisão de uma imagem RAID é o seguinte:
lvconvert --splitmirrors count -n splitname vg/lv [removable_PVs]
Assim como quando você está removendo uma imagem RAID de um volume lógico RAID1 existente, quando você remove um subvolume de dados RAID (e seu subvolume de metadados associado) do meio do dispositivo quaisquer imagens numeradas superiores serão deslocadas para baixo para preencher o slot. Os números índices nos volumes lógicos que compõem uma matriz RAID serão assim uma seqüência ininterrupta de números inteiros.
Você não pode dividir uma imagem RAID se a matriz RAID1 ainda não estiver em sincronia.
O exemplo seguinte divide um volume lógico RAID1 de 2 vias, my_lv
, em dois volumes lógicos lineares, my_lv
e new
.
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 12.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdf1(0) #lvconvert --splitmirror 1 -n new my_vg/my_lv
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv /dev/sde1(1) new /dev/sdf1(1)
O exemplo a seguir divide um volume lógico RAID1 de 3 vias, my_lv
, em um volume lógico RAID1 de 2 vias, my_lv
, e um volume lógico linear, new
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rimage_2] /dev/sdg1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdf1(0) [my_lv_rmeta_2] /dev/sdg1(0) #lvconvert --splitmirror 1 -n new my_vg/my_lv
#lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdf1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdf1(0) new /dev/sdg1(1)
10.14. Dividindo e fundindo uma imagem RAID
Você pode dividir temporariamente uma imagem de uma matriz RAID1 para uso apenas de leitura enquanto mantém o controle de quaisquer mudanças usando o argumento --trackchanges
em conjunto com o argumento --splitmirrors
do comando lvconvert
. Isto permite que você funda a imagem de volta ao array mais tarde enquanto sincroniza apenas as partes do array que mudaram desde que a imagem foi dividida.
O formato do comando lvconvert
para dividir uma imagem RAID é o seguinte.
lvconvert --splitmirrors count --trackchanges vg/lv [removable_PVs]
Quando você divide uma imagem RAID com o argumento --trackchanges
, você pode especificar qual imagem dividir, mas não pode mudar o nome do volume a ser dividido. Além disso, os volumes resultantes têm as seguintes restrições.
- O novo volume que você cria é somente leitura.
- Não se pode redimensionar o novo volume.
- Não é possível renomear a matriz restante.
- Não é possível redimensionar a matriz restante.
- Você pode ativar o novo volume e a matriz restante independentemente.
Você pode fundir uma imagem que foi dividida com o argumento --trackchanges
especificado, executando um comando lvconvert
subseqüente com o argumento --merge
. Quando você funde a imagem, apenas as partes da matriz que mudaram desde que a imagem foi dividida são sincronizadas novamente.
O formato do comando lvconvert
para fundir uma imagem RAID é o seguinte.
lvconvert --merge raid_image
O exemplo a seguir cria um volume lógico RAID1 e depois separa uma imagem desse volume enquanto acompanha as mudanças na matriz restante.
#lvcreate --type raid1 -m 2 -L 1G -n my_lv my_vg
Logical volume "my_lv" created #lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0) #lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
my_lv_rimage_2 split from my_lv for read-only purposes. Use 'lvconvert --merge my_vg/my_lv_rimage_2' to merge back into my_lv #lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc1(1) my_lv_rimage_2 /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
O exemplo seguinte separa uma imagem de um volume RAID1 enquanto rastreia as mudanças na matriz restante, depois funde o volume de volta à matriz.
#lvconvert --splitmirrors 1 --trackchanges my_vg/my_lv
lv_rimage_1 split from my_lv for read-only purposes. Use 'lvconvert --merge my_vg/my_lv_rimage_1' to merge back into my_lv #lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sdc1(1) my_lv_rimage_1 /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdc1(0) [my_lv_rmeta_1] /dev/sdd1(0) #lvconvert --merge my_vg/my_lv_rimage_1
my_vg/my_lv_rimage_1 successfully merged back into my_vg/my_lv #lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sdc1(1) [my_lv_rimage_1] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sdc1(0) [my_lv_rmeta_1] /dev/sdd1(0)
10.15. Estabelecendo uma política de falhas RAID
LVM RAID trata as falhas de dispositivos de forma automática com base nas preferências definidas pelo campo raid_fault_policy
no arquivo lvm.conf
.
-
Se o campo
raid_fault_policy
estiver configurado paraallocate
, o sistema tentará substituir o dispositivo falhado por um dispositivo de reposição do grupo de volume. Se não houver um dispositivo de reposição disponível, isto será relatado ao registro do sistema. -
Se o campo
raid_fault_policy
estiver configurado parawarn
, o sistema produzirá um aviso e o registro indicará que um dispositivo falhou. Isto permite que o usuário determine o curso de ação a ser tomado.
Enquanto houver dispositivos suficientes para suportar a usabilidade, o volume lógico RAID continuará a operar.
10.15.1. A política de falhas de alocação RAID
No exemplo a seguir, o campo raid_fault_policy
foi ajustado para allocate
no arquivo lvm.conf
. O volume lógico RAID está disposto da seguinte forma.
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices
my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
[my_lv_rimage_0] /dev/sde1(1)
[my_lv_rimage_1] /dev/sdf1(1)
[my_lv_rimage_2] /dev/sdg1(1)
[my_lv_rmeta_0] /dev/sde1(0)
[my_lv_rmeta_1] /dev/sdf1(0)
[my_lv_rmeta_2] /dev/sdg1(0)
Se o dispositivo /dev/sde
falhar, o log do sistema exibirá mensagens de erro.
# grep lvm /var/log/messages
Jan 17 15:57:18 bp-01 lvm[8599]: Device #0 of raid1 array, my_vg-my_lv, has failed.
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at
250994294784: Input/output error
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at
250994376704: Input/output error
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at 0:
Input/output error
Jan 17 15:57:18 bp-01 lvm[8599]: /dev/sde1: read failed after 0 of 2048 at
4096: Input/output error
Jan 17 15:57:19 bp-01 lvm[8599]: Couldn't find device with uuid
3lugiV-3eSP-AFAR-sdrP-H20O-wM2M-qdMANy.
Jan 17 15:57:27 bp-01 lvm[8599]: raid1 array, my_vg-my_lv, is not in-sync.
Jan 17 15:57:36 bp-01 lvm[8599]: raid1 array, my_vg-my_lv, is now in-sync.
Desde que o campo raid_fault_policy
foi ajustado para allocate
, o dispositivo falhado é substituído por um novo dispositivo do grupo de volume.
# lvs -a -o name,copy_percent,devices vg
Couldn't find device with uuid 3lugiV-3eSP-AFAR-sdrP-H20O-wM2M-qdMANy.
LV Copy% Devices
lv 100.00 lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0)
[lv_rimage_0] /dev/sdh1(1)
[lv_rimage_1] /dev/sdf1(1)
[lv_rimage_2] /dev/sdg1(1)
[lv_rmeta_0] /dev/sdh1(0)
[lv_rmeta_1] /dev/sdf1(0)
[lv_rmeta_2] /dev/sdg1(0)
Observe que mesmo que o dispositivo com defeito tenha sido substituído, o visor ainda indica que a LVM não conseguiu encontrar o dispositivo com defeito. Isto porque, embora o dispositivo com falha tenha sido removido do volume lógico RAID, o dispositivo com falha ainda não foi removido do grupo de volume. Para remover o dispositivo com falha do grupo de volume, você pode executar vgreduce --removemissing VG
.
Se o raid_fault_policy
foi configurado para allocate
, mas não há dispositivos de reserva, a alocação falhará, deixando o volume lógico como está. Se a alocação falhar, você tem a opção de consertar o drive, iniciando então a recuperação do dispositivo que falhou com a opção --refresh
do comando lvchange
. Alternativamente, você pode substituir o dispositivo que falhou.
10.15.2. A política de falhas RAID de alerta
No exemplo a seguir, o campo raid_fault_policy
foi ajustado para warn
no arquivo lvm.conf
. O volume lógico RAID está disposto da seguinte forma.
# lvs -a -o name,copy_percent,devices my_vg
LV Copy% Devices
my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0)
[my_lv_rimage_0] /dev/sdh1(1)
[my_lv_rimage_1] /dev/sdf1(1)
[my_lv_rimage_2] /dev/sdg1(1)
[my_lv_rmeta_0] /dev/sdh1(0)
[my_lv_rmeta_1] /dev/sdf1(0)
[my_lv_rmeta_2] /dev/sdg1(0)
Se o dispositivo /dev/sdh
falhar, o log do sistema exibirá mensagens de erro. Neste caso, entretanto, o LVM não tentará reparar o dispositivo RAID automaticamente, substituindo uma das imagens. Ao invés disso, se o dispositivo falhar, você pode substituir o dispositivo com o argumento --repair
do comando lvconvert
.
10.16. Substituição de um dispositivo RAID em um volume lógico
Você pode substituir um dispositivo RAID em um volume lógico.
- Caso não tenha havido nenhuma falha no dispositivo RAID, siga Seção 10.16.1, “Substituindo um dispositivo RAID que não tenha falhado”.
- Caso o dispositivo RAID tenha falhado, siga Seção 10.16.4, “Substituição de um dispositivo RAID falho em um volume lógico”.
10.16.1. Substituindo um dispositivo RAID que não tenha falhado
Para substituir um dispositivo RAID em um volume lógico, use o argumento --replace
do comando lvconvert
.
Pré-requisitos
- O dispositivo RAID não falhou. Os seguintes comandos não funcionarão se o dispositivo RAID falhar.
Procedimento
Substitua o dispositivo RAID:
# lvconvert --replace dev_to_remove vg/lv possible_replacements
- Substitua dev_to_remove com o caminho para o volume físico que você deseja substituir.
- Substitua vg/lv com o grupo de volume e o nome lógico do volume da matriz RAID.
- Substitua possible_replacements com o caminho para o volume físico que você deseja usar como substituto.
Exemplo 10.1. Substituição de um dispositivo RAID1
O exemplo seguinte cria um volume lógico RAID1 e depois substitui um dispositivo nesse volume.
Criar a matriz RAID1:
# lvcreate --type raid1 -m 2 -L 1G -n my_lv my_vg Logical volume "my_lv" created
Examine a matriz RAID1:
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdb2(1) [my_lv_rimage_2] /dev/sdc1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdb2(0) [my_lv_rmeta_2] /dev/sdc1(0)
Substitua o volume físico
/dev/sdb2
:# lvconvert --replace /dev/sdb2 my_vg/my_lv
Examine a matriz RAID1 com a substituição:
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 37.50 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sdb1(1) [my_lv_rimage_1] /dev/sdc2(1) [my_lv_rimage_2] /dev/sdc1(1) [my_lv_rmeta_0] /dev/sdb1(0) [my_lv_rmeta_1] /dev/sdc2(0) [my_lv_rmeta_2] /dev/sdc1(0)
Exemplo 10.2. Especificação do volume físico de reposição
O exemplo seguinte cria um volume lógico RAID1 e depois substitui um dispositivo nesse volume, especificando qual volume físico usar para a substituição.
Criar a matriz RAID1:
# lvcreate --type raid1 -m 1 -L 100 -n my_lv my_vg Logical volume "my_lv" created
Examine a matriz RAID1:
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sda1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rmeta_0] /dev/sda1(0) [my_lv_rmeta_1] /dev/sdb1(0)
Examinar os volumes físicos:
# pvs PV VG Fmt Attr PSize PFree /dev/sda1 my_vg lvm2 a-- 1020.00m 916.00m /dev/sdb1 my_vg lvm2 a-- 1020.00m 916.00m /dev/sdc1 my_vg lvm2 a-- 1020.00m 1020.00m /dev/sdd1 my_vg lvm2 a-- 1020.00m 1020.00m
Substituir o volume físico
/dev/sdb1
por/dev/sdd1
:# lvconvert --replace /dev/sdb1 my_vg/my_lv /dev/sdd1
Examine a matriz RAID1 com a substituição:
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 28.00 my_lv_rimage_0(0),my_lv_rimage_1(0) [my_lv_rimage_0] /dev/sda1(1) [my_lv_rimage_1] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sda1(0) [my_lv_rmeta_1] /dev/sdd1(0)
Exemplo 10.3. Substituição de múltiplos dispositivos RAID
Você pode substituir mais de um dispositivo RAID de cada vez especificando vários argumentos replace
, como no exemplo a seguir.
Criar uma matriz RAID1:
# lvcreate --type raid1 -m 2 -L 100 -n my_lv my_vg Logical volume "my_lv" created
Examine a matriz RAID1:
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sda1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rimage_2] /dev/sdc1(1) [my_lv_rmeta_0] /dev/sda1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdc1(0)
Substitua os volumes físicos
/dev/sdb1
e/dev/sdc1
:# lvconvert --replace /dev/sdb1 --replace /dev/sdc1 my_vg/my_lv
Examine a matriz RAID1 com os substitutos:
# lvs -a -o name,copy_percent,devices my_vg LV Copy% Devices my_lv 60.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sda1(1) [my_lv_rimage_1] /dev/sdd1(1) [my_lv_rimage_2] /dev/sde1(1) [my_lv_rmeta_0] /dev/sda1(0) [my_lv_rmeta_1] /dev/sdd1(0) [my_lv_rmeta_2] /dev/sde1(0)
10.16.2. Dispositivos falhados em RAID LVM
RAID não é como o tradicional espelhamento LVM. O espelhamento LVM exigia a remoção de dispositivos com falhas ou o volume lógico do espelhamento seria pendurado. As matrizes RAID podem continuar a funcionar com dispositivos com falhas. Na verdade, para outros tipos de RAID além do RAID1, remover um dispositivo significaria converter para um RAID de nível inferior (por exemplo, de RAID6 para RAID5, ou de RAID4 ou RAID5 para RAID0).
Portanto, ao invés de remover incondicionalmente e potencialmente alocar um dispositivo falhado, o LVM permite substituir um dispositivo falhado em um volume RAID em uma solução de uma etapa, usando o argumento --repair
do comando lvconvert
.
10.16.3. Recuperando um dispositivo RAID falho em um volume lógico
Se a falha do dispositivo LVM RAID for uma falha transitória ou se você for capaz de reparar o dispositivo que falhou, você pode iniciar a recuperação do dispositivo que falhou.
Pré-requisitos
- O dispositivo anteriormente falhado está agora funcionando.
Procedimento
Atualize o volume lógico que contém o dispositivo RAID:
# lvchange --refresh my_vg/my_lv
Etapas de verificação
Examine o volume lógico com o dispositivo recuperado:
# lvs -- todas --opções nome,dispositivos,lv_attr,lv_health_status my_vg
10.16.4. Substituição de um dispositivo RAID falho em um volume lógico
Este procedimento substitui um dispositivo falho que serve como volume físico em um volume lógico LVM RAID.
Pré-requisitos
O grupo de volume inclui um volume físico que fornece capacidade livre suficiente para substituir o dispositivo avariado.
Se nenhum volume físico com extensões livres suficientes estiver disponível no grupo de volume, adicione um novo volume físico suficientemente grande usando o utilitário
vgextend
.
Procedimento
No exemplo a seguir, um volume lógico RAID é apresentado como se segue:
# lvs --all --options name,copy_percent,devices my_vg LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
Se o dispositivo
/dev/sdc
falhar, a saída do comandolvs
é a seguinte:# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] [unknown](1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] [unknown](0) [my_lv_rmeta_2] /dev/sdd1(0)
Substitua o dispositivo que falhou e exiba o volume lógico:
# lvconvert --repair my_vg/my_lv /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Faulty devices in my_vg/my_lv successfully replaced.
Opcional: Para especificar manualmente o volume físico que substitui o dispositivo avariado, adicionar o volume físico no final do comando:
# lvconvert --repare my_vg/my_lv replacement_pv
Examine o volume lógico com o substituto:
# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address /dev/sdc1: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. LV Cpy%Sync Devices my_lv 43.79 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
Até que você remova o dispositivo defeituoso do grupo de volume, as utilidades da LVM ainda indicam que a LVM não consegue encontrar o dispositivo defeituoso.
Remover o dispositivo com defeito do grupo de volume:
# vgreduce --removemissing VG
10.17. Verificação da coerência dos dados em um volume lógico RAID (scrubbing RAID)
O LVM fornece suporte à lavagem de volumes lógicos RAID. A depuração RAID é o processo de leitura de todos os dados e blocos de paridade em uma matriz e verificação para ver se eles são coerentes.
Procedimento
Opcional: Limite a largura de banda de E/S que o processo de depuração utiliza.
Quando você realiza uma operação de scrubbing RAID, as E/S de fundo exigidas pelas operações do
sync
podem excluir outras E/S para dispositivos LVM, tais como atualizações de metadados de grupos de volume. Isto pode fazer com que as outras operações LVM diminuam a velocidade. Você pode controlar a taxa da operação de scrubbing implementando o estrangulamento de recuperação.Adicione as seguintes opções aos comandos
lvchange --syncaction
nos próximos passos:--maxrecoveryrate Rate[bBsSkKmMgG]
- Define a taxa máxima de recuperação de modo que a operação exclua as operações de E/S nominais. Ajustar a taxa de recuperação para 0 significa que a operação não está vinculada.
--minrecoveryrate Rate[bBsSkKmMgG]
-
Define a taxa mínima de recuperação para garantir que as E/S para as operações do site
sync
atinjam um rendimento mínimo, mesmo quando a E/S nominal pesada está presente.
Especifique o valor Rate como um valor por segundo para cada dispositivo da matriz. Se você não fornecer nenhum sufixo, as opções assumem kiB por segundo por dispositivo.
Mostrar o número de discrepâncias na matriz, sem repará-las:
# lvchange - verificação de sincronia vg/raid_lv
Corrigir as discrepâncias na matriz:
# lvchange --syncaction repair vg/raid_lv
NotaA operação
lvchange --syncaction repair
não desempenha a mesma função que a operaçãolvconvert --repair
:-
A operação
lvchange --syncaction repair
inicia uma operação de sincronização de fundo na matriz. -
A operação
lvconvert --repair
repara ou substitui dispositivos falhos em um espelho ou em um volume lógico RAID.
-
A operação
Opcional: Exibir informações sobre a operação de depuração:
# lvs -o raid_sync_action,raid_mismatch_count vg/lv
O campo
raid_sync_action
exibe a operação de sincronização atual que o volume RAID está realizando. Ele pode ser um dos seguintes valores:idle
- Todas as operações de sincronização concluídas (não fazer nada)
resync
- Inicialização de uma matriz ou recuperação após uma falha da máquina
recover
- Substituição de um dispositivo na matriz
check
- Procurando por inconsistências de matriz
repair
- Procura e reparo de inconsistências
-
O campo
raid_mismatch_count
mostra o número de discrepâncias encontradas durante uma operaçãocheck
. -
O campo
Cpy%Sync
mostra o progresso das operações dosync
. O campo
lv_attr
fornece indicadores adicionais. O bit 9 deste campo exibe a saúde do volume lógico, e suporta os seguintes indicadores:-
m
(desajustes) indica que há discrepâncias em um volume lógico RAID. Este caráter é mostrado após uma operação de scrubbing ter detectado que partes do RAID não são coerentes. -
r
(refresh) indica que um dispositivo em um array RAID sofreu uma falha e o kernel o considera uma falha, mesmo que o LVM possa ler a etiqueta do dispositivo e considere o dispositivo como operacional. Atualize o volume lógico para notificar o kernel de que o dispositivo está agora disponível, ou substitua o dispositivo se você suspeitar que ele falhou.
-
Recursos adicionais
-
Para mais informações, consulte as páginas de manual
lvchange(8)
elvmraid(7)
.
10.18. Conversão de um nível RAID (aquisição RAID)
LVM suporta Raid takeover, o que significa converter um volume lógico RAID de um nível RAID para outro (tal como de RAID 5 para RAID 6). A mudança do nível RAID é geralmente feita para aumentar ou diminuir a resistência a falhas de dispositivos ou para restringir os volumes lógicos. Você usa o lvconvert
para a aquisição do RAID. Para informações sobre a aquisição do RAID e para exemplos de utilização do lvconvert
para converter um volume lógico RAID, consulte a página de manual lvmraid
(7).
10.19. Mudança de atributos de um volume RAID (reformulação RAID)
RAID reshaping significa alterar os atributos de um volume lógico RAID mantendo o mesmo nível de RAID. Alguns atributos que você pode alterar incluem o layout RAID, tamanho das faixas e número de faixas. Para informações sobre remodelação RAID e exemplos de uso do comando lvconvert
para remodelar um volume lógico RAID, consulte a página de manual lvmraid
(7).
10.20. Controle das operações de E/S em um volume lógico RAID1
Você pode controlar as operações de E/S de um dispositivo em um volume lógico RAID1, usando os parâmetros --writemostly
e --writebehind
do comando lvchange
. O formato para usar estes parâmetros é o seguinte.
--[raid]writemostly PhysicalVolume[:{t|y|n}]
Marca um dispositivo em um volume lógico RAID1 como
write-mostly
. Todas as leituras para estes drives serão evitadas, a menos que seja necessário. A definição deste parâmetro mantém o número de operações de E/S para o drive no mínimo. Por padrão, o atributowrite-mostly
é definido como sim para o volume físico especificado no volume lógico. É possível remover a bandeirawrite-mostly
, anexando:n
ao volume físico ou alternar o valor especificando:t
. O argumento--writemostly
pode ser especificado mais de uma vez em um único comando, tornando possível alternar de uma só vez os atributos de escrita para todos os volumes físicos em um volume lógico.--[raid]writebehind IOCount
Especifica o número máximo de escritas pendentes que são permitidas aos dispositivos em um volume lógico RAID1 que são marcados como
write-mostly
. Uma vez ultrapassado este valor, as gravações tornam-se síncronas, fazendo com que todas as gravações nos dispositivos constituintes sejam concluídas antes que a matriz sinalize que a gravação foi concluída. A definição do valor a zero limpa a preferência e permite que o sistema escolha o valor arbitrariamente.
10.21. Mudando o tamanho da região em um volume lógico RAID
Quando você cria um volume lógico RAID, o tamanho da região para o volume lógico será o valor do parâmetro raid_region_size
no arquivo /etc/lvm/lvm.conf
. Você pode substituir este valor padrão com a opção -R
do comando lvcreate
.
Após ter criado um volume lógico RAID, você pode alterar o tamanho da região do volume com a opção -R
do comando lvconvert
. O exemplo a seguir muda o tamanho da região do volume lógico vg/raidlv
para 4096K. O volume RAID deve ser sincronizado a fim de mudar o tamanho da região.
#lvconvert -R 4096K vg/raid1
Do you really want to change the region_size 512.00 KiB of LV vg/raid1 to 4.00 MiB? [y/n]:y
Changed region size on RAID LV vg/raid1 to 4.00 MiB.
Capítulo 11. Volumes lógicos instantâneos
O recurso LVM snapshot oferece a capacidade de criar imagens virtuais de um dispositivo em um determinado instante sem causar uma interrupção do serviço.
11.1. Volumes instantâneos
O recurso LVM snapshot oferece a capacidade de criar imagens virtuais de um dispositivo em um determinado instante sem causar uma interrupção do serviço. Quando uma mudança é feita no dispositivo original (a origem) após uma foto, o recurso de foto faz uma cópia da área de dados alterada como estava antes da mudança para que possa reconstruir o estado do dispositivo.
A LVM apóia snapshots com pouco tempo de fornecimento.
Como um instantâneo copia apenas as áreas de dados que mudam depois que o instantâneo é criado, o recurso de instantâneo requer uma quantidade mínima de armazenamento. Por exemplo, com uma origem raramente atualizada, 3-5 % da capacidade da origem é suficiente para manter o instantâneo.
As cópias instantâneas de um sistema de arquivo são cópias virtuais, não um backup de mídia real para um sistema de arquivo. Os instantâneos não fornecem um substituto para um procedimento de backup.
O tamanho do instantâneo rege a quantidade de espaço reservado para armazenar as mudanças no volume de origem. Por exemplo, se você fizer um instantâneo e depois sobrescrever completamente a origem, o instantâneo teria que ser pelo menos tão grande quanto o volume de origem para segurar as mudanças. Você precisa dimensionar um instantâneo de acordo com o nível de mudança esperado. Assim, por exemplo, um instantâneo de curta duração de um volume mais lido, como /usr
, precisaria de menos espaço do que um instantâneo de longa duração de um volume que vê um número maior de escritas, como /home
.
Se um instantâneo estiver cheio, o instantâneo se torna inválido, uma vez que não pode mais rastrear as mudanças no volume de origem. Você deve monitorar regularmente o tamanho do instantâneo. Os instantâneos são totalmente redimensionáveis, porém, se você tiver a capacidade de armazenamento, poderá aumentar o tamanho do volume do instantâneo para evitar que ele caia. Por outro lado, se você achar que o volume da foto é maior do que você precisa, você pode reduzir o tamanho do volume para liberar espaço que é necessário para outros volumes lógicos.
Quando você cria um sistema de arquivo instantâneo, o acesso completo de leitura e escrita à origem permanece possível. Se um pedaço de um instantâneo for alterado, esse pedaço é marcado e nunca é copiado do volume original.
Há vários usos para o recurso de instantâneo:
- Normalmente, um instantâneo é tirado quando é necessário fazer um backup em um volume lógico sem interromper o sistema ao vivo que está continuamente atualizando os dados.
-
Você pode executar o comando
fsck
em um sistema de arquivo instantâneo para verificar a integridade do sistema de arquivo e determinar se o sistema de arquivo original requer reparo do sistema de arquivo. - Como o instantâneo é lido/escrito, você pode testar aplicações contra os dados de produção tirando um instantâneo e executando testes contra o instantâneo, deixando os dados reais intocados.
- Você pode criar volumes LVM para uso com a Virtualização da Red Hat. Snapshots LVM podem ser usados para criar snapshots de imagens de convidados virtuais. Estes snapshots podem fornecer uma maneira conveniente para modificar os convidados existentes ou criar novos convidados com o mínimo de armazenamento adicional.
Você pode usar a opção --merge
do comando lvconvert
para fundir um instantâneo em seu volume de origem. Um uso para este recurso é realizar o rollback do sistema se você tiver perdido dados ou arquivos ou se precisar restaurar seu sistema a um estado anterior. Após fundir o volume de snapshot, o volume lógico resultante terá o nome do volume de origem, número menor e UUID e o snapshot fundido é removido.
11.2. Criação de volumes de instantâneos
Use o argumento -s
do comando lvcreate
para criar um volume de instantâneo. Um volume de instantâneo pode ser escrito.
Os instantâneos de LVM não são suportados através dos nós em um cluster. Não se pode criar um volume instantâneo em um grupo de volume compartilhado. Entretanto, se você precisar criar um backup consistente de dados em um volume lógico compartilhado, você pode ativar o volume exclusivamente e depois criar o instantâneo.
Os snapshots são suportados para volumes lógicos RAID.
O LVM não permite criar um volume instantâneo maior do que o tamanho do volume de origem mais os metadados necessários para o volume. Se você especificar um volume de instantâneo maior que este, o sistema criará um volume de instantâneo que é apenas tão grande quanto será necessário para o tamanho da origem.
Por padrão, um volume de instantâneo é pulado durante os comandos normais de ativação.
O seguinte procedimento cria um volume lógico de origem chamado origin
e um volume instantâneo do volume original chamado snap
.
Criar um volume lógico chamado
origin
a partir do grupo de volumeVG
.#
lvcreate -L 1G -n origin VG
Logical volume "origin" created.Crie um volume lógico instantâneo de
/dev/VG/origin
que tenha 100 MB de tamanho, chamadosnap
. Se o volume lógico original contiver um sistema de arquivo, você pode montar o volume lógico instantâneo em um diretório arbitrário, a fim de acessar o conteúdo do sistema de arquivo para executar um backup enquanto o sistema de arquivo original continua a ser atualizado.#
lvcreate --size 100M --snapshot --name snap /dev/VG/origin
Logical volume "snap" created.Mostrar o status do volume lógico
/dev/VG/origin
, mostrando todos os volumes lógicos instantâneos e seu status (ativo ou inativo).#
lvdisplay /dev/VG/origin
--- Logical volume --- LV Path /dev/VG/origin LV Name origin VG Name VG LV UUID EsFoBp-CB9H-Epl5-pUO4-Yevi-EdFS-xtFnaF LV Write Access read/write LV Creation host, time host-083.virt.lab.msp.redhat.com, 2019-04-11 14:45:06 -0500 LV snapshot status source of snap [active] LV Status available # open 0 LV Size 1.00 GiB Current LE 256 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:6-
O comando
lvs
, por padrão, exibe o volume de origem e a porcentagem atual do volume de instantâneo que está sendo utilizado. O exemplo a seguir mostra a saída padrão para o comandolvs
após ter criado o volume de instantâneo, com um display que inclui os dispositivos que constituem os volumes lógicos.
# lvs -a -o +devices
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
origin VG owi-a-s--- 1.00g /dev/sde1(0)
snap VG swi-a-s--- 100.00m origin 0.00 /dev/sde1(256)
Como a foto aumenta de tamanho conforme o volume de origem muda, é importante monitorar regularmente a porcentagem do volume da foto com o comando lvs
para ter certeza de que ela não preencha. Um instantâneo de 100 tiros é completamente perdido, pois uma gravação em partes inalteradas da origem não teria sucesso sem corromper o instantâneo.
Além da própria foto ser invalidada quando cheia, qualquer sistema de arquivo montado naquele dispositivo de foto é forçado a não ser montado, evitando os inevitáveis erros do sistema de arquivo ao acessar o ponto de montagem. Além disso, você pode especificar a opção snapshot_autoextend_threshold
no arquivo lvm.conf
. Esta opção permite a extensão automática de um snapshot sempre que o espaço de snapshot restante cair abaixo do limite que você definir. Esta característica requer que haja espaço não alocado no grupo de volume.
O LVM não permite criar um volume instantâneo maior do que o tamanho do volume de origem mais os metadados necessários para o volume. Da mesma forma, a extensão automática de um instantâneo não aumentará o tamanho de um volume de instantâneo além do tamanho máximo calculado necessário para o instantâneo. Uma vez que um instantâneo tenha crescido o suficiente para cobrir a origem, ele não será mais monitorado para extensão automática.
As informações sobre a configuração snapshot_autoextend_threshold
e snapshot_autoextend_percent
são fornecidas no próprio arquivo /etc/lvm/lvm.conf
.
11.3. Fusão de volumes de fotos
Você pode usar a opção --merge
do comando lvconvert
para fundir um instantâneo em seu volume de origem. Se tanto a origem quanto o volume de snapshot não estiverem abertos, a fusão começará imediatamente. Caso contrário, a fusão começará na primeira vez que a origem ou instantâneo forem ativados e ambos forem fechados. A fusão de um instantâneo em uma origem que não pode ser fechada, por exemplo, um sistema de arquivo raiz, é adiada até a próxima vez em que o volume de origem for ativado. Quando a fusão começa, o volume lógico resultante terá o nome da origem, número menor e UUID. Enquanto a fusão está em andamento, as leituras ou escritas para a origem aparecem como foram direcionadas para o instantâneo que está sendo fundido. Quando a fusão termina, o instantâneo fundido é removido.
O seguinte comando funde o volume de instantâneos vg00/lvol1_snap
em sua origem.
# lvconvert --merge vg00/lvol1_snap
Você pode especificar vários instantâneos na linha de comando, ou pode usar tags de objetos LVM para especificar que vários instantâneos sejam fundidos em suas respectivas origens. No exemplo a seguir, os volumes lógicos vg00/lvol1
, vg00/lvol2
, e vg00/lvol3
estão todos marcados com a tag @some_tag
. O seguinte comando funde os volumes lógicos instantâneos para os três volumes em série: vg00/lvol1
, depois vg00/lvol2
, depois vg00/lvol3
. Se a opção --background
fosse utilizada, todas as fusões de volumes lógicos instantâneos começariam em paralelo.
# lvconvert --merge @some_tag
Para mais informações sobre o comando lvconvert --merge
, consulte a página de manual lvconvert
(8).
Capítulo 12. Criação e gerenciamento de volumes lógicos de pouca monta (volumes finos)
Os volumes lógicos podem ser provisionados de forma fina. Isto permite criar volumes lógicos maiores do que as extensões disponíveis.
12.1. Volumes lógicos de fornecimento fino (volumes finos)
Os volumes lógicos podem ser provisionados de forma fina. Isto permite criar volumes lógicos maiores do que as extensões disponíveis. Usando thin provisioning, você pode gerenciar um pool de armazenamento de espaço livre, conhecido como thin pool, que pode ser alocado a um número arbitrário de dispositivos quando necessário pelas aplicações. Você pode então criar dispositivos que podem ser vinculados ao thin pool para alocação posterior quando uma aplicação realmente escreve para o volume lógico. O thin pool pode ser expandido dinamicamente quando necessário para alocação econômica de espaço de armazenamento.
Os volumes finos não são suportados através dos nós em um cluster. O pool fino e todos os seus volumes finos devem ser ativados exclusivamente em um único nó de cluster.
Ao utilizar thin provisioning, um administrador de armazenamento pode comprometer excessivamente o armazenamento físico, muitas vezes evitando a necessidade de comprar armazenamento adicional. Por exemplo, se cada dez usuários solicitarem um sistema de arquivo de 100GB para sua aplicação, o administrador de armazenamento pode criar o que parece ser um sistema de arquivo de 100GB para cada usuário, mas que é apoiado por menos armazenamento real que é usado somente quando necessário. Ao utilizar thin provisioning, é importante que o administrador de armazenamento monitore o pool de armazenamento e acrescente mais capacidade se este começar a ficar cheio.
Para garantir que todo o espaço disponível possa ser utilizado, a LVM suporta o descarte de dados. Isto permite a reutilização do espaço que antes era utilizado por um arquivo descartado ou outro intervalo de blocos.
Os volumes finos fornecem suporte para uma nova implementação de volumes lógicos de cópia-em-escrita (COW), que permitem que muitos dispositivos virtuais compartilhem os mesmos dados no pool fino.
12.2. Criação de volumes lógicos pouco previsíveis
Este procedimento fornece uma visão geral dos comandos básicos que você usa para criar e crescer volumes lógicos pouco previsíveis. Para informações detalhadas sobre o provisionamento de LVM thin provisioning, bem como informações sobre o uso dos comandos e utilitários LVM com volumes lógicos thinly-provisioned, consulte a página de manual lvmthin
(7).
Para criar um volume fino, execute as seguintes tarefas:
-
Criar um grupo de volume com o comando
vgcreate
. -
Criar um pool fino com o comando
lvcreate
. -
Crie um volume fino no pool fino com o comando
lvcreate
.
Você pode usar a opção -T
(ou --thin
) do comando lvcreate
para criar um pool fino ou um volume fino. Você também pode usar a opção -T
do comando lvcreate
para criar tanto um thin pool quanto um volume thin nesse pool ao mesmo tempo com um único comando.
O seguinte comando usa a opção -T
do comando lvcreate
para criar um pool fino chamado mythinpool
no grupo de volume vg001
e que tem um tamanho de 100M. Note que, como você está criando um pool de espaço físico, você deve especificar o tamanho do pool. A opção -T
do comando lvcreate
não aceita um argumento; ela deduz o tipo de dispositivo a ser criado das outras opções que o comando especifica.
#lvcreate -L 100M -T vg001/mythinpool
Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data. Logical volume "mythinpool" created. #lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mythinpool vg001 twi-a-tz-- 100.00m 0.00 10.84
O seguinte comando usa a opção -T
do comando lvcreate
para criar um volume fino chamado thinvolume
no pool fino vg001/mythinpool
. Note que neste caso você está especificando um tamanho virtual, e que você está especificando um tamanho virtual para o volume que é maior do que o do pool que o contém.
#lvcreate -V 1G -T vg001/mythinpool -n thinvolume
WARNING: Sum of all thin volume sizes (1.00 GiB) exceeds the size of thin pool vg001/mythinpool (100.00 MiB). WARNING: You have not turned on protection against thin pools running out of space. WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full. Logical volume "thinvolume" created. #lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert mythinpool vg001 twi-a-tz 100.00m 0.00 thinvolume vg001 Vwi-a-tz 1.00g mythinpool 0.00
O seguinte comando usa a opção -T
do comando lvcreate
para criar um pool fino e um volume fino nesse pool, especificando tanto um argumento de tamanho como um argumento de tamanho virtual para o comando lvcreate
. Este comando cria um thin pool chamado mythinpool
no grupo de volume vg001
e também cria um thin volume chamado thinvolume
nesse pool.
#lvcreate -L 100M -T vg001/mythinpool -V 1G -n thinvolume
Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data. WARNING: Sum of all thin volume sizes (1.00 GiB) exceeds the size of thin pool vg001/mythinpool (100.00 MiB). WARNING: You have not turned on protection against thin pools running out of space. WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full. Logical volume "thinvolume" created. #lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mythinpool vg001 twi-aotz-- 100.00m 0.00 10.94 thinvolume vg001 Vwi-a-tz-- 1.00g mythinpool 0.00
Você também pode criar um pool fino especificando o parâmetro --thinpool
do comando lvcreate
. Ao contrário da opção -T
, o parâmetro --thinpool
requer um argumento, que é o nome do volume lógico do thin pool que você está criando. O exemplo a seguir especifica o parâmetro --thinpool
do comando lvcreate
para criar um thin pool chamado mythinpool
no grupo de volume vg001
e que tem um tamanho de 100M:
#lvcreate -L 100M --thinpool mythinpool vg001
Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data. Logical volume "mythinpool" created. #lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mythinpool vg001 twi-a-tz-- 100.00m 0.00 10.84
Use os seguintes critérios para utilizar o tamanho do pedaço:
- Um pedaço menor requer mais metadados e dificulta o desempenho, mas proporciona uma melhor utilização do espaço com instantâneos.
- Um pedaço maior requer menos manipulação de metadados, mas torna o instantâneo menos eficiente em termos de espaço.
Por padrão, lvm2
começa com um pedaço de tamanho 64KiB e aumenta seu valor quando o tamanho resultante do dispositivo de metadados do pool fino cresce acima de 128MiB, isto mantém o tamanho dos metadados compacto. No entanto, isto pode resultar em alguns valores de tamanho de pedaços grandes, que são menos eficientes em termos de espaço para o uso de instantâneos. Nesses casos, um pedaço menor e um tamanho maior de metadados é uma opção melhor.
Se o tamanho dos dados de volume estiver na faixa de TiB, use ~15,8GiB como o tamanho dos metadados, que é o tamanho máximo suportado, e defina o tamanho do pedaço de acordo com sua necessidade. Mas, note que não é possível aumentar o tamanho dos metadados se você precisar ampliar o tamanho dos dados do volume e ter um pequeno pedaço de tamanho.
A Red Hat não recomenda definir um pedaço de tamanho menor do que o valor padrão. Se o tamanho do pedaço for muito pequeno e seu volume ficar sem espaço para metadados, o volume é incapaz de criar dados. Monitore seus volumes lógicos para garantir que eles sejam expandidos, ou crie mais armazenamento antes que os volumes dos metadados fiquem completamente cheios. Assegure-se de configurar seu pool fino com um pedaço suficientemente grande para que não fiquem sem espaço para os metadados.
O Striping é apoiado para a criação de pools. O seguinte comando cria um pool fino de 100M chamado pool
no grupo de volume vg001
com duas faixas de 64 kB e um pedaço de 256 kB. Ele também cria um volume fino de 1T, vg00/thin_lv
.
# lvcreate -i 2 -I 64 -c 256 -L 100M -T vg00/pool -V 1T --name thin_lv
Você pode ampliar o tamanho de um volume fino com o comando lvextend
. Você não pode, entretanto, reduzir o tamanho de uma piscina fina.
O seguinte comando redimensiona uma piscina fina existente de 100M de tamanho, ampliando-a com mais 100M.
#lvextend -L+100M vg001/mythinpool
Extending logical volume mythinpool to 200.00 MiB Logical volume mythinpool successfully resized #lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert mythinpool vg001 twi-a-tz 200.00m 0.00 thinvolume vg001 Vwi-a-tz 1.00g mythinpool 0.00
Como com outros tipos de volumes lógicos, você pode renomear o volume com o lvrename
, pode remover o volume com o lvremove
, e pode exibir informações sobre o volume com os comandos lvs
e lvdisplay
.
By default, the lvcreate
command sets the size of the thin pool’s metadata logical volume according to the formula (Pool_LV_size / Pool_LV_chunk_size * 64). If you will have large numbers of snapshots or if you have have small chunk sizes for your thin pool and thus expect significant growth of the size of the thin pool at a later time, you may need to increase the default value of the thin pool’s metadata volume with the --poolmetadatasize
parameter of the lvcreate
command. The supported value for the thin pool’s metadata logical volume is in the range between 2MiB and 16GiB.
Você pode usar o parâmetro --thinpool
do comando lvconvert
para converter um volume lógico existente em um volume de pool fino. Ao converter um volume lógico existente para um volume de thin pool, você deve usar o parâmetro --poolmetadata
em conjunto com o parâmetro --thinpool
do lvconvert
para converter um volume lógico existente para o volume de metadados do thin pool.
A conversão de um volume lógico em um volume de pool fino ou um volume de metadados de pool fino destrói o conteúdo do volume lógico, já que neste caso o lvconvert
não preserva o conteúdo dos dispositivos, mas, em vez disso, sobrescreve o conteúdo.
O exemplo a seguir converte o volume lógico existente lv1
no grupo de volume vg001
para um volume de pool fino e converte o volume lógico existente lv2
no grupo de volume vg001
para o volume de metadados para esse volume de pool fino.
# lvconvert --thinpool vg001/lv1 --poolmetadata vg001/lv2
Converted vg001/lv1 to thin pool.
12.3. Volumes de fotos de última geração
O Red Hat Enterprise Linux fornece suporte para volumes de instantâneos pouco fornecidos. Os volumes de snapshot finos permitem que muitos dispositivos virtuais sejam armazenados no mesmo volume de dados. Isto simplifica a administração e permite o compartilhamento de dados entre os volumes de snapshot.
Como para todos os volumes de instantâneos LVM, assim como para todos os volumes finos, os volumes de instantâneos finos não são suportados em todos os nós de um cluster. O volume de instantâneos deve ser ativado exclusivamente em um único nó de cluster.
Os volumes finos proporcionam os seguintes benefícios:
- Um volume fino de instantâneo pode reduzir o uso do disco quando há vários instantâneos com o mesmo volume de origem.
- Se houver vários instantâneos da mesma origem, então uma gravação na origem fará com que uma operação COW preserve os dados. Aumentar o número de instantâneos da origem não deve resultar em uma grande desaceleração.
- Os volumes finos podem ser usados como uma origem lógica de volume para outro instantâneo. Isto permite uma profundidade arbitrária de instantâneos recursivos (instantâneos de instantâneos de instantâneos de instantâneos...).
- Um instantâneo de um volume lógico fino também cria um volume lógico fino. Isto não consome espaço de dados até que uma operação COW seja necessária, ou até que o próprio instantâneo seja escrito.
- Um volume de instantâneo fino não precisa ser ativado com sua origem, portanto, um usuário pode ter apenas a origem ativa enquanto houver muitos volumes de instantâneos inativos da origem.
- Quando você apaga a origem de um volume de imagens de origem, cada imagem desse volume de origem se torna um volume independente de imagens de origem. Isto significa que, ao invés de fundir um instantâneo com seu volume de origem, você pode optar por excluir o volume de origem e então criar um novo instantâneo com uma fina previsão usando esse volume independente como o volume de origem para o novo instantâneo.
Embora haja muitas vantagens no uso de volumes finos, há alguns casos de uso para os quais o recurso de volume de instantâneos LVM antigo pode ser mais apropriado às suas necessidades:
- Não se pode mudar o tamanho de um pedaço de uma piscina fina. Se a piscina fina tiver um pedaço de tamanho grande (por exemplo, 1MB) e você precisar de uma foto de curta duração para a qual um pedaço de tamanho tão grande não seja eficiente, você pode optar por usar o recurso de foto mais antigo.
- Não é possível limitar o tamanho de um volume fino; o instantâneo utilizará todo o espaço da piscina fina, se necessário. Isto pode não ser apropriado para suas necessidades.
Em geral, você deve considerar as exigências específicas de seu site ao decidir qual o formato de instantâneo a ser utilizado.
12.4. Criação de volumes de instantâneos pouco previsíveis
O Red Hat Enterprise Linux fornece suporte para volumes de instantâneos pouco fornecidos.
Esta seção fornece uma visão geral dos comandos básicos que você usa para criar e crescer volumes de instantâneos pouco previsíveis. Para informações detalhadas sobre provisão fina de LVM, bem como informações sobre o uso dos comandos e utilitários LVM com volumes lógicos pouco previsíveis, consulte a página de manual lvmthin
(7).
Ao criar um volume fino, não se especifica o tamanho do volume. Se você especificar um parâmetro de tamanho, o snapshot que será criado não será um volume de snapshot fino e não utilizará o pool fino para armazenar dados. Por exemplo, o comando lvcreate -s vg/thinvolume -L10M
não criará um instantâneo fino, mesmo que o volume de origem seja um volume fino.
Podem ser criados instantâneos finos para volumes de origem pouco fornecidos, ou para volumes de origem que não são pouco fornecidos.
Você pode especificar um nome para o volume de instantâneos com a opção --name
do comando lvcreate
. O comando a seguir cria um volume de instantâneo do volume lógico de pouco volume vg001/thinvolume
que é chamado mysnapshot1
.
#lvcreate -s --name mysnapshot1 vg001/thinvolume
Logical volume "mysnapshot1" created #lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert mysnapshot1 vg001 Vwi-a-tz 1.00g mythinpool thinvolume 0.00 mythinpool vg001 twi-a-tz 100.00m 0.00 thinvolume vg001 Vwi-a-tz 1.00g mythinpool 0.00
Um volume fino tem as mesmas características que qualquer outro volume fino. Você pode independentemente ativar o volume, estender o volume, renomear o volume, remover o volume e até mesmo fotografar o volume.
Por padrão, um volume de instantâneo é pulado durante os comandos normais de ativação. Para informações sobre como controlar a ativação de um volume lógico, consulte Ativação do volume lógico.
Você também pode criar um instantâneo de um volume lógico não previsto. Uma vez que o volume lógico não previsto não está contido dentro de um pool fino, ele é referido como um external origin. Os volumes de origem externa podem ser utilizados e compartilhados por muitos volumes de imagens de origem fina, mesmo de diferentes piscinas finas. A origem externa deve ser inativa e somente de leitura no momento em que o instantâneo com thinly-provisioned é criado.
Para criar um instantâneo de uma origem externa, você deve especificar a opção --thinpool
. O seguinte comando cria um pequeno volume do volume inativo somente de leitura origin_volume
. O nome do volume fino é mythinsnap
. O volume lógico origin_volume
torna-se então a origem externa do volume thin snapshot mythinsnap
no grupo de volume vg001
que utilizará o pool thin existente vg001/pool
. Como o volume de origem deve estar no mesmo grupo de volume que o volume de instantâneos, não é necessário especificar o grupo de volume ao especificar o volume lógico de origem.
# lvcreate -s --thinpool vg001/pool origin_volume --name mythinsnap
Você pode criar um segundo volume de instantâneo do primeiro volume, como no seguinte comando.
# lvcreate -s vg001/mythinsnap --name my2ndthinsnap
Você pode exibir uma lista de todos os antepassados e descendentes de um volume lógico de um pequeno instantâneo especificando os campos de relatório lv_ancestors
e lv_descendants
do comando lvs
.
No exemplo a seguir:
-
stack1
é um volume de origem em grupo de volumevg001
. -
stack2
é um retrato destack1
-
stack3
é um retrato destack2
-
stack4
é um retrato destack3
Além disso:
-
stack5
também é um instantâneo destack2
-
stack6
é um retrato destack5
$ lvs -o name,lv_ancestors,lv_descendants vg001
LV Ancestors Descendants
stack1 stack2,stack3,stack4,stack5,stack6
stack2 stack1 stack3,stack4,stack5,stack6
stack3 stack2,stack1 stack4
stack4 stack3,stack2,stack1
stack5 stack2,stack1 stack6
stack6 stack5,stack2,stack1
pool
Os campos lv_ancestors
e lv_descendants
mostram as dependências existentes, mas não rastreiam as entradas removidas que podem quebrar uma cadeia de dependência se a entrada foi removida do meio da cadeia. Por exemplo, se você remover o volume lógico stack3
desta configuração de amostra, a exibição é a seguinte.
$ lvs -o name,lv_ancestors,lv_descendants vg001
LV Ancestors Descendants
stack1 stack2,stack5,stack6
stack2 stack1 stack5,stack6
stack4
stack5 stack2,stack1 stack6
stack6 stack5,stack2,stack1
pool
Você pode configurar seu sistema para rastrear e exibir os volumes lógicos que foram removidos, e pode exibir toda a cadeia de dependência que inclui esses volumes, especificando os campos lv_ancestors_full
e lv_descendants_full
.
12.5. Rastreamento e exibição de volumes finos que foram removidos
Você pode configurar seu sistema para rastrear imagens e volumes lógicos finos que foram removidos, ativando a opção de metadados record_lvs_history
no arquivo de configuração lvm.conf
. Isto permite que você exiba uma cadeia completa de dependência thinshot que inclui volumes lógicos que foram removidos da cadeia de dependência original e que se tornaram historical volumes lógicos.
Você pode configurar seu sistema para reter volumes históricos por um período de tempo definido especificando o tempo de retenção, em segundos, com a opção lvs_history_retention_time
metadados no arquivo de configuração lvm.conf
.
Um volume lógico histórico mantém uma representação simplificada do volume lógico que foi removido, incluindo os seguintes campos de relatório para o volume:
-
lv_time_removed
: o tempo de remoção do volume lógico -
lv_time
: o tempo de criação do volume lógico -
lv_name
: o nome do volume lógico -
lv_uuid
: a UUID do volume lógico -
vg_name
: o grupo de volume que contém o volume lógico.
Quando um volume é removido, o nome histórico lógico do volume adquire uma hipen como prefixo. Por exemplo, quando se remove o volume lógico lvol1
, o nome do volume histórico é -lvol1
. Um volume lógico histórico não pode ser reativado.
Mesmo quando a opção de metadados record_lvs_history
estiver ativada, você pode evitar a retenção de volumes lógicos históricos em uma base individual ao remover um volume lógico especificando a opção --nohistory
do comando lvremove
.
Para incluir volumes lógicos históricos na exibição do volume, você especifica a opção -H|--history
de um comando de exibição LVM. Você pode exibir uma cadeia completa de dependência fina que inclui volumes históricos, especificando os campos lv_full_ancestors
e lv_full_descendants
, juntamente com a opção -H
.
A série de comandos a seguir fornece exemplos de como você pode exibir e gerenciar volumes lógicos históricos.
-
Assegure-se de que os volumes históricos lógicos sejam retidos, definindo
record_lvs_history=1
no arquivolvm.conf
. Esta opção de metadados não é ativada por padrão. Digite o seguinte comando para exibir uma fina cadeia de imagens provisionadas.
Neste exemplo:
-
lvol1
é um volume de origem, o primeiro volume da cadeia. -
lvol2
é um instantâneo delvol1
. -
lvol3
é um instantâneo delvol2
. -
lvol4
é um instantâneo delvol3
. lvol5
é também um instantâneo delvol3
.Observe que, embora o comando de exibição do exemplo
lvs
inclua a opção-H
, ainda não foi removido nenhum volume fino e não há volumes lógicos históricos a serem exibidos.#
lvs -H -o name,full_ancestors,full_descendants
LV FAncestors FDescendants lvol1 lvol2,lvol3,lvol4,lvol5 lvol2 lvol1 lvol3,lvol4,lvol5 lvol3 lvol2,lvol1 lvol4,lvol5 lvol4 lvol3,lvol2,lvol1 lvol5 lvol3,lvol2,lvol1 pool
-
Remova o volume lógico
lvol3
da cadeia de instantâneos, depois execute novamente o seguinte comandolvs
para ver como os volumes lógicos históricos são exibidos, juntamente com seus antepassados e descendentes.#
lvremove -f vg/lvol3
Logical volume "lvol3" successfully removed #lvs -H -o name,full_ancestors,full_descendants
LV FAncestors FDescendants lvol1 lvol2,-lvol3,lvol4,lvol5 lvol2 lvol1 -lvol3,lvol4,lvol5 -lvol3 lvol2,lvol1 lvol4,lvol5 lvol4 -lvol3,lvol2,lvol1 lvol5 -lvol3,lvol2,lvol1 poolVocê pode usar o campo
lv_time_removed
para exibir a hora em que um volume histórico foi removido.#
lvs -H -o name,full_ancestors,full_descendants,time_removed
LV FAncestors FDescendants RTime lvol1 lvol2,-lvol3,lvol4,lvol5 lvol2 lvol1 -lvol3,lvol4,lvol5 -lvol3 lvol2,lvol1 lvol4,lvol5 2016-03-14 14:14:32 +0100 lvol4 -lvol3,lvol2,lvol1 lvol5 -lvol3,lvol2,lvol1 poolVocê pode fazer referência a volumes lógicos históricos individualmente em um comando de exibição, especificando o formato vgname/lvname, como no exemplo a seguir. Observe que o quinto bit no campo
lv_attr
está configurado parah
para indicar que o volume é um volume histórico.#
lvs -H vg/-lvol3
LV VG Attr LSize -lvol3 vg ----h----- 0A LVM não mantém volumes lógicos históricos se o volume não tiver descendente vivo. Isto significa que se você remover um volume lógico no final de uma cadeia de instantâneos, o volume lógico não é retido como um volume lógico histórico.
#
lvremove -f vg/lvol5
Automatically removing historical logical volume vg/-lvol5. Logical volume "lvol5" successfully removed #lvs -H -o name,full_ancestors,full_descendants
LV FAncestors FDescendants lvol1 lvol2,-lvol3,lvol4 lvol2 lvol1 -lvol3,lvol4 -lvol3 lvol2,lvol1 lvol4 lvol4 -lvol3,lvol2,lvol1 poolExecute os seguintes comandos para remover o volume
lvol1
elvol2
e para ver como o comandolvs
exibe os volumes uma vez que eles foram removidos.#
lvremove -f vg/lvol1 vg/lvol2
Logical volume "lvol1" successfully removed Logical volume "lvol2" successfully removed #lvs -H -o name,full_ancestors,full_descendants
LV FAncestors FDescendants -lvol1 -lvol2,-lvol3,lvol4 -lvol2 -lvol1 -lvol3,lvol4 -lvol3 -lvol2,-lvol1 lvol4 lvol4 -lvol3,-lvol2,-lvol1 poolPara remover completamente um volume lógico histórico, você pode executar novamente o comando
lvremove
, especificando o nome do volume histórico que agora inclui o hífen, como no exemplo a seguir.#
lvremove -f vg/-lvol3
Historical logical volume "lvol3" successfully removed #lvs -H -o name,full_ancestors,full_descendants
LV FAncestors FDescendants -lvol1 -lvol2,lvol4 -lvol2 -lvol1 lvol4 lvol4 -lvol2,-lvol1 poolUm volume histórico lógico é retido enquanto houver uma cadeia que inclua volumes vivos em seus descendentes. Isto significa que a remoção de um volume lógico histórico também remove todos os volumes lógicos da cadeia se nenhum descendente existente estiver ligado a eles, como mostrado no exemplo a seguir.
#
lvremove -f vg/lvol4
Automatically removing historical logical volume vg/-lvol1. Automatically removing historical logical volume vg/-lvol2. Automatically removing historical logical volume vg/-lvol4. Logical volume "lvol4" successfully removed
Capítulo 13. Permitindo o cache para melhorar o desempenho do volume lógico
Você pode adicionar caching a um volume lógico LVM para melhorar o desempenho. O LVM então armazena as operações de E/S para o volume lógico usando um dispositivo rápido, como um SSD.
Os seguintes procedimentos criam um LV especial a partir do dispositivo rápido, e anexam este LV especial ao LV original para melhorar o desempenho.
13.1. Métodos de cache em LVM
A LVM fornece os seguintes tipos de caching. Cada um deles é adequado para diferentes tipos de padrões de E/S sobre o volume lógico.
dm-cache
Este método acelera o acesso aos dados freqüentemente utilizados, armazenando-os em cache no volume mais rápido. O método armazena as operações de leitura e escrita.
O método
dm-cache
cria volumes lógicos do tipocache
.dm-writecache
Este método só permite escrever operações de escrita. O volume mais rápido armazena as operações de gravação e depois as migra para o disco mais lento em segundo plano. O volume mais rápido é geralmente um disco SSD ou um disco de memória persistente (PMEM).
O método
dm-writecache
cria volumes lógicos do tipowritecache
.
13.2. Componentes de caching LVM
Quando você ativa o cache para um volume lógico, a LVM renomeia e esconde os volumes originais, e apresenta um novo volume lógico que é composto dos volumes lógicos originais. A composição do novo volume lógico depende do método de caching e se você está usando a opção cachevol
ou cachepool
.
As opções cachevol
e cachepool
expõem diferentes níveis de controle sobre a colocação dos componentes do caching:
-
Com a opção
cachevol
, o dispositivo mais rápido armazena tanto as cópias em cache dos blocos de dados quanto os metadados para o gerenciamento do cache. Com a opção
cachepool
, dispositivos separados podem armazenar as cópias em cache dos blocos de dados e os metadados para o gerenciamento do cache.O método
dm-writecache
não é compatível comcachepool
.
Em todas as configurações, o LVM expõe um único dispositivo resultante, que agrupa todos os componentes do cache. O dispositivo resultante tem o mesmo nome que o volume lógico lento original.
13.3. Permitindo o caching dm-cache para um volume lógico
Este procedimento permite o cache de dados comumente usados em um volume lógico usando o método dm-cache
.
Pré-requisitos
-
Um volume lógico lento que você deseja acelerar usando
dm-cache
existe em seu sistema. - O grupo de volume que contém o volume lógico lento também contém um volume físico não utilizado em um dispositivo de bloqueio rápido.
Procedimento
Crie um volume
cachevol
no dispositivo rápido:# lvcreate --size cachevol-size --nome fastvol vg /dev/fast-pv
Substituir os seguintes valores:
cachevol-size
-
O tamanho do volume
cachevol
, tais como5G
fastvol
-
Um nome para o volume
cachevol
vg
- O nome do grupo de volume
/dev/fast-pv
-
O caminho para o dispositivo de bloqueio rápido, tais como
/dev/sdf1
Anexe o volume
cachevol
ao volume lógico principal para iniciar o caching:# lvconvert -- tipo cache --cachevol fastvol vg /main-lv
Substituir os seguintes valores:
fastvol
-
O nome do volume
cachevol
vg
- O nome do grupo de volume
main-lv
- O nome do volume lógico lento
Etapas de verificação
Examine os dispositivos recém-criados:
# lvs --all --options +devices vg LV Pool Type Devices main-lv [fastvol_cvol] cache main-lv_corig(0) [fastvol_cvol] linear /dev/fast-pv [main-lv_corig] linear /dev/slow-pv
Recursos adicionais
-
Para informações sobre este procedimento e outros detalhes, incluindo exemplos administrativos, consulte a página de manual
lvmcache(7)
.
13.4. Possibilitando o cache dm-cache com um cachepool para um volume lógico
Este procedimento permite criar os dados do cache e os volumes lógicos dos metadados do cache individualmente e depois combinar os volumes em um pool de cache.
Pré-requisitos
-
Um volume lógico lento que você deseja acelerar usando
dm-cache
existe em seu sistema. - O grupo de volume que contém o volume lógico lento também contém um volume físico não utilizado em um dispositivo de bloqueio rápido.
Procedimento
Crie um volume
cachepool
no dispositivo rápido:# lvcreate --type cache-pool --size cachepool-size --name fastpool vg /dev/fast
Substituir os seguintes valores:
cachepool-size
-
O tamanho do
cachepool
, tais como5G
fastpool
-
Um nome para o volume
cachepool
vg
- O nome do grupo de volume
/dev/fast
O caminho para o dispositivo de bloqueio rápido, tais como
/dev/sdf1
NotaVocê pode usar a opção
--poolmetadata
para especificar a localização dos metadados do pool ao criar o cache-pool.
Anexe o
cachepool
ao volume lógico principal para iniciar o caching:# lvconvert -- tipo cache --cachepool fastpool vg/main
Substituir os seguintes valores:
fastpool
-
O nome do volume
cachepool
vg
- O nome do grupo de volume
main
- O nome do volume lógico lento
Etapas de verificação
Examine os dispositivos recém-criados:
# lvs --all --options +devices vg LV Pool Type Devices [fastpool_cpool] cache-pool fastpool_pool_cdata(0) [fastpool_cpool_cdata] linear /dev/sdf1(4) [fastpool_cpool_cmeta] linear /dev/sdf1(2) [lvol0_pmspare] linear /dev/sdf1(0) main [fastpoool_cpool] cache main_corig(0) [main_corig] linear /dev/sdf1(O)
Recursos adicionais
-
A página do homem
lvcreate(8)
. -
A página do homem
lvmcache(7)
. -
A página do homem
lvconvert(8)
.
13.5. Possibilitando o cache dm-writecache para um volume lógico
Este procedimento permite o cache de operações de E/S escritas a um volume lógico usando o método dm-writecache
.
Pré-requisitos
-
Um volume lógico lento que você deseja acelerar usando
dm-writecache
existe em seu sistema. - O grupo de volume que contém o volume lógico lento também contém um volume físico não utilizado em um dispositivo de bloqueio rápido.
Procedimento
Se o volume lógico lento estiver ativo, desative-o:
# lvchange -- ativar n vg/main-lv
Substituir os seguintes valores:
vg
- O nome do grupo de volume
main-lv
- O nome do volume lógico lento
Criar um volume de
cachevol
desativado no dispositivo rápido:# lvcreate --activar n --size cachevol-size --nome fastvol vg /dev/fast-pv
Substituir os seguintes valores:
cachevol-size
-
O tamanho do volume
cachevol
, tais como5G
fastvol
-
Um nome para o volume
cachevol
vg
- O nome do grupo de volume
/dev/fast-pv
-
O caminho para o dispositivo de bloqueio rápido, tais como
/dev/sdf1
Anexe o volume
cachevol
ao volume lógico principal para iniciar o caching:# lvconvert --type writecache --cachevol fastvol vg /main-lv
Substituir os seguintes valores:
fastvol
-
O nome do volume
cachevol
vg
- O nome do grupo de volume
main-lv
- O nome do volume lógico lento
Ativar o volume lógico resultante:
# lvchange -- ativar y vg/main-lv
Substituir os seguintes valores:
vg
- O nome do grupo de volume
main-lv
- O nome do volume lógico lento
Etapas de verificação
Examine os dispositivos recém-criados:
# lvs --all --options +devices vg LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices main-lv vg Cwi-a-C--- 500.00m [fastvol_cvol] [main-lv_wcorig] 0.00 main-lv_wcorig(0) [fastvol_cvol] vg Cwi-aoC--- 252.00m /dev/sdc1(0) [main-lv_wcorig] vg owi-aoC--- 500.00m /dev/sdb1(0)
Recursos adicionais
-
Para informações, incluindo exemplos administrativos, consulte a página de manual
lvmcache(7)
.
13.6. Desabilitando o caching para um volume lógico
Este procedimento desabilita dm-cache
ou dm-writecache
caching que está atualmente habilitado em um volume lógico.
Pré-requisitos
- O cache é ativado em um volume lógico.
Procedimento
Desativar o volume lógico:
# lvchange -- ativar n vg/main-lv
Substituir os seguintes valores:
vg
- O nome do grupo de volume
main-lv
- O nome do volume lógico onde o caching é permitido
Desmonte o volume
cachevol
oucachepool
:# lvconvert --splitcache vg/main-lv
Substituir os seguintes valores:
vg
- O nome do grupo de volume
main-lv
- O nome do volume lógico onde o caching é permitido
Etapas de verificação
Verifique se os volumes lógicos não estão mais presos juntos:
# lvs --all --options +devices [replaceable]_vg_ LV Attr Type Devices fastvol -wi------- linear /dev/fast-pv main-lv -wi------- linear /dev/slow-pv
Recursos adicionais
-
A página do homem
lvmcache(7)
Capítulo 14. Ativação de volume lógico
Um volume lógico que é um estado ativo pode ser usado através de um dispositivo de bloco. Um volume lógico que é ativado é acessível e está sujeito a mudanças. Quando se cria um volume lógico, ele é ativado por padrão.
Há várias circunstâncias para as quais você precisa tornar um volume lógico individual inativo e, portanto, desconhecido para o núcleo. Você pode ativar ou desativar o volume lógico individual com a opção -a
do comando lvchange
.
O formato do comando para desativar um volume lógico individual é o seguinte.
lvchange -an vg/lv
O formato do comando para ativar um volume lógico individual é o seguinte.
lvchange -ay vg/lv
Você pode ativar ou desativar todos os volumes lógicos em um grupo de volumes com a opção -a
do comando vgchange
. Isto é o equivalente a executar o comando lvchange -a
em cada volume lógico individual do grupo de volume.
O formato do comando para desativar todos os volumes lógicos em um grupo de volumes é o seguinte.
vgchange -an vg
O formato do comando para ativar todos os volumes lógicos em um grupo de volumes é o seguinte.
vgchange -ay vg
14.1. Controle da auto-ativação de volumes lógicos
A ativação automática de um volume lógico refere-se à ativação automática baseada em eventos de um volume lógico durante a inicialização do sistema. Conforme os dispositivos ficam disponíveis no sistema (eventos on-line do dispositivo), systemd/udev
executa o serviço lvm2-pvscan
para cada dispositivo. Este serviço executa o pvscan --cache -aay device
que lê o dispositivo nomeado. Se o dispositivo pertence a um grupo de volume, o comando pvscan
verificará se todos os volumes físicos para aquele grupo de volume estão presentes no sistema. Se assim for, o comando ativará os volumes lógicos nesse grupo de volumes.
Você pode usar as seguintes opções de configuração no arquivo de configuração /etc/lvm/lvm.conf
para controlar a auto-ativação dos volumes lógicos.
global/event_activation
Quando
event_activation
estiver desativado,systemd/udev
ativará automaticamente o volume lógico somente em qualquer volume físico presente durante a inicialização do sistema. Se todos os volumes físicos ainda não aparecerem, então alguns volumes lógicos podem não ser auto-ativados.activation/auto_activation_volume_list
A configuração do
auto_activation_volume_list
para uma lista vazia desativa totalmente a ativação automática. O ajusteauto_activation_volume_list
para volumes lógicos específicos e grupos de volumes limita a auto-ativação a esses volumes lógicos.
Para informações sobre a configuração destas opções, consulte o arquivo de configuração /etc/lvm/lvm.conf
.
14.2. Controle da ativação lógica do volume
Você pode controlar a ativação do volume lógico das seguintes maneiras:
-
Através da configuração
activation/volume_list
no arquivo/etc/lvm/conf
. Isto permite especificar quais volumes lógicos são ativados. Para informações sobre o uso desta opção, consulte o arquivo de configuração/etc/lvm/lvm.conf
. - Por meio da bandeira de pulo de ativação para um volume lógico. Quando esta bandeira é definida para um volume lógico, o volume é pulado durante os comandos normais de ativação.
Você pode colocar a bandeira de pulo de ativação em um volume lógico das seguintes maneiras.
-
Você pode desativar a bandeira de pulo de ativação ao criar um volume lógico, especificando a opção
-kn
ou--setactivationskip n
do comandolvcreate
. -
Você pode desativar a bandeira de pulo de ativação para um volume lógico existente especificando a opção
-kn
ou--setactivationskip n
do comandolvchange
. -
Você pode ligar a bandeira de pulo de ativação novamente para um volume onde foi desligado com a opção
-ky
ou--setactivationskip y
do comandolvchange
.
Para determinar se a bandeira de pulo de ativação está definida para um volume lógico, execute o comando lvs
, que exibe o atributo k
, como no exemplo a seguir.
# lvs vg/thin1s1
LV VG Attr LSize Pool Origin
thin1s1 vg Vwi---tz-k 1.00t pool0 thin1
Você pode ativar um volume lógico com o atributo k
definido usando a opção -K
ou --ignoreactivationskip
, além da opção padrão -ay
ou --activate y
.
Por padrão, os volumes de fotos finas são marcados para ativação quando são criados. Você pode controlar a configuração padrão de salto de ativação em novos volumes de instantâneos finos com a configuração auto_set_activation_skip
no arquivo /etc/lvm/lvm.conf
.
O seguinte comando ativa um fino volume lógico de instantâneo que tem a bandeira de pulo de ativação definida.
# lvchange -ay -K VG/SnapLV
O seguinte comando cria uma fina foto sem a bandeira de pulo de ativação
# lvcreate --type thin -n SnapLV -kn -s ThinLV --thinpool VG/ThinPoolLV
O seguinte comando remove a bandeira de pulo de ativação de um volume lógico de instantâneo.
# lvchange -kn VG/SnapLV
14.3. Ativação de volumes lógicos compartilhados
Você pode controlar a ativação lógica de um volume lógico compartilhado com a opção -a
dos comandos lvchange
e vgchange
, como a seguir.
Comando | Ativação |
---|---|
| Ativar o volume lógico compartilhado em modo exclusivo, permitindo que apenas um único host ative o volume lógico. Se a ativação falhar, como aconteceria se o volume lógico estivesse ativo em outro host, um erro é relatado. |
| Ativar o volume lógico compartilhado em modo compartilhado, permitindo que vários hospedeiros ativem o volume lógico ao mesmo tempo. Se a ativação falhar, como aconteceria se o volume lógico estivesse ativo exclusivamente em outro host, um erro é relatado. Se o tipo lógico proibir o acesso compartilhado, como um instantâneo, o comando irá reportar um erro e falhar. Os tipos de volume lógico que não podem ser usados simultaneamente a partir de múltiplos hosts incluem thin, cache, raid e snapshot. |
| Desativar o volume lógico. |
14.4. Ativação de um volume lógico com dispositivos ausentes
Você pode configurar quais volumes lógicos com dispositivos ausentes são ativados ao definir o parâmetro activation_mode
com o comando lvchange
para um dos seguintes valores.
Modo de ativação | Significado |
---|---|
completo | Permite ativar somente os volumes lógicos, sem a falta de volumes físicos. Este é o modo mais restritivo. |
degradado | Permite que volumes lógicos RAID com volumes físicos ausentes sejam ativados. |
parcial | Permite que qualquer volume lógico com volumes físicos ausentes seja ativado. Esta opção deve ser usada somente para recuperação ou reparo. |
O valor padrão de activation_mode
é determinado pela configuração activation_mode
no arquivo /etc/lvm/lvm.conf
. Para maiores informações, consulte a página de manual lvmraid
(7).
Capítulo 15. Controle da varredura do dispositivo LVM
Você pode controlar a leitura do dispositivo LVM configurando os filtros no arquivo /etc/lvm/lvm.conf
. Os filtros no arquivo lvm.conf
consistem de uma série de expressões regulares simples que são aplicadas aos nomes dos dispositivos no diretório /dev
para decidir se aceita ou rejeita cada dispositivo de bloco encontrado.
15.1. O filtro do dispositivo LVM
As ferramentas LVM procuram por dispositivos no diretório /dev
e verificam todos os dispositivos lá em busca de metadados LVM. Um filtro no arquivo /etc/lvm/lvm.conf
controla quais dispositivos LVM escaneia.
O filtro é uma lista de padrões que a LVM aplica a cada dispositivo encontrado por uma varredura do diretório /dev
, ou o diretório especificado pela palavra-chave dir
no arquivo /etc/lvm/lvm.conf
. Os padrões são expressões regulares delimitadas por qualquer caracter e precedidas por a
para accept ou r
para reject. A primeira expressão regular na lista que corresponde a um dispositivo determina se a LVM aceita ou rejeita (ignora) o dispositivo. A LVM aceita dispositivos que não correspondem a nenhum padrão.
A seguir está a configuração padrão do filtro, que escaneia todos os dispositivos:
filtro = [ \ a/.*/" ]
15.2. Exemplos de configurações de filtros de dispositivos LVM
Os exemplos a seguir mostram o uso de filtros para controlar quais dispositivos LVM scans.
Alguns dos exemplos aqui apresentados podem combinar involuntariamente dispositivos extras no sistema e podem não representar uma prática recomendada para o seu sistema. Por exemplo, a/loop/
é equivalente a a/.*loop.*/
e seria igual a /dev/solooperation/lvol1
.
O seguinte filtro adiciona todos os dispositivos descobertos, que é o comportamento padrão porque nenhum filtro é configurado no arquivo de configuração:
filtro = [ \ a/.*/" ]
O seguinte filtro remove o dispositivo
cdrom
a fim de evitar atrasos se a unidade não contiver mídia:filtro = [ "r|^/dev/cdrom$" ]
O seguinte filtro adiciona todos os dispositivos de laço e remove todos os outros dispositivos de bloco:
filtro = [ a/loop/", "r/.*/" ]
O seguinte filtro adiciona todos os dispositivos de laço e IDE e remove todos os outros dispositivos de bloco:
filtro = ["a|loop|", "a|/dev/hd.*", "r|.*" ]
O seguinte filtro adiciona apenas a partição 8 na primeira unidade IDE e remove todos os outros dispositivos de bloco:
filtro = [ \ a|^/dev/hda8$", "r/.*//____" ]
15.3. Aplicação de uma configuração de filtro do dispositivo LVM
Este procedimento altera a configuração do filtro do dispositivo LVM, que controla os dispositivos que o LVM escaneia.
Pré-requisitos
- Prepare o padrão de filtro do dispositivo que você deseja usar.
Procedimento
Teste o padrão de filtragem de seu dispositivo sem modificar o arquivo
/etc/lvm/lvm.conf
.Use um comando LVM com o
--config 'devices{ filter = [ your device filter pattern ] }'
opção. Por exemplo:# lvs --configurar 'dispositivos (filtro = [ a|/dev/emcpower.*", "r|.*" ]'
-
Edite a opção
filter
no arquivo de configuração/etc/lvm/lvm.conf
para usar seu novo padrão de filtro de dispositivo. Verifique se não estão faltando volumes físicos ou grupos de volume que você deseja utilizar com a nova configuração:
# pvscan
# vgscan
Reconstruir o sistema de arquivos
initramfs
para que a LVM escaneie somente os dispositivos necessários após a reinicialização:# dracut --force --verbose
Capítulo 16. Sobreposição de volumes físicos LVM sobre volumes lógicos
Você pode configurar o LVM para que seja possível criar volumes físicos em cima de volumes lógicos.
Por padrão, os comandos LVM não digitalizam os volumes lógicos em seu sistema. Este comportamento padrão oferece as seguintes vantagens:
- Se houver muitos volumes lógicos ativos no sistema, cada comando LVM exigiria tempo adicional, impactando negativamente o desempenho e causando atrasos ou interrupções indesejáveis.
- Se os volumes lógicos contiverem volumes físicos de uma imagem VM hóspede, o host geralmente não quer escanear ou usar aqueles volumes físicos em camadas que pertencem ao hóspede. Note, entretanto, que nos casos em que o volume físico de uma VM hóspede existe diretamente em um dispositivo SCSI visível ao host, a fim de evitar que a LVM no host acesse esses volumes físicos, será necessário configurar um filtro, como descrito em Capítulo 15, Controle da varredura do dispositivo LVM.
A digitalização de volumes lógicos pode ser necessária quando a sobreposição de volumes físicos em cima de volumes lógicos é intencional. Isto permitirá que o comando pvcreate
seja executado sobre um volume lógico. Para configurar o LVM para escanear todos os volumes lógicos, defina a opção de configuração scan_lvs
no arquivo /etc/lvm/lvm.conf
para scan_lvs=1
. Para restringir quais volumes lógicos os comandos LVM podem ser escaneados, pode-se então configurar filtros de dispositivos no arquivo de configuração /etc/lvm/lvm.conf
, conforme descrito em Capítulo 15, Controle da varredura do dispositivo LVM.
Capítulo 17. Controle da alocação da LVM
Por padrão, um grupo de volume aloca extensões físicas de acordo com regras de senso comum, tais como não colocar faixas paralelas no mesmo volume físico. Esta é a política de alocação do normal
. Você pode usar o argumento --alloc
do comando vgcreate
para especificar uma política de alocação de contiguous
, anywhere
, ou cling
. Em geral, as políticas de alocação que não normal
são necessárias somente em casos especiais onde é necessário especificar uma alocação de extensão incomum ou não padronizada.
17.1. Políticas de alocação da LVM
Quando uma operação LVM precisa alocar extensões físicas para um ou mais volumes lógicos, a alocação procede da seguinte forma:
- O conjunto completo de extensões físicas não alocadas no grupo de volume é gerado para consideração. Se você fornecer qualquer faixa de extensões físicas no final da linha de comando, somente extensões físicas não alocadas dentro dessas faixas nos volumes físicos especificados são consideradas.
-
Cada política de alocação é tentada por sua vez, começando com a política mais rigorosa (
contiguous
) e terminando com a política de alocação especificada usando a opção--alloc
ou definida como padrão para o volume ou grupo de volume lógico particular. Para cada política, trabalhando a partir da extensão lógica mais baixa do espaço de volume lógico vazio que precisa ser preenchido, é alocado o máximo de espaço possível, de acordo com as restrições impostas pela política de alocação. Se for necessário mais espaço, a LVM passa para a política seguinte.
As restrições da política de alocação são as seguintes:
Uma política de alocação do
contiguous
requer que a localização física de qualquer extensão lógica que não seja a primeira extensão lógica de um volume lógico seja adjacente à localização física da extensão lógica imediatamente anterior a ela.Quando um volume lógico é listrado ou espelhado, a restrição de alocação
contiguous
é aplicada independentemente a cada listra ou imagem de espelho (perna) que necessita de espaço.Uma política de alocação do
cling
exige que o volume físico usado para qualquer extensão lógica seja adicionado a um volume lógico existente que já esteja em uso pelo menos uma extensão lógica mais cedo nesse volume lógico. Se o parâmetro de configuraçãoallocation/cling_tag_list
for definido, então dois volumes físicos são considerados iguais se alguma das tags listadas estiver presente em ambos os volumes físicos. Isto permite que grupos de volumes físicos com propriedades similares (como sua localização física) sejam etiquetados e tratados como equivalentes para fins de alocação.Quando um volume lógico é listrado ou espelhado, a restrição de alocação
cling
é aplicada independentemente a cada listra ou imagem de espelho (perna) que necessita de espaço.Uma política de alocação do
normal
não escolherá uma extensão física que compartilhe o mesmo volume físico que uma extensão lógica já alocada a um volume lógico paralelo (ou seja, uma faixa ou imagem/perna espelhada diferente) com o mesmo offset dentro desse volume lógico paralelo.Ao alocar um registro espelho ao mesmo tempo que os volumes lógicos para armazenar os dados espelho, uma política de alocação do
normal
tentará primeiro selecionar diferentes volumes físicos para o registro e os dados. Se isso não for possível e o parâmetro de configuraçãoallocation/mirror_logs_require_separate_pvs
for definido como 0, ele então permitirá que o log compartilhe volume(s) físico(s) com parte dos dados.Da mesma forma, ao alocar metadados do thin pool, uma política de alocação de
normal
seguirá as mesmas considerações que para a alocação de um registro espelho, com base no valor do parâmetro de configuraçãoallocation/thin_pool_metadata_require_separate_pvs
.-
Se houver extensões livres suficientes para satisfazer um pedido de alocação, mas uma política de alocação
normal
não as utilizaria, a política de alocaçãoanywhere
irá, mesmo que isso reduza o desempenho, colocando duas faixas no mesmo volume físico.
As políticas de alocação podem ser alteradas usando o comando vgchange
.
Se você confiar em qualquer comportamento de layout além daquele documentado nesta seção de acordo com as políticas de alocação definidas, você deve observar que isto pode mudar em versões futuras do código. Por exemplo, se você fornecer na linha de comando dois volumes físicos vazios que tenham um número idêntico de extensões físicas livres disponíveis para alocação, a LVM atualmente considera usar cada um deles na ordem em que estão listados; não há garantia de que futuras liberações manterão essa propriedade. Se for importante obter um layout específico para um determinado volume lógico, então você deve construí-lo através de uma seqüência de etapas de lvcreate
e lvconvert
, de modo que as políticas de alocação aplicadas a cada etapa não deixem à LVM nenhum arbítrio sobre o layout.
Para ver a forma como o processo de alocação funciona atualmente em qualquer caso específico, você pode ler a saída de registro de depuração, por exemplo, adicionando a opção -vvvv
a um comando.
17.2. Impedindo a alocação em um volume físico
Você pode impedir a alocação de extensões físicas no espaço livre de um ou mais volumes físicos com o comando pvchange
. Isto pode ser necessário se houver erros de disco, ou se você estiver removendo o volume físico.
O seguinte comando desativa a alocação de extensões físicas em /dev/sdk1
.
# pvchange -x n /dev/sdk1
Você também pode usar os argumentos -xy
do comando pvchange
para permitir a alocação onde ela havia sido previamente proibida.
17.3. Ampliação de um volume lógico com a política de alocação cling
Ao estender um volume LVM, você pode usar a opção --alloc cling
do comando lvextend
para especificar a política de alocação cling
. Esta política escolherá espaço nos mesmos volumes físicos que o último segmento do volume lógico existente. Se não houver espaço suficiente nos volumes físicos e uma lista de tags estiver definida no arquivo /etc/lvm/lvm.conf
, a LVM verificará se alguma das tags está anexada aos volumes físicos e procurará combinar essas tags de volume físico entre as extensões existentes e as novas extensões.
Por exemplo, se você tiver volumes lógicos que são espelhados entre dois sites dentro de um único grupo de volumes, você pode etiquetar os volumes físicos de acordo com o local onde eles estão situados, etiquetando os volumes físicos com as tags @site1
e @site2
. Você pode então especificar a seguinte linha no arquivo lvm.conf
:
cling_tag_list = [ "@site1", "@site2" ]
No exemplo a seguir, o arquivo lvm.conf
foi modificado para conter a seguinte linha:
cling_tag_list = [ "@A", "@B" ]
Também neste exemplo, foi criado um grupo de volumes taft
que consiste nos volumes físicos /dev/sdb1
, /dev/sdc1
, /dev/sdd1
, /dev/sde1
, /dev/sdf1
, /dev/sdg1
, e /dev/sdh1
. Estes volumes físicos foram marcados com tags A
, B
, e C
. O exemplo não usa a tag C
, mas isto mostrará que a LVM usa as tags para selecionar quais volumes físicos usar para as pernas do espelho.
# pvs -a -o +pv_tags /dev/sd[bcdefgh] PV VG Fmt Attr PSize PFree PV Tags /dev/sdb1 taft lvm2 a-- 15.00g 15.00g A /dev/sdc1 taft lvm2 a-- 15.00g 15.00g B /dev/sdd1 taft lvm2 a-- 15.00g 15.00g B /dev/sde1 taft lvm2 a-- 15.00g 15.00g C /dev/sdf1 taft lvm2 a-- 15.00g 15.00g C /dev/sdg1 taft lvm2 a-- 15.00g 15.00g A /dev/sdh1 taft lvm2 a-- 15.00g 15.00g A
O seguinte comando cria um volume espelhado de 10 gigabytes do grupo de volume taft
.
# lvcreate --type raid1 -m 1 -n mirror --nosync -L 10G taft
WARNING: New raid1 won't be synchronised. Don't read what you didn't write!
Logical volume "mirror" created
O seguinte comando mostra quais dispositivos são usados para as pernas do espelho e os subvolumes de metadados RAID.
# lvs -a -o +devices
LV VG Attr LSize Log Cpy%Sync Devices
mirror taft Rwi-a-r--- 10.00g 100.00 mirror_rimage_0(0),mirror_rimage_1(0)
[mirror_rimage_0] taft iwi-aor--- 10.00g /dev/sdb1(1)
[mirror_rimage_1] taft iwi-aor--- 10.00g /dev/sdc1(1)
[mirror_rmeta_0] taft ewi-aor--- 4.00m /dev/sdb1(0)
[mirror_rmeta_1] taft ewi-aor--- 4.00m /dev/sdc1(0)
O seguinte comando estende o tamanho do volume espelhado, usando a política de alocação cling
para indicar que as pernas do espelho devem ser estendidas usando volumes físicos com a mesma etiqueta.
# lvextend --alloc cling -L +10G taft/mirror
Extending 2 mirror images.
Extending logical volume mirror to 20.00 GiB
Logical volume mirror successfully resized
O seguinte comando de exibição mostra que as pernas do espelho foram estendidas usando volumes físicos com a mesma etiqueta que a perna. Note que os volumes físicos com a mesma tag de C
foram ignorados.
# lvs -a -o +devices
LV VG Attr LSize Log Cpy%Sync Devices
mirror taft Rwi-a-r--- 20.00g 100.00 mirror_rimage_0(0),mirror_rimage_1(0)
[mirror_rimage_0] taft iwi-aor--- 20.00g /dev/sdb1(1)
[mirror_rimage_0] taft iwi-aor--- 20.00g /dev/sdg1(0)
[mirror_rimage_1] taft iwi-aor--- 20.00g /dev/sdc1(1)
[mirror_rimage_1] taft iwi-aor--- 20.00g /dev/sdd1(0)
[mirror_rmeta_0] taft ewi-aor--- 4.00m /dev/sdb1(0)
[mirror_rmeta_1] taft ewi-aor--- 4.00m /dev/sdc1(0)
17.4. Diferenciando entre objetos RAID LVM usando tags
Você pode atribuir tags aos objetos LVM RAID para agrupá-los, de modo que você possa automatizar o controle do comportamento LVM RAID, como a ativação, por grupo.
As tags de volume físico (PV) são responsáveis pelo controle da alocação no ataque LVM, ao contrário das tags de volume lógico (LV) ou de grupo de volume (VG), pois a alocação em lvm ocorre no nível PV com base nas políticas de alocação. Para distinguir os tipos de armazenamento por suas diferentes propriedades, etiquetá-los adequadamente (por exemplo, NVMe, SSD, HDD). A Red Hat recomenda que você marque cada novo PV apropriadamente depois de adicioná-lo a um VG.
Este procedimento adiciona tags de objeto a seus volumes lógicos, assumindo que /dev/sda
é uma SSD, e /dev/sd[b-f]
são HDDs com uma partição.
Pré-requisitos
-
O pacote
lvm2
está instalado. - Estão disponíveis dispositivos de armazenamento para uso como PVs.
Procedimento
Criar um grupo de volume.
# vgcreate MyVG /dev/sd[a-f]1
Adicione etiquetas a seus volumes físicos.
# pvchange --addtag ssds /dev/sda1 # pvchange --addtag hdds /dev/sd[b-f]1
Criar um volume lógico RAID6.
# lvcreate --type raid6 --stripes 3 -L1G -nr6 MyVG @hdds
Criar um volume de cache linear.
# lvcreate -nr6pool -L512m MyVG @ssds
Converter o volume RAID6 para ser colocado em cache.
# lvconvert -- tipo cache --cachevol MyVG/r6pool MyVG/r6
Recursos adicionais
-
As páginas de manual
lvcreate(8)
,lvconvert(8)
,lvmraid(7)
elvmcache(7)
.
Capítulo 18. Agrupando objetos LVM com tags
Como administrador do sistema, você pode atribuir tags aos objetos LVM para agrupá-los, para que você possa automatizar o controle do comportamento do LVM, como a ativação, por grupo.
18.1. Etiquetas de objetos LVM
Uma etiqueta LVM é uma palavra que é usada para agrupar objetos LVM2 do mesmo tipo. As tags são anexadas a objetos como volumes físicos, grupos de volumes e volumes lógicos, assim como a anfitriões em uma configuração de cluster.
As etiquetas são dadas na linha de comando no lugar dos argumentos PV, VG ou LV. As etiquetas devem ser prefixadas com @ para evitar ambigüidade. Cada etiqueta é expandida substituindo-a por todos os objetos que possuem aquela etiqueta, que são do tipo esperado por sua posição na linha de comando.
As etiquetas LVM são cordas de até 1024 caracteres. As tags LVM não podem começar com um hífen.
Uma etiqueta válida consiste de uma gama limitada de caracteres apenas. Os caracteres permitidos são A-Z a-z 0-9 _ . - / = ! : # &
.
Somente objetos em um grupo de volume podem ser etiquetados. Os volumes físicos perdem suas tags se forem removidos de um grupo de volume; isto porque as tags são armazenadas como parte dos metadados do grupo de volume e isso é excluído quando um volume físico é removido.
18.2. Listagem das etiquetas LVM
O exemplo a seguir mostra como listar as etiquetas LVM.
Procedimento
-
Use o seguinte comando para listar todos os volumes lógicos com a tag
database
:
# lvs @database
- Use o seguinte comando para listar as tags do host atualmente ativas:
# lvm tags
18.3. Adicionando tags de objetos LVM
Este procedimento descreve como adicionar tags de objetos LVM.
Pré-requisitos
-
O pacote
lvm2
está instalado. - São criados um ou mais volumes físicos, grupos de volumes ou volumes lógicos.
Procedimento
Para criar uma tag de objeto, adicione a opção
--addtag
a um comando LVM:-
Para criar tags a partir de volumes físicos, adicione a opção ao comando
pvchange
. -
Para criar tags a partir de grupos de volume, adicione a opção aos comandos
vgchange
ouvgcreate
. -
Para criar tags a partir de volumes lógicos, adicione a opção aos comandos
lvchange
oulvcreate
.
-
Para criar tags a partir de volumes físicos, adicione a opção ao comando
18.4. Remoção das etiquetas de objetos LVM
Este procedimento descreve como remover as etiquetas dos objetos LVM.
Pré-requisitos
-
O pacote
lvm2
está instalado. - São criadas etiquetas de objetos em volumes físicos, grupos de volumes ou volumes lógicos.
Procedimento
Para excluir uma etiqueta de objeto, adicione a opção
--deltag
a um comando LVM:-
Para excluir tags de volumes físicos, adicione a opção ao comando
pvchange
. -
Para excluir tags de grupos de volume, adicione a opção aos comandos
vgchange
ouvgcreate
. -
Para excluir tags dos volumes lógicos, adicione a opção aos comandos
lvchange
oulvcreate
.
-
Para excluir tags de volumes físicos, adicione a opção ao comando
18.5. Definindo as etiquetas do hospedeiro LVM
Este procedimento descreve como definir as tags do host LVM em uma configuração de cluster. É possível definir as tags de host nos arquivos de configuração.
Procedimento
Defina
hosttags = 1
na seçãotags
para definir automaticamente o host tag usando o nome do host da máquina.Isto permite que você utilize um arquivo de configuração comum que pode ser replicado em todas as suas máquinas para que elas mantenham cópias idênticas do arquivo, mas o comportamento pode diferir entre as máquinas de acordo com o nome do host.
Para cada tag do host, um arquivo de configuração extra é lido, caso exista: lvm_hosttag.conf
. Se esse arquivo definir novas tags, então outros arquivos de configuração serão anexados à lista de arquivos a serem lidos.
Por exemplo, a seguinte entrada no arquivo de configuração sempre define tag1
, e define tag2
se o nome do host for host1
:
tags { tag1 { } tag2 { host_list = ["host1"] } }
18.6. Controle da ativação lógica de volume com tags
Este procedimento descreve como especificar no arquivo de configuração que somente determinados volumes lógicos devem ser ativados naquele host.
Pré-requisitos
- Uma lista de condições que devem ser satisfeitas antes que o usuário comece a seguir esta montagem.
- Também é possível vincular-se a outros módulos ou montagens que o usuário deve seguir antes de iniciar esta montagem.
- Eliminar o título da seção e as balas se a assembléia não tiver pré-requisitos.
Procedimento
Por exemplo, a seguinte entrada atua como um filtro para solicitações de ativação (como vgchange -ay
) e só ativa vg1/lvol0
e quaisquer volumes lógicos ou grupos de volume com a tag database
nos metadados daquele host:
ativação { lista_de_volume = [vg1/lvol0}, "@base_de_dados}
A correspondência especial @*
que causa uma correspondência somente se qualquer tag de metadados corresponder a qualquer tag do host naquela máquina.
Como outro exemplo, considere uma situação em que cada máquina do cluster tem a seguinte entrada no arquivo de configuração:
tags { hosttags = 1 }
Se você quiser ativar vg1/lvol2
somente no host db2
, faça o seguinte:
-
Execute
lvchange --addtag @db2 vg1/lvol2
a partir de qualquer anfitrião do cluster. -
Rodar
lvchange -ay vg1/lvol2
.
Esta solução envolve o armazenamento de nomes de host dentro dos metadados do grupo de volume.
Capítulo 19. Solução de problemas de LVM
Você pode usar ferramentas LVM para solucionar uma variedade de problemas em volumes e grupos de LVM.
19.1. Coleta de dados de diagnóstico sobre LVM
Se um comando LVM não estiver funcionando como esperado, você pode reunir diagnósticos das seguintes maneiras.
Procedimento
Use os seguintes métodos para coletar diferentes tipos de dados de diagnóstico:
-
Adicione o argumento
-vvvv
a qualquer comando LVM para aumentar o nível de verbosidade da saída do comando. -
Na seção
log
do arquivo de configuração/etc/lvm/lvm.conf
, aumente o valor da opçãolevel
. Isto faz com que a LVM forneça mais detalhes no log do sistema. Se o problema estiver relacionado com a ativação lógica do volume, habilite a LVM a registrar mensagens durante a ativação:
-
Defina a opção
activation = 1
na seçãolog
do arquivo de configuração/etc/lvm/lvm.conf
. -
Execute o comando LVM com a opção
-vvvv
. - Examine a saída do comando.
Redefinir a opção
activation
para0
.Se você não reiniciar a opção para
0
, o sistema pode ficar sem resposta durante situações de pouca memória.
-
Defina a opção
Exibir uma lixeira de informações para fins de diagnóstico:
# lvmdump
Exibir informações adicionais do sistema:
# lvs -v
# pvs -- todos
# dmsetup info --colunas
-
Examine o último backup dos metadados da LVM no diretório
/etc/lvm/backup/
e as versões arquivadas no diretório/etc/lvm/archive/
. Verifique as informações de configuração atuais:
# lvmconfig
-
Verifique o arquivo cache
/run/lvm/hints
para saber quais dispositivos têm volumes físicos.
-
Adicione o argumento
Recursos adicionais
-
A página do homem
lvmdump(8)
19.2. Exibição de informações sobre dispositivos LVM com falhas
Você pode exibir informações sobre um volume LVM falho que podem ajudá-lo a determinar por que o volume falhou.
Procedimento
Mostrar os volumes falhados usando o utilitário
vgs
oulvs
.Exemplo 19.1. Grupos de volume fracassados
Neste exemplo, um dos dispositivos que compunham o grupo de volume
vg
falhou. O grupo de volume é inutilizável, mas você pode ver informações sobre o dispositivo que falhou.# vgs --options +devices /dev/sdb: open failed: No such device or address /dev/sdb: open failed: No such device or address WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s. WARNING: VG vg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1). WARNING: Couldn't find all devices for LV vg/linear while checking used and assumed devices. WARNING: Couldn't find all devices for LV vg/stripe while checking used and assumed devices. VG #PV #LV #SN Attr VSize VFree Devices vg 2 2 0 wz-pn- <3.64t <3.60t [unknown](0) vg 2 2 0 wz-pn- <3.64t <3.60t [unknown](5120),/dev/sdc1(0)
Exemplo 19.2. Falha no LV linear e listrado
Neste exemplo, o dispositivo falhado fez com que tanto um volume linear quanto um volume lógico listrado no grupo de volume falhassem. A saída do comando mostra os volumes lógicos que falharam.
# lvs --all --options +devices /dev/sdb: open failed: No such device or address /dev/sdb: open failed: No such device or address WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s. WARNING: VG vg is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1). WARNING: Couldn't find all devices for LV vg/linear while checking used and assumed devices. WARNING: Couldn't find all devices for LV vg/stripe while checking used and assumed devices. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices linear vg -wi-a---p- 20.00g [unknown](0) stripe vg -wi-a---p- 20.00g [unknown](5120),/dev/sdc1(0)
Exemplo 19.3. Perna com defeito de um volume lógico espelhado
Os exemplos a seguir mostram a saída do comando dos utilitários
vgs
elvs
quando uma perna de um volume lógico espelhado falhou.# vgs --all --options +devices VG #PV #LV #SN Attr VSize VFree Devices corey 4 4 0 rz-pnc 1.58T 1.34T my_mirror_mimage_0(0),my_mirror_mimage_1(0) corey 4 4 0 rz-pnc 1.58T 1.34T /dev/sdd1(0) corey 4 4 0 rz-pnc 1.58T 1.34T unknown device(0) corey 4 4 0 rz-pnc 1.58T 1.34T /dev/sdb1(0)
# lvs --all --options +devices LV VG Attr LSize Origin Snap% Move Log Copy% Devices my_mirror corey mwi-a- 120.00G my_mirror_mlog 1.95 my_mirror_mimage_0(0),my_mirror_mimage_1(0) [my_mirror_mimage_0] corey iwi-ao 120.00G unknown device(0) [my_mirror_mimage_1] corey iwi-ao 120.00G /dev/sdb1(0) [my_mirror_mlog] corey lwi-ao 4.00M /dev/sdd1(0)
19.3. Remoção de volumes físicos LVM perdidos de um grupo de volume
Se um volume físico falhar, você pode ativar os volumes físicos restantes no grupo de volume e remover todos os volumes lógicos que usaram esse volume físico do grupo de volume.
Procedimento
Ativar os volumes físicos restantes no grupo de volume:
# vgchange -- ativar y -parcial volume-group
Verifique quais volumes lógicos serão removidos:
# vgreduce -- destituição --teste volume-group
Remover todos os volumes lógicos que utilizaram o volume físico perdido do grupo de volume:
# vgreduce -- retirada da força --force volume-group
Opcional: Se você removeu acidentalmente volumes lógicos que queria manter, você pode reverter a operação
vgreduce
:# vgcfgrestore volume-group
AtençãoSe você removeu um pool fino, a LVM não pode reverter a operação.
19.4. Recuperando um volume físico LVM com metadados danificados
Se a área de metadados do grupo de volume de um volume físico for acidentalmente sobrescrita ou destruída, você recebe uma mensagem de erro indicando que a área de metadados está incorreta, ou que o sistema não foi capaz de encontrar um volume físico com um UUID específico. Você pode ser capaz de recuperar os dados do volume físico, reescrevendo a área de metadados no volume físico.
19.4.1. Descobrindo que um volume LVM tem metadados ausentes ou corrompidos
O exemplo a seguir mostra a saída de comando que você pode ver se a área de metadados em um volume físico está faltando ou corrompida.
Procedimento
Tente listar os volumes lógicos:
# lvs -- todos -- dispositivos de opção
Exemplo 19.4. Saída com metadados ausentes ou corrompidos
Neste exemplo, certos volumes lógicos estão localizados em um volume físico que tem metadados ausentes ou corrompidos.
Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'. Couldn't find all physical volumes for volume group VG. Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'. Couldn't find all physical volumes for volume group VG. ...
19.4.2. Encontrando os metadados de um volume físico LVM ausente
Este procedimento encontra os últimos metadados arquivados de um volume físico que está faltando ou corrompido.
Procedimento
Encontre o arquivo de metadados arquivado do grupo de volume que contém o volume físico.
Os arquivos de metadados arquivados estão localizados no
/etc/lvm/archive/volume-group-name_backup-number.vg
caminho. Selecione o último arquivo de metadados válido conhecido, que tem o maior número para o grupo de volume.Encontre o UUID do volume físico. Use um dos seguintes métodos.
Liste os volumes lógicos:
# lvs --all --options +devices Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
-
Examinar o arquivo de metadados arquivado. Encontre a UUID como o valor rotulado
id =
na seçãophysical_volumes
da configuração do grupo de volume. Desativar o grupo de volume usando a opção
--partial
:# vgchange --activate n --partial volume-group-name PARTIAL MODE. Incomplete logical volumes will be processed. WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s. WARNING: VG raid_sanity is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1). 0 logical volume(s) in volume group "raid_sanity" now active
19.4.3. Restaurando metadados em um volume físico LVM
Este procedimento restaura metadados em um volume físico que está corrompido ou substituído por um novo dispositivo.
Não tente este procedimento em um volume lógico LVM funcional. Você perderá seus dados se você especificar a UUID incorreta.
Pré-requisitos
- Você identificou os metadados do volume físico em falta. Para maiores detalhes, veja Seção 19.4.2, “Encontrando os metadados de um volume físico LVM ausente”.
Procedimento
Restaurar os metadados sobre o volume físico:
# pvcreate --uuid physical-volume-uuid \ --restorefile /etc/lvm/archive/volume-group-name_backup-number.vg \ block-device
NotaO comando substitui apenas as áreas de metadados LVM e não afeta as áreas de dados existentes.
Exemplo 19.5. Restaurando um volume físico em /dev/sdh1
O seguinte exemplo rotula o dispositivo
/dev/sdh1
como um volume físico com as seguintes propriedades:-
A UUID de
FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk
-
As informações de metadados contidas em
VG_00050.vg
, que é o mais recente bom metadados arquivados para o grupo de volume
# pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk" \ --restorefile /etc/lvm/archive/VG_00050.vg \ /dev/sdh1 ... Physical volume "/dev/sdh1" successfully created
-
A UUID de
Restaurar os metadados do grupo de volume:
# vgcfgrestore volume-group-name Restored volume group volume-group-name
Mostrar os volumes lógicos no grupo de volume:
# lvs -- todos -- dispositivos de opção volume-group-name
Os volumes lógicos estão atualmente inativos. Por exemplo, os volumes lógicos estão atualmente inativos:
LV VG Attr LSize Origin Snap% Move Log Copy% Devices stripe VG -wi--- 300.00G /dev/sdh1 (0),/dev/sda1(0) stripe VG -wi--- 300.00G /dev/sdh1 (34728),/dev/sdb1(0)
Se o tipo de segmento dos volumes lógicos for RAID ou espelho, ressincronize os volumes lógicos:
# lvchange --resync volume-group-name/logical-volume-name
Ativar os volumes lógicos:
# lvchange -- ativar y /dev/volume-group-name/logical-volume-name
- Se os metadados LVM em disco ocuparem pelo menos tanto espaço quanto o que os ultrapassa, este procedimento pode recuperar o volume físico. Se o que ultrapassou os metadados passou pela área dos metadados, os dados sobre o volume podem ter sido afetados. Você pode ser capaz de usar o comando fsck para recuperar esses dados.
Etapas de verificação
Mostrar os volumes lógicos ativos:
# lvs --all --options +devices LV VG Attr LSize Origin Snap% Move Log Copy% Devices stripe VG -wi-a- 300.00G /dev/sdh1 (0),/dev/sda1(0) stripe VG -wi-a- 300.00G /dev/sdh1 (34728),/dev/sdb1(0)
19.5. Substituição de um volume físico LVM ausente
Se um volume físico falhar ou precisar ser substituído, você pode rotular um novo volume físico para substituir aquele que foi perdido no grupo de volume existente.
Pré-requisitos
Você substituiu o volume físico por um novo dispositivo de armazenamento.
TODO: Reavaliar a colocação desta etapa.
19.5.1. Encontrando os metadados de um volume físico LVM ausente
Este procedimento encontra os últimos metadados arquivados de um volume físico que está faltando ou corrompido.
Procedimento
Encontre o arquivo de metadados arquivado do grupo de volume que contém o volume físico.
Os arquivos de metadados arquivados estão localizados no
/etc/lvm/archive/volume-group-name_backup-number.vg
caminho. Selecione o último arquivo de metadados válido conhecido, que tem o maior número para o grupo de volume.Encontre o UUID do volume físico. Use um dos seguintes métodos.
Liste os volumes lógicos:
# lvs --all --options +devices Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
-
Examinar o arquivo de metadados arquivado. Encontre a UUID como o valor rotulado
id =
na seçãophysical_volumes
da configuração do grupo de volume. Desativar o grupo de volume usando a opção
--partial
:# vgchange --activate n --partial volume-group-name PARTIAL MODE. Incomplete logical volumes will be processed. WARNING: Couldn't find device with uuid 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s. WARNING: VG raid_sanity is missing PV 42B7bu-YCMp-CEVD-CmKH-2rk6-fiO9-z1lf4s (last written to /dev/sdb1). 0 logical volume(s) in volume group "raid_sanity" now active
19.5.2. Restaurando metadados em um volume físico LVM
Este procedimento restaura metadados em um volume físico que está corrompido ou substituído por um novo dispositivo.
Não tente este procedimento em um volume lógico LVM funcional. Você perderá seus dados se você especificar a UUID incorreta.
Pré-requisitos
- Você identificou os metadados do volume físico em falta. Para maiores detalhes, veja Seção 19.5.1, “Encontrando os metadados de um volume físico LVM ausente”.
Procedimento
Restaurar os metadados sobre o volume físico:
# pvcreate --uuid physical-volume-uuid \ --restorefile /etc/lvm/archive/volume-group-name_backup-number.vg \ block-device
NotaO comando substitui apenas as áreas de metadados LVM e não afeta as áreas de dados existentes.
Exemplo 19.6. Restaurando um volume físico em /dev/sdh1
O seguinte exemplo rotula o dispositivo
/dev/sdh1
como um volume físico com as seguintes propriedades:-
A UUID de
FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk
-
As informações de metadados contidas em
VG_00050.vg
, que é o mais recente bom metadados arquivados para o grupo de volume
# pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk" \ --restorefile /etc/lvm/archive/VG_00050.vg \ /dev/sdh1 ... Physical volume "/dev/sdh1" successfully created
-
A UUID de
Restaurar os metadados do grupo de volume:
# vgcfgrestore volume-group-name Restored volume group volume-group-name
Mostrar os volumes lógicos no grupo de volume:
# lvs -- todos -- dispositivos de opção volume-group-name
Os volumes lógicos estão atualmente inativos. Por exemplo, os volumes lógicos estão atualmente inativos:
LV VG Attr LSize Origin Snap% Move Log Copy% Devices stripe VG -wi--- 300.00G /dev/sdh1 (0),/dev/sda1(0) stripe VG -wi--- 300.00G /dev/sdh1 (34728),/dev/sdb1(0)
Se o tipo de segmento dos volumes lógicos for RAID ou espelho, ressincronize os volumes lógicos:
# lvchange --resync volume-group-name/logical-volume-name
Ativar os volumes lógicos:
# lvchange -- ativar y /dev/volume-group-name/logical-volume-name
- Se os metadados LVM em disco ocuparem pelo menos tanto espaço quanto o que os ultrapassa, este procedimento pode recuperar o volume físico. Se o que ultrapassou os metadados passou pela área dos metadados, os dados sobre o volume podem ter sido afetados. Você pode ser capaz de usar o comando fsck para recuperar esses dados.
Etapas de verificação
Mostrar os volumes lógicos ativos:
# lvs --all --options +devices LV VG Attr LSize Origin Snap% Move Log Copy% Devices stripe VG -wi-a- 300.00G /dev/sdh1 (0),/dev/sda1(0) stripe VG -wi-a- 300.00G /dev/sdh1 (34728),/dev/sdb1(0)
19.6. Solução de problemas de RAID LVM
Você pode solucionar vários problemas em dispositivos LVM RAID para corrigir erros de dados, recuperar dispositivos ou substituir dispositivos falhos.
19.6.1. Verificação da coerência dos dados em um volume lógico RAID (scrubbing RAID)
O LVM fornece suporte à lavagem de volumes lógicos RAID. A depuração RAID é o processo de leitura de todos os dados e blocos de paridade em uma matriz e verificação para ver se eles são coerentes.
Procedimento
Opcional: Limite a largura de banda de E/S que o processo de depuração utiliza.
Quando você realiza uma operação de scrubbing RAID, as E/S de fundo exigidas pelas operações do
sync
podem excluir outras E/S para dispositivos LVM, tais como atualizações de metadados de grupos de volume. Isto pode fazer com que as outras operações LVM diminuam a velocidade. Você pode controlar a taxa da operação de scrubbing implementando o estrangulamento de recuperação.Adicione as seguintes opções aos comandos
lvchange --syncaction
nos próximos passos:--maxrecoveryrate Rate[bBsSkKmMgG]
- Define a taxa máxima de recuperação de modo que a operação exclua as operações de E/S nominais. Ajustar a taxa de recuperação para 0 significa que a operação não está vinculada.
--minrecoveryrate Rate[bBsSkKmMgG]
-
Define a taxa mínima de recuperação para garantir que as E/S para as operações do site
sync
atinjam um rendimento mínimo, mesmo quando a E/S nominal pesada está presente.
Especifique o valor Rate como um valor por segundo para cada dispositivo da matriz. Se você não fornecer nenhum sufixo, as opções assumem kiB por segundo por dispositivo.
Mostrar o número de discrepâncias na matriz, sem repará-las:
# lvchange - verificação de sincronia vg/raid_lv
Corrigir as discrepâncias na matriz:
# lvchange --syncaction repair vg/raid_lv
NotaA operação
lvchange --syncaction repair
não desempenha a mesma função que a operaçãolvconvert --repair
:-
A operação
lvchange --syncaction repair
inicia uma operação de sincronização de fundo na matriz. -
A operação
lvconvert --repair
repara ou substitui dispositivos falhos em um espelho ou em um volume lógico RAID.
-
A operação
Opcional: Exibir informações sobre a operação de depuração:
# lvs -o raid_sync_action,raid_mismatch_count vg/lv
O campo
raid_sync_action
exibe a operação de sincronização atual que o volume RAID está realizando. Ele pode ser um dos seguintes valores:idle
- Todas as operações de sincronização concluídas (não fazer nada)
resync
- Inicialização de uma matriz ou recuperação após uma falha da máquina
recover
- Substituição de um dispositivo na matriz
check
- Procurando por inconsistências de matriz
repair
- Procura e reparo de inconsistências
-
O campo
raid_mismatch_count
mostra o número de discrepâncias encontradas durante uma operaçãocheck
. -
O campo
Cpy%Sync
mostra o progresso das operações dosync
. O campo
lv_attr
fornece indicadores adicionais. O bit 9 deste campo exibe a saúde do volume lógico, e suporta os seguintes indicadores:-
m
(desajustes) indica que há discrepâncias em um volume lógico RAID. Este caráter é mostrado após uma operação de scrubbing ter detectado que partes do RAID não são coerentes. -
r
(refresh) indica que um dispositivo em um array RAID sofreu uma falha e o kernel o considera uma falha, mesmo que o LVM possa ler a etiqueta do dispositivo e considere o dispositivo como operacional. Atualize o volume lógico para notificar o kernel de que o dispositivo está agora disponível, ou substitua o dispositivo se você suspeitar que ele falhou.
-
Recursos adicionais
-
Para mais informações, consulte as páginas de manual
lvchange(8)
elvmraid(7)
.
19.6.2. Dispositivos falhados em RAID LVM
RAID não é como o tradicional espelhamento LVM. O espelhamento LVM exigia a remoção de dispositivos com falhas ou o volume lógico do espelhamento seria pendurado. As matrizes RAID podem continuar a funcionar com dispositivos com falhas. Na verdade, para outros tipos de RAID além do RAID1, remover um dispositivo significaria converter para um RAID de nível inferior (por exemplo, de RAID6 para RAID5, ou de RAID4 ou RAID5 para RAID0).
Portanto, ao invés de remover incondicionalmente e potencialmente alocar um dispositivo falhado, o LVM permite substituir um dispositivo falhado em um volume RAID em uma solução de uma etapa, usando o argumento --repair
do comando lvconvert
.
19.6.3. Recuperando um dispositivo RAID falho em um volume lógico
Se a falha do dispositivo LVM RAID for uma falha transitória ou se você for capaz de reparar o dispositivo que falhou, você pode iniciar a recuperação do dispositivo que falhou.
Pré-requisitos
- O dispositivo anteriormente falhado está agora funcionando.
Procedimento
Atualize o volume lógico que contém o dispositivo RAID:
# lvchange --refresh my_vg/my_lv
Etapas de verificação
Examine o volume lógico com o dispositivo recuperado:
# lvs -- todas --opções nome,dispositivos,lv_attr,lv_health_status my_vg
19.6.4. Substituição de um dispositivo RAID falho em um volume lógico
Este procedimento substitui um dispositivo falho que serve como volume físico em um volume lógico LVM RAID.
Pré-requisitos
O grupo de volume inclui um volume físico que fornece capacidade livre suficiente para substituir o dispositivo avariado.
Se nenhum volume físico com extensões livres suficientes estiver disponível no grupo de volume, adicione um novo volume físico suficientemente grande usando o utilitário
vgextend
.
Procedimento
No exemplo a seguir, um volume lógico RAID é apresentado como se segue:
# lvs --all --options name,copy_percent,devices my_vg LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdc1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdc1(0) [my_lv_rmeta_2] /dev/sdd1(0)
Se o dispositivo
/dev/sdc
falhar, a saída do comandolvs
é a seguinte:# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. LV Cpy%Sync Devices my_lv 100.00 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] [unknown](1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] [unknown](0) [my_lv_rmeta_2] /dev/sdd1(0)
Substitua o dispositivo que falhou e exiba o volume lógico:
# lvconvert --repair my_vg/my_lv /dev/sdc: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. WARNING: Couldn't find all devices for LV my_vg/my_lv_rimage_1 while checking used and assumed devices. WARNING: Couldn't find all devices for LV my_vg/my_lv_rmeta_1 while checking used and assumed devices. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Faulty devices in my_vg/my_lv successfully replaced.
Opcional: Para especificar manualmente o volume físico que substitui o dispositivo avariado, adicionar o volume físico no final do comando:
# lvconvert --repare my_vg/my_lv replacement_pv
Examine o volume lógico com o substituto:
# lvs --all --options name,copy_percent,devices my_vg /dev/sdc: open failed: No such device or address /dev/sdc1: open failed: No such device or address Couldn't find device with uuid A4kRl2-vIzA-uyCb-cci7-bOod-H5tX-IzH4Ee. LV Cpy%Sync Devices my_lv 43.79 my_lv_rimage_0(0),my_lv_rimage_1(0),my_lv_rimage_2(0) [my_lv_rimage_0] /dev/sde1(1) [my_lv_rimage_1] /dev/sdb1(1) [my_lv_rimage_2] /dev/sdd1(1) [my_lv_rmeta_0] /dev/sde1(0) [my_lv_rmeta_1] /dev/sdb1(0) [my_lv_rmeta_2] /dev/sdd1(0)
Até que você remova o dispositivo defeituoso do grupo de volume, as utilidades da LVM ainda indicam que a LVM não consegue encontrar o dispositivo defeituoso.
Remover o dispositivo com defeito do grupo de volume:
# vgreduce --removemissing VG
19.7. Solução de problemas com extensões livres insuficientes para um volume lógico
Você pode receber a mensagem de erro Insufficient free extents
ao tentar criar um volume lógico, mesmo quando você acha que o grupo de volume tem espaço livre suficiente. Você pode solucionar este erro para poder criar um volume lógico no grupo de volume.
19.7.1. Grupos de volume
Os volumes físicos são combinados em grupos de volume (VGs). Isto cria um pool de espaço em disco a partir do qual os volumes lógicos podem ser alocados.
Dentro de um grupo de volume, o espaço em disco disponível para alocação é dividido em unidades de tamanho fixo chamadas extensões. Uma extensão é a menor unidade de espaço que pode ser alocada. Dentro de um volume físico, as extensões são chamadas de extensões físicas.
Um volume lógico é alocado em extensões lógicas do mesmo tamanho que as extensões físicas. O tamanho da extensão é, portanto, o mesmo para todos os volumes lógicos do grupo de volume. O grupo de volume mapeia os extensões lógicas em extensões físicas.
19.7.2. Erros de arredondamento na saída da LVM
Os comandos LVM que informam o uso do espaço em grupos de volume arredondam o número informado a 2 casas decimais para fornecer uma saída legível para humanos. Isto inclui os utilitários vgdisplay
e vgs
.
Como resultado do arredondamento, o valor relatado de espaço livre pode ser maior do que o que os extensões físicas no grupo de volume proporcionam. Se você tentar criar um volume lógico do tamanho do espaço livre relatado, você pode obter o seguinte erro:
Extensões livres insuficientes
Para contornar o erro, você deve examinar o número de extensões físicas livres no grupo de volume, que é o valor exato do espaço livre. Você pode então usar o número de extensões para criar o volume lógico com sucesso.
19.7.3. Prevenir o erro de arredondamento ao criar um volume LVM
Ao criar um volume lógico LVM, você pode especificar o tamanho do volume lógico para que não ocorra nenhum erro de arredondamento.
Procedimento
Encontre o número de extensões físicas livres no grupo de volume:
# vgdisplay volume-group-name
Exemplo 19.7. Extensões livres em um grupo de volume
Por exemplo, o seguinte grupo de volume tem 8780 extensões físicas livres:
--- Volume group --- ... Free PE / Size 8780 / 34.30 GB
Criar o volume lógico. Digite o tamanho do volume em extensões em vez de bytes.
Exemplo 19.8. Criação de um volume lógico, especificando o número de extensões
# lvcreate --extents 8780 --nome testlv testvg
Exemplo 19.9. Criação de um volume lógico para ocupar todo o espaço restante
Alternativamente, você pode estender o volume lógico para usar uma porcentagem do espaço livre restante no grupo de volume. Por exemplo:
# lvcreate --extents 100EE --nome testlv2 testvg
Etapas de verificação
Verifique o número de extensões que o grupo de volume agora usa:
# vgs --options +vg_free_count,vg_extent_count VG #PV #LV #SN Attr VSize VFree Free #Ext testvg 2 1 0 wz--n- 34.30G 0 0 8780
19.8. Solução de problemas de avisos de volume físico duplicado para dispositivos LVM multipathed
Ao usar LVM com armazenamento multipath, comandos LVM que listam um grupo de volume ou volume lógico podem exibir mensagens como as seguintes:
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/dm-5 not /dev/sdd Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowerb not /dev/sde Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sddlmab not /dev/sdf
Você pode solucionar estes avisos para entender por que a LVM os exibe, ou para esconder os avisos.
19.8.1. Causa raiz das advertências de PV duplicadas
Quando um software multipath como o Device Mapper Multipath (DM Multipath), EMC PowerPath ou Hitachi Dynamic Link Manager (HDLM) gerencia dispositivos de armazenamento no sistema, cada caminho para uma unidade lógica específica (LUN) é registrado como um dispositivo SCSI diferente. O software multipath cria então um novo dispositivo que mapeia para esses caminhos individuais. Como cada LUN tem múltiplos nós de dispositivos no diretório /dev
que apontam para os mesmos dados subjacentes, todos os nós de dispositivos contêm os mesmos metadados do LVM.
Tabela 19.1. Exemplos de mapeamentos de dispositivos em diferentes softwares multipath
Software multipath | SCSI caminhos para um LUN | Mapeamento de dispositivos multicaminhos para caminhos |
---|---|---|
DM Multipath |
|
|
EMC PowerPath |
| |
HDLM |
|
Como resultado dos múltiplos nós de dispositivos, as ferramentas LVM encontram os mesmos metadados várias vezes e os relatam como duplicados.
19.8.2. Casos de avisos PV duplicados
A LVM exibe os avisos PV duplicados em um dos seguintes casos:
- Os dois dispositivos exibidos na saída são ambos caminhos individuais para o mesmo dispositivo.
- Os dois dispositivos exibidos na saída são ambos mapas multipath.
Caminhos individuais para o mesmo dispositivo
O exemplo a seguir mostra um aviso PV duplicado, no qual os dispositivos duplicados são ambos caminhos únicos para o mesmo dispositivo.
Encontrado duplicado de PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: usando /dev/sdd não /dev/sdf
Se você listar a topologia DM Multipath atual usando o comando multipath -ll
, você pode encontrar tanto /dev/sdd
como /dev/sdf
sob o mesmo mapa multipath.
Estas mensagens duplicadas são apenas avisos e não significam que a operação da LVM falhou. Ao contrário, elas estão alertando que a LVM usa apenas um dos dispositivos como um volume físico e ignora os outros.
Se as mensagens indicarem que a LVM escolhe o dispositivo incorreto ou se os avisos forem perturbadores para os usuários, você pode aplicar um filtro. O filtro configura o LVM para procurar somente os dispositivos necessários para volumes físicos, e para deixar de fora quaisquer caminhos subjacentes a dispositivos multipath. Como resultado, as advertências não aparecem mais.
Mapas multicaminhos
Os exemplos a seguir mostram um aviso PV duplicado para dois dispositivos que são ambos mapas multipath. Os volumes físicos duplicados estão localizados em dois dispositivos diferentes e não em dois caminhos diferentes para o mesmo dispositivo.
Encontrado duplicado de PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: usando /dev/mapper/mpatha não /dev/mapper/mpathc
Encontrado duplicado de PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: usando /dev/emcpowera não /dev/emcpowerh
Esta situação é mais grave do que a duplicação de avisos para dispositivos que são ambos caminhos únicos para o mesmo dispositivo. Estes avisos muitas vezes significam que a máquina está acessando dispositivos que não deveria acessar: por exemplo, clones LUN ou espelhos.
A menos que você saiba claramente quais dispositivos você deve remover da máquina, esta situação pode ser irrecuperável. A Red Hat recomenda que você entre em contato com o Suporte Técnico da Red Hat para resolver este problema.
19.8.3. O filtro do dispositivo LVM
As ferramentas LVM procuram por dispositivos no diretório /dev
e verificam todos os dispositivos lá em busca de metadados LVM. Um filtro no arquivo /etc/lvm/lvm.conf
controla quais dispositivos LVM escaneia.
O filtro é uma lista de padrões que a LVM aplica a cada dispositivo encontrado por uma varredura do diretório /dev
, ou o diretório especificado pela palavra-chave dir
no arquivo /etc/lvm/lvm.conf
. Os padrões são expressões regulares delimitadas por qualquer caracter e precedidas por a
para accept ou r
para reject. A primeira expressão regular na lista que corresponde a um dispositivo determina se a LVM aceita ou rejeita (ignora) o dispositivo. A LVM aceita dispositivos que não correspondem a nenhum padrão.
A seguir está a configuração padrão do filtro, que escaneia todos os dispositivos:
filtro = [ \ a/.*/" ]
19.8.4. Exemplo de filtros de dispositivos LVM que impedem a duplicação de avisos PV
Os exemplos seguintes mostram filtros de dispositivos LVM que evitam a duplicação de avisos de volume físico que são causados por múltiplos caminhos de armazenamento para uma única unidade lógica (LUN).
O filtro que você configura deve incluir todos os dispositivos que o LVM precisa ser verificado quanto a metadados, como o disco rígido local com o grupo de volume raiz nele e quaisquer dispositivos multipathed. Ao rejeitar os caminhos subjacentes a um dispositivo multipath (como /dev/sdb
, /dev/sdd
, etc.), você pode evitar estes avisos de PV duplicados, porque o LVM encontra cada área de metadados única uma vez no próprio dispositivo multipath.
Este filtro aceita a segunda partição no primeiro disco rígido e quaisquer dispositivos DM Multipath, mas rejeita todo o resto:
filtro = [ a|/dev/sda2$", "a|/dev/mapper/mpath.*", "r|.*" ]
Este filtro aceita todos os controladores HP SmartArray e quaisquer dispositivos EMC PowerPath:
filtro = [ a|/dev/cciss/.*", "a|/dev/emcpower.*", "r|.*" ]
Este filtro aceita quaisquer partições no primeiro drive IDE e quaisquer dispositivos multipath:
filtro = [ a|/dev/hda.*", "a|/dev/mapper/mpath.*", "r|.*" ]
19.8.5. Aplicação de uma configuração de filtro do dispositivo LVM
Este procedimento altera a configuração do filtro do dispositivo LVM, que controla os dispositivos que o LVM escaneia.
Pré-requisitos
- Prepare o padrão de filtro do dispositivo que você deseja usar.
Procedimento
Teste o padrão de filtragem de seu dispositivo sem modificar o arquivo
/etc/lvm/lvm.conf
.Use um comando LVM com o
--config 'devices{ filter = [ your device filter pattern ] }'
opção. Por exemplo:# lvs --configurar 'dispositivos (filtro = [ a|/dev/emcpower.*", "r|.*" ]'
-
Edite a opção
filter
no arquivo de configuração/etc/lvm/lvm.conf
para usar seu novo padrão de filtro de dispositivo. Verifique se não estão faltando volumes físicos ou grupos de volume que você deseja utilizar com a nova configuração:
# pvscan
# vgscan
Reconstruir o sistema de arquivos
initramfs
para que a LVM escaneie somente os dispositivos necessários após a reinicialização:# dracut --force --verbose