今回から2回分けて、不要なった回復パーティションの削除について解説する。しかし、最近ではパーティション操作をほとんど行なう必要がないため、そもそもどんなことなのか、知らない人はまったく知らないことだろう。そこで今回は、準備編としてパーティションの基本的な解説とそのため使うDiskpartコマンドついて解説する。
そもそもパーティションとはなんなのか
HDDなどの外部記憶装置の容量を複数分割して利用することを「パーティショニング」(Partitoning)といい、分割されたそれぞれの領域をパーティション(Partition)という。もともとは、HDDなどの外部記憶装置が高価だった時代、特定の用途で全容量を使いきってしまわないように、分割して使っていたことに起因する。
現在では、複数のOSを共存させたり、トラブル対策などのために一定容量を確保するなどの目的で利用されている。実際、最新のWindows 10がプリインストールされたマシンでも、UEFI用の領域などが確保され、複数のパーティションがシステム上に存在している。
パーティションは、ハードウェア側、実際にはファームウェアの管轄下にある。このためメーカーやプラットフォームなどで違いがある。また、OSにより、パーティションやHDDの扱い方に違いがあり、実際に操作するユーティリティなどはOSに依存するため、非常にわかりにくい。
たとえば、WindowsとLinuxではパーティションやHDDの操作や扱い方は違うが、いわゆるPCアーキテクチャの上では、ファームウェアが共通であるため、パーティションの構造(パーティションテーブル)は基本的に同じで、たとえば、1基のHDD内にWindowsとLinux、あるいはそれ以外のOS用のパーティションを共存させることができる。
HDDは回転する円盤上に同心円状のトラックを作り、その中を分割してセクタという記憶単位を構成している。各ディスク上の同一トラックをまとめてシリンダと呼んでいた。かつては、シリンダ番号、ヘッド番号、セクタ番号というパラメーターでセクタを指定していたが、機種によりシリンダ数やヘッド数が違い、このままでは扱いづらい。また、SSDなどはそもそもトラックやディスクといった概念を持っていない。
そこで現在のPCでは、LBA(Logical Block Addressing)という通し番号でセクタを指定することになっている。通常、セクタのサイズは512バイトであり、そのそれぞれにLBA番号が割り振られる。このようにすることで、ディスクの数やトラック数やトラック内のセクタ数などに依存せずにセクタを指定できる。LBA番号はゼロからはじまり、ここが記憶領域の「先頭」となる。LBA番号は最大容量(総セクタ数)で決まり、LBAは必ず連続した数字となる。
ただし、ハードウェアやソフトウェアで扱う場合、何bitで表現するかというのは常に問題となる。現在では、48bitでLBAを表現しているが、以前はLBAを28bitで表現していたため、128GBまでのHDDにしかアクセスできなかった。古いファームウェアやOSは、アップデートしない限り、新しいLBAのビット幅には対応できない。
パーティションは、ファームウェアとOSがソフトウェア的に定義している(ある種の約束事といってもいい)。HDDは単純な記憶領域を提供しているだけだ。ファームウェアがパーティションを定義するときに使うのが「パーティションテーブル」だ。パーティションテーブルはHDDの先頭(LBA0またはLBA1)にあり、パーティションの開始位置と大きさなどを定義している。ファームウェアやOSは、このパーティションテーブルを見て、ハードディスク上にどのようなパーティションがあるのかを知る。
このパーティション形式には、IBM PC由来のBIOSで利用する「MBRパーティションテーブル形式」(以下MBR形式)と、UEFIで利用する「GUIDパーティションテーブル形式」(以下GPT形式)がある。MBR形式については過去からの互換性のためにまだ使われてはいるものの、Windows 8以降のプリインストールマシンは、UEFIから起動されGPT形式のハードディスクを使うのが標準となっている。
注意したいのはWindows 7までは、UEFIやGPT形式は必須とされず、そもそも32bit版Windows 7はGPT形式のハードディスクから起動できなかったことなどから、プリインストールマシンでもMBR形式のHDDが使われていた。互換性のためにMBR形式のハードディスクから起動する場合、UEFIはBIOSエミュレーションモードで動作し、このときWindowsからは、マザーボードのファームウェアがBIOSであると認識される点だ。
Diskpartによるパーティション管理
Windowsでは、パーティションの管理は、コマンドラインからDiskpartコマンドを使って行なう。「コントロールパネル」→「管理ツール」→「コンピュータの管理」→「記憶域の管理」でも、かんたんなパーティション管理は可能だが、できないことも少なくない。たとえば、回復パーティションをマウントしてファイルを表示させるといった使い方は不可能だ。
こうした場合には、管理者権限でコマンドプロンプトを起動してDiskpartコマンドを使う。この場合、WindowsのHDDの管理方法になれておく必要がある。WindowsやDiskpartコマンドでは、HDDとその上のパーティションを以下のような用語で扱う。
●Disk(ディスク)
物理的な外部記憶装置。HDDやSSDなど。なお、接続方法は特定されず、USBやシリアルATAなどいくつかの方法がある
●Partition(パーティション)
Diskの記憶領域の連続する部分を区切って利用すること。パーティション内の記憶領域は連続している必要がある
●Volume(ボリューム)
Windowsから認識できるパーティション。Windowsでは、パーティションの作成とボリュームの作成は同時に行なわれる。なお、ボリュームセットとボリュームは違う意味なので注意
なお、Diskpartコマンド内では、Partitionを「Part」、Volumeを「Vol」と略記できることがある。下の表は最低限の管理に必要なDiskpartコマンドである。なお、コマンドすべてに関しては、Diskpartコマンド内でHelpコマンドを使うことで情報が得られる。
Diskpartコマンドは、強力だが、初心者用のものではなく、コマンドによっては確認なく、パーティションテーブルの変更などを実行してしまう。Diskpartコマンド内では、原則、選択中のオブジェクトが対象となるため、多くの引数を省略できる。このためコマンドを適当に入力して何が起こるか試してみるのだけはやめたほうがいい。たとえば、パーティションサイズを縮小するShurinkコマンドなどは、条件がそろっていれば、引数なしでもコマンドを実行してしまう。
コマンドでパーティションテーブルを書き換えている最中に他のDesktopアプリケーションなどで致命的なエラーが起きると、最悪の事態も考えられるので、何か別の作業をしながら、Diskpartコマンドを使わないように注意したい。
Diskpartでは、原則、操作対象を「SELECT」コマンドで選択した上でコマンドを実行させる。このため、たとえば、「DISK 1」にあるパーティションを表示させたい場合、
SELECT DISK 1
LIST PARTITION
とする必要がある。これに対して、VOLUMEは、パーティション上に作られるものの、論理的な存在であるため、DISKを選択する必要はなく、単に「LIST VOLUME」だけで、Windowsが認識しているすべてのVOLUMEが表示される。
ということで、次回は、このDiskpartコマンドを使い、システム内に複数できてしまった回復パーティションを調査し、削除する方法を解説する。
この連載の記事
-
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 -
第447回
PC
この秋登場のWindows 11の新バージョン、Ver.24H2の状況を見る -
第446回
PC
Windows 11のフォトアプリがUWPからWin32アプリになったことで今更わかるUWPの問題点 -
第445回
PC
次期Windows 11ではAndroidのファイルをエクスプローラーからアクセス可能になる -
第444回
PC
外部ファイルをExcelに読み込む際の作業を効率化するPower Queryの活用 -
第443回
PC
Windows Terminalで採用されたCascadia Codeフォントを使うとプログラムを書くとき断然見やすい - この連載の一覧へ