Вопрос или проблема
Снимки Amazon EBS захватывают измененные блоки от исходной базы, поэтому снимки обычно бывают значительно меньше исходного тома. Оплата производится по фактическому размеру, что приятно. Однако я не могу найти способ определить фактический размер снимка. ec2-describe-snapshots предоставляет только размер тома, для которого был создан снимок.
Если не по другой причине, мне нужна эта информация для проверки счетов. Но я также хотел бы ее иметь, потому что могу выяснить, что, переработав свои тома и то, что я с ними делаю, я смогу уменьшить размер своих инкрементных снимков.
В настоящее время Amazon не предоставляет метод для отчета о хранении, используемом снимками, кроме общего использования и стоимости для всех снимков в учетной записи.
Снимки одного и того же или связанных томов могут делить хранилище (где блоки не изменились между снимками), поэтому это затрудняет определение размера отдельного снимка.
Новый снимок сохраняет только блоки, которые были изменены с момента последнего снимка, но при этом сохраняет указатели на ранее сохраненные блоки, которые не были изменены.
Если вы удалите отдельный снимок, это освободит только блоки, которые не используются ни одним другим снимком (независимо от того, были ли они созданы до или после удаляемого).
Блоки на томе EBS, которые не были записаны, не включаются в снимок.
Блоки снимков сжимаются перед хранением, что дополнительно экономит ваши затраты на хранение.
Я написал этот небольшой скрипт для определения размера снимка. В данный момент он не принимает параметры, он просто получает все снимки.
https://github.com/akirsman/Snapshots/blob/master/snapshotsSize.py
AWS предоставляет несколько инструментов в области выставления счетов и управления затратами. Отчеты по исследованию затрат, ежедневные, недельные, месячные сравнения. Общие и средние затраты и хранилище за периоды. Метрики по типу хранения, например:
- EBS:SnapshotUsage
- APS2-EBS:SnapshotUsage
- EBS:SnapshotArchiveStorage
Мой выпадающий список показывает 372 доступные метрики для отчетности.
И через Экспорт данных я получаю ежедневную загрузку всех затрат с начала месяца до текущего момента. Это помещается в бакет S3 для загрузки и анализа. Я могу отфильтровать затраты на снимки EBS для одного тома и проанализировать ежедневные инкрементные затраты.
Например, 23 октября я получил загрузку из 18273 строк данных, 149 столбцов, охватывающую 22 дня с 1 по 22 октября.
Я фильтрую значения данных для одного снимка, созданного 5 октября, с тома на 250 ГБ, подключенного к серверу SQL.
- resourceTags/user:Name = SQL-G-BACKUP
- product/usagetype = EBS:SnapshotUsage
- resourceTags/user:BackUp = Daily
- lineItem/ResourceId = arn:aws:ec2:us-east-1:123456789012:snapshot/snap-abc123def45678901
- lineItem/Operation = CreateSnapshot
Это дает мне 16 строк данных, охватывающих период с 5 по 22 число. Значения lineItem/UsageAmount постепенно возрастают для каждого дня: 0.57, 0.76, 0.76, … ,4.49, 4.49, 4.49. Я думаю, что это указывает на то, что жизненный цикл удаляет или архивирует более старые снимки, и таким образом возрастает стоимость инкрементного хранения.
По сравнению со снимком, сделанным в сентябре, который затем был архивирован в холодное хранилище 20 числа. EBS:SnapshotUsage имеет 20 строк данных с постоянной величиной использования 0.73. ModifySnapshotTier имеет 3 строки данных с величинами использования: 4.70, 8.05, 8.05. Думаю, что первая запись — это сумма за полдня.
Это ссылка, по которой я следовал, чтобы настроить задачу Экспорта данных. https://docs.aws.amazon.com/cur/latest/userguide/dataexports-create-legacy.html
Ответ или решение
Чтобы определить фактический размер снимка Amazon EBS, необходимо учитывать несколько факторов, касающихся структуры хранения данных и механизма работы с моментальными снимками.
1. Понимание структуры снимков EBS
Снимки Amazon EBS представляют собой инкрементальные резервные копии, которые фиксируют изменения блоков по сравнению с базовым томом. Это означает, что только измененные блоки сохраняются в новом снимке, в то время как неизменённые блоки ссылаются на предыдущие снимки. Это делает сложным определение точного размера отдельного снимка, так как несколько снимков могут делить одни и те же блоки.
2. Почему важно измерять размер снимков?
Понимание фактического размера снимка важно не только для проверки выставления счета, но и для оптимизации конфигураций томов. Оптимизация может привести к уменьшению размера инкрементальных снимков и, следовательно, к снижению затрат на хранение.
3. Инструменты для анализа и отчётов
AWS предоставляет несколько инструментов в разделе "Биллинг и управление затратами". Например:
- Cost Explorer Reports с возможностью просмотра ежедневных, еженедельных и ежемесячных сравнений.
- Метрики хранения, такие как:
EBS:SnapshotUsage
EBS:SnapshotArchiveStorage
Эти инструменты могут помочь вам отслеживать и анализировать использование пространства в рамках вашего аккаунта.
4. Применение AWS Cost and Usage Report (CUR)
Одним из самых эффективных способов отслеживания фактического размера и затрат на снимки является использование AWS Cost and Usage Report. Отчет содержит каждую операцию, связанную с вашим использованием ресурсов AWS, включая снимки EBS.
Вы можете настроить экспорт данных в ведро S3 для последующего анализа. Например, вы можете фильтровать данные по определенному снимку и отслеживать изменения в объеме хранилища по дням. В ваших данных можно заметить разницу в использовании пространства и выявить любые закономерности.
5. Использование скрипта для автоматизации
Для дополнительного удобства и автоматизации вы можете написать скрипт, который будет извлекать данные о ваших снимках. Например, смотря на ваш скрипт, он может собирать информацию о всех снимках, позволяя вам анализировать размеры при помощи средств визуализации.
6. Специфика работы с снапшотами
Обратите внимание, что при удалении отдельного снимка освобождаются только те блоки, которые не используются другими снимками. Это важно учитывать, так как может создать заблуждение в оценке окружающего пространства.
Заключение
Введение в структуру снимков Amazon EBS и понимание механизмов, на которых они основаны, поможет вам более эффективно управлять вашими ресурсами и оптимизировать затраты. Используйте доступные инструменты для анализа, такие как AWS Cost and Usage Reports, и, при необходимости, создавайте автоматизированные скрипты для получения данных о размере ваших снимков. Это позволит вам не только следить за расходами, но и принять обоснованные решения по улучшению конфигураций ваших томов.