【SharePoint】バージョン自動削除機能を有効化したら容量が38%削減された
こんにちは。SHIFTコーポレートプラットフォーム部の下田です。
社内インフラおよびSaaS全般の管理・運用をしています。
Microsoft365で2024年8月にリリースされた「SharePointのバージョン履歴制限」の自動削除の設定方法と弊社テナントにおける結果の報告です。
記事タイトルにもある通り、全体容量38%減という大きな効果が得られました。
■想定する対象読者
SharePointを管理している方
SharePointのテナント容量のひっ迫に悩んでいる方
SharePointのバージョン自動削除機能を使ってみたい方
1.SharePointの容量の考え方
テナント容量の算出方法は以下の通りです。
※Sharepoint P1/P2を含むライセンスを前提としています。
※Microsoft 365 A3、E3、G3 & A5、E5、G5/Office 365 A3、E3、G3 & A5、E5、G5/Office 365 A1、E1、G1
詳細についてはMicrosoft社のサイトを参照してください。
https://learn.microsoft.com/ja-jp/office365/servicedescriptions/sharepoint-online-service-description/sharepoint-online-limits
また、SharePointでバージョン管理機能を有効化すると、デフォルトで最大値が500に設定されます。
バージョンはファイルを複製する形なので、1つのファイルで最大500倍になります。
SHIFTの環境では、200MBの動画ファイルが100バージョン作成され、20GBとなっていた例もあり、容量ひっ迫の大きな要因となっていました。
2.SHIFTのSharePoint環境の状態
SHIFTでは2017年からMicrosot社の365サービスをグループウェアとして利用しています。
SharePointについては、サイトごとの容量制限等を設定することなく、自由に利用していました。
2023年7月あたりから容量がひっ迫するようになり、不要なファイルの削除やストレージの追加、サイトごとの容量制限の適用といった対応をしていましたが、いたちごっこの状態でした。
容量ひっ迫の原因として以下があげられます。
動画等、容量の大きいファイルの増加
各コンテンツのバージョンの蓄積
1については、アクセス頻度の低いデータについて、別途用意した安価なストレージ環境に移動することで対応しました。
2については、バージョンの設定がサイトごとの設定で、サイト所有者が設定するものだったため、有効な対応が取れませんでした。
3.実装されたテナント全体でのバージョン履歴制限機能
バージョンによる容量ひっ迫への対応に苦慮していたところ、2024年8月にMicrosoft社からテナント全体でのバージョン制限機能がリリースされました。
ポイントは以下となります。
テナント一括でバージョン制限の設定が可能となった
バージョン制限設定は[自動]と[手動]がある
[自動]はMicrosoft社のアルゴリズムに基づきバージョンが自動で削除される
[手動]は最大バージョン数と保持期間を設定する
詳細はMicrosoft社のページを参照ください。
https://learn.microsoft.com/ja-jp/sharepoint/document-library-version-history-limits
自動削除のアルゴリズムは以下の通りです。
バージョンの最大値は500(変更不可)
最初の30日間で500カウント制限内に作成されたすべてのバージョン
30日から60日間の時間単位のバージョン(時間の先頭に作成されたバージョン)
60日から180日の期間の日次バージョン(毎日の先頭に作成されたバージョン)
180日以上を超える週バージョン(週の初めに作成されたバージョン)
詳細はMicrosoft社のページを参照ください。
https://learn.microsoft.com/ja-jp/sharepoint/plan-version-storage#understand-version-storage-under-automatic-limits
4.バージョン自動削除機能の有効化設定
ここからは実際に設定した内容となります。
4-1.バージョン自動削除機能の有効化
SharePoint管理センターから有効化します。
これで新規に作成されるサイトに自動削除設定が適用されます。
既存のサイトに適用するには、既存のサイト設定を更新する必要があります。
4-2.既存のサイト設定の更新と履歴削除
既存のサイト設定を更新し、自動削除設定を適用します。
設定適用後、履歴削除ジョブを実行します。
Powershellコマンドを使います。
Powershellを起動し、SharePoint Online管理センターに接続します。
connect-sposervice -url https://<テナントドメイン>-admin.sharepoint.com
既存のサイトリストを作成します。
※サイトの設定変更は[LockState]が[Unlock]である必要があるため、[Unlock]のサイトを抽出します。
※出力先CSVファイルのyyyymmddは任意に変更してください。
※CSVファイルはコマンドを実行したフォルダに出力されます。
Get-SPOSite -Limit All | Where-Object { $_.LockState -eq "Unlock" } | select Title,url,Owner,Template,LockState | Export-CSV -Encoding UTF8 -Path .\SPOSites_yyyymmdd.csv -NoTypeInformation
取得したサイトのURLを指定し、サイト設定を更新します。
Set-SPOSite -Identity <サイトURL> -EnableAutoExpirationVersionTrim $true
履歴削除処理を実行します。
New-SPOSiteFileVersionBatchDeleteJob -Identity <サイトURL> -Automatic
CSVファイルを読み込み、一括で処理するスクリプトはページ下部を参照ください。
サイト数によっては10数時間かかる場合がありますので、CSVファイルを分割して並列実行することをお勧めします。
■実行後のテナント容量推移
ということで、1か月経過時点で容量の38%が削減されました!
見事な崖。。
今回は以上となります。
SharePointの容量に悩んでいる管理者の一助となれば幸いです。
一括処理スクリプト
# SharePointサイトのバージョン削除バッチジョブを設定する
# CSVファイルのサイトURLをもとに制限を設定する(url)
# SharePoint管理センターURLの<テナント名>は各環境に合わせて変更
$mngURL = "https://<テナント名>-admin.sharepoint.com"
# 設定するサイトリストCSVのファイル名をフルパスで入力
$URLList = Read-Host -Prompt "Input URL List CSV File(Full Path)"
# ログファイル名をフルパスで入力
$logfile = Read-Host -Prompt "Input Log File(Full Path)"
try {
# SharePoint管理センターに接続
Connect-SPOService -Url $mngURL
# ログファイルの設定
Write-Output "$(date): Start SPO site file version batch delete job setting." | Out-File -FilePath $logfile -Encoding utf8 -append
Write-Host "$(date): Start SPO site file version batch delete job setting."
$URLs = Import-CSV $URLList
Foreach ( $u in $URLs ) {
try {
# サイトごとにバージョン自動削除設定を有効化
Set-SPOSite -Identity $u.Url -EnableAutoExpirationVersionTrim $true -Confirm:$false
Write-Output "$(date): Set EnableAutoExpirationVersionTrim $($u.Title) [URL] $($u.Url)" | Out-File -FilePath $logfile -Encoding utf8 -append
Write-Host "$(date): Set EnableAutoExpirationVersionTrim $($u.Title) [URL] $($u.Url)"
# サイトごとに削除ジョブを設定
New-SPOSiteFileVersionBatchDeleteJob -Identity $u.Url -Automatic -Confirm:$false
Write-Output "$(date): Set job $($u.Title) [URL] $($u.Url)" | Out-File -FilePath $logfile -Encoding utf8 -append
Write-Host "$(date): Set job $($u.Title) [URL] $($u.Url)"
} catch {
Write-Output "$(date): $error[0]" | Out-File -FilePath $logfile -Encoding utf8 -append
Write-Host "$(date): catch error"
Write-Host $error[0] | Format-List -force
}
}
Write-Host "$(date): End SPO site file version batch delete job setting."
Disconnect-SPOService
} catch {
Write-Output "$(date): $error[0]" | Out-File -FilePath \$logfile -Encoding utf8 -append
Write-Host "$(date): catch error"
Write-Host $error[0] | Format-List -force
Disconnect-SPOService
}
《おすすめ関連マガジン》
SHIFTへのお問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/
PHOTO:UnsplashのDomenico Loia