Google Compute Engine - сжатие дисков

У меня 5 ТБ HD, и я хочу уменьшить его до 2 ТБ.

Я использую Google Compute Engine PaaS.

Как я могу это сделать?

Можете ли вы предложить какие-либо инструменты для выполнения этого вручную, если это не может быть решено инструментами Google?

2 ответа

Решение

Если диск не загрузочный, вы можете сделать следующее:

  1. добавьте новый диск нужного размера и отформатируйте его.
  2. смонтировать новый диск
  3. cp -r --preserve=all /mnt/disk1/. / Шоссе /disk2/
  4. отредактируйте /etc/fstab, чтобы смонтировать новый диск вместо старого

Если у вас есть стандартный диск и вы хотите сократить время работы cp. Сначала вы можете создать новый ssd-диск из моментального снимка и скопировать его на 2T ssd-диск. Затем сделайте снимок с диска 2T и создайте новый стандартный диск 2T.

Если ваш диск является загрузочным, вы можете использовать такой инструмент, как fsarchiver:

  1. Создайте архив с загрузочного диска. fsarchiver savefs /mnt/backup/boot_disk.fsa /dev/sda
  2. Восстановите архив на новом диске fsarchiver restfs /mnt/backup/boot_disk.fsa id=0,dest=/dev/sdb

Мой ответ очень специфичен для экземпляров Centos 7 на платформе Google Compute Engine. Некоторая информация, вероятно, может быть использована из этого для других типов ОС, но это выходит за рамки моего опыта.

Мой вариант использования заключался в уменьшении корневого устройства 400G, подключенного к устаревшему экземпляру Centos7, до 20G. К сожалению, на корневом устройстве был только один раздел (без раздела EFI), поэтому, когда я попробовалfsarchiver, это не удалось с ошибкой оnot able to mount /dev/sdb1 as vfat(sdb1былXFSкорневой раздел моего целевого экземпляра, смонтированного на более сжатом экземпляре).

Процесс, который в конечном итоге сработал для меня, выглядит следующим образом:

  • Создайте новый экземпляр клона (это будет сжатый диск).
  • Создайте временный экземпляр (здесь происходят все действия командной строки, выполняемые какroot).
  • Завершите работу и отредактируйте его, чтобы отсоединить корневой диск (обычно он называется так же, как имя экземпляра, НО допустим «target-1-root»).
  • Подключите как дополнительный диск к . Это становится/dev/sdb.
  • Подключите новый диск размером на 10 ГБ, превышающим дисковое пространство, необходимое для нового загрузочного диска (в моем случае базовый 10 ГБ + 10 ГБ дополнительно), с именем . - это становится/dev/sdc
  • Инициализируйте таблицу разделов, аналогичную (MBR или GPT, можно увидеть черезfsdisk -l /dev/sdbи создано с использованием )
  • Создайте корневой раздел для (с помощью fdisk) и отформатируйте его так, чтобы он соответствовал (для меня xfs), используяmkfs.xfs /dev/sdc1(или похожиеmkfs.$FSTYPE)
  • Создайте точки монтирования:mkdir -p /media/old /media/new
  • mount /dev/sdc1 /media/old(target-1-root)
  • mount /dev/sdb1 /media/new()
  • Скопируйте данные:rsync -a /media/old/ /media/new/
  • Сохраните начальные сектора (начало до начала первого раздела):
    • Проверить:fdisk -l /dev/sdc- для меня это был 2048 год:
                Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 4096 bytes
      I/O size (minimum/optimal): 4096 bytes / 4096 bytes
      Disk label type: dos
      Disk identifier: 0x0009c1de
      
         Device Boot      Start         End      Blocks   Id  System
      /dev/sdc1            2048    41943039    20970496   83  Linux
      
    • Размеры двух дисков должны совпадать (предварительно проверьте шаг инициализации раздела)
  • перезапишите загрузочный сектор /dev/sdc загрузочным сектором старого диска, используяdd if=/dev/sdb of=/dev/sdc bs=512 count=2048- это информация взята изfdisk -lвыше.
  • Верните перезаписанную таблицу разделов к правильным значениям, используяfdisk /dev/sdc(у fdisk есть встроенная справка, используйте ее)
    • удалить плохой раздел слишком большого размера
    • создайте новый раздел с правильными данными, как указано выше.
    • наконец-то сделал его загрузочным
  • Проверьте UUID нового корневого раздела (lsblk -o name,uuid) и обновите его по мере необходимости:
    • /media/new/etc/fstab
    • /media/new/boot/grub2/grub.cfg
  • umount /media/new
  • Отсоединиться отshrinker-1
  • Отредактируйте и прикрепитеtarget-1-newrootв качестве корневого устройства. Также включите последовательную консоль для устранения сбоев загрузки, если таковые имеются.
  • Загрузитесьtarget-1, войдите в систему и проверьте, что все идет так, как ожидалось.

И последнее, но не менее важное: рассмотрите возможность отправки мнеRasPi CM4-${ANY_MMC}-2GB-Wifiиспользуя сбережения :смех: .

Другие вопросы по тегам