====== 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:**
sudo umount /mnt/data
- **Reduzir o tamanho do volume:**
sudo ssm resize --size 5G /dev/mapper/volume_name
- 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
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
- **Configurar quotas de disco para usuários:**
sudo setquota -u user1 10000 12000 0 0 /mnt/data
- 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:
crontab -e
Adicionar a linha: 0 0 * * * /path/to/snapshot_script.sh
- 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:**
sudo cryptsetup luksFormat /dev/sdb
sudo cryptsetup luksOpen /dev/sdb encrypted_volume
sudo ssm create --size 10G --fstype ext4 /dev/mapper/encrypted_volume
- 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:**
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:**
sudo apt install nfs-kernel-server
**Configurar o compartilhamento no servidor NFS:**
sudo echo "/mnt/data *(rw,sync,no_root_squash)" >> /etc/exports
**No cliente NFS:**
sudo mount servidor_nfs:/mnt/data /mnt/data
- Compartilha volumes entre servidores via **NFS**, permitindo que múltiplos servidores acessem os mesmos dados de forma compartilhada.