Table of Contents
Introdução ao System Storage Manager (SSM)
O System Storage Manager (SSM) é uma ferramenta poderosa e simplificada para gerenciamento de volumes de armazenamento em sistemas Linux. Ele abstrai a complexidade do LVM (Logical Volume Manager), Btrfs, e outros sistemas de gerenciamento de armazenamento, oferecendo uma interface unificada para a administração de discos, volumes e sistemas de arquivos.
Com o SSM, tarefas como criação de volumes, snapshots, expansão de discos e gerenciamento de dispositivos físicos podem ser realizadas de maneira mais eficiente, com comandos simplificados. O SSM facilita também o monitoramento de uso de espaço, a aplicação de criptografia e a automação de tarefas de gerenciamento por meio de scripts e integrações.
Abaixo, apresentamos uma lista organizada de exemplos de uso do SSM, divididos em Nível Básico, Intermediário, Avançado e Especializado, proporcionando um guia completo para administradores de sistemas que buscam gerenciar volumes de forma eficiente e segura.
Gerenciamento do SSM - Nível Básico
Nível Básico
- Listar todos os dispositivos de armazenamento disponíveis:
sudo ssm list
- Exibe uma lista de todos os dispositivos de armazenamento e volumes gerenciados pelo SSM, mostrando detalhes como nome, tipo e tamanho.
- Criar um volume simples com SSM:
sudo ssm create --fstype ext4 --size 5G /dev/sdb
- Cria um volume de 5GB no dispositivo /dev/sdb com o sistema de arquivos ext4.
- Montar um volume gerenciado pelo SSM:
sudo mount /dev/mapper/volume_name /mnt/data
- Monta um volume criado com o SSM no diretório /mnt/data.
- Desmontar um volume gerenciado pelo SSM:
sudo umount /mnt/data
- Desmonta o volume previamente montado no diretório /mnt/data.
- Exibir informações detalhadas sobre volumes e sistemas de arquivos:
sudo ssm list --details
- Exibe informações detalhadas sobre volumes, sistemas de arquivos e dispositivos físicos.
- Formatar um dispositivo de armazenamento com SSM:
sudo ssm format --fstype xfs /dev/sdb
- Formata o dispositivo /dev/sdb com o sistema de arquivos XFS, pronto para ser usado.
- Verificar o uso de espaço em todos os volumes:
sudo ssm list --usage
- Mostra o uso de espaço de todos os volumes gerenciados, incluindo detalhes sobre espaço livre e usado.
- Criar um ponto de montagem automático para o volume:
sudo ssm mount --fstype ext4 /dev/sdb1 /mnt/data
- Monta o volume /dev/sdb1 no diretório /mnt/data e o configura para montagem automática no boot.
- Remover um volume gerenciado pelo SSM:
sudo ssm remove /dev/mapper/volume_name
- Remove um volume gerenciado pelo SSM, liberando o espaço utilizado no sistema.
- Renomear um volume existente:
sudo ssm rename /dev/mapper/volume_name /dev/mapper/new_volume_name
- Renomeia um volume gerenciado pelo SSM, atribuindo um novo nome.
- Criar um snapshot de um volume com SSM:
sudo ssm snapshot /dev/mapper/volume_name --name snapshot_name
- Cria um snapshot de um volume existente, permitindo a restauração futura de seus dados.
Gerenciamento do SSM - Nível Intermediário
Nível Intermediário
- Aumentar o tamanho de um volume existente:
sudo ssm resize --size +10G /dev/mapper/volume_name
- Expande o volume volume_name em 10GB, utilizando o espaço livre disponível no Volume Group (VG).
- Reduzir o tamanho de um volume existente:
- Desmontar o volume antes de reduzir:<br>
sudo umount /mnt/data
<br>
- Reduzir o tamanho do volume:<br>
sudo ssm resize --size 5G /dev/mapper/volume_name
<br>
- Reduz o volume para 5GB, liberando espaço no VG. O volume deve estar desmontado para evitar corrupção de dados.
- Adicionar um novo disco a um Volume Group (VG) existente:
sudo ssm add /dev/sdc /dev/mapper/volume_name
- Adiciona o dispositivo /dev/sdc ao VG que contém o volume volume_name, expandindo sua capacidade.
- Listar os discos físicos associados a um Volume Group:
sudo ssm list --pv
- Exibe todos os Physical Volumes (PVs) associados aos Volume Groups gerenciados pelo SSM.
- Exibir detalhes sobre um Volume Group específico:
sudo ssm list --vg vg_name
- Exibe informações detalhadas sobre o Volume Group (VG) chamado vg_name, incluindo o uso de espaço, discos físicos, e volumes lógicos associados.
- Criar um volume espelhado com SSM:
sudo ssm create --size 10G --fstype ext4 --mirror 2 /dev/sdb /dev/sdc
- Cria um volume espelhado de 10GB usando /dev/sdb e /dev/sdc, com o sistema de arquivos ext4. Isso garante redundância de dados, pois cada disco terá uma cópia dos mesmos dados.
- Mover os dados de um volume para outro dispositivo físico:
sudo ssm move /dev/mapper/volume_name /dev/sdd
- Move todos os dados do volume volume_name para o dispositivo /dev/sdd, útil para migrações ou manutenção de discos.
- Verificar a integridade de um volume gerenciado pelo SSM:
sudo ssm check /dev/mapper/volume_name
- Verifica a integridade do sistema de arquivos e do volume volume_name, corrigindo eventuais problemas se possível.
- Criar um snapshot de um volume e montá-lo:
sudo ssm snapshot /dev/mapper/volume_name --name snapshot1
<br>
sudo mount /dev/mapper/snapshot1 /mnt/snapshot
- Cria um snapshot chamado snapshot1 do volume volume_name e o monta no diretório /mnt/snapshot para acesso.
- Monitorar o uso de espaço de um Volume Group ao longo do tempo:
sudo watch ssm list --vg vg_name
- Monitora em tempo real o uso de espaço no VG chamado vg_name, atualizando a cada segundo.
- Converter um volume espelhado para um volume simples:
sudo ssm convert --to simple /dev/mapper/volume_name
- Converte um volume espelhado de volta para um volume simples, removendo o espelhamento e utilizando apenas um disco.
- Exibir informações de desempenho de volumes com SSM:
sudo ssm list --performance
- Exibe métricas de desempenho dos volumes gerenciados, como tempo de leitura/gravação e uso de I/O.
Gerenciamento do SSM - Nível Avançado
Nível Avançado
- Automatizar a criação de volumes e montagem em scripts:
- Exemplo de script simples:
```
#!/bin/bash
VOLUME_NAME="volume_data"
MOUNT_POINT="/mnt/data"
SIZE="20G"
# Criar volume
sudo ssm create --size $SIZE --fstype ext4 /dev/sdb /dev/sdc
# Criar diretório de montagem
sudo mkdir -p $MOUNT_POINT
# Montar o volume
sudo mount /dev/mapper/$VOLUME_NAME $MOUNT_POINT
echo "Volume $VOLUME_NAME criado e montado em $MOUNT_POINT"
```
- Cria um script que automatiza a criação de um volume, configuração de um ponto de montagem e montagem do volume, simplificando a administração de volumes.
- Configurar permissões e quotas em volumes gerenciados pelo SSM:
- Aplicar permissões ao ponto de montagem:
sudo chmod 770 /mnt/data
<br>
- Configurar quotas de disco para usuários:
sudo setquota -u user1 10000 12000 0 0 /mnt/data
<br>
- Define permissões de acesso e quotas de disco para o volume montado em /mnt/data, limitando o uso de espaço por usuários específicos.
- Automatizar a criação de snapshots em intervalos regulares:
- Criar um script para snapshots automatizados:
```
#!/bin/bash
VOLUME_NAME="volume_data"
SNAPSHOT_NAME="snapshot_$(date +%F)"
# Criar snapshot
sudo ssm snapshot /dev/mapper/$VOLUME_NAME --name $SNAPSHOT_NAME
echo "Snapshot $SNAPSHOT_NAME criado para o volume $VOLUME_NAME"
```
- Usar o script acima com **cron** para criar snapshots automáticos:
<code>crontab -e</code><br>
Adicionar a linha: <code>0 0 * * * /path/to/snapshot_script.sh</code><br>
- Automatiza a criação de snapshots diariamente à meia-noite, garantindo backups regulares dos volumes.
- Configurar segurança avançada para volumes SSM com criptografia LUKS:
- Criar um volume criptografado:<br>
sudo cryptsetup luksFormat /dev/sdb
<br>
<code>sudo cryptsetup luksOpen /dev/sdb encrypted_volume</code><br>
<code>sudo ssm create --size 10G --fstype ext4 /dev/mapper/encrypted_volume</code>
- Configura um volume criptografado usando **LUKS** e cria um volume gerenciado pelo **SSM** em cima do dispositivo criptografado.
- Expandir volumes automaticamente com base no uso de espaço:
- Script para expandir volume automaticamente:
```
#!/bin/bash
VOLUME="/dev/mapper/volume_data"
THRESHOLD=80
USAGE=$(df -h | grep $VOLUME | awk '{print $5}' | sed 's/%//')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
sudo ssm resize --size +10G $VOLUME
echo "Volume $VOLUME expandido em 10GB devido ao uso de $USAGE%"
fi
```
- Usa o script acima para monitorar o uso de espaço no volume e, quando o uso ultrapassa **80%**, o volume é automaticamente expandido em **10GB**.
- Auditar logs de volumes criados e removidos com SSM:
sudo journalctl -u ssm
- Exibe os logs de todas as operações feitas pelo System Storage Manager, como criação, remoção e redimensionamento de volumes, útil para auditorias e resolução de problemas.
- Configurar volumes automontáveis no boot com SSM:
- Adicionar a entrada no arquivo `/etc/fstab`:
/dev/mapper/volume_name /mnt/data ext4 defaults 0 0
- Configura um volume para montagem automática no boot, garantindo que ele esteja sempre disponível após reinicializações.
- Monitorar volumes e gerar alertas com scripts:
- Exemplo de script com notificação de email:
```
#!/bin/bash
VOLUME="/dev/mapper/volume_data"
THRESHOLD=90
USAGE=$(df -h | grep $VOLUME | awk '{print $5}' | sed 's/%//')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "Alerta: Volume $VOLUME está com $USAGE% de uso" | mail -s "Alerta de uso de disco" admin@dominio.com
fi
```
- O script monitora o uso do volume e envia um email de alerta quando o uso do disco ultrapassa **90%**, permitindo ações preventivas.
- Migrar volumes entre servidores automaticamente:
- Usar rsync para migrar volumes:<br>
sudo rsync -avz /mnt/data user@servidor_remoto:/mnt/data_backup
- Cria um backup/migração de volumes entre servidores usando rsync, útil para migração de dados ou replicação entre ambientes.
- Remover volumes automaticamente com base em critérios de tempo:
- Script para remover snapshots antigos:
```
#!/bin/bash
find /mnt/snapshot/ -type d -mtime +7 -exec rm -rf {} \;
echo "Snapshots mais antigos que 7 dias foram removidos"
```
- Remove snapshots mais antigos que **7 dias**, liberando espaço no sistema de forma automatizada.
- Criar um volume compartilhado entre múltiplos servidores com NFS:
- Instalar e configurar NFS:<br>
sudo apt install nfs-kernel-server
<br>
- *Configurar o compartilhamento no servidor NFS:<br> <code>sudo echo “/mnt/data *(rw,sync,no_root_squash)” » /etc/exports</code><br> No cliente NFS:<br> <code>sudo mount servidor_nfs:/mnt/data /mnt/data</code><br> - Compartilha volumes entre servidores via NFS**, permitindo que múltiplos servidores acessem os mesmos dados de forma compartilhada.
