SharePoint 修正プログラム詳解 (SharePoint patching demystified)

今回の投稿では欧州 Microsoft SharePoint サポート Senior Escalation Engineer の Stefan Goßner 氏によるブログ投稿 SharePoint patching demystified を翻訳し、修正プログラムの一般的なご不明点について解説していきます。

元の投稿 (英語) につきましては、下記のサイトをご確認ください。

タイトル : SharePoint patching demystified
アドレス : https://blogs.technet.com/b/stefan_gossner/archive/2014/08/19/sharepoint-patching-demystified.aspx

2015 年 2 月の修正プログラムより、PU、CU モデルが統合され、PU としてリリースが一本化されるようになりました。このタイミングで、これらの修正プログラムのパッケージの相違やその詳細について正確に把握しておいた方が良いと考え、著者である Stefan 氏の承諾を得て、上記ブログ記事の翻訳を行うことになりました。
2015.03.17 追記 PU, CU の表記は両方そのまま使用されています。リリース モデルの細かな変更はありますが、エンタープライズのお客様には、基本的に Server パッケージ (別名 Uber パッケージ) を適用していただくことを推奨するスタンスに変更はありません。また、サポート技術情報からダウンロードし適用する運用にも一切変更はありません。

なお、本ブログが投稿された時期から多少変更がある部分があります。また日本のお客様向けに説明するにあたり、私からの補足として (*) で追記を加えておりますので、これについては原文と区別していただけますと幸いです。

導入
SharePoint の修正プログラムには、下記のような種類があります。特に CU (Cumulative Update : 累積的な更新プログラム) とサーバー パッケージ (別名 Uber) の違いがわかりにくいというご質問が多く寄せられます。

本投稿では、下記の修正プログラムの種類に焦点をあて、ご説明します。

・CU (Cumulative Updates : 累積的な更新プログラム)
・Server パッケージ (別名 Uber パッケージ)
・PU (public updates)
・ベースライン
・ファームのバージョン情報

CU (Cumulative Updates : 累積的な更新プログラム)

前提として SharePoint の修正プログラムは、すべてが累積的な内容となります。しかし、SharePoint の修正プログラムが累積的であるのであれば、なぜ 1 つの CU を適用するだけで最新版の構成にならないのでしょうか。

それは SharePoint が複数のコンポーネントによって成り立つ製品であることに要因があります。SharePoint は、検索、Excel Services、Web コンテンツ管理、ドキュメント ライフサイクル コンポーネントなど、様々な独立したコンポーネントなどで成り立っており、それぞれの修正プログラムは別のパッケージとして存在します。

これらのコンポーネントごとのパッチがどのように適用しているかは、サーバーの全体管理のトップ画面より、"アップグレードと移行" 欄にある [製品および更新プログラムのインストール状態の確認] をクリックすることで、全体像を確認することが可能です。

これらのコンポーネントがお互い独立していることから、パッチの適用はそれぞれ実施されます。各 CU は様々なコンポーネントを修正します。例えば、ある特定の月の CU では検索機能が修正され、Excel Service は修正されなかったとします。その場合、該当月の CU には検索機能の更新内容のみが含まれ、Excel Service の更新内容は全く含まれません。

なお、リリースされるそれぞれの更新プログラムは累積的なものです。これは、CU である特定のコンポーネントをリリースする際には、そのコンポーネントごとにはこれまでリリースされたすべての修正内容が含まれていることになります。

(* リリースされるモジュール <例. Microsoft.SharePoint.dll> の新しいバージョンには、古いバージョンで修正されたすべての内容が累積的に含まれています。前のバージョンをベースにして、一部の修正だけが組み込まれるといった特殊なモジュールが発行されることはありません。)

ほとんどのコンポーネントは、言語に依存しない (グローバル) コンポーネントで成り立っています。それ以外の一部のコンポーネントは、画面 UI などで言語依存のコンポーネントです。グローバルと言語依存のコンポーネントは別のコンポーネントとしてパッケージ化されます。言語依存のコンポーネントは、言語パックとして様々なインストール言語に対応するようパッケージ化されます。例えば、言語に依存しない検索コンポーネントと、言語依存の検索コンポーネントがあり、Web コンテンツ管理コンポーネントにも同様、言語に依存しないグローバル コンポーネントと、言語依存のコンポーネントが存在します。

