Data recovery
Кулстори о том как я восстанавливал данные с диска
Умер диск на котором был проксмокс, записать ничего не дает, чтение с ошибками.
Диск был на 500 гб, у меня есть пустой диск на 500 гб, этого может не хватить, поэтому отформатируем его в btrfs и примонтируем со сжатием:
sudo mkfs.btrfs /dev/sdb1
sudo mount -o compress=zstd /dev/sdb1 /mnt
Также нам будут полезны снапшоты.
Восстанавливать будем с помощью ddrescue, нет смысла пробовать dd, так как он может зависнуть при чтении битого диска, а так же он не пытается повторно прочитать куски диска, которые не удалось прочитать с первого раза. С параметром -S полученный образ будет "дырявым", т.е. пустоты в диске не будут ничего по факту занимать и образ получится меньше.
sudo ddrescue -S /dev/sda /mnt/sda.ddrescue
Восстановилось. Теперь примонтируем образ:
# сделаем снап на всякий
sudo btrfs subvolume snapshot -r /mnt /mnt/orig-snap
# -P : losetup автоматически перечитает таблицу разделов в файле. Иногда даже partprobe может не отработать, поэтому лучше укажи этот параметр
sudo losetup -P /dev/loop0 sda.ddrescue
Лучше перед этим отключи диск, т.к. lv называются так же как на диске и их не получится активировать.
Если ты попал в ловушку джокера и lv остались от диска в /dev/mapper, то удали их руками через dmsetup:
# если все LV активны но не видны в lsblk:
losted in ~ λ sudo dmsetup ls
pve-data-tpool (254:5)
pve-data_tdata (254:4)
pve-data_tmeta (254:3)
pve-root (254:2)
pve-swap (254:1)
pve-vm--100--disk--0 (254:7)
pve-vm--108--disk--0 (254:8)
pve-vm--110--disk--0 (254:13)
pve-vm--113--disk--0 (254:11)
pve-vm--113--disk--1 (254:12)
pve-vm--200--disk--0 (254:9)
pve-vm--201--disk--0 (254:10)
rootfs (254:0)
losted in ~ λ sudo dmsetup remove pve-vm--200--disk--0 pve-vm--113--disk--1 pve-vm--113--disk--0 pve-vm--110--disk--0 pve-vm--108--disk--0 pve-swap pve-vm--100--disk--0
# и так далее удаляем остальное, оно зависит друг от друга, так что удаляй в несколько заходов
Далее из рута вытаскиваем конфиги виртуалок по пути /etc/pve, а так же вытаскиваем образы дисков:
# по каждому диску делаем
sudo qemu-img convert -p -O qcow2 /dev/mapper/pve-vm--108--disk--0 pve-vm-108-disk-0.qcow2
Далее создадим еще один снапшот диска и проверим каждую виртуалку:
sudo btrfs subvolume snapshot /mnt /mnt/start-vms
sudo qemu-system-x86_64 -enable-kvm -cpu max -nic none -m 2048 -hda pve-vm-113-disk-0.qcow2 -hdb pve-vm-113-disk-1.qcow2
Отключаем, отмонтируем, загружаем на свежеустановленный проксмокс образы виртуалок, создаем аналогичные виртуалки.
Всякое
Прочитать/записать блок 200, он же сектор, учитывая что диск побит на 512-байт блоки (в случае Advanced Format дисков блоки по 4096 байт - 4К):
dd bs=512 if=/dev/sda2 of=/tmp/sector200 skip=200 count=1