Может ли LVM отмечать/избегать плохих блоков?

Может ли LVM отмечать/избегать плохих блоков?

Так как какbtrfs не отслеживает плохие блоки, как обходной путьэтот пост в списке рассылки btrfsпредложено использовать базовую конфигурацию mdadm RAID0 для поддержки плохих блоков.

Можно ли использовать LVM вместо mdadm для этой цели?

решение1

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

Я не думаю, что в LVM есть что-то, что позволяет избегать плохих блоков как таковых; обычно вы решаете эту проблему ниже LVM, на уровне устройства. Один из способов решения проблемы — использовать device mapper: создать таблицу, содержащую сопоставление секторов, необходимое для пропуска всех плохих блоков, и построить устройство с ее помощью. Такая таблица будет выглядеть примерно так:

0 98 linear /dev/sda 0
98 98 linear /dev/sda 99

и т. д. (это создает 196-секторное устройство, используя, /dev/sdaно пропуская сектор 98). Вы даете этоdmsetup:

dmsetup create nobbsda --table mytable

а затем создать PV на полученном /dev/nobbsdaустройстве (вместо /dev/sda).

Используя этот метод, с небольшим планированием вперед, вы даже можете справиться с неисправными секторами в будущем, так же, как это делается с прошивкой диска: оставьте несколько секторов в конце диска свободными (или даже точками по всему диску, если вы хотите распределить риск), а затем используйте их для заполнения дыр, оставленных неисправными секторами. Используя приведенный выше пример, если мы считаем, что сектора, начинающиеся, скажем, с 200, являются запасными секторами, а сектор 57 становится плохим:

0 57 linear /dev/sda 0
57 1 linear /dev/sda 200
58 40 linear /dev/sda 58
98 98 linear /dev/sda 99

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

Другим решением, которое будет работать с существующей настройкой LVM, будет использованиеpvmoveспособность перемещать физические экстенты для перемещения LV из плохих областей. Но это не помешает повторно использовать эти области всякий раз, когда создается новый LV или изменяется размер или перемещается существующий LV.

Связанный контент