2017/07/01

​ Windows 10で、特別なツールを使わずに、システムパーティションを縮小する

Windows XPかWindows 7の頃から、Windowsの「ディスクの管理」というツールで、パーティションの縮小、拡大ができるようになった。拡大は、拡大したいパーティションの領域に隣接していて、パーティションに割り当てられていない未使用の領域があれば、未使用の領域の一部、あるいは、すべてを合体できる(正確には、未使用の領域が、拡大したい領域の後ろにあるように、ディスクの管理で見えている必要がある)。縮小は、すこし、ややこしい。縮小したいパーティションに割り当てられている領域の末端に、連続した空き領域があれば、そこをパーティションから外せる。

で、本題。最近、PCを新調したので、まずは、Cドライブを縮めてDドライブを作ろうと、「ディスクの管理」でCドライブを縮小しようとした。「ボリュームの縮小」を実行すると、どんなけ縮められますよ、縮めますか、と聞いてくるので実行するのだが、「十分なディスク領域がないので、この操作を完了できません」とエラーになる。

例によってネット検索で調べると、正確な条件はわからないが、「ディスクの管理」ではできないことがあるようだ。システムファイルがあるから、フラグメントしているからなど、それっぽい理由が書かれているが、他のパーティション操作が可能なツールを使うとできる、とあり、いまいち納得感なし。もちろん、これらの理由で縮小できないことはあると思うが、どんなけ縮められるという計算にはこれらが考慮されているのではなかろうか。

なかなかツールを用意するのは面倒だし、パーティション系のツールは本当に大丈夫か若干心配なものである。そこで、Windowsだけで閉じてできないかやってみたら、できました。めちゃくちゃ簡単。

多分、知ってる人はしっていると思うのだが、コマンドプロンプトから実行するdiskpartコマンドを使えば、エラーなくパーティションを縮小できるようだ。diskpartを実行すると、専用のコマンドモードになる。そこで、以下を実行する。

list disk
select disk n
list partition
select partition m
shrink
exit

n, mは、直前のlistコマンドで得られる、縮小したいパーティションがあるディスク、そのディスク内でのパーティションの番号だ。shrinkを実行すると、目一杯パーティションを縮小してくれる。あとは、ディスクの管理で、所望の大きさにパーティションを拡張すれば良い。あるいは、shirnkはどれくらいに縮めるかをパラメータで指定できるので、そうしてもよさそうだ。

よく調べてみると、TechNetにいろいろ書かれていた。私の場合もイベントログに259のログが残っていて、hiberfil.sysに割り当てられているクラスタが縮小の限界、とログが残っていた。そのクラスタのアドレスからすると、diskpartで縮小した結果のサイズとあっている。なので、「ディスクの管理」で縮小できないのは「ディスクの管理」のバグで、diskpartコマンドは限界まで縮小してくれた、ということのようだ。

上のページには、"When you shrink a partition, unmovable files (for example, the paging file or the shadow copy storage area) are not automatically relocated and you cannot decrease the allocated space beyond the point where the unmovable files are located. If you need to shrink the partition further, move the paging file to another disk, delete the stored shadow copies, shrink the volume, and then move the paging file back to the disk."とある。

もっと縮めたい場合は、ページングファイルを別のパーティションに移動する、シャドーコピーの領域を移動すると、よい場合がある、と書かれている。復元ポイントはシャドーコピーを使うので、復元ポイントを無効にすると、この領域が解放される、ということだろう。で、どの作戦をとるともっと縮小できるかは、イベントログを見るとわかる、という仕掛け。

すべては、「ディスクの管理」のエラーメッセージが悪い。


0 件のコメント :

コメントを投稿