===== Physical Volumes (PVs) =====
==== Nível Básico ====
* **Criar um Physical Volume (PV):**
- sudo pvcreate /dev/sdb
- Inicializa o dispositivo `/dev/sdb` como um **Physical Volume**, pronto para ser utilizado em um **Volume Group (VG)**.
* **Listar todos os Physical Volumes no sistema:**
- sudo pvdisplay
- Exibe informações detalhadas de todos os **Physical Volumes** no sistema.
* **Verificar informações resumidas dos Physical Volumes:**
- sudo pvs
- Mostra um resumo de todos os **PVs** com detalhes como o nome, tamanho e o **Volume Group** associado.
* **Exibir informações detalhadas de um PV específico:**
- sudo pvdisplay /dev/sdb
- Mostra informações detalhadas sobre o **PV** localizado em `/dev/sdb`.
* **Redefinir o rótulo de um PV (remover configuração):**
- sudo pvremove /dev/sdb
- Remove o rótulo LVM de um **Physical Volume**, apagando-o da configuração.
==== Nível Intermediário ====
* **Verificar o status de um PV com informações detalhadas:**
- sudo pvscan
- Verifica todos os discos do sistema e detecta **Physical Volumes** e **Volume Groups**, mostrando uma visão geral de seus estados.
* **Adicionar múltiplos discos como Physical Volumes:**
- sudo pvcreate /dev/sdb /dev/sdc
- Inicializa os dispositivos `/dev/sdb` e `/dev/sdc` como **PVs** prontos para serem adicionados a um **VG**.
* **Mover dados de um Physical Volume para outro:**
- sudo pvmove /dev/sdb /dev/sdc
- Move os dados do **PV** `/dev/sdb` para o **PV** `/dev/sdc`, útil em cenários de migração ou manutenção de discos.
* **Marcar um PV como não alocável:**
- sudo pvchange -x n /dev/sdb
- Marca o **PV** `/dev/sdb` como não disponível para alocação de novos dados.
* **Marcar um PV como alocável novamente:**
- sudo pvchange -x y /dev/sdb
- Redefine o **PV** `/dev/sdb` como disponível para alocação de novos dados.
==== Nível Avançado ====
* **Aumentar o tamanho de um PV após expandir um disco (por exemplo, disco virtual):**
- sudo pvresize /dev/sdb
- Redimensiona o **PV** `/dev/sdb` para utilizar o novo espaço disponível após a expansão do disco.
* **Verificar a integridade de um PV:**
- sudo pvck /dev/sdb
- Verifica o **Physical Volume** `/dev/sdb` em busca de erros ou problemas de metadados.
* **Modificar os atributos de um Physical Volume:**
- sudo pvchange --metadataignore y /dev/sdb
- Define para ignorar os metadados do **PV** durante a sincronização, útil em cenários de recuperação.
==== Nível Especializado ====
* **Distribuir dados em vários PVs (striping):**
- **Exemplo ao criar um Logical Volume:**
sudo lvcreate -L 10G -i2 -I64 -n lv_data vg_data
Utiliza striping de dados em dois **PVs** (com a opção `-i2`) no **Volume Group** `vg_data`, criando um **Logical Volume** de 10 GB.
* **Forçar a criação de um PV em um disco com partição existente:**
- sudo pvcreate --force /dev/sdb
- Inicializa o **PV** mesmo em discos que possuem uma tabela de partição existente (atenção: pode sobrescrever dados).
* **Recuperar informações de um PV corrompido:**
- sudo pvcreate --restorefile /caminho/pv_backup /dev/sdb
- Restaura um **Physical Volume** corrompido a partir de um arquivo de backup de metadados, útil em cenários de falha de disco.
* **Recuperar PV em um disco reformatado:**
- sudo pvcreate --uuid {UUID} --restorefile /caminho/backup /dev/sdb
- Restaura o UUID e metadados de um **PV** após a formatação acidental do disco.
===== Volume Groups (VGs) =====
==== Nível Básico ====
* **Criar um Volume Group (VG):**
- sudo vgcreate vg_data /dev/sdb
- Cria um **Volume Group** chamado `vg_data` usando o **Physical Volume** `/dev/sdb`.
* **Adicionar um PV a um Volume Group existente:**
- sudo vgextend vg_data /dev/sdc
- Adiciona o **Physical Volume** `/dev/sdc` ao **Volume Group** `vg_data`, expandindo sua capacidade.
* **Listar todos os Volume Groups no sistema:**
- sudo vgdisplay
- Exibe informações detalhadas sobre todos os **Volume Groups** no sistema, incluindo tamanho, PVs associados e espaço livre.
* **Listar informações resumidas dos Volume Groups:**
- sudo vgs
- Mostra um resumo dos **VGs**, incluindo nome, tamanho total e o número de PVs associados.
* **Remover um Volume Group:**
- sudo vgremove vg_data
- Remove o **Volume Group** `vg_data` (somente se nenhum **Logical Volume** estiver em uso).
==== Nível Intermediário ====
* **Reduzir um Volume Group removendo um PV:**
- sudo vgreduce vg_data /dev/sdc
- Remove o **Physical Volume** `/dev/sdc` do **Volume Group** `vg_data`, desde que ele não contenha **Logical Volumes** ativos.
* **Verificar o status de todos os VGs com informações detalhadas:**
- sudo vgscan
- Verifica o sistema e detecta todos os **Volume Groups** existentes, exibindo o status e informações detalhadas.
* **Exibir informações detalhadas de um VG específico:**
- sudo vgdisplay vg_data
- Mostra detalhes como tamanho, número de PVs, e espaço livre do **Volume Group** `vg_data`.
* **Verificar o espaço livre disponível em um VG:**
- sudo vgs --units G
- Exibe o espaço livre e o tamanho total dos **Volume Groups** em gigabytes.
* **Configurar um VG para ser ativado automaticamente no boot:**
- sudo vgchange -a y vg_data
- Configura o **VG** `vg_data` para ser ativado automaticamente durante a inicialização do sistema.
==== Nível Avançado ====
* **Renomear um Volume Group:**
- sudo vgrename vg_data vg_novo
- Renomeia o **Volume Group** `vg_data` para `vg_novo`.
* **Redimensionar um Volume Group após expansão de PVs:**
- sudo vgextend vg_data /dev/sdd
sudo vgresize vg_data
- Adiciona um novo PV (`/dev/sdd`) ao VG `vg_data` e redimensiona o **VG** para utilizar o espaço adicional.
* **Marcar um VG como somente leitura:**
- sudo vgchange -p vg_data
- Configura o **Volume Group** `vg_data` para somente leitura, impedindo gravações.
* **Ativar/desativar todos os Volume Groups:**
- **Ativar**: sudo vgchange -a y
- **Desativar**: sudo vgchange -a n
- Ativa ou desativa todos os **VGs** no sistema.
* **Criar um snapshot do VG (para backup ou teste):**
- sudo lvcreate --size 1G --snapshot --name snapshot_data /dev/vg_data/lv_data
- Cria um snapshot de 1GB do **Logical Volume** `lv_data` do **VG** `vg_data`, permitindo operações de backup sem interromper o volume principal.
==== Nível Especializado ====
* **Forçar a remoção de um VG com PVs inativos:**
- sudo vgremove -f vg_data
- Força a remoção do **Volume Group** `vg_data`, mesmo que os **Physical Volumes** associados estejam inativos ou com falhas.
* **Criar um VG distribuído (striping) em múltiplos PVs:**
- sudo vgcreate vg_data /dev/sdb /dev/sdc /dev/sdd
sudo lvcreate -L 50G -i3 -n lv_data vg_data
- Cria o **VG** `vg_data` usando os **PVs** `/dev/sdb`, `/dev/sdc`, e `/dev/sdd`, e depois cria um **Logical Volume** de 50GB com striping (dividido em 3 discos).
* **Mover um VG inteiro para outro dispositivo:**
- sudo vgsplit vg_data vg_novo /dev/sdb
- Divide o **VG** `vg_data` movendo o **PV** `/dev/sdb` para um novo **VG** chamado `vg_novo`, permitindo uma migração controlada de discos.
* **Recuperar um Volume Group após perda de PV:**
- sudo vgcfgrestore -f /caminho/backup/vg_data /dev/vg_data
- Restaura as configurações do **VG** `vg_data` a partir de um arquivo de backup de metadados, útil após falhas de disco.
* **Exibir os metadados de um Volume Group:**
- sudo vgcfgbackup -f /caminho/backup/vg_data
- Realiza o backup dos metadados do **VG** `vg_data`, permitindo futuras restaurações.
===== Logical Volumes (LVs) =====
==== Nível Básico ====
* **Criar um Logical Volume:**
- sudo lvcreate -L 10G -n lv_data vg_data
- Cria um **Logical Volume** de 10GB chamado `lv_data` dentro do **Volume Group** `vg_data`.
* **Listar todos os Logical Volumes no sistema:**
- sudo lvdisplay
- Exibe informações detalhadas de todos os **Logical Volumes** no sistema.
* **Exibir informações resumidas de Logical Volumes:**
- sudo lvs
- Mostra um resumo de todos os **LVs**, incluindo tamanho, nome e **Volume Group** associado.
* **Formatar um Logical Volume com um sistema de arquivos:**
- sudo mkfs.ext4 /dev/vg_data/lv_data
- Formata o **Logical Volume** `lv_data` com o sistema de arquivos **ext4**.
* **Montar um Logical Volume:**
- sudo mount /dev/vg_data/lv_data /mnt/data
- Monta o **Logical Volume** `lv_data` no diretório `/mnt/data`.
* **Desmontar um Logical Volume:**
- sudo umount /mnt/data
- Desmonta o **Logical Volume** montado no diretório `/mnt/data`.
* **Remover um Logical Volume:**
- sudo lvremove /dev/vg_data/lv_data
- Remove o **Logical Volume** `lv_data` do **Volume Group** `vg_data`.
==== Nível Intermediário ====
* **Expandir um Logical Volume existente:**
- sudo lvextend -L +5G /dev/vg_data/lv_data
- Expande o **Logical Volume** `lv_data` em 5GB adicionais, utilizando o espaço livre disponível no **VG**.
* **Reduzir o tamanho de um Logical Volume:**
- **Desmontar o volume primeiro**:
sudo umount /dev/vg_data/lv_data
- **Verificar o sistema de arquivos**:
sudo e2fsck -f /dev/vg_data/lv_data
- **Reduzir o tamanho**:
sudo resize2fs /dev/vg_data/lv_data 8G
- **Reduzir o Logical Volume**:
sudo lvreduce -L 8G /dev/vg_data/lv_data
- Esse processo reduz o **Logical Volume** `lv_data` para 8GB, após redimensionar o sistema de arquivos.
* **Mover um Logical Volume para outro Physical Volume:**
- sudo pvmove /dev/sdb /dev/sdc
- Move os dados do **Logical Volume** localizado em `/dev/sdb` para o **Physical Volume** `/dev/sdc`.
* **Exibir o espaço livre dentro de um Logical Volume:**
- sudo lvs --units G
- Exibe o tamanho e o espaço livre em gigabytes para cada **Logical Volume** no sistema.
* **Configurar um Logical Volume como "somente leitura":**
- sudo lvchange -pr /dev/vg_data/lv_data
- Altera o **LV** `lv_data` para ser montado como somente leitura, evitando gravações.
* **Remover um Logical Volume com snapshot:**
- sudo lvremove /dev/vg_data/lv_snapshot
- Remove um snapshot existente, liberando espaço no **VG**.
==== Nível Avançado ====
* **Aumentar um Logical Volume online sem desmontar:**
- sudo lvextend -L +10G /dev/vg_data/lv_data
sudo resize2fs /dev/vg_data/lv_data
- Aumenta o **Logical Volume** `lv_data` em 10GB e redimensiona o sistema de arquivos ext4, sem desmontar o volume.
* **Criar um Logical Volume com striping (distribuição de dados em vários discos):**
- sudo lvcreate -L 50G -i 2 -I 64 -n lv_striped vg_data
- Cria um **Logical Volume** de 50GB com **striping** (dividido entre 2 discos), com blocos de 64KB.
* **Criar um Logical Volume Thin Provisioning:**
- **Criar uma thin pool**:
sudo lvcreate --thinpool thin_pool -L 100G vg_data
- **Criar um volume thin**:
sudo lvcreate --thin -V 50G --name lv_thin vg_data/thin_pool
- Cria um **Logical Volume Thin Provisioning**, que permite alocar espaço sob demanda, evitando desperdício.
* **Criar um snapshot de um Logical Volume (para backup ou teste):**
- sudo lvcreate --size 2G --snapshot --name lv_snapshot /dev/vg_data/lv_data
- Cria um snapshot de 2GB do **Logical Volume** `lv_data`, permitindo realizar backups ou testes sem afetar o volume principal.
* **Redimensionar um Logical Volume Thin:**
- sudo lvresize --size +10G /dev/vg_data/lv_thin
- Aumenta o tamanho do **LV Thin** em 10GB, sem precisar alocar todo o espaço imediatamente.
==== Nível Especializado ====
* **Converter um Logical Volume em Thin Provisioning:**
- sudo lvconvert --thinpool vg_data/lv_data
- Converte um **Logical Volume** existente para **Thin Provisioning**, permitindo a alocação dinâmica de espaço.
* **Ativar e desativar Logical Volumes:**
- **Ativar**: sudo lvchange -ay /dev/vg_data/lv_data
- **Desativar**: sudo lvchange -an /dev/vg_data/lv_data
- Ativa ou desativa o **Logical Volume** `lv_data`, permitindo ou impedindo seu uso.
* **Migrar dados de um Logical Volume para outro VG:**
- sudo vgsplit vg_data vg_novo /dev/vg_data/lv_data
- Divide o **VG** movendo o **Logical Volume** `lv_data` para um novo **VG** chamado `vg_novo`.
* **Forçar a remoção de um Logical Volume com erro:**
- sudo lvremove -f /dev/vg_data/lv_corrompido
- Força a remoção do **Logical Volume** `lv_corrompido`, mesmo se houver erros associados ao volume.
* **Recuperar um Logical Volume a partir de um snapshot:**
- sudo lvconvert --merge /dev/vg_data/lv_snapshot
- Restaura o **Logical Volume** `lv_data` para o estado do snapshot `lv_snapshot`, recuperando dados após falha ou alteração.