さらに、例をあげて説明します。

上記の例では、下記のような状況を想定しています。
・January CU (1 月 CU) と March CU (3 月 CU) で検索機能をリリースしています。
・February CU (2 月 CU) と March CU (3 月 CU) で Excel Services の CU をリリースしています。
・February CU (2 月 CU) と April CU (4 月 CU) で WCM の CU をリリースしています。

SharePoint の修正プログラムは、常に累積的であり、これまでの修正内容をすべて含みます。
そのため、上記例における April CU (4 月 CU) の WCM 更新プログラムは February CU (2 月 CU) の WCM 更新プログラムの内容をすべて含みます。
同様に、March CU (3 月 CU) の検索機能の更新プログラムは January CU (1 月 CU) の内容を含みます。
Excel Service についても、March CU (3 月 CU) は February CU (2 月 CU) を含みます。

ただし、上記例で注意したいのは、April CU (4 月 CU) には検索機能と Excel Services の修正が含まれないということです。上記例で April CU (4 月 CU) のみを適用した場合、WCM の修正プログラムはすべて適用されます。ただし、検索と Excel Services の修正項目は一つも適用されない結果となります。
このように修正パッケージは累積的ですが、すべてのコンポーネントを最新にするためには、複数の CU を適用することが必要となります。

では、なぜ最新の CU を適用するだけで最新バージョンにアップデートされているのでしょうか。その答えは、サーバー パッケージ (Uber Package) にあります。

 

Server Packages (別名 "Uber" Packages)

Uber パッケージは、各 CU と同じ時期にリリースされますが、このコンポーネントは該当月のコンポーネントの更新を含むだけではなく、製品全体の他のすべてのコンポーネントの最新版を含みます。いわゆるミニ サービス パックのような感じです。

Uber パッケージの例を以下に記載しますので、CU の例と比較してご確認ください。

2014 年の 8 月の CU などに見られるように、修正プログラムに問題があった際においては例外的に Uber パッケージがスキップされることがあります。
この場合は、Uber と CU の違いを理解した上で、該当月のコンポーネントごとの CU をすべて適用する必要が生じます。

(* 2014 年 8 月の修正プログラムに関する記述の詳細は、原文より大幅に割愛しています。)
(* 2015 年 2 月の更新プログラムより、Uber パッケージはこれまでの HotFix サーバーではなく、Microsoft Download Center からダウンロード可能となります。これまで通り Uber パッケージ用のサポート技術情報は公開され、ダウンロード リンクが提供されるため特別に意識する必要はありません。)

PU (Public Updates)

PU もまた累積的な更新プログラムですが、個別のお客様ではなく、すべてのお客様に適用されるべき内容が含まれます。一般的に PU はセキュリティの修正や、影響範囲が大きいため即座に適用することを推奨される内容が含まれます。
PU は、CU の一部コンポーネントという位置づけです。PU と CU の詳細については下記の投稿 (英語) をご参考にしてください。

タイトル : Common Question: What is the difference between a PU, a CU and a COD?
アドレス : https://blogs.technet.com/b/stefan_gossner/archive/2013/03/21/common-question-what-is-the-difference-between-a-pu-a-cu-and-a-cod.aspx

(* 2015 年 2 月の更新プログラムより、CU は PU モデルに統一されます。そのため、PU によってリリースされる修正項目は、これまで CU で提供された内容を含み大きく拡大します。)
(* 2015.03.17 追記 2015 年 3 月の更新プログラムで再度方針変更があり、Microsoft Update でリリースされる Office サーバー製品の修正項目は従来通りセキュリティなど影響度が高いもののみに変更されました。このため、結論として CU/PU モデル統合の SharePoint/Project Server 製品へのユーザー影響はモジュールの提供方法が Hotfix サーバーから Microsoft Download Center に変更された程度となります。)

