Мне нужно загрузить около 500 экземпляров с определенным образом, чтобы выполнить работу с большими файлами, требующими доступа POSIX к более чем 10 ГБ. Согласно этому документу https://developers.google.com/compute/docs/images невозможно создать загрузочный диск объемом более 10 ГБ, а мне нужен доступ POSIX к более чем 10 ГБ. Означает ли это, что мне нужно будет создать еще один незагрузочный диск на каждом экземпляре с нужным мне дисковым пространством? Есть ли другой способ сделать это?
Могу ли я создать образ ОС объемом более 10 ГБ в Google Compute Engine?
Ответы (4)
Этот документ относится к ограничению размера образа операционной системы, а не размера загрузочного диска.
Вы можете создать загрузочный диск любого размера, а затем использовать его при создании экземпляра, например:
gcutil adddisk "disk-1" --size_gb="15" --zone="europe-west1-b" --source_image="https://www.googleapis.com/compute/v1/projects/debian-cloud/ глобальные/изображения/debian-7-wheezy-v20140522"
gcutil addinstance "instance-1" --zone="europe-west1-b" --machine_type="n1-standard-1" --network="default" --external_ip_address="ephemeral" --metadata="sshKeys: " --disk="disk-1,deviceName=disk-1,mode=READ_WRITE,boot" --auto_delete_boot_disk="true"
См.: https://developers.google.com/compute/docs/disks#create_disk
Вы можете использовать Packer для создания образов на GCE, размер которых будет автоматически изменяться при загрузке. Я создал репо специально для этого вопроса, в котором есть демонстрация изображения с автоматическим изменением размера с использованием последних версий либо бэкпортов Debian-7, либо образов виртуальных машин, оптимизированных для контейнеров.
Он использует cloud-initramfs-growroot
:
автоматически изменять размер корневого раздела при первой загрузке
Этот пакет добавляет функциональность в initramfs, созданный с помощью initramfs-tools. После установки initramfs перераспределяет диск, чтобы корневой том занимал все пространство, следующее за ним.
Скорее всего, вам не нужен этот пакет, если вы не знаете, что делаете. В первую очередь это интересно в виртуализированной среде, когда размер диска может быть больше исходного. В этом случае с установленным пакетом вы можете автоматически использовать новое пространство, не требуя перезагрузки для повторного чтения таблицы разделов.
См. мой сценарий growroot.sh
для детали и как вы можете адаптировать его к вашему варианту использования.
У вас есть два варианта:
Создайте загрузочный диск размером более 10 ГБ, но затем вам потребуется переразметить его, поскольку по умолчанию предоставляемые образы ВМ расширяются до 10 ГБ, поэтому вам потребуется использовать эти инструкции и запустите
fdisk
, перезагрузите компьютер, а затем запуститеresize2fs
, чтобы расширить доступное пространство до полного размера диска. Вы можете автоматизировать его, чтобы он запускался как часть создания экземпляра, используя сценарии запуска. .Другой вариант — создать отдельный постоянный диск и подключить его отдельно, но тогда это будет не загрузочный диск, а просто диск данных. Для этого вы можете воспользоваться инструкциями на этой же странице, а именно:
gcutil adddisk [...]
gcutil attachdisk [...]
, если загрузочные диски и диски с данными не добавляются при создании инстанса черезgcutil addinstance --disk=disk1 --disk=disk2 [...]
, в этом случае это не нужно/usr/share/google/safe_format_and_mount [...]
чтобы автоматизировать остальное
Вы можете легко сделать это без необходимости вручную изменять размер/разметку/форматировать диск или без каких-либо сложностей, представленных во всех других ответах на StackOverflow. Пожалуйста, посмотрите мой ответ здесь о том, как это можно сделать: Как увеличить загрузочный диск в Google Compute Engine