Итак, у меня есть образ диска, созданный запуском dd и копированием полного жесткого диска (~ 67 ГБ). Моя конечная цель - получить это изображение от 70 ГБ до 55 ГБ. Изображение выглядит следующим образом с точки зрения разделов:

boot partition
volume group containing the following logical volumes:
    root.fs 4GB
    localhd.fs 62GB
    swap.fs 2GB

В итоге я смонтировал этот образ и фактически уменьшил локальный логический том на 15 ГБ. До этого момента проблем не было.
Мой вопрос заключается в том, как мне на самом деле уменьшить само изображение после уменьшения размера логического тома - я предполагаю, что сжатие на 15 ГБ просто привело к 15 ГБ свободного нераспределенного пространства. Я хочу избавиться от этого 15Gb все вместе.

1 ответ1

1

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

  1. Используйте pvdisplay, чтобы узнать, как физические экстенты (PE) распределяются на вашем томе:

    pvdisplay --maps /dev/sdXY
    
  2. Если свободные экстенты находятся посередине, используйте pvmove для перемещения некоторых PE с конца PV, чтобы все свободное пространство оставалось в конце PV - вам нужен следующий синтаксис для перемещения PE с явно указанными номерами:

    pvmove --alloc anywhere /dev/sdXY:2000-2999 /dev/sdXY:1000-1999
    

    В качестве альтернативы, если нарушающий том - подкачка, будет быстрее удалить и воссоздать его (но убедитесь, что либо ничего не зависит от его UUID, либо вы обновите его там соответствующим образом).

  3. После того, как вы освободили место в конце PV, используйте pvresize, чтобы уменьшить физический том:

    pvresize --setphysicalvolumesize 53G /dev/sdXY
    

    (отрегулируйте размер громкости в соответствии с вашими номерами).

    К сожалению, попытка pvresize может потерпеть неудачу, если у вас есть две области метаданных на этом PV. В этом случае вы можете попробовать опасный процесс, описанный в этом потоке списков рассылки LVM ( создание резервной копии VG, повторное pvcreate с UUID и restorefile, восстановление VG).

  4. Найти точный размер PV в секторах:

    pvdisplay --units s /dev/sdXY
    
  5. Деактивируйте группу томов, чтобы раздел не использовался:

    vgchange -an VolGroupName
    
  6. Измените размер раздела, содержащего PV, до размера, указанного на шаге 4. Это наиболее опасный шаг, потому что parted не поддерживает фактическое изменение размера PVM-разделов LVM, поэтому вам нужно будет удалить раздел, а затем воссоздать его с точно таким же первым сектором, как и раньше, а последний сектор рассчитать из первого сектора и размер PV в секторах ( end = start + size - 1). Вы можете использовать fdisk или parted (если вы используете таблицу GPT раздела, вы должны использовать либо parted или gdisk (GPT FDISK), потому что обычная fdisk не поддерживает GPT). Будьте осторожны, чтобы не устанавливать слишком маленький размер раздела.

  7. Перезагрузите, если требуется (если вы забыли деактивировать группу LVM или все еще было установлено что-либо с того же диска).

  8. Убедитесь, что LVM VG можно активировать и использовать без проблем.

  9. Посмотрите на fdisk -lu /dev/sdX чтобы найти номер последнего использованного сектора; затем вы можете обрезать изображение до нужного размера (опять же, будьте осторожны, чтобы не сделать размер изображения слишком маленьким).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .