Ошибка блокировки /dev/sdb1 “BLKRRPART: Неверный аргумент”

Вопрос или проблема

Мне нужно было расширить LV на сервере предприятия, который принадлежит sdb1. Я добавил/выделил пространство, которое мне нужно, из массива хранения.

Я пересканировал порты SAN и затем решил выполнить blockdev --rereadpt /dev/sdb1 перед тем, как продолжить с командой lvextend, а затем с командой resize2fs.

Но я получил:

BLKRRPART: Неверный аргумент

Я думаю, что мне нужно сделать blockdev для /dev/sdb, а не для /dev/sdb1, но я не уверен.

У вас есть какие-нибудь идеи?

Вывод информации из fdisk -l:

Диск /dev/sdb: 21.5 ГБ, 21474836480 байт
64 голов, 32 сектора/трек, 20480 цилиндров
Единицы = цилиндры по 2048 * 512 = 1048576 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода/вывода (минимум/оптимум): 512 байт / 512 байт
Идентификатор диска: 0x3d4c6a02
Устройство Загрузка      Начало         Конец      Блоки   Id  Система
/dev/sdb1               1       20480    20971504   8e  Linux LVM

Команда --rereadpt предназначена для повторного считывания таблицы разделов. У разделов нет таблицы разделов, только у дисков есть. Поэтому вам следует выполнить эту команду:

blockdev --rereadpt /dev/sda

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

  1. Изменить размер sdb1; если вы сделаете это с помощью fdisk /dev/sdb, это практически удалит и заново создаст запись раздела с новым концом (и только новым концом; т.е. убедитесь, что старт остается тем же)
  2. Обновить размер PV/VG с помощью pvresize

Ответ или решение

Для решения проблемы, связанной с ошибкой "BLKRRPART: Invalid argument" при попытке выполнить команду blockdev --rereadpt /dev/sdb1, важно понимать, что команда --rereadpt используется для перечитывания таблицы разделов на диске, и её следует применять к самому диску, а не к разделу. В вашем случае вы правильно предположили, что нужно использовать /dev/sdb, а не /dev/sdb1. Правильная команда будет выглядеть так:

blockdev --rereadpt /dev/sdb

Однако, как вы уже упомянули, основная проблема заключается в том, что перед расширением логического тома (LV) необходимо сначала увеличить размер самого раздела (/dev/sdb1). Вот шаги, которые следует выполнить:

  1. Измените размер раздела /dev/sdb1:
    Используйте fdisk или parted для изменения размера раздела. Для этого выполните следующие шаги:

    fdisk /dev/sdb

    Внутри fdisk выполните следующее:

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

    Например, если старый размер раздела был от 1 до 20480, установите конечный размер так, чтобы он охватывал весь доступный размер.

  2. Обновите размер физического тома (PV) и группы томов (VG):
    После изменения размера раздела запустите команду pvresize, чтобы обновить информацию о размере физического тома:

    pvresize /dev/sdb1
  3. Продолжите с расширением логического тома и файловой системы:
    Теперь, когда физический том обновлён, вы можете продолжить с командой lvextend для расширения логического тома:

    lvextend -l +100%FREE /dev/имя_группы_томов/имя_логического_тома

    После этого выполните resize2fs, чтобы изменить размер файловой системы:

    resize2fs /dev/имя_группы_томов/имя_логического_тома

В итоге, следуя данным шагам, вы сможете правильно выделить пространство, обновить размеры и избежать ошибок, связанных с чтением таблицы разделов. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!

Оцените материал
Добавить комментарий

Капча загружается...