Назад | Перейти на главную страницу

Как запустить thin_dump или thin_check lvm? метаданные не могут быть живыми, но какой вариант вы используете?

Я хочу бежать thin_dump, и thin_check. Они говорят, что их нельзя запускать с живыми метаданными. Меня это устраивает. Проблема в том, что я не знаю, как сделать так, чтобы метаданные не действовали, но при этом могу дать thin_dump и thin_check аргумент о том, на что бежать.

Я вижу, что есть альтернативный способ использовать снимок метаданных для живых метаданных, но я не хочу этого делать. Я не хочу сейчас ничего менять на диске.

# lvs -a
disk1thin           lvm    twi-aot---  <4.53t                     92.10  83.47
[disk1thin_tdata]   lvm    Twi-ao----  <4.53t
[disk1thin_tmeta]   lvm    ewi-ao---- 640.00m
# # Need to de-activate the metadata - this is the only way I know how, but must not be right
# lvchange -an lvm/disk1thin
# lvs -a
disk1thin           lvm    twi---t---  <4.53t
[disk1thin_tdata]   lvm    Twi-------  <4.53t
[disk1thin_tmeta]   lvm    ewi------- 640.00m
# thin_dump <uhh, what goes here?>
# thin_dump lvm/disk1thin
Couldn't stat path
# thin_dump lvm/disk1thin_tdata
Couldn't stat path
# thin_dump lvm/disk1thin_tmeta
Couldn't stat path
# thin_dump lvm/disk1thin-tpool
Couldn't stat path
# ls -la /dev/mapper
# crw-------  1 root root 10, 236 May 31 00:28 control
# # Not listed
# ls -la /dev/lvm/
ls: cannot access '/dev/lvm/': No such file or directory
# lvchange -ay lvm/disk1thin_tmeta
  Operation not permitted on hidden LV lvm/disk1thin_tmeta
# # Nope, that didn't work...

Я также пробовал после их включения dmsetup suspend на них, но это приостанавливает все чтения из них, как сказано на его странице руководства, поэтому, хотя они существуют в /dev/lvm, thin_dump и thin_check на них нельзя наезжать.

Я также попробовал, когда тонкий пул отключен:

# thin_dump /dev/sdh3
bad checksum in superblock, wanted 3832019051

И это говорит о плохой контрольной сумме для любого другого устройства, на котором есть тонкий том. Я знаю, что все диски не испортились, поэтому я почти уверен, что это неподходящий вариант. Хотя тонкий пул есть на этом устройстве, устройство начинается с меньшего нетонкого lv, поэтому вариант на самом деле не говорит ему искать тонкий том в нужном месте.

@ user1902689 решение (работает на Ubuntu 18.04):

# Reserve the metadata snapshot
dmsetup message /dev/mapper/volg-volg--thinpool-tpool 0 reserve_metadata_snap

# Run the dump (the -m is the crtical part here)
thin_dump --format xml -m  /dev/mapper/volg-volg--thinpool_tmeta

# Release the metadata snapshot
dmsetup message /dev/mapper/volg-volg--thinpool-tpool 0 release_metadata_snap

Я считаю, что снимок метаданных находится в памяти, поэтому вы не хотите хранить его надолго.

FYI - volg - это моя группа томов - thinpool - это объем thinpool - tpool скрыт.

# lvs -a
  LV                    VG   Attr       LSize  Pool          Origin      Data%  Meta%  Move Log Cpy%Sync Convert
  [lvol0_pmspare]       volg ewi------- 12.00m                                                                  
  thin_volume           volg Vwi-a-tz--  6.00g volg-thinpool             31.96                                  
  thin_volume_snap1     volg Vwi---tz-k  6.00g volg-thinpool thin_volume                                        
  thin_volume_snap2     volg Vwi---tz-k  6.00g volg-thinpool thin_volume                                        
  thin_volume_snap3     volg Vwi---tz-k  6.00g volg-thinpool thin_volume                                        
  volg-thinpool         volg twi-aotz--  9.80g                           20.51  9.41                            
  [volg-thinpool_tdata] volg Twi-ao----  9.80g                                                                  
  [volg-thinpool_tmeta] volg ewi-ao---- 12.00m                                                            

Я не собираюсь отмечать это как ответ, потому что считаю это ужасным. И я не могу это рекомендовать. У меня это сработало.

Но должен быть способ получше. Надеюсь, кто-то это знает.

Убедитесь, что АБСОЛЮТНО НИЧЕГО не использует тонкий бассейн. На нем нельзя загрузиться. Если это ваш корневой том, вы должны работать с ISO. umount любые устройства обратной связи, которые вы можете использовать, остановите файлы подкачки и т. д. lvchange -an все уровни находятся в тонком пуле, чтобы отключить их. (Но не отключайте сам тонкий том.)

# dmsetup info -c
Name                Maj Min Stat Open
lvm-disk1thin-tpool 253  10 L--w    1...
lvm-disk1thin_tdata 253   9 L--w    0...
lvm-disk1thin_tmeta 253   8 L--w    0...

Убедитесь, что значение open равно 0 для _tdata и _tmeta. Я не знаю, почему открыто 1 для -tpool. Я не мог понять, как сделать это 0.

# dmsetup remove lvm-disk1thin-tpool
device-mapper: remove ioctl on lvm-disk1thin-tpool  failed: Device or resource busy

Итак, в целях безопасности, придумайте, как сделать это 0. Или, если вы любите приключения:

# dmsetup remove -f lvm-disk1thin-tpool
device-mapper: remove ioctl on lvm-disk1thin-tpool  failed: Device or resource busy
Command failed

Но так ли это?

# lvs -a
  disk1thin                       lvm    twi-XXt-X-  <4.53t
  [disk1thin_tdata]               lvm    Twi-------  <4.53t
  [disk1thin_tmeta]               lvm    ewi-a----- 640.00m

Эти X обозначают состояние неизвестно, открытость устройства неизвестна, состояние тома неизвестно.

# thin_dump lvm-disk1thin_tmeta
(YAY, output!)

Затем, чтобы снова активировать тонкий пул:

# lvchange -ay lvm/disk1thin

(Вам нужно будет повторно активировать все деактивированные уровни, заново смонтировать и запустить все, что вы остановили, и т. Д.)