Назад | Перейти на главную страницу

Релейный выход LVM Disk

У меня есть система Ubuntu 11.10 с двумя дисками по 500 ГБ. Таблицы разделов выглядят так:

/dev/sda1      primary   465.52GB
/dev/sda2      extended  243.17MB
  -> /dev/sda5 logical   243.14MB
/dev/sdb1      primary   465.76GB

sda1 и sdb1 находятся в одной группе физических томов LVM, содержащей один логический том, содержащий одну логическую файловую систему, которая монтируется как /. sda5 монтируется как / boot.

Проблема возникает, когда я хочу перейти на Ubuntu 12.04, для которого требуется как минимум 247 МБ свободного места на / boot. Поэтому мне нужно уменьшить размер sda1, чтобы я мог увеличить размер sda2 и sda5. Как, черт возьми, мне это сделать? Я могу найти, как уменьшить группу логических томов, но я не совсем понимаю, как очистить конечную часть sda1, чтобы я мог уменьшить группу физических томов. Pvresize решает это автоматически? Или это безумное принятие желаемого за действительное?

Я предполагаю, что альтернативой является резервное копирование всего на что-то или другое и воссоздание этого с нуля или выяснение, поддерживает ли GRUB2 использование LVM для / boot.

В 12.04 включение модулей LVM и raid в GRUB сделает его больше, чем традиционные 62 сектора, доступные для загрузчика. Предполагается, что в наши дни в большинстве систем разделы выровнены по отметке 1 МБ, поэтому обычно достаточно места. Вы можете использовать один из fdisks или parted чтобы проверить начальное местоположение sda1 раздел (я знаю, что установщик Debian расплывчато говорит о том, куда все идет, не уверен, отличается ли установщик Ubuntu от других). Обязательно проверьте перед попыткой, похоже, много сообщений о том, что если недостаточно места, grub будет жаловаться, что недостаточно места для работы, но все равно попробуйте и оставит систему не загружаемой.

В качестве примера, чтобы увидеть, как использовать fdisk для сообщения, вот fdisk /dev/sda в моей системе Debian, которую я установил очень давно: (Используйте команду «u» для отображения секторов, затем «p» для печати таблицы и «q» для выхода без изменений)

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63     1959929      979933+  83  Linux

Это показывает, что в моем случае перед ним всего 62 сектора. Я бы не смог загрузиться прямо с LVM.

После сжатия первого раздела, содержащего первый физический том, pvresize, вам нужно вырастить /boot раздел.

Чтобы продлить /boot раздел, вам придется переместить его начальную точку на первый диск. Вы можете добиться этого с помощью parted используя move команда.

Затем вы можете снова изменить размер раздела с помощью parted и, наконец, расширить файловую систему.

Я понял это. Прежде чем я начну, я скажу, что приведенные ниже цифры могут не складываться - я пытался воссоздать именно то, что я сделал, но мне пришлось вернуться к числам. Мой совет - делайте все возможное в килобайтах, потому что все инструменты согласны с тем, насколько они велики. Будьте ОЧЕНЬ осторожны при использовании fdisk, чтобы раздел был не меньше размера физического тома, который он содержит, потому что он не предупредит вас, если вы попытаетесь сделать что-то глупое.

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

e2fsck -f /dev/mapper/root

Затем измените размер файловой системы:

$ df
Filesystem            1K-blocks      Used Available Use% Mounted on
/dev/mapper/root      935093704 472743436 414857916  54% /

$ resize2fs /dev/mapper/root 934093704k

Затем измените размер логического тома:

$ lvresize -L 934093704K /dev/mapper/root

Убедитесь, что файловая система в порядке:

$ e2fsck -f /dev/mapper/root

Теперь посмотрим на физические тома - в / dev / sdb1 должно быть немного свободного места в конце:

$ pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda1  toad lvm2 a-   465.76g  4.00m
  /dev/sdb1  toad lvm2 a-   465.76g  1.28g

Нам нужно переместить это свободное пространство в конец / dev / sdb1. Начните с того, что посмотрите, сколько экстентов существует на каждом диске:

$ pvs --segments

  PV         VG   Fmt  Attr PSize   PFree  Start  SSize
  /dev/sda1  toad lvm2 a-   465.76g  4.00m      0 119173
  /dev/sdb1  toad lvm2 a-   465.76g  1.28g      0 119141

Затем переместите часть из одного в другой: $ pvmove / dev / sda1: 118923: 119173 / dev / sdb1

$ pvs --segments

  PV         VG   Fmt  Attr PSize   PFree  Start  SSize
  /dev/sda1  toad lvm2 a-   464.55g  1.00g      0 119141
  /dev/sdb1  toad lvm2 a-   465.76g 284.0m      0 119141
  /dev/sdb1  toad lvm2 a-   465.76g 284.0m 119141 119173

Теперь вы можете изменить размер физического тома с помощью pvresize:

$ pvresize --setphysicalvolumesize 487112704k /dev/sda1

Теперь вы можете изменить размер раздела с помощью fdisk. Предупреждение: мои разделы были настроены так, что / dev / sda1 запускался в секторе 63. Я предполагал, что это значение по умолчанию, и поэтому на самом деле не записал его. Тогда fdisk позволил бы мне воссоздать только раздел, начинающийся с сектора 2048, и я не знал, что это было неправильно - теперь у меня непригодная для использования система! К счастью, вы можете повторно удалить и воссоздать раздел без каких-либо побочных эффектов, но мне пришлось угадывать, где должен был начинаться раздел. Так что ЗАМЕТИТЕ, ГДЕ НАЧИНАЕТСЯ ВАШ РАЗДЕЛ, ПЕРЕД УДАЛЕНИЕМ ЕГО!

$ fdisk /dev/sda
Command (m for help): p

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000730a3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63   974227455   488113696+  8e  Linux LVM
/dev/sda2       974229504   976771071     1270784    5  Extended
/dev/sda5       974231552   976771071     1269760   83  Linux

Command (m for help): d
Partition number (1-5): 1

Command (m for help): n
Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-976773167, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-974229503, default 974229503): +487113696K

Command (m for help): x

Expert command (m for help): b
Partition number (1-5): 1
New beginning of data (1-974229439, default 2048): 63

Я переместил и изменил размер / dev / sda2 и / dev / sda5 с помощью GParted, что заставляет меня намного меньше нервничать. И наконец:

$ mkdir disk
$ mount /dev/sda5 disk
$ grub-install --boot-directory=./disk /dev/sda

чтобы переустановить загрузчик в новом месте.

Обратите внимание, что я сначала создал раздел, начиная с 2048 года, а затем переместил начало на 63.

Команды LVM сообщат вам, собираетесь ли вы сделать что-то глупое, например, сделать физический том меньше, чем выделенные экстенты, которые он содержит, но некоторые этого не сделают, особенно fdisk - довольно легко в конечном итоге изменить размер раздела, чтобы он отрубает конец физического объема. Это плохо. Убедитесь, что размер раздела не меньше физического объема!