Я запускаю многодисковый сервер с LVM2. Несколько больших дисков служат физическими томами LVM2 для одной группы томов, содержащей один логический том, отформатированный с помощью ext4. Ничего особенного, просто стандартная линейная установка.
Недавно к этой группе томов был добавлен дополнительный, очень маленький диск в качестве физического тома, и я расширил на него как логический том, так и файловую систему ext4.
Этот lv используется для хранения инкрементных резервных копий с помощью rsync и заполнен только на 30%, из него редко удалялись какие-либо файлы, только добавочные записи.
Теперь этот новый жесткий диск, который я добавил в уже существующую группу томов, неожиданно умер, и группа томов не появится, потому что в ней отсутствует один физический том.
По воле судьбы это БЫЛ в «в случае катастрофического отказа основного сервера»-бэкап, событие произошло, босс недоволен, так что это вроде как работает ...
Согласно этому (Часть 3): http://www.novell.com/coolsolutions/appnote/19386.html LVM в любом случае можно обманом заставить запустить, создав новый pv с идентичными метаданными для отказавшего диска, что сделает том доступным, но, конечно, оставит гигантские дыры в файловой системе. Я еще не пробовал, потому что он включает в себя восстановление (запись) файловой системы, что исключает возможность попробовать другие вещи в случае неудачи.
Теперь мой вопрос: Как эта установка фактически выделяет дисковое пространство для новых данных? Распределяется ли он линейно от начала до конца PV, в том порядке, в котором они были добавлены в vg? Это как-то полосатое, чтобы увеличить производительность / баланс нагрузки?
Поскольку этот дефектный диск был добавлен только позже к существующим lvm2 vg и lv, содержащим полупустой ext4, каковы шансы, что на дефектный диск никогда не было записано никаких данных?
Другими словами: каковы шансы восстановить все мои данные, даже без неисправного диска, просто запустив группу томов как есть? Собираюсь ли я потратить 1500 долларов на восстановление 250 ГБ пустого пространства, когда я отправлю неисправный диск на ремонт?
Есть ли способ проверить, не монтируя файловую систему и не открывая файлы, надеясь, что они содержат что-то кроме нулей? (сравнение адресов используемых блоков данных внутри ext4 с диапазонами адресов, которые были на отсутствующем pv, что-то в этом роде, желательно легко автоматизировать)
Я знаю, что побитовое копирование всего lv в файл изображения перед попыткой восстановления ext4, вероятно, было бы хорошей идеей, но поскольку этот lv очень большой, и я только что потерпел серьезный сбой файловой системы на нескольких системах, это, вероятно, роскошь, которую я не делаю нет ...
Какие-либо предложения?
Подводя итог: я решил попробовать и снова собрал lvm с отсутствующим сломанным диском после того, как я сделал резервные копии всех дисков с помощью ddrescue.
Результат: из 68 000 файлов примерно 12 000 полностью отсутствовали, а еще 38 000 имели неверные контрольные суммы после восстановления (чистая удача, у меня были контрольные суммы в записи).
Так что я думаю, можно с уверенностью сказать, что это не лучшая стратегия, если файлы важны.
Кроме того, на восстановление файловой системы ушло около 3 дней обработки и значительно превышало 32 ГБ ОЗУ на Ivy-bridge Xeon.
Я все-таки отправил привод в ремонт.
Слишком много вопросов, отвечу на LVM-часть:
Поскольку вы смогли добавить один диск, я предполагаю, что это не чередующийся том и не зеркало (иначе у вас не было бы проблемы с отсутствующими данными), а просто обычная (линейная) цель.
Файл резервной копии метаданных находится в /etc/lvm/backup/$VG
на машине, на которой использовался LV - посмотрите там - там вы найдете все подробности.
Также, прежде чем что-либо делать с FS: создайте снимок и используйте его для восстановления, чтобы вы могли вернуться в предыдущее состояние.
Re: Использование FS: я не могу помочь, но, как вы сказали, никаких удалений, только добавление файлов, я ожидаю, что FS не фрагментирует свободное пространство. Вы можете попробовать обратиться к википедии: https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout или выполните поиск по IRC каналу # ext4.
И прежде чем вносить какие-либо необратимые изменения, перейдите на канал IRC #lvm на freenode, где вы можете найти онлайн-руководство.