Вопрос или проблема
Мне нужно было расширить 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
, вам необходимо:
- Изменить размер
sdb1
; если вы сделаете это с помощьюfdisk /dev/sdb
, это практически удалит и заново создаст запись раздела с новым концом (и только новым концом; т.е. убедитесь, что старт остается тем же) - Обновить размер PV/VG с помощью
pvresize
Ответ или решение
Для решения проблемы, связанной с ошибкой "BLKRRPART: Invalid argument" при попытке выполнить команду blockdev --rereadpt /dev/sdb1
, важно понимать, что команда --rereadpt
используется для перечитывания таблицы разделов на диске, и её следует применять к самому диску, а не к разделу. В вашем случае вы правильно предположили, что нужно использовать /dev/sdb
, а не /dev/sdb1
. Правильная команда будет выглядеть так:
blockdev --rereadpt /dev/sdb
Однако, как вы уже упомянули, основная проблема заключается в том, что перед расширением логического тома (LV) необходимо сначала увеличить размер самого раздела (/dev/sdb1
). Вот шаги, которые следует выполнить:
-
Измените размер раздела
/dev/sdb1
:
Используйтеfdisk
илиparted
для изменения размера раздела. Для этого выполните следующие шаги:fdisk /dev/sdb
Внутри
fdisk
выполните следующее:- Удалите существующий раздел (это не приведёт к потере данных, если вы оставите начальный сектор прежним).
- Создайте новый раздел с тем же начальным сектором, но с большим конечным сектором, чтобы учесть дополнительное пространство.
- Сохраните изменения.
Например, если старый размер раздела был от 1 до 20480, установите конечный размер так, чтобы он охватывал весь доступный размер.
-
Обновите размер физического тома (PV) и группы томов (VG):
После изменения размера раздела запустите командуpvresize
, чтобы обновить информацию о размере физического тома:pvresize /dev/sdb1
-
Продолжите с расширением логического тома и файловой системы:
Теперь, когда физический том обновлён, вы можете продолжить с командойlvextend
для расширения логического тома:lvextend -l +100%FREE /dev/имя_группы_томов/имя_логического_тома
После этого выполните
resize2fs
, чтобы изменить размер файловой системы:resize2fs /dev/имя_группы_томов/имя_логического_тома
В итоге, следуя данным шагам, вы сможете правильно выделить пространство, обновить размеры и избежать ошибок, связанных с чтением таблицы разделов. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их!