PU は Microsoft Download Center や Microsoft Update からダウンロードできます。
PU は必要に応じて月に 1 度のペースでリリースされます。CU と同様の理由により、PU もこれまでのコンポーネント別のすべての修正項目を含む形式ではありません。

下記のグラフをご確認ください。

上記の例では、検索コンポーネントの PU が 1 月にリリースされています。そして、Excel Services に関する 2 つの PU が 2 月と 3 月にリリースされています。そして、4 月には PU はリリースされていません。

SharePoint の PU は累積的な更新プログラムとなります。そのため、3 月の Excel Services の PU を適用すると、それ以前の 2 月の内容を含む同じ Excel Services のパッケージが最新になります。ただし、3 月の修正プログラムは検索コンポーネントに対する変更を保持しませんので、検索コンポーネントを更新するためには 1 月の PU を適用する必要があります。このように、SharePoint 全体のパッケージを適用するためには、コンポーネントごとに最新の PU を適用する必要があります。

Stefan 氏のブログで PU 更新をアナウンスしないことには理由があります。CU は PU の上位パッケージです。つまり、CU を適用すれば、PU のすべての修正内容が適用されることになります。さらに Uber パッケージは、さらに CU の上位パッケージです。Uber パッケージを適用することで、すべての CU ならびに PU が含まれる形となります。

CU を適用した後も、Microsoft Update はその CU が含んでいる PU を適用するよう通知してくる場合があります。詳細は Microsoft Update のエキスパートに譲りますが、Microsoft Update は PU がリリースしているパッチを含んでいるかどうかを判断できないようです。おそらく、CU と PU が使用する KB 番号が異なるためと考えられます。

(* エンタープライズのお客様は、意図せぬ PU が自動的に適用される状況を防ぐため、SharePoint サーバー端末における Microsoft Update の設定は事前にご確認ください。)

 

ベースライン

これまで記載した通り CU が以前の Service Pack の内容を含むにも関わらず、なぜ Service Pack を適用する必要があるかについてこれより説明します。その理由はパッチのベース ラインにあります。

サービス パックは、新しいパッチのベースラインを設定します。CU はこのようなベースラインを定めません。パッチのベースラインは、パッチの開始点になります。Uber パッケージの際に使用した図を以下に再度記載し、この図をもとに説明します。

上記例において、CU は検索、Excel Services、WCM の修正を含みますが、その他 (Other...) のコンポーネントの修正を含みません。その理由は、その他 (Other...) のコンポーネントについては、ベースラインが策定されてから一度も修正されていないことに起因します。サービス パックがインストールされた際に、同時にパッチのベースラインがそこに設定される形になります。

このベースラインにより、以降の修正プログラムのベースラインが策定されてからの差分コンポーネントのみに限定されるため、パッチの適用プロセスが高速化されます。

CU においては、少し複雑となりますが、次のサービス パックがリリースされた後、前のサービスパックを 12 か月以上サポートするポリシーとなります。そのため、CU においては 2 つのベースラインをサポートする形となります。例えば、SharePoint Server 2013 においては現時点で RTM と SP1 をパッチのベースラインとしてサポートします。つまり、CU も RTM と SP1 上に適用可能となります。

同じパッケージ内に両方のベースライン用のパッケージを含むことで、この複数のベースラインに対応しています。パッチ全体のサイズは大きくなりますが、両方のベースラインに対してパッチを適用することが可能となります。SP1 が適用されていれば、SP1 をベースラインとして更新を適用します。RTM であれば、RTM をベースラインとしたパッチが適用されます。なお、上記したサポート期間の 12 か月を過ぎると、以下のような状況が発生します。

1) CU のサイズが突然小さくなる

最新のパッチ ベースラインからの差分に限定されるため、CU のパッケージ サイズが小さくなります。サイズが減ったことで、これまでの修正がすべて含まれていないのではと懸念されるお客様もいらっしゃいますが、ご安心いただければと思います。

