見出し画像

【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

テナント基本容量 = 1TB + 10GB * ライセンスユーザ数
基本容量では足りない場合、追加ストレージ(Office 365 Extra File Storage)を1GB単位で購入可能

詳細については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. 各コンテンツのバージョンの蓄積

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管理センターから有効化します。

SharePoint管理センター > 設定 > バージョン履歴の制限
[バージョン履歴の制限を設定]で[自動]にチェックを入れ保存を押下

これで新規に作成されるサイトに自動削除設定が適用されます。

既存のサイトに適用するには、既存のサイト設定を更新する必要があります。

4-2.既存のサイト設定の更新と履歴削除

既存のサイト設定を更新し、自動削除設定を適用します。

設定適用後、履歴削除ジョブを実行します。

Powershellコマンドを使います。

 SharePoint Online 管理シェルのダウンロード
 https://go.microsoft.com/fwlink/p/?LinkId=255251

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週間経過 :26%削減
  1か月経過 :38%削減

ということで、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
}

執筆者プロフィール:下田 博志
独立系開発ベンダーでプロダクトの導入支援等に従事。2013年に情報システム部門の専任メンバーとしてSHIFTに入社。
Microsoft365管理の迷宮にはまりながら、よりよい管理にむけて奮闘中。

《おすすめ関連マガジン》

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:UnsplashDomenico Loia