Título original: Mapeamento de disco LVM indesejado e surpresa causando problemas com o ataque do linux
Eu fiz um ataque linux no Ubuntu por quase uma década, mas nunca mexi com o LVM, embora eu esteja vagamente ciente de que existe.
Eu adicionei um segundo array no meu servidor recentemente, o deixei totalmente funcional, copiei alguns arquivos para ele (é apenas um sistema de backup, nenhum arquivo crítico em risco aqui).
Uma semana se passou e, quando olhei para o array de backup, vi que ele é somente leitura. Além disso, os dispositivos mostrados em /proc/mdstat para o array, em vez de serem /dev/sdX como eram quando estava funcionando e eu estava usando antes, parecem /dev/dm-X.
$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md1 : active (read-only) raid5 dm-0[0] dm-2[3] dm-1[1]
31249539072 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
bitmap: 0/117 pages [0KB], 65536KB chunk
md0 : active raid6 sdj1[6] sdm1[5] sde1[4] sdd1[3] sdc1[2] sdb1[1] sda1[0]
29296547840 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]
bitmap: 0/44 pages [0KB], 65536KB chunk
unused devices: <none>
Pesquisando no Google, descobri que os dispositivos dm-X são mapeamento de disco LVM. dmsetup mostra que são os discos que eu espero
# dmsetup ls
osprober-linux-sdh1 (253:1)
osprober-linux-sdi1 (253:2)
osprober-linux-sdg1 (253:0)
# lvdisplay -a
# lvs
# pvs
#
Meu entendimento era que o LVM era algo que você tinha que planejar muito explicitamente para usar e configurar? Tanto quanto sei, acima, é o primeiro comando relacionado ao LVM que eu já executei na minha vida, então não sei como isso foi ativado e especificamente apenas para 3 dispositivos no meu novo array md (mas nenhum outro dispositivo liga ou desliga minha outra matriz).
Para configurar as coisas, particionei manualmente os dispositivos com parted, criei manualmente um array raid com mdadm, formatei o array para ext4, copiei arquivos para ele e deixei-o lá. Nada disso envolvia LVM e os dispositivos montados com mdadm eram as partições de disco padrão (/dev/sdX1) que eu tinha acabado de criar. As únicas operações em que posso pensar em agir em qualquer dispositivo relacionado na semana foram executadas mdadm --assemble --scan
para encontrar os volumes md e seus dispositivos dinamicamente e mount -a
remontar as entradas fstab.
Talvez eu tenha feito outra coisa que esqueci, embora não possa ter sido alguma configuração específica do LVM, porque não tenho idéia de como fazer isso. Eu fiz algumas experiências com o prometheus e o node-exporter, gostaria de saber se isso pode ser um efeito colateral disso?
O problema que está causando é que o LVM está bloqueando os "arquivos" /dev/sdX reais, então agora não posso usá-los para montar manualmente o array
# mdadm --assemble /dev/md1 /dev/sdg1 /dev/sdh1 /dev/sdi1
mdadm: /dev/sdg1 is busy - skipping
mdadm: /dev/sdh1 is busy - skipping
mdadm: /dev/sdi1 is busy - skipping
Eu só posso montá-los manualmente nos dispositivos dm-X
# mdadm --assemble /dev/md1 /dev/dm-0 /dev/dm-1 /dev/dm-2
mdadm: /dev/md1 has been started with 3 drives.
ou montar automaticamente
# mdadm --assemble --scan
mdadm: /dev/md/1 has been started with 3 drives.
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md1 : active (read-only) raid5 dm-0[0] dm-2[3] dm-1[1]
31249539072 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
bitmap: 0/117 pages [0KB], 65536KB chunk
Por qualquer motivo, os dispositivos dm-X são (efetivamente ou formalmente) somente leitura e, portanto, a matriz montada a partir deles também é somente leitura.
Não entendendo realmente o que estou vendo ou como ficou assim, não tenho certeza de como formular a pergunta final aqui, mas quero montar meu array no modo de leitura/gravação e fazê-lo como sempre fiz , sem qualquer envolvimento do LVM. Como eu posso fazer isso?
Não há evidências de que você esteja usando LVM aqui, e os dispositivos dm-x não são necessariamente, ou mesmo geralmente, mapas LVM. "dm" é simplesmente um mapeamento de dispositivo e não diz nada sobre o dispositivo que está sendo mapeado. Meu palpite é que estas são referências aos seus discos rígidos.
Você pode usar "blkid /dev/dm-X" para obter o UUID do dispositivo de bloco e informar o tipo de dispositivo que é. Se isso não for suficiente, você pode usar |blkid" por si só para obter o UUID e o dispositivo de bloco real - tenho certeza de que existem outras maneiras de fazer isso.
Se você quiser verificar por si mesmo se está usando o LVM (e parece improvável que esteja - se você assumir que seus dispositivos DM são dispositivos LVM, sua configuração não faz sentido, pois o LVM na maioria das configurações sãs fica em cima do ataque ou substituir RAID - eles não forneceriam os dispositivos de bloco para RAID), você pode usar o comando "pvdisplay" que mostrará os dispositivos de bloco que foram cooptados para o RAID.
Graças a comentários e outras respostas, ficou concreto para mim que não havia nenhuma atividade real de LVM ocorrendo, o que essa resposta (entre outras) me levou a acreditar.
Parecia difícil de engolir que havia LVM real em uso aqui, pois do pouco que eu sabia sobre o LVM eu não achava que era algo que você poderia acidentalmente "escorregar e cair", e nunca o usei, não tenho o conhecimento para configurá-lo sem fazer pesquisa explícita. No entanto, apesar desse sentimento, o "paradoxo" foi que tudo o que pesquisei sobre dispositivos dm-X continuava apontando para o LVM.
Depois de ver a saída nula de cada comando informativo do LVM que aprendi (
lvs
pvs
lvdisplay
pvdisplay
), concentrei minha pesquisa no mapeador de dispositivos em vez do LVM.A solução foi usar o dmsetup para simplesmente remover os mapeamentos de dispositivos
A matriz agora pode ser montada com os dispositivos reais e não está mais no modo de leitura/gravação.