2) 以前のベースラインに対して修正をインストールすることができなくなる。

運用中の SharePoint サーバーが、CU のベースラインよりも低いバージョンの場合、CU のインストールは失敗します。実は言語パックの Service Pack が適用されていないなどのお問い合わせは非常によく発生します。新しいService Pack が出ても 12 か月は旧ベースラインに対応していますが、12 か月が過ぎると旧 Service Pack へのサポートが打ち切られ、新しい CU を適用することができなくなります。

Roiscan スクリプトは、インストールされた Office や SharePoint 製品およびコンポーネントに対するパッチ ベースラインやパッチ レベルをリスト化する有効な方法です。

 

ファームのバージョン情報

全体管理サイトで確認できるパッチ レベルについてよく質問が寄せられます。全体管理サイトにて "このファームのサーバーを管理する" メニューに記載されるバージョン情報は SharePoint サーバーが適切にパッチを適用しているかを確認するためには有効な方法ではありません。

実は、SharePoint のコンポーネントのうち、SharePoint Foundation のバージョンによってこのバージョン番号が確定します。この単体の DLL のバージョンが修正プログラム適用の際に構成データベースのバージョン情報を書き換える動作となります。そのため、その他のコンポーネントである Excel Services、WCM、検索などが適切にパッチ適用されているかは、このバージョン情報から確認することができません。

SharePoint サーバーの全体管理サイトにて [製品および更新プログラムのインストール状態の確認] をクリックして表示される画面を確認することがより適切な方法となります。このページでは、インストールされた各コンポーネントのパッチレベルを表示しています。

全体管理のパッチ レベルがサポート技術情報 (KB) のものと異なるのはなぜでしょうかという質問もよく寄せられます。

SharePoint Foundation の KB ではなく、SharePoint Server の KB を確認していることが 1 つの要因です。これらの 2 つのコンポーネントは、少し異なるバージョン番号になります。例えば、SharePoint Server パッケージが SharePoint Foundation パッケージが生成された 2, 3 日後になったなどの要因が挙げられます。全体管理サイトの "このファームのサーバーを管理する" ページにおいては、SharePoint Foundation のバージョン番号を表示するため、SharePoint Server の KB に記載されたバージョン番号を確認することはできません。

しかし、稀に SharePoint Foundation の KB に記載されたものと SharePoint サーバーの全体管理画面のバージョンが異なる場合があります。これは、コンポーネント内の CU に含まれる修正ファイルは、毎回異なるという点に起因します。DLL ファイルに対して修正が入る場合もあれば、CSS や JavaScript ファイルにしか修正が含まれない場合もあります。SharePoint Foundation の主要なコンポーネントである Microsoft.SharePoint.dll には、ほとんどの場合修正が加わります。そのため、この DLL バージョンが修正パッケージの最も新しいバージョンとなります。しかし、常にそうであるとは限りません。Microsoft.SharePoint.dll ファイル以外の修正しか適用されていない場合があるかもしれません。つまり、KB 文書に記載されたバージョンは、それ以外のファイルのバージョンとなります。さらに、変更されたファイルが CSS や JavaScript ファイルなどバージョンを持たないファイルの種類に限定された場合は、バージョン番号からパッチ適用の状況を確認する術はありません。

具体的に、以下のシナリオはすべて同じバージョン番号を意味します。

・SP2013 Server RTM plus SharePoint foundation August 2014 CU
・SP2013 Server RTM plus some fixes for SharePoint Server August 2014 CU plus SharePoint foundation August 2014 CU
・SP2013 Server RTM plus Service Pack 1 plus July 2014 CU plus all fixes for SharePoint Server August 2014 plus SharePoint foundation August 2014 CU

バージョン番号を確認することだけでは、修正プログラムが適切にインストールされたことを確認できません。SharePoint Foundation コンポーネントが適用されたことのみを確認できるため、他のコンポーネントの適用情報は確認できません。

この投稿が皆様の SharePoint の修正プログラムに対する疑問を解くことを願っています。