#azure #azure-storage #azure-blob-storage #soft-delete
Вопрос:
Я удалил много больших двоичных объектов (50 ТБ ) несколько недель назад в своей учетной записи хранилища Azure, защищенной функцией мягкого удаления. Мягкое удаление было настроено с сохранением 14 дней, которое я позже изменил на 7 дней.
Однако прошло 14 дней, а большие двоичные объекты все еще не удалены окончательно, так как я все еще вижу их при выборе «Показать удаленные большие двоичные объекты» на портале Azure. Это также означает, что с меня все еще взимают плату за хранение.
Есть ли способ узнать фактическую дату удаления большого двоичного объекта? Я также вижу в разделе «Понимание», что используемая мощность по-прежнему остается неизменной.
Ответ №1:
Если вы используете REST API, когда вы перечисляете большие двоичные объекты с deleted
одним из значений include
параметра (чтобы результаты списка содержали легко удаленные большие двоичные объекты), вы можете найти эту информацию, проверив два свойства в результате:
Deleted-Time
: Он сообщит вам дату/время удаления большого двоичного объекта.RemainingRetentionDays
: Он сообщит вам количество дней, оставшихся до того, как большой двоичный объект будет безвозвратно удален из хранилища.
Из этого link
:
Для версии 2017-07-29 и выше Удаленные, удаленные и оставшиеся дни отображаются, когда эта операция включает параметр include={удалено}. Эти элементы не отображаются, если этот большой двоичный объект не был удален. Эти элементы отображаются для большого двоичного объекта или моментального снимка, которые удаляются с помощью операции УДАЛЕНИЯ, когда была включена функция мягкого удаления. Удаленному элементу присвоено значение true для больших двоичных объектов и моментальных снимков, которые удаляются автоматически. Удалено-Время соответствует времени, когда был удален большой двоичный объект. RemainingRetentionDays указывает количество дней, по истечении которых мягко удаленный большой двоичный объект будет окончательно удален службой больших двоичных объектов.
Если вы используете Azure.Storage.Blobs (.Net SDK)
, вы найдете эту информацию в следующих свойствах: BlobItemProperties.DeletedOn
и BlobItemProperties.RemainingRetentionDays
.
Для других языков вы можете искать аналогичные свойства в соответствующих SDK.
Обновить
Пожалуйста, попробуйте следующее:
$context = New-AzStorageContext -StorageAccountName account-name -StorageAccountKey account-key
$blobs = Get-AzStorageBlob -Container 001-000 -IncludeDeleted -Context $context
$blobs.ICloudBlob.Properties | ConvertTo-Json
Результат будет примерно следующим. Первый большой двоичный объект ниже не удаляется таким образом DeletedTime
и RemainingDaysBeforePermanentDelete
будет равен нулю. Второй большой двоичный объект будет мягко удален, и в нем будут заполнены эти значения.
{
"CacheControl": null,
"ContentDisposition": null,
"ContentEncoding": null,
"ContentLanguage": null,
"Length": 89,
"ContentMD5": "nax W2kkfQqP8 K6dj2uFw==",
"ContentType": "image/svg xml",
"ETag": ""0x8D951D0C90A29CA"",
"Created": "/Date(1627481141000)/",
"LastModified": "/Date(1627481141000)/",
"BlobType": 2,
"LeaseStatus": 2,
"LeaseState": 1,
"LeaseDuration": 0,
"PageBlobSequenceNumber": null,
"AppendBlobCommittedBlockCount": null,
"IsServerEncrypted": true,
"IsIncrementalCopy": false,
"StandardBlobTier": null,
"RehydrationStatus": null,
"PremiumPageBlobTier": null,
"BlobTierInferred": null,
"BlobTierLastModifiedTime": null,
"DeletedTime": null,
"RemainingDaysBeforePermanentDelete": null
},
{
"CacheControl": null,
"ContentDisposition": null,
"ContentEncoding": null,
"ContentLanguage": null,
"Length": 98024,
"ContentMD5": "/uZucSqKCO71gFpGiSkyrQ==",
"ContentType": "application/font-woff",
"ETag": ""0x8D951D0C90AC631"",
"Created": "/Date(1627481141000)/",
"LastModified": "/Date(1627481141000)/",
"BlobType": 2,
"LeaseStatus": 0,
"LeaseState": 0,
"LeaseDuration": 0,
"PageBlobSequenceNumber": null,
"AppendBlobCommittedBlockCount": null,
"IsServerEncrypted": true,
"IsIncrementalCopy": false,
"StandardBlobTier": null,
"RehydrationStatus": null,
"PremiumPageBlobTier": null,
"BlobTierInferred": null,
"BlobTierLastModifiedTime": null,
"DeletedTime": "/Date(1627481162000)/",
"RemainingDaysBeforePermanentDelete": 9
}
Комментарии:
1. Спасибо, я попытался перечислить большие двоичные объекты, чтобы получить дни сохранения, однако, похоже, это выявило реальную проблему. Если я перечисляю большие двоичные объекты (с помощью powershell), они уже кажутся удаленными (с помощью-IncludeDeleted), и я не получаю результатов blob-объектов. Однако Портал по-прежнему отображает большие двоичные объекты и их использование для хранения. Есть какие-нибудь идеи?
2. Попробуйте запустить командлет PowerShell с
-debug
помощью paremeter. Это должно дать вам больше представления о том, почему не возвращаются легко удаляемые большие двоичные объекты. Это вполне может быть проблемой с командлетом Azure PowerShell.3. к сожалению, это не показывает никаких очевидных проблем ОТЛАДКА: AzureQoSEvent: Имя команды — Get-AzStorageBlob; isSuccess — True; Продолжительность — 00:00:05.7182680; ОТЛАДКА: Завершить отправку метрики. ОТЛАДКА: 15:47:37 — GetAzureStorageBlobCommand завершает обработку.
4. Обновил свой ответ.
5. этого я тоже не понимаю… Я боюсь, что учетная запись хранения каким-то образом испорчена. Я подожду еще пару дней, чтобы посмотреть, что произойдет, и, боюсь, мне придется заплатить за техническую поддержку azure. в любом случае, спасибо