Encontre o dispositivo de bloco físico do sistema de arquivos raiz em um sistema de arquivos criptografado?

0

Estou executando o Arch Linux (systemd) em vários sistemas. Alguns possuem armazenamento SSD, outros possuem dispositivos de armazenamento nvme e outros usam HDDs rotacionais. Alguns sistemas usam dm-crypt para criptografar o sistema de arquivos. Todos os sistemas executam o btrfs em / .

Desejo que um script bash determine o dispositivo físico que hospeda o sistema de arquivos raiz ( / ). O objetivo é verificar se esse dispositivo de bloco suporta trim e, em caso afirmativo, tomar alguma ação se fstrim.timer não estiver habilitado no sistema.

Se soubermos que / está em /dev/sda , por exemplo, podemos verificar hdparm -I /dev/sda | grep TRIM para descobrir se trim é suportado. Se assim for, posso fazer systemctl enable fstrim.timer .

Mas em um sistema criptografado, / é relatado como estando em /dev/mapper/cryptoroot ou algo semelhante, e não estou encontrando uma maneira amigável a script para mapeá-la de volta ao dispositivo de bloco físico (por exemplo, /dev/sda ) para determinar se ele suporta trim.

Meu entendimento é que os SSDs geralmente se beneficiam de uma execução periódica, enquanto os dispositivos NVMe não podem .

Para situações não criptografadas, essas questões são relevantes:
Como encontro em qual dispositivo físico uma pasta está localizada?

Descubra qual dispositivo / dev / root representa no Linux?
link

    
por MountainX 05.11.2018 / 09:39

1 resposta

1

O BTRFS suporta múltiplos dispositivos, então o que você pode fazer é usar btrfs fi show para obter a lista de dispositivos de bloco. Em seguida, use cryptsetup status para verificar se um determinado dispositivo é um contêiner LUKS. Se for o comando, será emitido o dispositivo de sublinhado.

Eu não chamaria isso de amigável para scripts, pois você terá que analisar a saída, mas isso deve funcionar.

    
por 05.11.2018 / 11:45