Windows 10の次期機能アップデート「19H1」に搭載予定の機能「予約済み記憶域」とはどういったものなのか? その他、最新のプレビュー版から次期Windows 10の新機能を見ていこう。
Windows 10の機能アップデート(Feature Update)は年2回行われ、毎年4月と10月に一般向け配布が開始される。それぞれ、西暦の下2桁(例えば2018年なら18)と開発完了月を組み合わせたものがWindows 10の「バージョン番号」となる。
例えば、2018年9月に完成し、10月に配布が開始されたRedstone 5(RS5)ことWindows 10 October 2018 Updateは「Windows 10 Ver. 1809」である。同様に2018年4月に配布が開始された「April 2018 Update」(Redstone 4:RS4)は、「Windows 10 Ver. 1803」である。
これまでに登場したアップデート(2015年7月に登場した最初のWindows 10であるTH1以外)には、下表のようなものがある。RS3までは、Microsoftは開発者向けイベントで、新バージョンの概要などを公開し、「Fall Creators Update」といった特別な名前を付けていたが、Ver. 1903からはこうしたイベントでの発表やアップデートへの命名はなくなり、年月ベースの機械的に割り当てられる名前になる。
時期 | 機能アップデート名称 | コード名(略称) | バージョン |
---|---|---|---|
2015年11月 | November Update | Threshold 2(TH2) | 1511 |
2016年07月 | Anniversary Update | Redstone 1(RS1) | 1607 |
2017年04月 | Creators Update | Redstone 2(RS2) | 1703 |
2017年10月 | Fall Creators Update | Redstone 3(RS3) | 1709 |
2018年04月 | April 2018 Update | Redstone 4(RS4) | 1803 |
2018年10月 | October 2018 Update | Redstone 5(RS5) | 1809 |
2019年04月 | 未定 | 19H1 | 1903 |
Windows 10の機能アップデートの名称とコード名 |
また、開発時のコードネームもVer. 1809までは使われていたが、2019年3月(もしくは4月)に配布予定のVer. 1903については、コード名も「19H1(2019年上半期)」といったものになり、やはり機械的な命名方法となっている。
これは、年2回の機能アップデートが定着し、バージョン番号で将来バージョンを指定できるようになり、コード名やアップデート名を使う必要がなくなったからだと思われる。実際、プレビュー版について説明するMicrosoftのブログ(例えば、Server & Management Blogs「Windows 10 and reserved storage」やWindows Blog「Windows 10 IoT delivers innovation and intelligence at the edge with the October 2018 Update」など)でも「1903」といった表記を見掛けるようになった。
このため、本連載でも、Windows 10の過去および将来のバージョンを表記するのに原則バージョン番号を使うことにする。最初の2桁が西暦の下2桁、後の2桁が完成した月であることさえ分かれば、過去のものか将来のものなのかの区別は容易だ。ただし過去の複数のバージョンが混在するようなときには、コード名の略称(RS1など)を使って、区別がつきやすいようにしたい。
年が明け2019年に入ってからすでに3回プレビュー版が配布された。2019年1月の大きな動きは、プレビュー版ビルド18312から利用可能になった「予約済み記憶域」である。
これは、Windows Updateなどに必要な領域をあらかじめ確保し、32GBなどの低容量ストレージマシンでのWindows Updateを容易にするものだ。ただし、一般向けに導入されるのは、「Ver. 1903をプリインストール」したPCか、「クリーンインストールしたPC」に限られ、現在稼働中のマシンやVer. 1809までがプリインストールされたPC、およびこれらをVer. 1903にアップデートしたPCには導入されない点に注意されたい。つまり、現在のPCで予約済み記憶域のために勝手に空き容量が削られることはない(詳細は後述)。
先に、2019年に入ってから配布されたプレビュー版の主要な変更点を見ていくことにしよう。それぞれのビルド番号は下表の通りである。それぞれビルド番号で区別する。
ビルド番号 | 配布日 |
---|---|
ビルド18309 | 2019年1月3日 |
ビルド18312 | 2019年1月9日 |
ビルド18317 | 2019年1月16日 |
2019年1月に提供されたプレビュー版 |
ビルド18309の変更点は、以下の通りだ。
このうち最後の2つは、以前のプレビュー版で行われた変更が、Homeエディション以外でも利用可能になったもので、このビルド固有の変更点ではない。
簡単に解説しておくと、「パスワードレスサインイン」は、電話番号をユーザー名として登録したMicrosoftアカウント(作成にはスマートフォンが必要)を使って、毎回SMSで認証コードを受け取り、これを使ってWindows 10にサインインする機能である。
「PINリセット」とはPINを忘れてしまった場合のパスワードによるユーザー確認のユーザーインタフェースが変更されたという話だ。
「マウスカーソルの設定変更」は、[Windowsの設定]−[簡単操作]−[カーソルとポインター]で、マウスカーソルやキャレット(テキストカーソル)のサイズや色などを設定する機能だ。Ver. 1903では、拡大範囲や色指定などの機能が拡張された。
また、ナレーター機能はVer. 1809から続いて改修が行われている(英語版の修正なので解説は省略する)。その他、「wsl.exeの改良」「更新とセキュリティの[回復]画面のUI変更」がある。
wsl.exeは、Windows Subsystem for Linuxの起動ツールで、WSLの起動やインストール済みの複数ディストリビューションを選択して起動といった用途に使われていた。Ver. 1903では、さらにオプションが追加された。
オプション | 意味 | |
---|---|---|
Ver. 1809にあったオプション | ||
-d, --distribution <ディストリビューション名> | 指定したディストリビューションを起動 | |
-e, --exec <コマンド ライン> | 指定したLinuxコマンドを実行 | |
-u, --user <ユーザー名> | 指定したユーザーでWSLを実行 | |
--help | オンラインヘルプ | |
-- | このオプション以降の引数をLinux側に引き渡す | |
Ver. 1903で追加されたオプション | ||
--export <ディストリビューション名> <ファイル名> | ディストリビューションイメージをファイルに保存 | |
--import <ディストリビューション名> <インストール場所> <ファイル名> | ディストリビューションイメージを復元 | |
--list, -l [Options] | ディストリビューションのリスト | |
--list --all | 全てのディストリビューションのリスト | |
--list --running | 実行中のディストリビューションのリスト | |
--setdefault, -s <ディストリビューション名> | 指定したディストリビューションを既定にする | |
--terminate, -t <ディストリビューション名> | 指定したディストリビューションを終了させる | |
--unregister <ディストリビューション名> | 指定したディストリビューションの登録を解除 | |
--upgrade <ディストリビューション名> | 指定したディストリビューションをアップグレードする | |
wsl.exeのオプション |
追加されたオプションには、従来wslconfig.exeで指定していたインストール済みディストリビューションに関する設定機能がある。wslconfig.exeをwsl.exeに統合するような感じの改良だ。wsl.exeのオプション指定は、LinuxのGNUスタイルに準拠していてハイフンをオプション区切り文字として使う。これに対してwslconfig.exeのオプション指定文字はMicrosoftスタイル(DOSスタイル)である「/」になっている。こうしたオプション指定の違いからwsl.exe側にオプションを追加したと考えられる。
オプション | 意味 |
---|---|
/l, /list [Option] | ディストリビューションのリスト |
/list /all | インストールされているディストリビューション |
/list /running | 実行中のディストリビューション(Ver. 1903で新設) |
/s, /setdefault <ディストリビューション名> | 指定したディストリビューションを既定にする |
/t, /terminate <ディストリビューション名> | 指定したディストリビューションを終了させる |
/u, /unregister <ディストリビューション名> | 指定したディストリビューションの登録を解除 |
/upgrade <ディストリビューション名> | 指定したディストリビューションをアップグレードする |
wslconfig.exeのオプション |
「更新とセキュリティの[回復]画面のUI変更」は、ユーザーデータを消去する場合のクリーニング(利用していた領域にゼロを上書きすることで完全な消去を行う)の有無などのオプション設定を別画面とし、デフォルト設定ならば、そのまま実行できるようにして再インストール開始までの手順を短縮した。ただし、機能が何か追加されたわけではないようだ。
ビルド18317では、タスクバーにあったCortanaとサーチ機能が分離し2つのアイコンに分かれた。Ver. 1809では、Cortanaのフライアウトは、検索カテゴリーを表示して検索条件の入力待ちになっていた。こうしたファイル検索などが分離されたため、[Cortana]アイコンをクリックすると、すぐに音声の聞き取り状態になる。
また、[Windowsの設定]−[個人用設定]−[フォント]画面が若干変更になった。ローカルファイルのドラッグ&ドロップでフォントのインストールが行えるようになる。
Microsoftによれば、予約済み記憶域では、7GB程度の容量をWindows Update用に確保するという。実際、Windows 10のシステム要件となるストレージ容量の最小値である32GBのPCでは、完全アップデート(再起動が必要なアップデート)で10GB程度の空き容量が必要とされていた。更新用プログラムをダウンロード、展開するための作業用領域である。このため、機能アップデートのたびに空き領域を作る必要があった。
また、必要量が確保できない場合、外部ストレージ(USBメモリや外付けHDD)を併用することを求められる。ただし、この場合でも、ある程度の空き容量がC:ドライブに必要で、その空きを作るための作業を手動で行う必要がある。
ストレージが32GBのハードウェアは、簡易なタブレットが多く、充電兼用のマイクロUSBコネクターが1つしかないといった場合も少なくない。このような場合、外付けストレージを使っている間、電力供給ができないため、アップグレード作業をバッテリー駆動で行わねばならない。これには、アップグレード途中でバッテリーが切れてしまうというリスクがあり、バッテリーが劣化し駆動時間が短くなることを考えると、今後、アップグレードが不可能なハードウェアも出てくる可能性がある。
一般に再起動が必要になる完全アップデートでは、ダウンロードからインストールイメージの作成、ユーザーファイルの待避といった作業に長い時間(場合によっては数時間)が必要になる。このため、アップデート作業中でも、Windows OSやアプリケーションの動作で空き領域は刻々と変化する。
Windows Updateは、自身で必要となる空き容量は推測できても、実際の環境でWindows OS自身や他のアプリケーションが利用するテンポラリファイルなどを推測することは不可能で、事前に空き容量を測定したとしてもその空き容量がアップグレード作業中、確保できるのかどうかの保証がなく、「やってみて、容量が不足したらエラー」といった方法しか取りえない。
「予約済み記憶域」はこうした問題を解決するものだ。前述のような問題は、空き領域が1つしかなく、そこからWindows Updateやシステム、アプリケーションが容量を確保していくことにある。
そこで予約済み記憶域では、ユーザーファイルなどに利用されない空き領域を「予約済み記憶域」として確保しておき、Windows Updateの作業ファイルなどは、「予約済み記憶域」から割り当てるようにした。このようにすることでユーザーファイルの量やアプリケーションの動作などに影響されず、Windows Updateは「保証された空き領域」を利用することができるようになる。
この「予約済み記憶域」は、NTFSの「予約クラスタ」を利用して容量を確保する。予約クラスタとは、NTFSの圧縮ファイルの伸張処理や管理用データの拡張などに対応するため、あらかじめ確保されている空きクラスタである。
Microsoftによれば、通常時、予約済み記憶域は、Windows 10などが利用する「テンポラリファイル」のために利用されるという。Windows Updateで容量が必要な場合、ユーザーへの確認不要で削除できるからだ。
標準付属のツールであるfsutil.exeに、この予約済み記憶域用に「StorageReserve」というサブコマンドが追加された。このサブコマンドは、現行のVer. 1809に付属のfsutil.exeから動作する。ただし、情報が表示されるのはVer. 1903のプレビュー版(ビルド18312以降)からである。
このコマンドには、以下の2つの形式がある。
fsutil.exe StorageReserve query ストレージ
fsutil.exe StorageReserve findbyid ストレージ ID
最初のものは、システムに登録されているStorageReserve領域を表示するものだ。Ver. 1903のプレビュー版では3つの領域が表示される。このうちID 1が「予約済み記憶域」に相当する。
ここには、「領域保証(Space Guarantee)」と「使用済み領域(Space Used)」「フラグ(Flags)」などのパラメーターがある。フラグについては16進数しか表示されないため、いまのところ用途や意味は不明だ。「領域保証」は、予約クラスタからなる、事前に確保されたバイト数を示し、「使用済み領域」は、予約済み記憶域に含まれるファイルに割り当てて使われているバイト数を示す。これらの値をクラスタサイズ4096で割った値がクラスタ数となる。「予約済み記憶域」を有効にしていない場合、ID 1の「領域保証」はゼロになっている。
テンポラリファイルは、ID 2にも登録されている。こちらは、C:\Windows\system32以下にあるログファイルやエクスプローラーの画像サムネイルキャッシュファイルなどが対象となっている、100MB〜数百MB程度の事前割当がある。ただし、このID 2は、現在のプレビュー版では「予約済み記憶域」を有効にしていないシステムにも存在するようだ。
2番目のコマンドは、個々の領域に属するファイルを表示するものだ。予約済み記憶域にある全てのファイルのLayout(fsutil file layoutコマンドと同じ表示)が表示される。
「予約済み記憶域」は、NTFSに手を入れ、テンポラリファイルへのクラスタ割り当ては、確保した「予約済みクラスタ」から行うようにしたものだ。NTFSのレベルでどうやってテンポラリファイルとそれ以外のファイルを区別しているのかは不明だが、Windows OSには、テンポラリファイルを作成するAPIなどもあるため、こうしたAPIを介してファイルを作ると予約済み記憶域からの割り当てを行わせることはそれほど難しくないと思われる。
さて、この「予約済み記憶域」の効果だが、手元にあったストレージが32GBのタブレットに適用してみた。このPCでは、機能アップデート時には、毎回、ストレージを空けるための作業が必要で、ディスククリーンアップだけでなく、コンポーネントクリーンアップなどが必要だった。その他にユーザーファイルの待避やOfficeの一時的なアンインストールなどを経てようやく機能アップデートが可能になっていた。そのうえ、USBメモリなどの外部ストレージも併用する必要があった。
予約済み記憶域を有効にしたところ、外部ストレージの利用を要求されることなく、プレビュー版のアップデート(ビルド18312からビルド18317)が行えた。確保直後は2GBだった予約済み記憶域は、アップグレード後に8GBまで拡大した。Windows.oldなどの不要ファイルを削除した状態で残り容量は5GB程度であった。ユーザーファイル領域は減ったが、従来は、10GB程度の空き領域を作らねばならなかったことを考えると、8GB程度を確保することで、機能アップデートに際して手動作業が必要なくなるのであれば、それなりのメリットはある。ユーザーファイルであれば、メモリカードスロット側に待避させるという対応策がある(現時点では、メモリカードスロットは、アップデート用の外部ストレージとしては利用できない)。
なお、予約済み記憶域のサイズは、言語パックの導入やWindows 10のオプション機能の導入で増大するという。数GB〜10GB程度という予約済み記憶域のサイズは、ストレージが128GB〜数百GB以上あるようなPCではわずかな量にすぎない。
なお、こうした予約済み記憶域の挙動などは、あくまでもプレビュー版で話であり、2019年4月から配布されるVer. 1903の最終版では異なる仕組みや挙動を持つ可能性があることに注意されたい。
Copyright© Digital Advantage Corp. All Rights Reserved.