Как я могу воссоздать удаленные Логические тома LVM?

Повторное выполнение

sudo du -x   -d1 -h /

(вниз дерево каталогов), должен сказать Вам, где место занимается. Это, вероятно, объясняет без дальнейшего расследования, какое приложение вызывает это.

невидимые файлы

Если du не показывает эти файлы затем, одна из возможностей является удаленными файлами. Файл (или скорее: его имя т.е. его запись в каталоге), может быть удален, в то время как файл все еще используется. Пока существует дескриптор правильного файла, указывающий на этот файл, он покрывает пространство на объеме (если это не пустой файл...).

cat >file &
ls -l file
rm file
ls -l file
# PID of cat is 19834
ls -l /proc/19834/fd
lrwx------ 1 hl hauke 64 11. Feb 19:16 0 -> /dev/pts/0
l-wx------ 1 hl hauke 64 11. Feb 19:16 1 -> /crypto/home/hl/tmp/file (deleted)
lrwx------ 1 hl hauke 64 11. Feb 19:15 2 -> /dev/pts/0

Можно найти эти файлы с find:

find /proc/ -mindepth 3 -maxdepth 3 \
-regex '/proc/[1-9][0-9]*/fd/[1-9][0-9]*' -type l -lname '*(deleted)' \
-printf '%p\n     %l\n' 2>/dev/null

Это может быть один единственный огромный файл или набор меньших файлов, которые вызывают Вашу проблему. Существует приблизительно 30 таких файлов в моей системе теперь (принадлежащий только пяти процессам). ls -l показывает размер этих файлов, но это, кажется, не возможно получить это значение от find.

После уничтожения процесса пространство становится доступным файловой системе (df) снова.

2
21.01.2015, 08:11
1 ответ

Это должно быть легко восстановить LVS, если они не были фрагментированы (на уровне LVM), и если бы они были простыми (линейными) томами; Это может работать с тонким предоставлением, но я не знаком с этим. Вам просто нужно создавать их в том же порядке и с тем же размером, что и раньше.

Я не знаком с TestDisk . Если он говорит вам, что размер объемов, которые он нашел, то вам не нужно выяснить себя.

Это помогает понять, как работает dmsetup . Пример из моей системы:

> dmsetup ls
[...]
linux2-test   (254:4)

> dmsetup table linux2-test
0 106496 linear 8:8 384

Первые 384 сектора содержат метаданные LVM. Если этот объем был удален, то TESTDISK должен отображать объем Ext4 , начиная с сектора 384. Затем вы можете настроить временное устройство Mapper устройств:

> dmsetup create restore-lv-1 --table "0 100 linear 8:8 384" --readonly

Количество секторов (100 в Этот пример) сначала не известен, поэтому вы можете выбрать почти любое значение, но он не должен превышать размер базового блока. Вы можете использовать небольшое значение, как 100, так как вам просто нужен суперблок. Затем вы прочитаете размер файловой системы из устройства TEMP:

> dumpe2fs -h /dev/mapper/restore-lv-1
dumpe2fs 1.41.14 (22-Dec-2010)
[...]
Block count:              53248
[...]
Block size:               1024
[...]

Размер громкости составляет 53248 * 1024 = 54525952, который составляет 106496 512-байтовых секторов. Если файловая система охватывала весь LV (что обычно имеет корпус), то это тоже размер устройства. Смещение следующего ЛВ должно быть 106496 + 384 = 106880. С этим смещением вы можете повторить этот процесс.

Если вы создаете новый LV, вы должны проверить с таблицей DMSetup , есть ли ожидаемое смещение и длина.

4
27.01.2020, 22:00

Теги

Похожие вопросы