15.05.2025

Como gerenciar dispositivos e discos no Linux?

Por que, quando conecto um disco, ele não funciona no sistema operacional, um pendrive não é lido pelo sistema? E a interface de rede se recusa a aparecer na lista de dispositivos? Como conectar discos e configurar seu funcionamento ou permitir o uso de uma determinada lista de dispositivos? Todas essas e outras perguntas vamos considerar a resposta, analisando a arquitetura e o princípio de funcionamento com dispositivos no Linux. Após este tutorial, você será capaz de configurar, gerenciar o estado e a permissão dos dispositivos no seu sistema por conta própria.

Como funciona o mapeamento de discos no Linux?

Vamos dividir o ciclo completo de montagem de um disco no Linux, a fim de entender como ele funciona no sistema. E o que pode ser feito para resolver os problemas que surgem?

Captura de tela nº 1 — Esquema

Conectamos fisicamente ou virtualmente o disco ao nosso sistema, e então as informações sobre o novo dispositivo chegam ao kernel. O kernel seleciona um driver para seu funcionamento e coleta informações sobre o dispositivo. No Linux, qualquer dispositivo é um "arquivo", e isso significa que o kernel, após coletar as informações, grava os dados em um arquivo na pasta /dev. Mas este não é um arquivo comum de descrição do dispositivo conectado, e sim um ponto de acesso ao disco!

Os programas podem abrir, ler, gravar e manipular esses arquivos de dispositivo usando chamadas de sistema padrão como open(), read(), write() e ioctl(). Essas chamadas são passadas através do arquivo de dispositivo para o driver do dispositivo, que então se comunica com o hardware através do kernel.

O driver do dispositivo converte as chamadas do sistema em comandos de hardware, que o kernel passa para o dispositivo. O retorno do dispositivo também passa pelo driver de volta ao software.

Depois disso, o kernel cria o evento uevents e o controle passa para o Udev, que é um gerenciador de dispositivos com um conjunto de regras preparado. Estes são usados para alterar o nome do dispositivo, direitos de acesso do usuário, bloqueio e scripts ao conectar ou desconectar dispositivos. Se houver critérios que exigem alterações, o Udev irá até o diretório /dev e executará as ações necessárias.

Como conectar um drive ao Linux?

Todas as etapas deste tutorial podem ser realizadas em servidores em nuvem poderosos. A Serverspace oferece servidores VPS isolados para uso comum e virtualizado.

Captura de tela nº 2 — Criar servidor

Levará algum tempo para implantar a capacidade do servidor. Depois disso, você pode se conectar de qualquer uma das maneiras convenientes!

Agora vamos olhar a situação na prática, precisamos montar um disco e dar a ele um nome especial, proibir a conexão de dispositivos com um determinado UUID e executar um script para automatizar nossas tarefas. Isso pode ser qualquer coisa: particionar um novo disco, rotacionar arquivos antigos ou notificar o administrador.

Vamos conectar o disco e fazer alguma configuração básica: particionar e definir o sistema de arquivos. Use o comando lsblk para examinar os discos montados:

lsblk

Captura de tela nº 3 — Novo dispositivo

O novo disco aparece como vdb sem volumes lógicos ou particionamento. Para começar a usá-lo, é necessário criar uma tabela e volumes, e então selecionar um sistema de arquivos para a partição lógica que será suportada pelo sistema operacional. Depois disso, monte o disco no sistema operacional. Para fazer isso, vá até o utilitário fdisk e digite o comando:

fdisk /dev/vdb

Captura de tela nº 4 — Particionamento de disco

Por padrão, uma tabela MBR é criada para o disco, que pode ser sobrescrita e é preferível usar particionamento GPT em seu lugar. Para isso, especifique a letra g, após isso a tabela será recriada e o disco será reparticionado. Para criar um novo volume na tabela atual, pressione n para definir seus parâmetros:

Captura de tela nº 5 — Criar partição lógica

Selecione o tipo da partição e especifique o primeiro e o último setor para criar um volume. Depois disso veremos o resultado de que um volume de 10 GB foi criado, resta escrever as alterações e salvá-las com o comando w. Para que o disco seja processado pelo sistema operacional, é necessário inicializar o sistema de arquivos para o volume. Para isso, use o utilitário mkfs.ext4:

mkfs.ext4 /dev/vdb1

Captura de tela nº 6 — Criar sistema de arquivos

Para montar um disco temporariamente, podemos usar o comando mount, onde devemos primeiro especificar o próprio disco e o ponto de montagem. Mas esta solução será válida até a reinicialização, para montar um novo disco automaticamente cada vez — vá para a pasta /etc/fstab e faça alterações:

nano /etc/fstab
/dev/vdb1 /home ext4 defaults,noexec 0 2

Captura de tela nº 7 — Criar registro de montagem

Para inicializar um drive, você precisa especificar seu UUID ou caminho direto, no nosso caso /dev/vdb1. Para ver os discos atuais, digite lsblk.

Captura de tela nº 8 — Resultado da montagem

Ótimo, o drive está montado e pronto para uso! Agora, ele passará pela etapa de montagem em cada reinicialização, no entanto, e se for necessário renomeá-lo? Ou permitir que apenas um número limitado de pessoas o utilize?

Como gerenciar o drive e usar o udev?

Para gerenciar dispositivos de bloco e simbólicos, use o utilitário udev, que se comunica com o kernel através de eventos uevent. Todas as configurações para os dispositivos são feitas em arquivos de configuração para cada dispositivo separadamente. Para criar um link simbólico ou restringir o acesso, você precisa conhecer os parâmetros únicos do disco a ser pesquisado:

udevadm info -a -p /sys/block/vdb

Captura de tela nº 9 — Atributos

Para escrever uma regra é necessário encontrar um valor único para um disco, neste caso é ATTR{serial} com um certo número. Para escrever uma regra, vamos até a pasta rules.d, onde todos os algoritmos previamente escritos para o funcionamento com cada dispositivo são armazenados. Vamos criar uma regra chamada:

nano 98-local.rules

Vamos escrever a seguinte sintaxe, que primeiro encontrará o dispositivo correto e depois aplicará as configurações das regras udev:

SUBSYSTEM=="block", ID_SERIAL="BHYVE-2C94-9746-08F9", SYMLINK+="NewDisk"

Depois salve o arquivo e reinicie o serviço udev:

systemctl daemon-restart && systemctl restart systemd-udevd

E verifique os parâmetros relevantes através do comando:

udevadm test /dev/vdb1

Captura de tela nº 10 — Testar regras

No arquivo de regras do udev, você pode usar diferentes condições de validação, como:

Todos os atributos acima podem ser usados para filtrar o dispositivo. Também para cada um deles são usados elementos lógicos, por exemplo == ou != na condição. Os parâmetros de ação são então especificados: