LINUX.ORG.RU
решено ФорумAdmin

После изменения размера томов LVM запускается только GRUB

 ,


0

2

Доброго времени суток! Возможно, кто-нибудь сможет мне помочь. У меня вопрос скорее не «как починить?», а «где ошибка в настройке?». Надо было уменьшить размер тома home и увеличить root. Сразу оговорюсь, что делаю это из-за диплома и необходимости соблюсти его минимальный размер.

Настройка на виртуалке с astra linux. Вот вывод lsblk после установки ОС:

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1M  0 part 
├─sda2            8:2    0    1G  0 part /boot
└─sda3            8:3    0   49G  0 part 
  ├─VG405-lv_home 253:0  0 14.7G  0 lvm  /home
  └─VG405-lv_root 253:1  0 14.7G  0 lvm  /
sr0              11:0    1 1024M  0 rom

Загрузилась с Live-CD и активировала тома vgchange -ay. Проверила на ошибки том home e2fsck -f /dev/mapper/VG-lv_home:

e2fsck 1.47.0 (5-Feb-2023)
/dev/mapper/VG405-lv_home: recovering journal
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (3755073, counted=3747473).
Fix<y>? yes
Free inodes count wrong (960964, counted=960503).
Fix<y>? yes

/dev/mapper/VG405-lv_home: *****
/dev/mapper/VG405-lv_home: 489/960992 files (1.0% non-contiguous), 94575/3842048 blocks

Уменьшила размер файловой системы resize2fs /dev/mapper/VG405-lv_home 10G:

resize2fs 1.47.0 (5-Feb-2023)
Resizing the filesystem on /dev/mapper/VG405-lv_home to 2621440 (4k) blocks.
The filesystem on /dev/mapper/VG405-lv_home is now 2621440 (4k) blocks long.

Уменьшила размер тома lvreduce -L 10G /dev/mapper/VG405-lv_home:

WARNING: Reducing active logical volume to 10,00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce VG405/lv_home? [y/n]: y
Size of logical volume VG405/lv_home changed from <14,66 GiB (3752 extents) to 10,00 GiB (2560 extents).
Logical volume VG405/lv_home successfully resized.

Вывод lvs:

  LV      VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_home VG405  -wi-a----- 10,00g                                                    
  lv_root VG405  -wi-a----- <14,67g                                                   

Проверила том root на наличие ошибок e2fsck -f /dev/mapper/VG-lv_root:

e2fsck 1.47.0 (5-Feb-2023)
/dev/mapper/VG405-lv_root: recovering journal
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (1515774, counted=1485370).
Fix<y>? yes
Free inodes count wrong (723300, counted=722193)
Fix<y>? yes

/dev/mapper/VG405-lv_root: ***** FILE SYSTEM WAS MODIFIED *****
/dev/mapper/VG405-lv_root: 240687/962880 files (0.2% non-contiguous), 2359750/3845120 blocks

Увеличила его lvextend -L +4G /dev/mapper/VG405-lv_root:

Size of logical volume VG405/lv_root changed from <14,67 GiB (3755 extents) to <18,67 GiB (4779 extents).
Logical volume VG405/lv root successfully resized.

Увеличила файловую систему resize2fs /dev/mapper/VG405-lv_root:

resize2fs 1.47.0 (5-Feb-2023)
Resizing the filesystem on /dev/mapper/VG405-lv_root to 4893696 (4k) blocks.
The filesystem on /dev/mapper/VG405-lv_root is now 4893696 (4k) blocks long.

Вывод lvs:

  LV      VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_home VG405  -wi-a----- 10,00g                                            
  lv_root VG405  -wi-a----- <18,67g  

Перезапустилась без Live-CD и вылез GRUB. Попробовала зайти снова с Live-CD и примонтировать boot, root и системные каталоги. Это не помогло.

Извините за возможные ошибки в оформлении, я тут в первый раз


Если файловые системы монтируются и нет сообщений от ядра (драйвера файловой системы) о том, что размер контейнера (LVM тома) меньше размера файловой системы - загрузись с LivecD, смонтируй корень, /dev, /boot, /sys, сделай chroot и переустанови код загрузчика.

kostik87 ★★★★★
()

У тебя сейчас размер LV в точности (до байта!) совпадает с размером ФС. Но ведь у LVM есть собственные метаданные, которые надо где-то хранить. Он их и хранит (куда ему еще деваться?), а на ФС объема не хватает. Т.е. размер LV просто обязан быть чуть побольше размером, чем ФС.

Что было сделано неправильно: надо было просто использовать lvreduce -r. Тогда бы LVM сам посчитал нужный размер и вызвал resize2fs с необходимыми аргументами.

bigbit ★★★★★
()
Ответ на: комментарий от bigbit

Он их и хранит (куда ему еще деваться?), а на ФС объема не хватает.

Нет, матаданные хранятся в PV, а не в LV

Насчет запаса идея хорошая, я тоже обычно с запасом уменьшаю, но вряд ли в этом дело

Перезапустилась без Live-CD и вылез GRUB

Ну вылез и вылез. Что хочет?

router ★★★★★
()
Ответ на: комментарий от router

Да, точно (как я мог перепутать LV с PV?).

Получается, с ФС все OK.

Но сам я никогда не делаю по-отдельности lvreduce и resize2fs, лучше использовать опцию -r у LVM.

bigbit ★★★★★
()
Ответ на: комментарий от legolegs

А почему вообще на ФС были ошибки перед началом операций?

Может быть файловая система не была размонтирована перед операцией уменьшения?

THIS MAY DESTROY YOUR DATA (filesystem etc.)

Возможно это и подъело кусочек файловой системы, т.к. уменьшение было выполнено вручную, а не средствами контейнера LVM.

raspopov
()
Ответ на: комментарий от raspopov

Может быть файловая система не была размонтирована перед операцией уменьшения?

resize2fs не поддерживает уменьшение примонтированной ФС.
И вообще как это может быть связано с ошибками fsck _до_ уменьшения /home? Предполагаешь, что там было несколько попыток?

Возможно это и подъело кусочек файловой системы, т.к. уменьшение было выполнено вручную, а не средствами контейнера LVM.

как будто lvreduce изменяет размер как-то по-другому, чем resize2fs.
В стартовом сообщении приведены размеры:
2621440 (4k) blocks long
Это как раз 10GiB, т.е. размеры /home верные.

MirandaUser2
()
Ответ на: комментарий от MirandaUser2

https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/6/html/logical_volume_manager_administration/lv_reduce

Особенно впечатляет врезка «Warning», которая предупреждает, чтобы не делали уменьшение именно так, как сделал автор топика…

raspopov
()
Ответ на: комментарий от raspopov

Может быть файловая система не была размонтирована перед операцией уменьшения?

Разве при загрузке с Live-CD файловая система может смонтироваться автоматически?

erltg
() автор топика
Ответ на: комментарий от raspopov

Не, warning там про то, что отсутствие предупреждения («THIS MAY DESTROY YOUR DATA (filesystem etc.)») и запроса на подтверждение уменьшения размера LV ещё не означает, что ты всё сделал правильно в плане изменения размера ФС.
Рекомендация про опцию --resizefs действительно в тексте присутствует, но тут уж каждый сам решает..

MirandaUser2
()
Ответ на: комментарий от raspopov

Особенно впечатляет врезка «Warning», которая предупреждает, чтобы не делали уменьшение именно так, как сделал автор топика…

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

erltg
() автор топика
Ответ на: комментарий от erltg

Никаких ошибок, просто строка «grub>»

Это значит, что grub не может найти свой конфигурационный файл. Ты можешь полазить по диску прямо из этой командной строки (там есть команды типа ls) и, если увидишь что-нибудь похожее на его конфиг (обычно он где-нибудь в /boot), дать команду configfile <конфиг>, после этого появится меню GRUB.

С ресайзом все это не связано, в системе что-то было сломано до этого. Уменьшение было сделано корректно - размер ФС в точности совпадает с размером тома LVM.

bigbit ★★★★★
()
  1. Для начала, надо подтвердить что до всех действий система была рабочая.

  2. Уменьшался /home, а /root только увеличивался, так что /root не мог пострадать, а грузится именно он. По /home в худшем случае вылезла бы ошибка о не возможности примонтировать

futurama ★★★★★
()
Ответ на: комментарий от bigbit

Ещё как связано — съехало начало тома, а начальный загрузчик GRUB’a ищет свой основной екзешник (stage 2 или как оно там) тупо по смещению от начала. Проще всего загрузиться с носителя с инструментом типа SystemRescue, SuperGRUB и подобного, который позволяет найти рутовый раздел и продолжить загрузку с него. (Можно это сделать и из режима grub-rescue, в который система вываливается, но с бо́льшим пердолингом — гуглить инструкции по grub-rescue.) А загрузившись, сделать update-grub и grub-install с нужными параметрами.

anonymous
()
Ответ на: комментарий от anonymous

ищет свой основной екзешник (stage 2 или как оно там) тупо по смещению от начала.

во-первых /boot , где лежат файлы grub, не трогали (может конечно и трогали, но в стартовом сообщении об этом не сказано). Во-вторых по смещению он ищет только если другие варианты не доступны. В данном случае можно предположить, что sda1 размером один 1M это bios_grub раздел на gpt таблице разделов.

MirandaUser2
()
Ответ на: комментарий от anonymous

Ещё как связано — съехало начало тома

Никуда оно не съехало. Начало тома вообще не трогалось. Менялись только конечные экстенты.

а начальный загрузчик GRUB’a ищет свой основной екзешник (stage 2 или как оно там) тупо по смещению от начала.

Но не от начала тома же! Те сектора, в которые GRUB пишет основную часть загрузчика, вообще не принадлежат никакому разделу (а LVM здесь лежит внутри раздела). Первый раздел обычно выравивается на 1Мб (2048 секторов) в современных разметках. Т.е. 2047 секторов между MBR и первым разделом никем не используются. Вот туда GRUB и пишет свой stage1.5 или как он там называется. И съехать они никак не могут, если не трогалась таблица разделов (а она не трогалась, судя по описанияю).

bigbit ★★★★★
()
Последнее исправление: bigbit (всего исправлений: 3)
Ответ на: комментарий от anonymous

И да, если бы не загрузился stage2, то приглашения grub> бы вообще не было.

А если оно появилось, то это значит, что GRUB полностью загрузился, и к нашим услугам все его команды (типа ls).

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

bigbit ★★★★★
()
Последнее исправление: bigbit (всего исправлений: 1)

Всем спасибо за помощь! Раз каких-то явных ошибок в настройке нет, буду всем говорить, что работает, и молиться чтобы никто из комиссии на этом форуме не сидел :)

erltg
() автор топика