Вопрос или проблема
Существует ли способ сбросить/сохранить объем/снимок EBS в файл или смонтировать его на локальной файловой системе Linux?
Я нашел только эту старую тему и этот скрипт, который предполагает сохранение через S3 и, похоже, не очень надежен. Я также нашел этот онлайн-инструмент, но он не сработал для меня. Он даже не содержит все доступные регионы.
Я НЕ ищу решения на основе rsync.
Можем ли мы прямо скачать EBS как файл .img или .iso способом dd
?
Все текущие ответы устарели: с конца 2019 года AWS предоставляет API для доступа к данным внутри снимков EBS напрямую, без необходимости создавать объем и экземпляр EC2.
Их называют EBS прямыми API, и сегодня они в целом доступны по регионам. AWS даже выпустила самостоятельный инструмент под названием ‘coldsnap’, который (среди прочего) позволяет загружать снимок в файл:
coldsnap download <идентификатор снимка> disk.img
Обратите внимание, что этот API не бесплатен в использовании. На момент написания вам начисляется около $0.003 за каждые 1000 загруженных блоков (это немного варьируется по регионам). Блоки имеют размер 512 кибибайт, так что это составляет около $0.006 за GiB загруженных. (512 кибибайт — это только минимум; блоки могут быть больше, в этом случае расходы на GiB будут ниже).
Также имейте в виду, что API не может быть использован для публичных снимков.
AWS не предоставляет способ загрузить или извлечь фактическое блочное устройство, из которого состоит объем EBS. Стандартный способ получить копию — использовать rsync, но так как вы ищете способ на уровне блоков, эта статья может быть полезной.
Кратко (и на случай, если ссылка выше исчезнет), используйте netcat
и dd
на обоих концах, например:
На стороне отправителя (ваш экземпляр EC2, к которому прикреплен объем):
dd bs=16M if=/dev/sda|bzip2 -c|nc receiver.example.net 19000
На стороне получателя (ваш ПК, сервер резервного копирования и т.д.):
nc -l 19000|bzip2 -d|dd bs=16M of=/path/to/my/volume.img
Это передаст все содержимое блочного устройства через порт 19000 в 16МБ сжатых блоках, хотя это также может быть сделано через ssh, но согласно их статистике производительности это намного, намного медленнее! Естественно, вам также нужно учитывать аспект безопасности при использовании этого метода. Если ваше блочное устройство содержит конфиденциальные данные, рекомендуется зашифровать его с помощью SSH или использовать VPN-туннель, и замедление скорости передачи является разумным компромиссом.
Еще одна вещь, которую стоит отметить, это то, что файловые системы могут кэшироваться в памяти, что может привести к повреждению образа. Отмонтируйте ваш объем (но оставьте его прикрепленным к экземпляру) перед выполнением вышеописанного, чтобы обеспечить согласованность файловой системы.
Чтобы получить копию снимка, вам нужно создать объем из него, прикрепить его к экземпляру, а затем выполнить вышеописанное. Нет другого способа доступа к данным снимка.
Вы можете использовать импорт/экспорт ВМ через aws cli. Это позволяет вам импортировать и экспортировать образы виртуальных машин. Это также будет работать с снимками.
https://docs.aws.amazon.com/vm-import/latest/userguide/what-is-vmimport.html
https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-import-snapshot.html
Похоже, что Cloudberry делает это.
https://www.cloudberrylab.com/blog/cloudberry-backup-cloud-to-local-backup-functionality/
Лучше попробуйте этот сайт. используйте FTP-клиент, например, WinSCP. https://asf.alaska.edu/how-to/data-recipes/moving-files-into-and-out-of-an-aws-ec2-instance-windows/
Ответ или решение
Загрузка EBS-тома или снимка в файл: Полное руководство
Вопрос о том, как сохранить EBS-том или его снимок в виде файла на локальной файловой системе, остается актуальным среди пользователей AWS. В отличие от старых методов, которые требовали создания томов и использования методов передачи, таких как rsync
, современные подходы используют API AWS для доступа к данным. Ниже приведено подробное руководство по вашему запросу с учетом всех доступных методов.
1. Использование API директ доступа к EBS
С октября 2019 года AWS предоставляет API, которые позволяют доступ к данным внутри EBS-снимков напрямую без необходимости создавать объем и экземпляр EC2. Эти API называются EBS Direct APIs. Одним из инструментов, предоставленных AWS, является coldsnap, который позволяет загружать снимки в файл выполнением команды:
coldsnap download <snapshot ID> disk.img
Учтите:
- Доступ к API платный (около $0.006 за гигабайт).
- API недоступен для публичных снимков.
2. Создание объема из снимка и его загрузка
Если вы хотите извлечь данные непосредственно из EBS-снимка, вам нужно создать объем из этого снимка и прикрепить его к экземпляру EC2. Затем вы сможете использовать инструменты, такие как dd
, для захвата блока данных. Например, команды для отправителя (ваш экземпляр EC2):
dd bs=16M if=/dev/sda | bzip2 -c | nc receiver.example.net 19000
На стороне получателя (ваш локальный компьютер или сервер):
nc -l 19000 | bzip2 -d | dd bs=16M of=/path/to/my/volume.img
Обратите внимание на следующее:
- Убедитесь, что файловая система размонтирована перед выполнением команд
dd
для обеспечения целостности данных. - Рекомендуется использовать шифрование (SSH или VPN) для защиты пересылаемых данных, если они содержат конфиденциальную информацию.
3. Использование AWS VM Import/Export
AWS предоставляет возможность импорта и экспорта образов виртуальных машин через VM Import/Export. Этот метод может быть особенным интересен, если вы хотите сохранить ваши EBS-снимки как образы виртуальных машин.
- Для импорта снимка можно воспользоваться документацией по импорту снимков.
4. Инструменты для резервного копирования
Некоторые сторонние инструменты, такие как CloudBerry, могут также предоставить функции для резервного копирования облачных данных на локальные машины. Это может быть полезно, если вы ищете решения без использования командной строки.
Заключение
Существует несколько методов загрузки изображений EBS-томов и снимков, начиная от использования прямых API AWS до создания объемов и их передачи с использованием команд dd
и nc
. Подходящий метод выбора зависит от требований к скорости, безопасности и удобству использования. Важно учитывать стоимость доступа к API и выбирать правильные инструменты для обеспечения целостности и безопасности ваших данных.
Рекомендуемая стратегия: Используйте EBS Direct APIs для простоты или создайте объем и используйте dd/nc
в случае необходимости полного контроля над процессом.