fc2ブログ

フォーマット、その2~論理フォーマット

目 次
一、フォーマットとは
二、物理フォーマット
■1. 物理フォーマットとローレベル・フォーマット
◆(1)  セクタの作成
◆(2)  ゼロフィル(Zero Fill)
■2. 両者の区別
■3. ゼロフィル(Zero Fill)の実行
◆(1)  DiskPartによるゼロフィル
◆(2)  USBフラッシュメモリにおけるCleanコマンド
■4. データの完全消去(Data Sanitization)
◆(1) DoD 5220.22-M
◆(2) Secure Erase
◆(3) 完全消去の現況
※【追記】:水平磁気記録方式から垂直磁気記録方式へ
※【追記】:cipher.exeのデータ消去機能について
■5. セクタの再生
■6. システムエリア(サービスエリア)


三、論理フォーマット


三、論理フォーマット

1. 論理フォーマットとは


 物理フォーマットないしローレベル・フォーマット対して、論理フォーマット(Logical Format)がある。
 論理フォーマットとは、コンピュータ等の電子機器において記録媒体にデータを読み書きできるようにするためのデータの管理・記録方式(これをファイルシステムという)を適用することをいう。従って、論理フォーマットは、厳密には、ファイルシステム・フォーマット(File System Format、Filesystem Formatとも表記される)であり、PC等で行われる「フォーマット」は、通常この論理フォーマットであるFile System Formatを指す。既に作成されているパーティションが「未フォーマット」と表示される場合の「フォーマット」は、まさにこの意味である。

 また、MBR又はGPTの設定、パーティションの作成及びPBRの設定を含むファイルシステムの適用という一連の作業又はその作業によってできたものを「フォーマット」と呼ぶこともある。これは広義の論理フォーマットということができよう。例えば、Windowsのコマンドプロンプトで「DiskPart は選択されたディスクを MBR フォーマットに正常に変換しました。」と表示される場合の「フォーマット」は、この広義の論理フォーマットといえる。

 PCにおいては、ファイルシステム・フォーマットによって、ストレージとして使用される記録媒体は、大きく2つに分けることができる。1つは、パーティションを前提として、その内部にファイルシステムを適用するものであり、主にHDDやSSDがそれにあたる。もう1つは、パーティションという区画を用いることなくファイルシステムが適用されるものであり、主にCD、DVD、BD等の光学ディスクがそれにあたる。

 なお、パーティションとは別にボリュームという語も使われる。パーティションは個々のストレージ上の物理的な区画に焦点を当てた用語であるが、ボリュームはOSがそれらストレージをどのように管理するかといった観点から用いられる用語である。Windowsの場合、ベーシックディスクにおいては、両者は同一の対象を指すが、Windows独自のダイナミックディスクにおいては、1つのパーティション内に複数のボリュームを作成することができ、複数のストレージにまたがる領域を1つのボリュームとして扱うことも可能となる(Microsoft, 'How Dynamic Disks and Volumes Work')。ただし、既にダイナミックディスクは非推奨となっている。Windowsにおいては、Partition Manager(Partmgr.sys)、Volume Manager(Volmgr.sys)、各File System Driver、I/O Manager等が相互に関連しつつディスクを制御・管理している。

2. HDD・SSD等におけるファイルシステム・フォーマット


 PCでは、HDD等のストレージにおいて、パーティションを作成し、そのパーティションで使われるファイルシステムというデータ管理方式を指定し、適用することがこの場合の論理フォーマットである。PC以外のHDDレコーダなどの機器では、パーティションという区画を用いない管理方式や独自の管理方式が採用されていることもあるため、PCでは他の機器で使用していたHDDの内容を認識できないことが多い。

 OSによって使用可能なファイルシステムは異なり、パーティション毎に特定のファイルシステムが指定され適用されて、初めてユーザがそのパーティションにおいてファイルの書き込み・読み出しを行うことが可能となる。あらかじめどのファイルシステムを使用するのか定めて、ファイルを管理するための基本となる情報等を書き込んでおかなければ、つまり、論理フォーマットを行っておかなければ、ファイルの読み書きはできないのである。ファイルシステムには、Macであれば、HFS+、Windowsであれば、FAT32(FAT: File Allocation Table)・exFAT・NTFS(New Technology File System)、Linuxであれば、ext3・ext4などがある。1つのHDD内の複数のパーティションに対してそれぞれ異なるファイルシステムを適用することは当然可能である。

【追記】:loopについて
 Linuxにおいては、GNU Partedを使うとMBRやGPT以外のパーティショニング方式を用いることも可能である。Partedでは、partition tableをdisk labelと呼び、label-typeとして、bsd、loop (raw disk access)、gpt、mac、msdos (mbr)、pc98、sun等を選択することでき、(parted) mklabelコマンドでいずれかのpartition tableを採用することができる。

 ここで注意すべきは、loopである。loopは、partition tableの一つに挙がっているものの、partition tableを使用せず、ディスク全体を1つのパーティションとする方式である。partition tableを使用しないため、セクタ 0からパーティションとして使うことができる。もちろん、このディスクにWindowsがアクセスすることは不可能である。

 (parted) mklabel loopとすれば、loop labelを作成することができるが、mkfs -t ext4 /dev/sdbといったように、パーティションを作成せずにディスクに直接ファイルシステムを適用する場合にも、ディスク全体が1つのパーティションとなり、loop方式となる。

 (parted) printコマンド("p"と略すことも可能)でloopディスクを表示すると、
例えば、

(parted) print
Model: ATA Hitachi XXXXXX (scsi)
Disk /dev/sdb: 3000GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End   Size   File system  Flags
1      0.00B  3000GB 3000GB ext4

といったように表示される。(2018.9.30)

(1) パーティションの作成


 ゼロフィルが行われて真っさらとなったHDDに対しては、先ず、パーティションの作成・管理方式をMaster Boot Record(MBR)かGUID Partition Table(GPT)のいずれかに決定しなければならない。これは「ディスクの初期化」とも呼ばれる(拙文「初期化について」l参照)。その後、それに基づいてパーティションの作成を行うことになる。

 なお、ここで扱うパーティションは、プライマリ・パーティションという物理パーティションである。かつてMBR方式しか存在しない時代に、論理パーティション(Windowsでは「論理ドライブ」とも呼ばれ、拡張パーティション内に複数の論理パーティションを設けることができる)は、プライマリ・パーティションが4つしか設けることができないという制約から生み出されたものである。論理パーティションは、ブート・シーケンスによっては起動パーティションに使用できない場合もある。つまり、後述するように、ブートストラップ・ローダからブート・フラグがアクティブと設定されたパーティションに飛び、そのパーティションにあるOSをそのまま起動する場合には、ブート・フラグの設定はプライマリ・パーティションだけにしかできないからである(例えば、Windows XP等)。今日では、GPT方式をとれば、理論的にはプライマリ・パーティションの数は無制限である(デフォルトでは最大128個となっている)ことから、敢えて不完全な論理パーティションを利用できるようにしておく必要がないため、GPTディスクにおいて拡張パーティション及び論理パーティションは作成できないようになっている。

● MBRディスクの場合


 HDDやSSDの先頭のセクタであるセクタ 0に存在するMBRは、主にOS等のプログラムを起動するためのコードを格納する領域とディスクの管理用情報を格納する領域で構成されている。

 前者の領域として、Bootstrap Code Area(ブートストラップ・ローダ領域、マスター・ブート・ローダ領域、マスター・ブート・コード領域、イニシャル・プログラム・ローダ(IPL)領域などとも呼ばれる)その他が、先頭から440バイト割り当てられる。ブートストラップ・ローダは、通常、パーティション・テーブル内のアクティブとなっているパーティションを探し、そのパーティションの先頭セクタをメモリにロードして、そこにある実行可能なコードに制御を渡す役割を担う。そこから、そのままOSを起動する場合もあれば、ブート・ローダ等を介してOSを起動する場合もある。OSが起動する前に働くこの領域に着目してここにウイルスが仕掛けられることがあるので、留意しておくべきである。

 後者の領域として、それに続く(アドレス、0x01B8)4バイト(DWORD)がDisk Signature(Disk Identifier、NT Signatureとも)と呼ばれるディスクを識別するための固有の値を格納し[※1]、その後の(0x01BC)2バイト(WORD)は通常使われないが、0x5A 0x5Aとするとディスクの複製が禁止される(なお、数値に前置される0xはその数値が十六進表記・十六進数であることを表す。その表記法は、プログラミング言語等によって、&Hの前置、hの後置等々、種々ある)。続く(0x01BE)64バイトパーティション・テーブル(Partition Table)が割り当てられ、4つのエントリに各16バイトが割り当てられる。最後の2バイトブート・シグニチャ(Boot Signature : 0xAA55)となっている。

註※1 Disk Signature:
 Disk Signature(Disk Identifier)は、MBRを作成する際などにランダムに生成され、ディスクを識別するために使用される。Windowsでは、Disk Signatureは、Mount Manager(Mountmgr.sys) によって生成され、レジストリ(HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices等)やBoot Configuration Database(BCD)にも記録されて、そのディスクに関する情報にアクセスするためにインデックスとして用いられる(TechNet、「Master Boot Record」)。そのため、Windowsを含めてマルチブートを構成する際には注意を要する(Disklessfun、「Tips: マルチブートするなら2段階ブート方式に統一しよう」)。

 さらに、ディスクのクローンを作成したことによりPC内のあるディスクと同一のDisk Signatureを持つディスクがそのPCに接続される場合があり、Disk Signatureの競合(Disk Signature Collision)が起こることがある(Windows 7以降)。その場合「ディスクの管理」画面に「オンラインである他のディスクと署名が競合しているために、ディスクはオフラインです」との警告が出て、エクスプローラで操作することができない状態となる。そのディスクが単なるデータ用のディスクであれば、「ディスクの管理」でディスクを右クリックし、「オンライン」を選択すれば、自動的に新たなDisk Signatureが生成され、そのPCで使うことが可能となる。DiskPartのonline diskコマンドを使っても同じである。

 しかし、これがWindowsのインストールされたディスクであって、PCを起動させるために使用するというのであれば、オンラインにしない方がよい。オンラインにしてしまうと、MBRに書き込まれた新たなDisk SignatureとBCDやレジストリに記録された以前のDisk Signatureとに齟齬が生じてOSが起動できないことになる。止むを得ず、あるいは誤ってオンラインにしてしまった場合の対処法としては、BCD及びレジストリに記録されている古いDisk Signatureを全て新たなDisk Signatureに手動で書き換えるという方法があるが、これはかなり厄介な作業となる。簡便な方法としては、そのディスクのBCDというハイブ・ファイルを他のWindowsのレジストリにロードして元の古いDisk Signatureを調べ(BCDハイブの「Windows Boot Manager」というElementを持つキーと同じ配下11000001キーのElement内のオフセット0x38に記録されている)、DiskPartのuniqueidコマンドで(Windows 7以降で使用可能)、「uniqueid disk id=XXXXXXXX」とその調べた値(リトルエンディアン)を入力して、元のDisk Signatureに戻すというやり方がある。これに関しては、TechNetの「Fixing Disk Signature Collisions」(Mark Russinovich)に詳細な解説がある。また、Lifewireの「What is a Disk Signature?」(Tim Fisher)も参考になる。

 また、後述のGPTディスクにおいては、ディスクの識別にDisk GUIDが用いられ、そのGUIDがBCDのレジストリ・ハイブの同じ場所に登録されているため、この署名の競合(Signature Collision)はGUIDが競合する場合に発生することになろう。この場合、DiskPartのuniqueid diskコマンドは、GUIDにも対応しているので(TechNet、「Uniqueid」)、例えば、「uniqueid disk id=baf784e7-6bbd-4cfb-aaac-e86c96e166ee」と入力することになろう。

 なお、USBフラッシュメモリにおいては、WindowsのグレードによってDisk Signatureの扱いが異なることに注意を要する。「フォーマット、その1~物理フォーマット」の二、の3.の(2)「USBフラッシュメモリにおけるCleanコマンド」で述べたように、DiskPartでclean(clean all)コマンドを実行した際、Windows 7では、Disk Signatureは消去されるが、Windows 10では、書き換えられるだけである。さらに、Windows 7においてUSBメモリをFATでフォーマットすると、Disk Signatureは付与されないが、Windows 10でフォーマットすれば、FATであってもFAT32と同様Disk Signatureが付与される。

 そのパーティション・テーブルの各エントリには、以下のようなパーティションの基本情報が格納されている。

各パーティション・エントリの構成
バイト
オフセット
フィールド長内容
0x001バイトBoot Indicator(Boot Flagとも)と呼ばれる。この値が0x80であれば、そのパーティションがアクティブパーティションであることが示され、起動可能なパーティションとしてBIOSから認識されることになる。0x00であれば、そのパーティションは非アクティブであるとなる。それ以外の値は、無効である。0x80に設定できるのは、1つのパーティションに限られている。
0x013バイトCHS(Cylinder-head-sector)によるパーティションの開始セクタを示す。
0x041バイトパーティション・タイプ(Partition Type;Partition ID、System IDとも呼ばれる)を表す。この値によってファイルシステムが区別される。その値は、OSが起動時にどのファイルシステム・ドライバを読み込むかを決定するために使われるのである。
0x053バイトCHSによるパーティションの終了セクタを示す。パーティション・テーブルのCHS値のビットアサイン(bit assignment)は少し理解しにくいが、Webページ「MBR(Master Boot Recode)の構造」(Hazymoon)の図示が分かりやすい。INT 13h(Interrupt 13h)を用いるBIOSが対応可能なCHSの範囲は、シリンダ番号は0~1023、ヘッド番号は0~255であるのに対して、かつては慣例としてセクタの番号は1から始めることになっていたため、セクタ番号は1~63となっている。そのため、理論上は、1024×256×63×512(バイト)=8,455,716,864バイト=8,064MiB=7.875GiBがBIOSがアクセスできる最大の領域となるはずである(DEW Associates Corporation、「BIOS Interrupt 13h Extensions」。Hazymoon、「HDDの話」)。ところが、実際には、パーティション・テーブルのオフセット0x05の最大値は、0xFF(255)となっておらず、0xFE(254)となっている。よって、1024×255×63×512=8,422,686,720バイト=8,032.5MiB=約7.84GiBがアクセス可能な最大領域となる。なぜヘッド番号の最大値が0xFEなのか、その理由については諸説あるようである(Wikipedia、「INT 13H」)。いずれにしろ、先頭から8,032.5MiBを超える位置にパーティションの最終セクタがくる場合には、この3バイトの値は意味のないものとなる。
0x084バイトRelative Sectorsと呼ばれる。LBA(Logical Block Address[ing])でパーティションの開始セクタを示す(リトルエンディアン:Little-Endian)。
0x0C4バイトTotal Sectorsと呼ばれる。パーティションの総セクタ数を示す(リトルエンディアン)。

 オフセット0x04のパーティション・タイプは、多くの値が定義されている。主なものは、以下の通りである。

 0x00は、Empty、
 0x01は、FAT12、
 0x04は、FAT16(16MB以上32MB未満)、
 0x06は、FAT16(32MB以上4GB未満)、
 0x0Bは、FAT32(CHSアドレシング対応)、
 0x0Cは、FAT32(拡張INT 13h、LBA対応)、
 0x0Eは、FAT16(拡張INT 13h、LBA対応)、
 0x07は、NTFS、exFAT、
 0x83は、ext3、ext4、
 等々。
 また、0xEDは、GPT Hybrid MBRを表し、0xEEは、GPT Protective MBRを表し、0xEFは、EFI Sysytem Partition(ESP)を表す。

 例えば、Windowsのformatコマンドやディスク管理スナップインを使ってフォーマットする場合、FAT32を選択すると、そのパーティションの最終セクタがディスクの先頭より8,032.5MiB以内にあればCHSアドレッシングで対応可能であるため、0x0Bとなるが、8,032.5MiBを超える位置に定めることになれば、LBAで対応するしかないため、0x0Cとなる。また、FATを選択するとき、パーティションのサイズが16MiB未満であれば、FAT12で0x01となり、16MiB以上32MiB未満であれば、0x04のFAT16フォーマットとなるが、32MiB以上4,096MiB未満であれば、0x06のFAT16となる。FATを選択する場合も、そのパーティションの最終セクタが8,032.5MiBを超える位置にくることになれば、LBA対応のFAT16を示す0x0Eとなる。

 MBRは、HDDやSSDのみならず、USBフラッシュメモリやSDカード[※2]等の先頭セクタにも存在し、凡そストレージ・デバイスの論理フォーマットの基準となるものということができる。

註※2 SDカード:
 SDカードの容量規格には、SD(最大2GB)、SDHC(2GB~32GB)、SDXC(32GB~2TB)、SDUC(2TB~128TB)の4種があり、それぞれのファイルシステムは、SDがFAT12またはFAT16、SDHCがFAT32、SDXCおよびSDUCがexFATとされている。但し、SDカードの規格を策定し、その使用の許諾等を行っている業界団体であるSD Association (SDA) は、SDカード固有の規格仕様ゆえにSDカードをフォーマットする際に、OS付属のフォーマット・ツールではなく、専用のSDメモリカード・フォーマッターを使用することを強く推奨している(SD Association、「SDメモリカードフォーマッター」)。

 以上、TechNetの「Master Boot Record」、Wikipediaの「Master Boot Record」・「Partition type」等を参照。

 図-1 実例-MBRのセクタ内容(disk editorはHxD.exeを使用。以下同じ)
 Format2-Figure1-MBR
 【これは、OSがインストールされているディスクのMBRの例である。第1エントリの先頭セクタは、「0x80」とあり、Boot Flagが立っているので、これがアクティブパーティションであることが示され(「システムで予約済み」)、第2エントリのそれは「0x00」と非アクティブになっている。Partition Typeは、両者とも「0x07」となっているので、ファイルシステムはNTFSないしexFATである。第1エントリのStarting Sectorは「00 08 00 00」(各十六進数)となっており、リトルエンディアンであるから、0x800は十進数で2,048となり、そのTotal Sectorsは「00 20 03 00」(各十六進数)で同じくリトルエンディアンであるから、0x32000は十進数で204,800となる。従って、第1パーティションは、開始セクタがセクタ 2,048(LBA 2,048)で、サイズが204,800セクタ×512バイト=104,857,600バイト=100MiBとなる。同様に、第2パーティションの開始セクタは、「00 28 03 00」(各十六進数)、0x32800だからセクタ 206,848(LBA 206,848)で、そのサイズは、「00 38 CC 1D」(各十六進数)、0x1DCC3800だから499,922,944セクタ×512バイト=255,960,547,328バイト、約238.4GiBとなる。】

● GPTディスクの場合


 GPT方式を採るディスクであっても、先頭のセクタ 0(LBA 0)には、必ずMBRが書き込まれるが、それはHybrid MBR(ハイブリッドMBR)の場合とProtective MBR(保護MBR)の場合とがある(拙文「初期化について」参照)。Windows等では通常、Protective MBRが使われる。その場合、第1エントリのパーティション・タイプは0xEE、開始セクタは0x01 0x00 0x00 0x00、総セクタ数は0xFF 0xFF 0xFF 0xFFとなる。

 それに続くセクタ 1(LBA 1)には、プライマリGPTヘッダ(Primary GPT Header)が割り当てられ、デフォルトでは続くセクタ 2(LBA 2)以降セクタ 33(LBA 33)までにパーティションのエントリが割り当てられており、各セクタに4エントリ、各々128バイトが割り当てられている(Primary Partition Entry Array)。さらに、ディスク最後尾のセクタにバックアップとしてセカンダリGPTヘッダ(Secondary GPT Header)が、その前のセクタにパーティション・エントリのバックアップ(Secondary Partition Entry Array)が記録され、冗長化が図られている。

プライマリGPTヘッダの構成
バイト
オフセット
フィールド長内容
0x008バイトシグニチャ:"EFI PART"(0x45 46 49 20 50 41 52 54)
0x084バイトリヴィジョン(GPTバージョン1.0に対する改訂)(0x00 00 01 00)
0x0C4バイト当ヘッダのサイズ(通常、0x5C 00 00 00:92バイト)
0x104バイトヘッダのCRC-32チェックサム
0x144バイト予約領域(通常ゼロ)
0x184バイト当ヘッダの位置を示すLBA(通常、0x01 00 00 00 00 00 00 00)
0x208バイト当ヘッダのバックアップのLBA(ディスクの最終セクタ)
0x288バイトパーティションとして使用可能な最初のLBA(Windowsでは、0x22 00 00 00 00 00 00 00:34)
0x308バイト使用可能な最後のLBA(バックアップのエントリ・アレイの先頭セクタの1つ前)
0x3816バイトDisk GUID(Disk Identifier)
0x488バイトパーティション・エントリの開始LBA(0x02 00 00 00 00 00 00 00)
0x504バイトパーティション・エントリ数(通常、0x80 00 00 00:128)
0x544バイトパーティション・エントリのサイズ(通常、0x80 00 00 00:128バイト)
0x584バイトパーティション・エントリ・アレイのCRC-32チェックサム
 【数値はリトルエンディアン】

 続くセクタ 2以降にプライマリ・パーティション・エントリ・アレイが配置される。

プライマリ・パーティション・エントリの構成
バイト
オフセット
フィールド長内容
0x0016バイトPartition type GUID(Partition GUID Code)
0x1016バイトPartition GUID(命名規則に従って付与される)
0x208バイト開始LBA(リトルエンディアン)
0x288バイト終了LBA(リトルエンディアン)
0x308バイト属性
0x3872バイトパーティション名

 パーティション・タイプGUIDは、例えば、EFI System Partition(ESP)は、C12A7328-F81F-11D2-BA4B-00A0C93EC93Bであるが、先頭から3グループ、4バイト-2バイト-2バイトは、リトルエンディアンであるため、セクタ上には28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3Bと並んでいる。Microsoft予約パーティション(Microsoft Reserved Partition:MSR)は、E3C9E316-0B5C-4DB8-817D-F92DF00215AE(16 E3 C9 E3 5C 0B B8 4D 81 7D F9 2D F0 02 15 AE)である。また、WindowsとLinuxはデータ・パーティションを表すGUIDとして同じID、EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(A2 A0 D0 EB E5 B9 33 44 87 C0 68 B6 B7 26 99 C7)を使用している。なお、GPTでは、エントリの段階でパーティションのファイルシステムが明示されることはない。

 以上、NTFS.comの「GPT - Technical Documentation」、Wikipediaの「GUID Partition Table」、MSDNの「Windows and GPT FAQ」等を参照。

 図-2 実例-GPTのセクタ内容
 Format2-Figure2-GPT
【これは、OSがインストールされているディスクのGPTの例である。ディスク先頭のセクタ 0(LBA 0)のMBRは、その最初のパーティション・エントリのパーティション・タイプが0xEEとあるから、Protective MBRとなる。続くセクタ 1(LBA 1)の冒頭の8バイトには、0x45 v46 0x49 0x20 0x50 0x41 0x52 0x54("EFI PART")とあり、そのセクタがプライマリGPTヘッダであることを表す「シグニチャ」が示されている。パーティションとして使用可能な領域は、「使用可能な最初のLBA」として0x22、即ち十進数で34だから、セクタ 34(LBA 34)から、「使用可能な最後のLBA」として0x1DCF328E、即ち十進数で500,118,158だから、セクタ 500,118,158(LBA 500,118,158)までとなる。それは、Protective MBRとプライマリGPTヘッダとプライマリ・パーティション・エントリ・アレイがセクタ 33(LBA 33)まで存在し、ディスク最後尾の33セクタにバックアップのためのセコンダリGPTヘッダとセコンダリ・パーティション・エントリ・アレイが配置されているので、それらを除いた範囲となっている。】

 なお、Windows 8.1以前では、USBフラッシュメモリに1つのパーティションしか設定できない仕様となっている。DiskPartで2つ目のパーティションを作成しようとすると、「仮想ディスク サービス エラー: 空でないリムーバブル ディスク上では、この操作はサポートされていません。」と表示される。MBRの場合はもとより、GPTの場合であっても(DiskPartを使えば、USBメモリもGPTにすることは可能だが)、複数のパーティションを作成することはできない。他のソフトウェアによって作成した2番目以降のパーティションは認識されることもない。しかし、Windows 10においては、複数のパーティションを設定・認識することが可能となっている。

(2) ファイルシステム・フォーマットの基本構成


 MBRあるいはGPTに示された位置に各パーティションは作成される。そのパーティションの先頭のセクタは、Partition Boot Record(PBR)、Partition Boot Sector(PBS)、Volume Boot Record(VBR)又はVolume Boot Sector(VBS)と呼ばれる。そこにパーティションの基本情報、データを管理するためのファイルシステムに関する基本情報等が格納される。それは適用されるファイルシステムによって構成が異なり、それに基づいて各種のメタデータ・ファイル(metadata file)がパーティション内に配置されることになる。これらの設定を行うことが、まさにファイルシステム・フォーマットなのである。

 PBRには、もう一つBootstrap Codeというパーティション内のある特定のプログラムを起動するコードが書き込まれる領域がある。そのプログラムは通常OSということになるが、起動すべきOSを含まない、単にデータ保存のためのパーティションでは重要ではない。

 MBRを持たないフロッピーディスクの先頭セクタには、このPBRと同様の情報が記録される。パーティションという区分がないため、その領域は単にブート・セクタ(Boot Sector)と呼ばれるが、フロッピーディスク全体を一つのパーティションと捉えることもできる。なお、このブート・セクタという用語は、OS等のプログラムの起動という観点から、MBR及びPBRの総称としても用いれる(Microsoftでは、PBRだけをブート・セクタと呼んでいる)。BIOSは、先ず最初にストレージ・デバイスの先頭セクタの末尾に0xAA55があるブート・セクタを探し、そのブートストラップ・コードを実行しようとするのである。

 PBRの構成はOSやファイルシステムによって異なり、OSによってはPBRを使わないものもある。

 例として、NTFSとFAT32のPBRの構成を見てみる。

● NTFSのPartition Boot Record(Boot Sector)


NTFSのPBRの構成
バイト
オフセット
フィールド長内容
0x003バイトジャンプ命令(Jump Instruction)(0xEB 52 90)
0x038バイトOEM ID(OEM Name)
0x0B25バイトBPB(BIOS Parameter Block;Boot Parameter Blockとも)
0x2448バイトExtended BPB
0x54426バイトBootstrap Code
0x01FE2バイトシグニチャ(End of Sector Marker)(0x55 AA、リトルエンディアン:0xAA55)

 さらに、上記のOEM ID、BPB、Extended BPB(これらをまとめてディスク・パラメータと呼ぶこともある)の構成内容を見る。

NTFSのBIOS Parameter Block(BPB)等の構成
バイト
オフセット
フィールド長内容
0x038バイトOEM ID(OEM Name)("NTFS"、0x4E 54 56 43 20 20 20 20)
BPB
0x0B2バイト1セクタあたりのバイト数(0x00 02:512)
0x0D1バイト1クラスタあたりのセクタ数(0x08)
0x0E2バイト予約セクタ(0)
0x103バイト常にゼロ
0x132バイトNTFSでは不使用(0)
0x151バイトメディア・ディスクリプタ(0xF8)
0x162バイト常にゼロ
0x182バイト1トラックあたりのセクタ数(0x3F 00:63)
0x1A2バイトヘッド数(0xFF 00:255)
0x1C4バイトHidden Sectors(パーティションの先頭セクタまでのセクタ数、即ち当該パーティションの位置を表す。第1パーティションであれば、通常、0x00 08 00 00:2048)
0x204バイトNTFSでは不使用(0)
Extended BPB
0x244バイトNTFSでは不使用(シグニチャとの説明もある)(通常、0x80 00 80 00)
0x288バイト総セクタ数(当該PBRの1セクタを除いた数である)
0x308バイト$MFT(Master File Table)の開始クラスタ番号(メタデータファイル名の前には$が付く)
0x388バイト$MFTMirr($MFTのバックアップ)の開始クラスタ番号
0x404バイト1ファイル・レコード・セグメント(File Record Segment:FRS)あたりのクラスタ数(0xF6 00 00 00:246)
0x444バイト1インデックス・ブロックあたりのクラスタ数(0x01 00 00 00:1)
0x488バイトボリュームシリアルナンバー(フォーマット時にランダムに付与される)
0x504バイトチェックサム(NTFSでは常にゼロ)
 【数値はリトルエンディアン】

 NTFSでは、パーティションの最後尾のセクタにPBRのバックアップが保存される(「NTFS パーティション上の NTFS ブート セクタの回復」)。

 図-3 実例-NTFSパーティションのPBR
 Format2-Figure3-NTFS-PBR
【このパーティションの場合、Hidden Sectorsは、「00 08 00 00」(各十六進数)とあるから、開始セクタはセクタ 2048(LBA 2048)である。総セクタは、「FF FF 7F 07 00 00 00 00」(各十六進数)であるから、125,829,119セクタであり、それにPBRの1セクタを加えて、512バイトを掛けると、このパーティションのサイズが、64,424,509,440バイト=60GiBであることが分かる。$MFTの開始クラスタは、「00 00 0C 00」(各十六進数)であり、1クラスタは8セクタであるから、786,432クラスタ×8セクタ=6,291,456セクタであり、これに2048セクタを加えれば、$MFTの開始アドレスがセクタ 6,293,504(LBA 6,293,504)であることが分かる。同様に$MFTMirrの開始アドレスは、セクタ 2064(LBA 2064)となる。】

● FAT32のPartition Boot Record(Boot Sector)


FAT32のPBRの構成
バイト
オフセット
フィールド長内容
0x003バイトジャンプ命令(0xEB 58 90)
0x038バイトOEM ID(OEM Name)
0x0B53バイトBPB
0x4026バイトExtended BPB
0x5A420バイトBootstrap Code
0x01FE2バイトシグニチャ(0xAA55)

FAT32のBPB等の構成
バイト
オフセット
フィールド長内容
0x038バイトOEM ID(OEM Name)("MSDOS5.0":0x4D 53 44 4F 53 35 2E 30。Linuxの場合、"SYSLINUX":0x53 59 53 4C 49 4E 55 58)
BPB
0x0B2バイト1セクタあたりのバイト数(0x00 02:512)
0x0D1バイト1クラスタあたりのセクタ数(0x20:32、パーティションのサイズで決まる)
0x0E2バイト予約セクタ数(FAT領域の開始位置までのセクタ数)
0x101バイトFATの数(FATのコピー数)(常に、0x02:2)
0x112バイトルートエントリ数(FAT12/16のみで使用)(FAT32ではゼロ)
0x132バイトSmall Sectors(FAT12/16のみで使用)(セクタ数が16bitで表される65,536までの場合のみ設定。FAT32ではゼロ)
0x151バイトメディア・ディスクリプタ(Media Descriptor)(0xF8は、HDDを示す)
0x162バイト1FATあたりのセクタ数(FAT12/16のみで使用)(FAT32ではゼロ)
0x182バイト1トラックあたりのセクタ数(0x3F 00:63)
0x1A2バイトヘッド数(0xFF 00:255)
0x1C4バイトHidden Sectors(パーティションの先頭セクタまでのセクタ数、即ち当該パーティションの位置を表す。第1パーティションであれば、通常、0x00 08 00 00:2048)
0x204バイトFAT32の総セクタ数(Large Sectors)[※3
0x244バイト1FATあたりのセクタ数(FAT32のみで使用)(PCはこの数とFATの数とHidden Sectorsの数を使って、ルートディレクトリの開始位置を定める。)
0x282バイト拡張フラッグ(Extended Flags)(FAT32のみで使用)(通常ゼロ)
0x2A2バイトファイルシステム・バージョン(FAT32のみで使用)(通常ゼロ)
0x2C4バイトルートディレクトリの開始クラスタ番号(FAT32のみで使用)(通常は、0x02 00 00 00:2)
0x302バイトFile System Information(FSINFO)のセクタ番号(FAT32のみで使用)(通常は、0x01 00:1)
0x322バイトバックアップ・ブート・セクタ(バックアップPBR)の位置(FAT32のみで使用)(通常は、0x06 00:6) ※【TechNetの「Boot Sector」のこのオフセットは、0x34と誤っている。】
0x3412バイト予約領域(FAT32のみで使用)(通常ゼロ) ※【TechNetの「Boot Sector」のこのオフセットは、0x36と誤っている。】
Extended BPB
0x401バイト物理ドライブ番号(HDDならば、0x80)
0x411バイト予約領域(通常ゼロ)
0x421バイト拡張ブート・シグニチャ(通常、0x29)
0x434バイトボリュームシリアルナンバー(フォーマット時にランダムに付与される)
0x4711バイトボリュームラベル("NO NAME":0x4E 4F 20 4E 41 4D 45 20 20 20 20)
0x528バイトファイルシステム・タイプ("FAT32":0x46 41 54 33 32 20 20 20)
 【数値はリトルエンディアン】

註※3 FAT32の総セクタ数:
 総セクタ数には、4バイトが割り当てられいるが、WindowsのDiskPartやMMCスナップインの「ディスクの管理」によって新たに作成することができるFAT32パーティションのサイズは、32GBが上限とされている。従って、その場合、このフィールドの最大値は、0x00 00 00 04である(67,108,864セクタ)。もっとも、他のソフトウェアで作成した32GBを超えるFAT32パーティションをWindowsで扱うことは可能である。

 図-4 実例-FAT32のPBR
 Format2-Figure4-FAT32-PBR
【FAT32の場合は、NTFSと異なり、総セクタ数にPBRの1セクタも含まれており、このパーティションの総セクタ数は、「00 00 00 04」(各十六進数)となっているから、67,108,864セクタ×512バイト=34,359,738,368バイト=32GiBがこのパーティションのサイズとなる。】

 以上、TechNetの「Boot Sector」、NTFS.comの「NTFS Partition Boot Sector」、Wikipediaの「Design of the FAT file system」、UiUicyの「ディスクパラメータの構造」等を参照。

(3) クイックフォーマット


 以上のような書き込みがドライブになされることによって、論理フォーマットが行われる。その場合、通常のフォーマット(Full Format)とクイックフォーマット(Quick Format)を選択できることがある。Windowsの場合、クイックフォーマットを選択すると、選択されたファイルシステムに従って、上記のMBR領域の関連する項目、PBR及びファイルシステムに関連する基本的なデータ管理情報等だけが書き込まれる。

 改めて確認しておくが、パーティションを作成することとそのパーティションをある特定のファイルシステムによってフォーマットすることとは、別個の作業である。前者は、MBRないしGPTのパーティション・テーブルに必要な変更・追加がなされるだけである。後者は、主に対象となるパーティションの内部に指定されたファイルシステムが要求する基本的な管理情報等を書き込むことである。単に、パーティションを作成するときに、引き続いてファイルシステムを適用することが一般的な流れであるというにすぎないのである。

 通常は、クイックフォーマットを選択することになろう。実際にクイックフォーマットがどのように行われるか、見てみる。ゼロフィルを実行し、何も書き込まれていない古いHDD(80GB)を用意した。

● MBRディスクの場合


 先ず、このHDDに対して、WindowsのDiskPartにより、MBR領域を作成する(この操作は「ディスクの初期化」とも呼ばれる)。

DISKPART> select disk #(対象となるディスク番号)
DISKPART> convert mbr

 図-5 MBR領域の作成
 Format2-Figure5-MBR-only

 次に、パーティションのみを作成する。例として60GBと残り約16GBの2つのパーティションを作成。

DISKPART> create partition primary size=61440
DISKPART> create partition primary

 図-6 MBR-パーティションのみの作成
 Format2-Figure6-MBR-Partitions

 フォーマットをせず、パーティションだけを作成した場合は、MBRのパーティション・テーブルに作成した数のエントリが書き加えられる。この場合は、2つである。しかし、それぞれのパーティションの先頭セクタには何も書き込まれない。

 この状態では、MBRのパーティション・タイプの値は、0x00とはならず、Windowsにおいては0x06となっている。これがWindowsのデフォルトであろう。ただ、パーティションの開始セクタに何も書き込まれていないため、その領域はパーティションとして認識されるものの、ファイルシステムは「RAW」、「未フォーマット」、「unknown」などと表示されることになる。これは、Windowsの「ディスクの管理」スナップインの「パーティションのフォーマット」で「このボリュームをフォーマットしない」を選択した場合も同様である。

 この段階で、ドライブレター(Drive Letter、ドライブ文字)を割り振らなければ、ファイルシステムは「RAW」と表示されず、オフラインとなる。ドライブレターは、ドライブやボリュームを識別するために用いられるアルファベットであり、MS-DOSやWindowsの独自のシステムで他のOSでは使用されていない。当然ながら、対象ディスクのMBRやGPT、PBR等にドライブレターを記録する所はない。Windowsのレジストリ、HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices内に"\DosDevices\C:"といった形式で各ドライブの文字が記録されている。

 ところで、Linuxのfdiskコマンドでは、パーティションを作成する場合、パーティション・タイプをEmptyの「0」と変更・指定することが可能である(図-7)。その際、MBRのパーティション・テーブルにおいては、パーティション・タイプの値は、0x00となり、パーティションの開始セクタ・総セクタ数など他の値は書き込まれるが、パーティションの先頭セクタには何も書き込まれない。この状態では、当該パーティション領域は、WindowsやLinuxにおいて未割り当て領域と認識されることになる(図-9・10)。

 図-7 fdiskで「0」
 Format2-Figure7-fdisk-Type00
【fdiskで上記と同様の60GBと約16GBのパーティションを作成し、各パーティション・タイプをデフォルトの「83」(Linux)から前者は「7」(NTFS)に、後者は「0」に変更してみた。ご覧のように「タイプ0は多くのシステムでは空白を示します。パーティションのタイプを0にすることはおそらく賢明ではないでしょう。」と警告が表示される。それをdisk editor(図-8)、GParted(図-9)、Windowsの「ディスクの管理」(図-10)で表示したところである。】

 図-8 disk editor
 Format2-Figure8-MBR-Type00

 図-9 GParted
 Format2-Figure9-GParted-Type00

 図-10 Windowsの「ディスクの管理」
 Format2-Figure10-DiskManagement-Type00

 これは、要するに、MBRにおいて、パーティションのみを作成してフォーマットをしない場合、MBRのパーティション・テーブルには、デフォルトで定められている何らかのパーティション・タイプの値を持った有効なエントリが作成されるが、当該パーティションの先頭の開始セクタ以降パーティション内には何も書き込まれないことになっている。この場合は、パーティションとして認識されるも、ファイルシステムはRAWないし未フォーマットと認識される。しかしながら、パーティション・テーブル・エントリのパーティション・タイプの値が0x00と設定されると、エントリ内の他の値が有効に設定されているとしても、そのパーティションはパーティションとして認識されることはなく、当該パーティション領域は未割り当て領域と認識されることになる。

 パーティション・タイプ(パーティションID)の0x00という値は、「Empty」あるいは「空のパーティション」などと説明されるが、実際にはこの値がゼロとなると、当該エントリの他の値もゼロと同様に扱われ、OSからは当該パーティションは存在しないものと見做されることになる。

 これらのパーティションをクイックフォーマットしてみる。それぞれファイルシステムはNTFSとFAT32とする。DiskPartでは、パーティションを作成した場合、ドライブレターを設定しなければ、「オフライン」と認識され、そのボリュームをフォーマットすることができないことがある。その場合は、先にドライブレターを割り振る必要がある。ここでは、それぞれ「V」、「W」とする。

DISKPART> select volume #(対象となるボリューム番号)
DISKPART> assign letter=v
DISKPART> format fs=ntfs quick

DISKPART> select volume #(対象となるボリューム番号)
DISKPART> assign letter=w
DISKPART> format fs=fat32 quick

 図-11 MBR-フォーマット後
 Format2-Figure11-MBR-Formatted

 図-12 NTFSのPBR
 Format2-Figure12-NTFS-PBR-Formatted

 図-13 FAT32のPBR
 Format2-Figure13-FAT32-PBR-Formatted

 MBRのパーティション・テーブル・エントリで指定されたパーティションの開始セクタに、各々NTFSとFAT32のPBR(ブート・セクタ)が書き込まれる(図-12、図-13)。それと同時に各ファイルシステムに必要なメタデータ等が書き込まれる。これでようやく、パーティション内においてファイルの読み書きが可能となる。

● GPTディスクの場合


 WindowsのDiskPartにより、GPTディスクを作成する。

DISKPART> select disk #(対象となるディスク番号)
DISKPART> convert gpt

 図-14 GPT領域の作成
 Format2-Figure14-GPT

 このとき、セクタ 0(LBA 0)には、Protective MBRが作成され、セクタ 1(LBA 1)には、GPTヘッダが書き込まれる。セクタ 2(LBA 2)の先頭のエントリ1には、ご覧のようにMSR(Microsoft Reserved Partition、Microsoft予約パーティション)が、「パーティション管理をサポートするために」(MSDN、「UEFI/GPT ベースのハード ドライブ パーティション」)、自動的にWindowsにより作成される(128MB、Windows 10以降では16MB)。MSRは、GPTディスクでのみ使用され、「他のシステム パーティションに関する情報が格納され、この情報はMicrosoftアプリケーションで使用され」(TechNet、「UEFI ベースの推奨ディスク パーティション構成」)る特殊なパーティションである。

 上記MBRと同様、60GBと約16GBの2つのパーティションだけを作成する。

 図-15 GPT-パーティションのみの作成
 Format2-Figure15-GPT-Partitions

 セクタ 2のエントリ2・3に各パーティションのタイプGUIDや開始・終了セクタ等が追加されるだけで、実際のパーティションの開始セクタには何も書き込まれないのは、MBRの場合と同じである。その結果、パーティションの領域として認識されるが、ファイルシステムは「RAW」又は「unknown」などと表示される点も同じである。

 それぞれファイルシステムをNTFSとFAT32として、パーティションをクイックフォーマットすると、各パーティションの開始セクタにPBRが書き込まれる。フォーマットに関してはMBRと異なる点はない。

 なお、GPT fdisk[※4]やGPartedを使えば、当然ながらMSR領域を作成することなく、GPTディスクにパーティションを作成することは可能である(図-16)。しかし、Windowsで使用する、又はそれと共有する可能性のあるドライブであれば、Microsoftが「すべてのドライブに用意することをお勧めします」(「UEFI ベースの推奨ディスク パーティション構成」)と述べ、「A Microsoft Reserved partition is required on every GPT disk.」(「Create partition msr」)とも述べている以上、作成しておくのが賢明であろう。

 図-16 gdisk
 Format2-Figure16-gdisk

註※4 GPT fdisk:
 Roderick W. Smithの手になるGPT fdisk(gdisk、sgdisk、cgdiskの総称)は有益なプログラムである(http://www.rodsbooks.com/gdisk/)。なかでも、gdiskは、fdiskに類似したインタラクティブなプログラムであって、LinuxのみならずWindowsのコマンドプロンプトでそのまま使用することができ、セクタ単位でGPTディスクのパーティションを作成することができる有用なプログラムである。MBRディスクをGPTディスクに変換し、MBRで使用していたOSをそのままGPTディスクに戻して、さらにマルチブートに構成するときなどに、このgdiskは重宝する。

 図-17 Windowsにおけるgdisk
 Format2-Figure17-gdisk-onWindows
【上記サイトより入手したgdisk32.exe又はgdisk64.exeをコマンドプロプトで起動し、「\\.\physicaldrive#」(#は対象となるディスク番号)と入力する。】

(4) 通常のフォーマット


 Windowsにおいては、クイックフォーマットではなく、通常のフォーマットを行うと、クイックフォーマットで行われる作業に加えて、パーティション内全域のセクタに対してチェックディスク(Chkdsk)が実施され、既存のデータは全て消去される。フォーマット完了は、パーティションのサイズによっては、かなりの時間を要することになる。

 フォーマット時のChkdskの実行は、NTFSでは重要な意味を持つ。Chkdskによって不良セクタが検出されると、それを含むクラスタは、NTFSメタデータであるMFT(Master File Table)のエントリ8にある$BadClus(Bad-cluster file)の不良クラスタのリストに記録され、クラスタの再配置(remapping)がなされて、以後そのクラスタが再使用されることはない。これは、フォーマット時でなくとも、データにアクセスしたときにデータが読み出せず、不良セクタであることが判明した場合にも行われる。その場合、耐障害性のある(fault-tolerant)冗長ボリューム(redundant volume)であれば(RAID 1、RAID 5等)、データは回復できるが、通常のボリュームではデータは失われる。但し、データの書き込み時に不良セクタであることが明らかになった場合には、再配置が行われて代替処理された後、新たなクラスタに書き込みがなされるので、データが失われることはない。(Mark Russinovich 他、『Windows Internals Sixth Edition Part 2』、「Dynamic Bad-Cluster Remapping」 p.429、「NTFS Bad-Cluster Recovery」 pp.487-490)

 もっとも、不良セクタが何時発生するかは不明であり、フォーマット時に不良セクタが発見されたとしても、その後新たに不良セクタが発生しない保証はなく、たとえそのときに不良セクタがなくとも、その後に不良セクタが発生することがあるので、フォーマット時にチェックディスクを行う必要性は必ずしも高くない。特に新しいHDDに不良セクタが存在するおそれはほとんどないので、時間をかけて通常フォーマットを行う必要はなかろう。とはいえ、古いHDDに改めてパーティションを作成する場合には、フォーマット時にチェックディスクを行っておくに越したことはない。通常のフォーマットかクイックフォーマット、いずれを選択すべきかは、時間と安全を比較衡量してその都度判断するほかない。

(5) 既存ファイルと両フォーマットの挙動


 このように見てくると、何らかの原因でPBRが壊れてファイルシステムが正しく認識されず、「フォーマットの必要があります。フォーマットしますか?」と訊かれた場合でも、PBRは修復することが可能であることが分かる。「Tips: 強力な(?)NTFSのPBR修復法」などのWebサイトが参考になろう。その際、慌ててフォーマットをしてしまわないことである。特に、存在するファイルをゼロで上書きする通常のフォーマットを行ってしまうと、ファイルの復元の可能性は断たれてしまう。パーティション内には、上記で見た如く、PBRや$MFTなどのメタデータのバックアップが保存されており、それを利用してパーティションを修復・復元してくれるソフトがあるので、先ずそれを試してみてもよいであろう。それがうまくいかなければ、データ復元ソフトを使うことになろうか。勿論、金銭に換えがたい重要なデータが含まれているならば、何も手を加えず、データ復旧専門の業者に頼むのが最善である(おくやま電脳工房、「データ復旧のプロが見た"間違いだらけのデータ復旧"」)。

 また、クイックフォーマットをしてしまった場合であっても、ファイル自体はそのまま残っているので、ほとんどのファイルは復元することが可能である。但し、NTFSを例にとると、ファイル名等を記録しているMFTはクイックフォーマットにより上書きされるため(『Windows Internals Sixth Edition Part 2』、「File Names」、pp.449-453)、データ復元ソフトを通じてファイル本体は復元することができるものの、ファイル名は復元することはできず、ファイルの種類毎に通し番号などが付されることになる。試しに、クイックフォーマットを行う前に、disk editorを使ってMFTを保存しておき、クイックフォーマットをした後にMFTを書き戻して、データ復元ソフトで復元を行ってみると、ファイル名を伴ったファイルを復元することが可能であった。

 これに対し、LinuxのGPartedでは、フォーマットにクイックや通常といった選択肢はない。例えば、WindowsでNTFSにフォーマットしたパーティションにテスト用のファイルを保存したものに対して、GpartedでNTFSフォーマットを行ってみると、短時間でフォーマットは終了する。その中をdisk editorで確認すると、保存されていたファイルの消去はなされておらず、先頭セクタのPBR及びMFTのメタデータのみが書き込まれている。GPartedのフォーマットは、いわゆるクイックフォーマットである。但し、MFTの保存位置がWindowsとは異なっており、そのためテスト用ファイルの一部が上書きされていた。

 Linuxのmkfsコマンドでは、オプションを使わなければ、通常のフォーマットが行われるようである。フォーマット後にセクタを確認すると、フォーマット以前に存在したファイルは全て消去され、ゼロで上書きされている。クイックフォーマットを行うには、一般的には例えば、NTFSでフォーマットする場合、

mkfs -t ntfs -E lazy_itable_init=1 /dev/sdx

とするとされるが、-Qというオプションも使えるようである。Qは、おそらくQuickの頭文字であろう。

mkfs -t ntfs -Q /dev/sdx

 図-18 mkfsでクイックフォーマット
 Format2-Figure18-mkfs-t-ntfs-Q

 これを実行した後にセクタを確認すると、上述のGPartedでフォーマットした状態と同じ結果であった。このmkfsコマンドは、自らコードを実行しているわけではなく、各ファイルシステムを設定するプログラムを呼び出しているだけであるとされる。同じLinuxディストリビューションであれば、GPartedのフォーマットもmkfsコマンドのクイックフォーマットも同一のプログラムを実行していることになる。

 なお、アプリケーションによる個々のファイルシステムへのアクセスは、実際には仮想ファイルシステム(Virtual File System、VFS)を介して行われる。仮想ファイルシステムは、「どのアプリケーションからでも、同じような手順でファイル操作(媒体へのアクセス)が行えるような、単一のインターフェイスを提供」するものであり(菅谷みどり、@IT、「VFSとファイルシステムの基礎技術 (2/2)」)、それが「ファイルシステム共通の機能を受け持つことで、各ファイルシステムはその機能をより特化させることが可能にな」ると同時に、「ユーザーは複数のファイルシステムを統一的な方法で扱えるようにな」るのである(「VFSとファイルシステムの基礎技術 (1/2)」)。これはUNIX上で発展したもので、LinuxやWindowsなどでもコア技術として採用されているとされる。特にLinuxにおいては、「ドライバやI/Oサブシステムに対しても統一的なインターフェイスを提供している」(「同 (2/2)」)ことから、多種のファイルシステムに対応することが可能であり、近時ではNTFSの読み書きも可能となっている。

【追記】:NTFSへの変換
 Windowsにおいて、使用され既にデータが存在するFAT又はFAT32のボリュームを、データはそのままに、NTFSのファイルシステムに変換することが可能である。コマンドプロプトで、convertコマンドを使うのである。(参照:Microsoft Docsの「convert」TechNetの「ヒント: コマンド ライン ユーティリティを使用して FAT32 ディスクを NTFS に変換する」。)

例えば、
>convert d: /fs:ntfs /v

 [d]には、対象となるボリュームのドライブレターを入力する。[/v]は、詳細モード(verbose mode)であり、操作中のすべてのメッセージが表示されるが、不要であれば、省略できる。

 なお、このconvertを利用して変換したNTFSボリュームは、パフォーマンスにおいて当初からNTFSでフォーマットしたボリュームに劣るおそれがあるとされる。MFT等が断片化されることがあるからである。だとすれば、他のHDD等にデータのみをコピー&ペーストし、そのボリュームをNTFSにフォーマットし直して、そこへデータをコピー&ペーストで書き戻す方がよいであろう。このconvertコマンドは、その方法が採れない場合の非常手段と考えるべきであろう。また、NTFSにコンバートしたボリュームは、FAT又はFAT32に戻すことはできない。(2018.4.3)

(6) Windowsレジストリへの記録


 Windowsにおいては、ストレージ・デバイスが接続されマウントされると、前述したMBRのディスク・シグナチャ(ディスクID)、Disk GUID、パーティションのシリアルナンバーやGUID等のデバイスの情報がレジストリに記録される(Martin Brinkmann、ghacks.net、「Remove Unconnected Storage Device Information From Windows」)。


HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\CPC\Volume
HKEY_USERS\<ユーザSID>\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
HKEY_USERS\<ユーザSID>\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\CPC\Volume
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\MultifunctionAdapter\0\DiskController\0\DiskPeripheral

 主に上記のサブキーに接続情報が記録される。ひとたびストレージが接続されると記録され、その情報は保持されることにもなる。MBR・GPTを設定し直し、パーティションを作成し直すたびに、新たなディスクIDやパーティションGUID等がそれぞれの命名規則に基づいてランダムに付与され、と同時にそれらはレジストリに記録されることになる。これは、ディスクやパーティションの管理あるいはcomputer forensicsには有用であろうが、独自にディスクやパーティションに変更を加えようとする場合には、問題が生じることもあるので注意が必要である(註※1参照)。

 また、Virtual Disk Service(VDS、仮想ディスクサービス)は、「ディスクの構成、管理を行うための、統一されたインターフェイスを提供するためのサービス」であり、「ディスクの作成やフォーマット、あるいはハードウェアRAIDアダプターを管理する」ものであって、「Diskpart コマンドや [ディスクの管理] MMC スナップインは、VDS API ベースのプログラム」である(TechNet、「仮想ディスク サービス (VDS) について」)。例えば、パーティションに対して独自の操作を行っている場合に、VDSからの情報の取得要求が行われるも、そのためにパスの切断などが発生してその取得に失敗したときには、VDS Basic Providerに関し「予期しないエラーが発生しました。エラー コード: D@01010004」といったイベントが記録されることがある。このエラーは、原因が明白であるから、無視してよいであろうが、それが記録されない状態にしておく必要はあろう。

(7) NTFSのLog File構造とバージョン問題

 【この項、正確を期すため加筆修正を行った。2017.12.8。再訂正2017.12.22】

 Windows XP及びWindows Server 2003以降で使用されるNTFS(New Technology File System)は、バージョン3.1で共通である。ところが、NTFSボリュームではファイルの変更等の情報を記録する$LogFileというメタデータ・ファイルが用いられるが、Windows 8において、システムのパフォーマンスの向上を図り、Log Fileの書き込みの I/Oカウントを減らすためにLog Fileの構造が変更されている。そのバージョンは、それまでの1.1から2.0とされる。これに関する詳細な説明は、MicrosoftのMark Russinovichの「Windows 8 volume compatibility considerations with prior versions of Windows」(TechNet Articles)にある。(それを日本語で解説したブログは、ぼくんちのTV別館の「Windows 8以降とそれ以前のWindowsの、Diskの互換性とその注意事項について-その1」ないし「その3」にある。)

 そのRussinovichの説明によると、大要以下の通りである。

● 問題状況


 NTFSにおいて、Windows 7以前ではLog File Service (LFS) のバージョンは、1.1であるが、Windows 8以降ではバージョン2.0が原則として用いられる。Windows 8以降のOSはいずれのバージョンにも対応しているが、Windows 7以前のOSは、LFSバージョン2.0のNTFSを認識することができない。そこで、互換性を保つために、Windows 8以降のNTFSドライバは、内蔵のストレージ・デバイスについては起動したとき、又は外部のストレージ・デバイスについては接続したときに、NTFSのパーティションのLog Fileの構造とバージョン番号をアップグレードして2.0にしてアクセスすることにし、フルシャットダウンされるとき、又は「安全な取り外し」によって当該ストレージが取り外されるときに、Log Fileの構造とバージョン番号をダウングレードして1.1にすることにしている、という。

 これは実に巧妙なギミックであるが、場合によっては危ういともいえる。Windows 7以前のOSとWindows 8以降のOSをデュアルブートないしマルチブートで利用する場合に、不都合が生ずるおそれがある。

 Windows 8以降で採用されるハイブリッド・ブート(Hybrid Boot、高速スタートアップ)は、デフォルトで有効となっており、通常のシャットダウンを行っても(つまり、Shiftを押しながら「シャットダウン」又は「再起動」をクリックして、「PCの電源を切る」を行わない限り)、休止状態(Hibernate)が利用され、完全なシャットダウンが行われないため、NTFSパーティションのLFSバージョンは2.0のままとなる。その後、Windows 8以降のOSとWindows 7以前のOSとをマルチブート構成にしている場合に、PCを起動すると、OSの選択画面が表示される前に、休止状態にあったOSは高速スタートアップが適用されてWindows 8以降のOSの起動準備が完了する。そのとき、他のWindows 7以前のOSが選ばれると、再起動がかかり、LFSバージョンは2.0から1.1にダウングレードされて、そのOSが起動するという手間がかかることになる。

 この高速スタートアップが有効となっているデフォルトのままシャットダウンしても休止状態に入っているため、そのときに外付けのHDD等が取り外されて、Windows 7以前のOSに接続されるとNTFSパーティションは認識されないことになるので、留意が必要である。

 実際に、Windows 7とWindows 10とのデュアルブート構成にしているノートPCにおいて、NTFSパーティションのLFSバージョンがどうなっているのか、fsutil fsinfoコマンドを使って確認してみる。例えば、CドライブのNTFSの情報を表示するには、コマンドプロプトで、

>fsutil fsinfo ntfsinfo C:
と入力する。

 このコマンドで見ると、Windows 10でPCを起動しいる場合、Windows 10のインストールされているパーティションのみならず、Windows 7のインストールされているパーティションも、共用のデータ・パーティションも全てLFSバージョンは、2.0となっている(図-19)。

 図-19 Windows 10の起動中のLFSバージョン
 LFSversion-Default

 Window 10をシャットダウンした後の各パーティションのLFSバージョンがどうなっているかは、Windows 7でこのコマンドを使っても、LFSバージョンは表示されないので、Windows 10のインストール・メディアからコマンドプロンプトを起動して確認する。デフォルトの高速スタートアップが有効となっている場合は、Windows 10がインストールされているパーティションのみならず、Windows 7及び共有のパーティションもLFSバージョンは、2.0のままとなっている(図-20)。

 図-20 Windows 10のシャットダウン後のLFSバージョン(デフォルト)
 LFSversion-Default-after_Shutdowm

 このようなデュアルブートにおいては、万が一Windows 10側に不具合が発生し、LFSを1.1にダウングレードできない事態となった場合、全てのNTFSパーティションのLFSバージョンが2.0のままとなり、Windows 7の起動に支障が生ずる。

 上記TechNetの記事では、Windows 7以前のOSでLFSバージョン2.0のNTFSパーティションが接続されると、Log Fileが破損していると認識されてchkdskの実行が要求され、チェックディスク終了後に正常な状態となると説明される。しかしながら、Webには一部のファイルが失われることもあるとされている以上、かかる事態に至らないように手立てを講じておくに越したことはない。

● 対処法


 先ず、高速スタートアップ(Hybrid boot)は無効にしておく。そうすれば、シャットダウンは休止状態とならず、完全なフルシャットダウンとなる。とかく問題を起こしがちな休止状態は利用しないのが賢明であろう。

 コントロールパネルの電源オプションの「電源ボタンの動作の選択」から「現在利用可能ではない設定を変更します」をクリックし、「高速スタートアップを有効にする(推奨)」のチェックを外して、再起動する。

 さらに、そもそもレジストリでNTFSドライバがLFSのアップグレードを行わない設定にしておくことも可能である。そうしておけば、高速スタートアップの有効・無効に拘わらず、上述の不都合は回避できる。

 "regedit.exe"を起動し、下のレジストリキーに移動する。
 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem

 右ペインでREG_DWORDの"NtfsDisableLfsUpgrade"という名のエントリを探す。なければ、DWORD値(32ビット)で新規作成する。

 その値のデータを「0」以外の値(推奨は「1」)に変更して、再起動する(シャットダウンではない)。

 これで、NTFSドライバは、NTFSボリュームのLog File構造とバージョン番号をアップグレードすることはない。

 上記いずれかの対処を行っておけば、シャットダウン後は、Window 7や共用のパーティションだけでなく、Windows 10自身のパーティションもLFSバージョンは1.1となる(図-21)。それゆえ、Window 7を起動した場合であっても、Windows 10がインストールされているパーティションにさえアクセス可能となる。

 なお、Windows 10のバージョンが上がる大きな更新があると、いずれの設定もデフォルトの状態に戻ってしまうので、注意が必要である。

 図-21 Windows 10のシャットダウン後のLFSバージョン(対処済み)
 LFSversion-Resolved-after_Shutdown

 なお、fsutil fsinfo ntfsinfoのコマンドラインで表示される「LFS」という頭文字語・頭字語(initialism)は、どの言葉の頭文字なのかという些細だが紛らわしい問題がある。

 これまで、当文書では、LFSはLog File Structureの頭字語なのではないかと説明してきたが、やはり従前からMicrosoftで使用されてきたLog File Serviceの頭字語であるLFSとするのが無理のない自然な理解であると考える。

 Windowsにおいては、LFSは、Log File Serviceを指すとされている。前掲書『Windows Internals, Sixth Edition, Part 2』の第12章、「File System」の「NTFS Recovery Support」というセクションの「Metadata Logging」という項目の中に、「Log File Service」という小項目があり(pp.479-480)、「The log file service (LFS) is...」という書き出しでLFSの説明がなされている。即ち、Log File Service(LFS)とは、Log Fileにディスクの書き込みを記録するサービスを提供するNTFSドライバに含まれるカーネルモードのルーティンであり、そのLog Fileはシステム障害が生じた場合にNTFSボリュームをリカバリするために使用されるものである、と説明されている(同書、p.440、p.479)。

 上記TechNetの記事を改めて見ると、「log file structure and version」という表現が11回使用されているが、これは通常の英語の理解では、「log file」の「structure」と「log file」の「version」とをandで結合した表現である。この表現を「log file structure」とその「version」と解するのは少し無理がある。そう理解するには、「and its version」などと表現に工夫がなされている必要があろう。しかも、上記の記事では、「Log File structure」とLog Fileのみ頭文字を大文字で表記し、structureの頭文字を小文字で表記すること、あるいは全ての頭文字を小文字で表記することはあっても、「Log File Structure」と全頭文字を大文字にして一つの固有名詞句として表記することはない。また、「the new log file version」とも記述している。

 NTFSにおけるLog Fileという機能の正式な名称はLog File Serviceであり、その頭字語はLFSなのである。そのLFSに構造が異なる2つが存在し、各々に1.1と2.0というバージョン・ナンバーが付されているのである。

 改めて、LFSを「Log File Structure」の頭字語だと説明していた旧記載を、軽率かつ浅薄な理解であったと反省しつつ、上述の通り訂正することにする。

 因みに、Windowsでは、Common Log File System(CLFS)という用語も頻繁に使用される。前掲書の同じく「File System」の章内に、「Common Log File System」という大きな独立したセクションがある(同書、pp.416-424)。Common Log File System(CLFS)については、Windowsは、ファイル又はエントリに含まれるデータ又はメタデータに加えられた変更を、「元に戻す(undo)」や「繰り返す(redo)」を行うため、又はその変更を後に有効とするために、「logging」と呼ばれる作業によって「log records」と呼ばれるデータ構造体に保存するといったloggingサービスをCommon Log File Systemを通じて提供すると説明される(同書、pp.416-417)。

 その上で、「Note that although LFS and CLFS have similar sounding names, they are separate logging implementations used for different purposes, although their operation is similar in many ways.」(LFSとCLFSとは音の似通った名称であって、両者の作用は多くの点で類似しているが、両者は異なる目的に使用するために実装された別個のlogging機能であることに注意を要する。)、とわざわざ注記されている(同書、p.479)。

 このLFSのバージョン問題については、Webには誤解している記述が散見され、上記TechNetのサイトの説明を改めて確認することが望まれる。

※参考:
・Microsoft. 2009. "How Dynamic Disks and Volumes Work". https://docs.microsoft.com/ja-jp/previous-versions/windows/it-pro/windows-server-2003/cc758035(v=ws.10)

・Phooen, Sonpooshi. 2015. 「初期化について」. http://blog.phooen.com/blog-entry-68.html

・TechNet Microsoft. "Master Boot Record". https://technet.microsoft.com/en-us/library/cc976786.aspx

・Disklessfun. 2016. 「Tips: マルチブートするなら2段階ブート方式に統一しよう」. http://wikiwiki.jp/disklessfun/?multipleboot

・Russinovich, Mark (TechNet Microsoft). "Fixing Disk Signature Collisions". https://blogs.technet.microsoft.com/markrussinovich/2011/11/06/fixing-disk-signature-collisions/

・Fisher, Tim (Lifewire). "What is a Disk Signature?". https://www.lifewire.com/what-is-a-disk-signature-2625851

・TechNet Microsoft. "Uniqueid". https://technet.microsoft.com/ja-jp/library/cc730793%28v=ws.11%29.aspx

・Hazymoon. 2008. 「MBR(Master Boot Recode)の構造」. http://caspar.hazymoon.jp/OpenBSD/arch/i386/stand/mbr/mbr_structure.html

・DEW Associates Corporation. "BIOS Interrupt 13h Extensions". http://www.dewassoc.com/support/bios/bios_interrupt_13h_extensions.htm

・Hazymoon. 2008. 「HDDの話」. http://caspar.hazymoon.jp/OpenBSD/misc/hdd.html

・Wikipedia. "INT 13H". https://en.wikipedia.org/wiki/INT_13H

・SD Association. 「SDメモリカードフォーマッター」. https://www.sdcard.org/jp/downloads/formatter_4/index.html

・Wikipedia. "Master Boot Record". https://en.wikipedia.org/wiki/Master_boot_record

・Wikipedia. "Partition type". https://en.wikipedia.org/wiki/Partition_type

・NTFS.com. "GPT - Technical Documentation". http://www.ntfs.com/guid-part-table.htm

・Wikipedia. "GUID Partition Table". https://en.wikipedia.org/wiki/GUID_Partition_Table

・MSDN Microsoft. "Windows and GPT FAQ". https://msdn.microsoft.com/en-us/library/windows/hardware/dn640535%28v=vs.85%29.aspx

・Microsoft. 「NTFS パーティション上の NTFS ブート セクタの回復」. https://support.microsoft.com/ja-jp/help/153973/recovering-ntfs-boot-sector-on-ntfs-partitions

・TechNet Microsoft. "Boot Sector". https://technet.microsoft.com/en-us/library/cc976796.aspx

・TechNet Microsoft. "Disk Concepts and Troubleshooting". https://technet.microsoft.com/en-us/library/cc977221.aspx

・NTFS.com. "NTFS Partition Boot Sector". http://www.ntfs.com/ntfs-partition-boot-sector.htm

・Wikipedia. "Design of the FAT file system". https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system

・UiUicy. 「ディスクパラメータの構造」. http://uiuicy.cs.land.to/discpara.html

・MSDN Microsoft. 「BIOS/MBR ベースのハード ドライブ パーティション」(Windows 10). https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn898504%28v=vs.85%29.aspx

・MSDN Microsoft. 「UEFI/GPT ベースのハード ドライブ パーティション」(Windows 10). https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn898510%28v=vs.85%29.aspx

・TechNet Microsoft. 「BIOS ベースの推奨ディスク パーティション構成」(Windows 7). https://technet.microsoft.com/ja-jp/library/dd744364%28v=ws.10%29.aspx

・TechNet Microsoft. 「UEFI ベースの推奨ディスク パーティション構成」(Windows 7). https://technet.microsoft.com/ja-jp/library/dd744301%28v=ws.10%29.aspx

・Microsoft. 2017. "UEFI/GPT-based hard drive partitions". https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/configure-uefigpt-based-hard-drive-partitions

・Microsoft. 2017. "BIOS/MBR-based hard drive partitions". https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/configure-biosmbr-based-hard-drive-partitions

・TechNet Microsoft. "Create partition msr". https://technet.microsoft.com/ja-jp/library/cc770438%28v=ws.10%29.aspx

・Smith, Rod. "GPT fdisk Tutorial". http://www.rodsbooks.com/gdisk/

・Russinovich, Mark et al. 2012. Windows Internals, Sixth Edition, Part 2, "Chapter 12 File Systems", pp.391-498. Microsoft Press. Washington.

・Disklessfun. 2012. 「Tips: 強力な(?)NTFSのPBR修復法」. http://wikiwiki.jp/disklessfun/?fixpbr

・おくやま電脳工房. 「データ復旧のプロが見た"間違いだらけのデータ復旧"」. http://www.den-now.com/pc-otasuke2.html

・菅谷みどり(@IT). 2003. 「VFSとファイルシステムの基礎技術」. http://www.atmarkit.co.jp/ait/articles/0305/20/news002.html

・Brinkmann, Martin(ghacks.net). 2009. "Remove Unconnected Storage Device Information From Windows". https://www.ghacks.net/2009/12/05/remove-unconnected-storage-device-information-from-windows/

・TechNet Microsoft. 「仮想ディスク サービス (VDS) について」. https://blogs.technet.microsoft.com/askcorejp/2012/12/02/vds/

・Russinovich, Mark (TechNet). "Windows 8 volume compatibility considerations with prior versions of Windows". https://social.technet.microsoft.com/wiki/contents/articles/15645.windows-8-volume-compatibility-considerations-with-prior-versions-of-windows.aspx

・Microsoft Docs. 2017. "convert". https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/convert

・TechNet Microsoft. 「ヒント: コマンド ライン ユーティリティを使用して FAT32 ディスクを NTFS に変換する」. https://technet.microsoft.com/ja-jp/library/ee851683.aspx
(以上閲覧日:2017年7月17日)


3. 光学ディスクのファイルシステム・フォーマット


 光学ディスクは、成形時に物理フォーマットないしローレベル・フォーマットが施され、一般のユーザがそれを変更することは不可能な記録媒体である。ユーザが光学ディスクに対して行うことのできるのフォーマットは、論理フォーマット、つまりファイルシステム・フォーマットのみである。

 光学ディスクにおいては、パーティションといった区画が存在せず、1つのディスクに対して1つのファイルシステムのみが適用されるため、HDDのようにパーティションの作成方式を定めるだけで未だパーティションを作成していない状態にする「初期化」とパーティションを作成してそれぞれにファイルシステムを適用する「フォーマット」を区別する必要がないことから、「フォーマット」は「初期化」と呼ばれることもある。

 PCにおいて用いられる光学ディスクのファイルシステム・フォーマットは、主にCompact Disc File System(CDFS)とUniversal Disk Format(UDF)の2つが使われている。

(1) Compact Disc File System(CDFS)


 Compact Disc File System(CDFS)という規格は、ISO 9660として標準化されている(Wikipedia、「ISO 9660」)。これは、1988年にISOで標準化されたもので、当然ながら当時はCD向けであったが、その後DVDやBDにも用いられている。これには様々な拡張規格があり、Windowsでは、ファイル名形式につき8.3形式(名前は最大8文字、拡張子は最大3文字で表記される)から最大32文字のファイル名を使えるようにしたJolietという拡張規格が用いられる(MSDN、「Disc Formats」)。

 ISO 9660で書き込む場合、通常はディスク・アット・ワンス(Disc at once)という記録開始を表すリードインから記録終了を表すリードアウトまでを1回で書き込む方式がとられる。この方式だとディスクに容量が余っていたとしても追記することはできないが、最も互換性が高くほとんどの機器で読み取ることができるようになる。

 しかし、この方式はCD-Rにとって無駄が多すぎることから、ライティングソフトによって、トラック・アット・ワンス(Track at once)やセッション・アット・ワンス(Session at once)などトラックやセッションごとにリードイン・リードアウトを書き込み、追記を可能にする方式がとられるようになった。但し、それらの方式はライティングソフト固有のものであるため、同じライティングソフトがなければ、読み取ることも追記することもできない。従って、最終的にはファイナライズ(Finalize)という共通の処理を施して読み取り専用のディスクにすることによって、互換性を高めることになる。

(2) Universal Disk Format(UDF)


 ISO 9660に代わるファイルシステムとして、Universal Disk Format(UDF)が1995年に策定され、ISO/IEC 13346として規格化された。(Wikipedia、「ユニバーサルディスクフォーマット」)。

 これには、UDF 1.01(1995年)、UDF 1.02(1996年)、UDF 1.50(1997年)、UDF 2.00(1998年)、UDF 2.01(2000年)、UDF 2.50(2003年)、UDF 2.60(2005年)のバージョンがある(小町 祐史、「一連のUDF (Universal Disc Format)に対応するJISの整備」)。UDF 1.50でファイナライズの必要のないパケットライトに対応するようになった。このフォーマットを使えば、CD-RやDVD-Rであってもデータの書き込みや読み取りが随時可能となるが、データを削除した場合、その部分は空き容量として復活することはなく、書き込み不可となって空き容量は減っていく。これはCD-RWやDVD-RWも同様であり、ただCD-RWやDVD-RWは記録したデータを一括消去し、フォーマットし直して繰り返し記録することが可能である(約1,000回とされる)。

 このUDFが、Windowsでは、「ディスクの書き込み」を行う際に、「USBフラッシュドライブと同じように使用する」(ライブファイルシステム)を選択すると適用されるフォーマットである。

 また、UDF BridgeというUDFとISO 9660の両方を兼ね備えたフォーマットがあり、UDFに対応していない機器でもISO 9660によって読み出すことができる。Windowsで「CD/DVDプレイヤーで使用する」(マスター)を選択すると、このUDF Bridgeが適用される。この場合のUDFは1.02だとされる(ウェブノコエ、「ディスクアットワンス方式・ISO9660でCD/DVDに書き込む」)。

 なお、CD-R、DVD-R、BD-Rは、フォーマットの書き直しが不可能であるから、いずれかのフォーマットが既に適用されていれば、当然他のフォーマットで使用することはできない。CD-RW、DVD-RW、BD-REは、フォーマットの書き直しが可能であるから、どのフォーマットでも繰り返し使用できるが、PC以外の機器によっては対応していないディスクがあるので注意する必要がある。

【追記】:DVD-RAMのフォーマット
 DVD Forumが策定したDVD規格の中でDVD-RAMは、他のDVD等と大きく異なる点がある。DVD-RAM以外のDVDやCD、BDその他の一層式の光学ディスクは、内周から外周に向かって螺旋状(渦巻き状)にトラックが配置されているのに対して、DVD-RAMは、同心円状にトラックが設けられているのである(日立製作所 加藤 和利、CQ出版『TRY!PC』1999年9月号、「DVD-RAMの仕組み」)。DVD-RAMは、その先頭セクタが内周にあり、セクタ0が外周にあるHDDとは逆であるが、トラック構成はHDDと似ている。そのためであろうか、フォーマットは主にUDFが使われるが、Windowsでは特にFAT32も適用可能となっている。

 DVD-RAMは、CD-RWやDVD-RWなどのリリコーダブル・ディスク(Re-recordable Disc、再記録可能ディスク)と異なり、ファイルを削除した場合、再度書き込み可能な領域として利用することができる。つまり、文字通りリライタブル・ディスク(Rewritable Disc、書き換え可能ディスク)であって、ファイルを削除すれば空き容量はその分増加することになる。(2018.9.6)


(3) ISOイメージ(ISO image)


 ISOイメージ・ファイルは、光学ディスクに書き込まれるファイルやファイルシステムなど全ての情報が正確に写し取られて1つにまとめられたものである。このファイルシステムには、ISO 9660のファイルシステムだけでなく、UDFのファイルシステムも含めることができる。ISOイメージ・ファイルを書き込むときに、ファイルシステム・フォーマットが行われると捉えることができる。それゆえ、CD-RやDVD-Rなどは、未フォーマットの状態でなければ、ISOイメージを書き込むことはできない。

 ISOイメージ・ファイルは、勿論光学ディスクに書き込むものであるが、それ以外の方法で使用することも可能である。ISOイメージをUSBメモリ等に書き込むこと、あるいはISOイメージが書き込まれたディスクとして仮想光学ドライブをPCにマウントすることを可能にするソフトウェアがある。Webにはそのようなフリーウェアがいくつもあり、利用している人も多い。

※参考:
・Wikipedia. 「ISO 9660」. https://ja.wikipedia.org/wiki/ISO_9660

・MSDN Microsoft. "Disc Formats". https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa364836%28v=vs.85%29

・Wikipedia. 「ユニバーサルディスクフォーマット」. https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%8B%E3%83%90%E3%83%BC%E3%82%B5%E3%83%AB%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88

・小町 祐史(国士舘大学). 「一連のUDF (Universal Disc Format)に対応するJISの整備」. http://www.y-adagio.com/public/confs/miscel/oit/doc1_3.pdf

・ウェブノコエ. 2017. 「ディスクアットワンス方式・ISO9660でCD/DVDに書き込む」. http://www.review-rank.net/?p=4512

・加藤和利(日立製作所). 1999. CQ出版『TRY!PC』1999年9月号. 「第2特集 急速な普及を始めたDVDの世界」, 「第1章 UDFの詳細とWindowsにおけるDVDの制御方法」, 「DVD-RAMの仕組み」. http://www.cqpub.co.jp/try/1999-9/toku2-1.htm
(以上閲覧日:2017年7月23日)

フォーマット、その1~物理フォーマット」】

tag : 論理フォーマットMBRGPTPBRパーティションNTFSFAT32

フォーマット、その1~物理フォーマット

目 次
一、フォーマットとは
二、物理フォーマット


三、論理フォーマット
■1. 論理フォーマットとは
■2. HDD・SSD等におけるファイルシステム・フォーマット
◆(1) パーティションの作成
● MBRディスクの場合
● GPTディスクの場合
◆(2) ファイルシステム・フォーマットの基本構成
● NTFSのPartition Boot Record(Boot Sector)
● FAT32のPartition Boot Record(Boot Sector)
◆(3) クイックフォーマット
● MBRディスクの場合
● GPTディスクの場合
◆(4) 通常のフォーマット
◆(5) 既存ファイルと両フォーマットの挙動
◆(6) Windowsレジストリへの記録
◆(7) NTFSのLog File構造とバージョン問題
● 問題状況
● 対処法
■3. 光学ディスクのファイルシステム・フォーマット
◆(1) Compact Disc File System(CDFS)
◆(2) Universal Disk Format(UDF)
◆(3) ISOイメージ(ISO image)


一、フォーマットとは

 PCにおいて、フォーマットという言葉が盛んに用いられるが、この言葉が誤った意味で使われている記述を目にすることが少なくない。そこで、主にコンピュータの電子記録(記憶)媒体において用いられるフォーマットの意味を改めて確認しておきたいと思う。

 フォーマット(format)とは、一般的には、一定の形式・書式、又はそれを適用することをいう。電子記録媒体においては、情報を記録する形式、又はその形式を適用することをいう。

 厳密には、フォーマットは初期化(Initialization)とは異なる。初期化とは、ハードウェア又はソフトウェアを利用開始可能なある一定の状態におくことをいうと解すべきであると考えるが、それゆえに初期化は、その対象や場面によっては、フォーマットとほぼ同義の場合もあれば、フォーマットを別に行う必要がある場合もある(拙文『「初期化」について』参照)。また、フォーマットを説明するに際して、「初期化」は単に「初期状態にする」又は「消去する」といった意味で使われることもある。

 ストレージ[※1]のフォーマットには、大きく2つの種類がある。物理フォーマット(Physical Format)と論理フォーマット(Logical Format)である。

註※1 ストレージ:
 英語のstorageを指す用語である。しかし、この英語の発音に近似した表記は「ストーリッヂ」であろう。所詮英語の発音を正確に日本で表記できない以上、日本語で何と表記しようが構わないとはいえ、この表記はあまりにも英語の発音とかけ離れており、改めるべきであろう。当サイトにおいては、「ストーリッヂ」と表記したいところであるが、検索の便を考えて止むを得ず「ストレージ」の表記を使用する。因みに、application softwareの略語として、近時英語では「app」が使われようになったが、日本語では「アプリ」と言うようになった。これは、日本語では2文字より3文字の略語が好まれるからであろうと思われる。略語に関しては、それぞれの言語習慣にかかわることであるから、許容されるであろう。しかし、個人的には「アプリ」という略語を好まないので、当サイトの全ブログを通じて「アプリケーション」と表記するか、単に「ソフト」と略すことにしている。


二、物理フォーマット

■1. 物理フォーマットとローレベル・フォーマット


◆(1)  セクタの作成


 電子記憶媒体の中心であるHDD(Hard Disk Drive)は、プラッタというディスクの表面の記録磁性層(磁性体)に磁気を記憶させることにより情報を記録し、その磁気を読み取ることにより情報を読み出す。その最小の記録単位となるのが、セクタである。微小磁性粒子が均一に塗布されただけのプラッタ上に、ギャップ領域、サーボ情報(サーボデータ)領域[※2]、データ領域、誤り訂正符号領域等から構成されるセクタ[※3]を作成する作業を物理フォーマット又はローレベル・フォーマット(Low Level Format)という。HDDにおいては記録密度が極めて高いため、セクタの作成をするには、モーターと磁気ヘッドを微細かつ正確に制御する必要がある。それ故当然ながら、この作業はHDDの製造工程において専用の装置によって行われる。(電子情報通信学会「知識ベース」、「2章 ハードディスクドライブ」

註※2 サーボ情報領域:
 サーボ情報とは、セクタの位置情報であり、アドレス・データ(トラック番号とセクタ番号)とバースト信号が含まれている。ヘッドはサーボ情報のアドレス・データを手掛かりにセクタのあるトラックに移動し(シーク制御)、バースト信号をもとにそのトラックの中心を通るよう制御される(位置決め制御)。(東芝、「磁気ディスク装置の高性能化を支えるヘッド位置決め制御技術」)

 このサーボ(servo)とは、servomechanism(サーボ機構)の略であり、「エラーを感知する負のフィードバック(負帰還)を用いて装置の動きを訂正する自動的な仕掛け」のことである(Wikipedia、「Servomechanism」)。servoは、ラテン語のservus(slave, servant)に由来する(Webster's Third New International Dictionary)。

 また、ヘッドの動作には、高精度の制御が必要であり、HDDは一台毎にアクチュエータの形状や位置、アームとヘッドの取付位置等がわずかではあるものの異なるためヘッド位置が個別に調整されており、その情報は初期値としてHDDのプリント基板(Printed Circuit Board:PCB)上のEEPROM(Electrically Erasable Programmable Read-Only Memory)等の不揮発性メモリに格納されている。そのため、HDDの基板を同型のものと交換した場合であっても、元のHDDのこの情報を新たな基板の不揮発性メモリに書き移すか、その不揮発性メモリ自体を移植しなければ、ヘッドは正常に動作しないことがある。(「ハードディスク基板交換、HDD基盤交換」)

註※3 セクタ:
 1つのセクタのサイズはこれまで512バイトとされてきた。各セクタは、ギャップ・セクション、同期セクション、アドレス・マーク・セクション(サーボ情報領域)、データ・セクション、誤り訂正符号(Error Correction Code:ECC)セクションから構成されている。512バイトセクタのままでは、HDDの大容量化に伴い、セクタ数は膨大となるため、フォーマット効率が低下し、高密度化に伴い、1セクタにおける物理的欠陥のデータ全体に対する損傷の比率が高まることになる。そこで、8セクタを1つにまとめて、1セクタのサイズを4096バイト(4KB)とすれば、1セクタ毎に必要であるギャップやアドレス・マーク等の領域を減らすことが可能となり、データ容量の増加を図ることができるとともにフォーマット効率を高めることができる。さらに、1セクタのサイズの拡大は、物理的欠陥による損傷のデータ全体に対する比率を低減させることにつながり、ギャップ等の領域を減らすことによってECC領域を拡大することが可能となり、エラー訂正機能の改善をはかることができるようになる。(SEAGATE、 「アドバンスド・フォーマット4Kセクター・ハードディスク・ドライブへの移行」)

 こうして、2009年に、IDEMA(International Disk Drive Equipment and Materials Association、国際ディスクドライブ協会)により4KBセクタ(通称、4Kセクタ)の規格は、その名称がAdvanced Formatと定められ、承認されることになった。この技術をAdvanced Format Technologyと呼び、AFTと略称されることもある。

 Advanced Formatの登場により、従来の512バイト・セクタのディスクは、「512n」(512-byte native、512バイト・ネイティブ)と称し、Advanced Format対応ディスクは、512バイト・セクタをエミュレートする機能が備わったものを「512e」(512-byte emulation [emulated]、512バイト・エミュレーション)と呼び、512バイト・エミュレーション機能を省いたものを「4Kn」(4K [4KB] native、4Kネイティブ)と呼ぶようになっている。512eをサポートするOSは、Windowsでは、Vista以降であり、4Knをサポートするのは、Windows 8以降と公式には発表されている(MSDN、「Advanced format (4K) disk compatibility update」)。しかし、実際には、512eのディスクは、それに対応しアラインメントを行えるソフトウェアでフォーマットすれば、Windows XPでも使用することが可能である(例えば、BuffaloのDisk Formatter2)。

 なお、Microsoftの2013年の「Windows での 4K セクターのハード ディスク ドライブに関するマイクロソフトのサポート ポリシー」と題するWebページでは、Advanced Formatを512eと同じものと説明しているが、前述の通りそれは誤りであり、上記2017年の「Advanced format (4K) disk compatibility update」では修正されている。

◆(2)  ゼロフィル(Zero Fill)


 セクタを「0」(0x00)で埋めていくことを「ゼロフィル(Zero Fill)」というが、これもまた「物理フォーマット」あるいは「ローレベル・フォーマット」と呼ぶことがある。これは、保存したデータに対し「0」で上書きをするのであるから、データを消去するという機能を果たすことになる。

※参考:
・Phooen, Sonpooshi. 2015. 『「初期化」について』. http://blog.phooen.com/blog-entry-68.html

・片岡宏之, 中村滋男他. 2011. 「8群 情報入出力・記録装置と電源 - 2編 情報ストレージ - 2章 ハードディスクドライブ」, 電子情報通信学会「知識ベース」. http://www.ieice-hbkb.org/files/08/08gun_02hen_02.pdf

・高倉晋司, 石原義之, 保中志元. 2009. 「磁気ディスク装置の高性能化を支えるヘッド位置決め制御技術」, 東芝レビューVol.64 No.12. http://www.toshiba.co.jp/tech/review/2009/12/64_12pdf/f02.pdf

・Wikipedia. "Servomechanism". https://en.wikipedia.org/wiki/Servomechanism

・Haed Drive Parts. 「ハードディスク基板交換、HDD基盤交換」. http://ja.harddriveparts.com/replace_hdd_pcb_boards.html

・SEAGATE. 「アドバンスド・フォーマット4Kセクター・ハードディスク・ドライブへの移行」. http://www.seagate.com/jp/ja/tech-insights/advanced-format-4k-sector-hard-drives-master-ti/

・MSDN Microsoft. 2017. "Advanced format (4K) disk compatibility update". https://msdn.microsoft.com/windows/compatibility/advanced-format-disk-compatibility-update

・Microsoft. 2013. 「Windows での 4K セクターのハード ディスク ドライブに関するマイクロソフトのサポート ポリシー」. https://support.microsoft.com/ja-jp/help/2510009/microsoft-support-policy-for-4k-sector-hard-drives-in-windows

・東芝. 2011. 「ストレージ・テクノロジー」. http://toshiba.semicon-storage.com/product/storage/pdf/storage_technology_01.pdf

・東芝. 「アドバンスト・フォーマット」. https://toshiba.semicon-storage.com/jp/product/storage-products/trends-technology/advanced-format.html

・富士通研究所. 2009. 「磁気ディスク装置」. https://www.fujitsu.com/jp/group/labs/documents/resources/tech/techguide/list/hdd.pdf

・特許庁. 2007. 『平成18年度 特許出願技術動向調査報告書 高記録密度ハードディスク装置(要約版)』. https://www.jpo.go.jp/shiryou/pdf/gidou-houkoku/18info_harddisk.pdf

・Logitec データ復旧技術センター. 「コラム vol.006 アドバンスドフォーマット」. http://www.logitec.co.jp/data_recovery/column/vol_006/
(以上閲覧日: 2017年5月6日)


■2. 両者の区別


 両用語を区別して、一方を物理フォーマットと呼び、他方をローレベル・フォーマットと呼ぶ場合があるが、用語が逆転していることもある。また、両者を同義として2つの意味を持つとする場合などもある。実際にHDDを製造しているWestern Digital(以下WDと略す)、Seagate、日立、東芝等においても用語法は食い違っている。

● 日立ソリューションズのIT用語辞典では、「ローレベルフォーマットとは記憶媒体の信号列を初期化して読み書きができるようにすることである」とし、「この場合物理フォーマットと混同されやすい。物理フォーマットもデータに対して上書きなどをして初期化をすることでありかなり近い意味であるがローレベルフォーマットとは違うものである。」とはっきりと両者を区別している。

● HGST(現在はWDの傘下)のWindows Drive Fitness Test(WinDFT)というソフトには、「Erase MBR」と「Erase Disk」というオプションがある。その『WinDFTセットアップおよびユーザーガイド』には、「Erase MBR will only delete the partition of the drive while Erase Disk will write 0's to the entire drive.」と説明されており、Low Level Formatといった表記は見られない。HGSTのサイト内でlow level formatという語を検索したが、使われていない。

● 東芝のサイト内で、「ローレベルフォーマット」を検索すると、1件だけ出てくる。
 『USB MOドライブ 640MB 取扱説明書』)の「用語解説」に出てくる。「フォーマットは、物理フォーマット(ローレベルフォーマット)と論理フォーマット(ハイレベルフォーマット)の2つに分かれます。物理フォーマットとは、使用可能なディスクを作成するために、事前に不良のセクタを除外してディスクの表面にトラックとセクタを編成することです。論理フォーマットとは、物理フォーマットが終了した後に行うもので、オペレーティングシステムのボリュームデータ構造をインストールし、パーティションを設定するものです」(p.76)とある。

● Seagateの「How Do I Low-Level Format a SATA or ATA (IDE) Hard Drive? - What does "low level format" a SATA or ATA (IDE) drive mean?」と題されたWebページでは、「実のところ、"low level"という用語は、やや誤った名称である。かなり以前にMFM(Modified Frequency Modulation、これはフロッピーディスクや初期のHDDで使用された記録方式である。筆者註)ハードドライブで最初に使用されていたlow-levelプロセスは、現在、SATAやATA(IDE)ドライブの"low-level format"と呼ばれるものとは、ほとんど類似性がない。Seagateのデバイス上の全データを初期化する唯一の安全な方法は、SeaTools for DOSにあるzero fill eraseオプションである。これは、HDD全体にすべてゼロを書き込むという単純なプロセスである。」と説明されている。Seagateでは、Zero Fillを[Full] Eraseと表記しており、これをLow-Level Formatと呼ぶことには少し否定的である。

● WDは、Data Lifeguard Diagnosticsというソフトにおいては、「WRITE ZEROS」と表記しているが、このソフトを紹介する「How to low level format or write zeros (full erase) to a WD hard drive or SSHD」と題されたWebページでは、何ら注釈なく「Select the desired method to perform a low level format to the drive」などと記述している。WDは、write zerosをlow level formatと呼称することは許容しているようである。

 さらに、Zero Fillを実行し、データを消去することができるソフトにLow Level Formatという名称や項目を用いているものもある。HDD Low Level Format Tool(http://hddguru.com/software/HDD-LLF-Low-Level-Format-Tool/)やハードディスク番長の「ローレベルフォーマット(Low Level Format)-物理フォーマット」というWebページで紹介されているPowerMaxなどがそうである。

 また、Buffaloが無償で提供しているDisk Formatter(http://buffalo.jp/download/driver/hd/format.html)は、ゼロフィルを行うオプションを「物理フォーマット」と表記している。このDisk Formatterは、対応するファイルシステムがFAT12、FAT16、FAT32だけであるため論理フォーマットを行うソフトとしては今では活躍する場面は少ないが、「物理フォーマット」をUSB接続の外付けHDDやUSBメモリに対しても実行することができるので、その点では有用性がある。因みに、新たにNTFS、FAT32、exFATのフォーマットを行うソフトとしてDiskFormatter2がBuffaloから提供されている(http://buffalo.jp/download/driver/hd/diskformatter2.html:利用はBuffalo製品に限定される)。

 このように物理フォーマットとLow Level Formatの用語の使われ方が区々で当惑してしまうが、高密度化したHDD等においては、我々ユーザが行える作業はゼロフィルのみであるから、これを物理フォーマットと呼ぼうが、Low Level Formatと呼ぼうが、後述の論理フォーマットと区別することができれば、それほど問題はないであろう。ただ、フロッピーディスクやMOドライブ等では、セクタの編成とゼロフィルの両方の作業をユーザが行うことができるため、厳密に区別する必要がある場合もある。

※参考:
・日立ソリューションズ. IT用語辞典 「ローレベルフォーマット」. http://it-words.jp/w/E383ADE383BCE383ACE38399E383ABE38395E382A9E383BCE3839EE38383E38388.html

・HGST, a Western Digital company. 2012. 『WinDFTセットアップおよびユーザーガイド』. http://www.hgst.com/sites/default/files/pdfs/WinDFT%20Install%20and%20User%20Guide.pdf

・東芝. 2001. 『USB MOドライブ 640MB 取扱説明書』. https://dynabook.com/pc/peripheral/support/manual/i34am.pdf

・Seagate. 'How Do I Low-Level Format a SATA or ATA (IDE) Hard Drive? - What does "low level format" a SATA or ATA (IDE) drive mean?'. http://knowledge.seagate.com/articles/en_US/FAQ/203931en

・Western Digital. "How to low level format or write zeros (full erase) to a WD hard drive or SSHD". http://support.wdc.com/knowledgebase/answer.aspx?ID=1211

・ハードディスク番長. 「ローレベルフォーマット(Low Level Format)-物理フォーマット」. https://hddbancho.co.jp/hdd_lowlevelformat.html

・Buffalo. 2009. 『Disk Formatterソフトウェアマニュアル』. http://manual.buffalo.jp/buf-doc/35000939-11.pdf

・Buffalo. 2017. 『Disk Formatter2の使いかた』. http://manual.buffalo.jp/buf-doc/35020283-06.pdf
(以上閲覧日:2017年5月7日)


■3. ゼロフィル(Zero Fill)の実行


 Zero Fillとしての物理フォーマット(Low Level Format)は、それを行うソフトウェアによって、MBRなどのブート領域だけをゼロで上書きする操作とディスク全体にゼロを書き込む操作とを選択できるものがある。前者は、「Erase MBR」、「Erase Boot Tracks」などと表示され、後者は、「Erase Disk」、「Full Erase」、「Zero ALL」などと表示される。これと類似した操作は、Windowsに実装されているDiskPartコマンドで行うことができる。

◆(1)  DiskPartによるゼロフィル


 先ず、Windowsにおいてコマンドプロプトを管理者権限で開き、「diskpart」と入力してEnterキーを押下する。

 DISKPART> list disk

 これでPCに接続されている全てのストレージ・デバイスが表示され、対象となるストレージのディスク番号を確認する。

 DISKPART> select disk #

 #に確認したディスク番号を入力する。

 「ディスク # が選択されました。」
 と表示される。

 DISKPART> clean

 これを実行すると、
 「DiskPartはディスクを正常にクリーンな状態にしました。」
 と表示され、選択されたディスクのMBRやGPT等のブート領域のみがゼロで上書きされて消去される。

 DISKPART> clean all

 これを実行すると、上記と同様のコメントが表示され、選択されたディスク全体がゼロで上書きされて全てのデータが消去される。当然、この処理には、ディスクのサイズによってはかなりの時間を要するので、留意が必要である。

 ディスク全体にゼロフィルを実行した場合のみならず、MBRやGPT等の領域だけにゼロフィルを実行した場合であっても、当然OSからは、ファイルはおろかパーティションも見ることはできず、ディスク全体は未割り当て領域と認識される。このディスクは、Windowsの「ディスクの管理」というMMCスナップインでは、「初期化されていません」と表示され、「ディスクの初期化」が促され、MBR又はGPTのいずれのパーティション方式を適用するかを決定することになる。それから、改めてパーティションを作成し、論理フォーマットへと進むことになる。MBR・GPT等の領域だけを消去するオプションは、パーティション作成時に不具合が生じた場合やプライベートでディスクを再利用する場合に有用である。

 また、cleanコマンドは、MBR・GPT領域だけを消去する以上、パーティション内のデータはほとんどそのまま残っており、誤ってこれを実行したとしても、データの復旧は可能である。実際に、cleanを行った後のディスク内をdisk editorで見てみると、先頭のセクタ 0からセクタ 2047までの1MBのみが「0x00」で上書きされていることが分かった(図-1)。慌てず、データの復旧・復元を試みることである。

※追記:
 cleanコマンドは、ストレージの先頭の1MBのみならず、GPTのバックアップが存在する末尾の1MBも消去するとのこと(@IT、Tech TIPS、「Windowsで、diskpartのcleanコマンドを使ってディスクの内容を消去する」)。(2018.8.17)


 図-1 DiskPartのclean実行範囲
 Format1-Figure1
既にcleanを行ったHDDに対して、disk editor(HxD.exeを使用。以下同じ)を使ってセクタ 0からセクタ 2048までを全て0xFFで埋めて、改めてcleanを実行してみた。セクタ 0からセクタ 2047までは消去されているが、ご覧のようにセクタ 2048は消去されていない。勿論、セクタ 2049以降のデータもそのまま残っている。

(2)  USBフラッシュメモリにおけるCleanコマンド


 DiskPartのcleanコマンドには、他のゼロフィルを行うソフトと異なる振る舞いがある。USBフラッシュメモリのMBRに対する振る舞いである。図-3のようにMBRのパーティション・テーブル以外の領域がゼロで上書きされないまま残されるのである。clean allコマンドでも同様である。具体的には、Windows 7では(DiskPartバージョン6.1.7601)、MBRのオフセット0x1B8にある4バイトのDisk Signature及びそれに続く2バイト及びそれに続くパーティション・テーブルはゼロで上書きされるが、それ以外のブートストラップ・コード領域及びBoot Signatureはそのまま残る。驚いたことに、MBRを完全に消去し、0x00で埋めたUSBメモリ(図-2)に改めてcleanコマンドを実行すると、ブートストラップ・コード領域とBoot Signatureが書き加えられるのである(図-3)。従って、より正確には、ブートストラップ・コード領域及びBoot Signatureは、cleanコマンドにより同じ内容が上書きされていると言うべきである。さらに、Windows 10では(DiskPartバージョン10.0.15063.0)、Disk Signatureがゼロで上書きされるのではなく、書き換えられて残ることになる。一旦Windows 7のDiskPartでcleanを行ってDisk Signatureが消去されたUSBメモリに対して、改めてWindows 10のDiskPartでcleanを実行すると、新たにDisk Signatureがランダムに生成されるのである(図-4)。その他の点はWindows 7と同様である(Windows 7・10以外は未確認)。どういう理由・意図があってこのような仕様になっているかは、今のところ不明である。(MBR及びDisk Signatureについては「フォーマット、その2~論理フォーマット」を参照)

 図-2 Zero Fillを行ったUSBメモリ
 Format1-Figure2-0

 図-3 USBメモリにおけるclean(Windows 7)
 Format1-Figure2

 図-4 USBメモリにおけるclean(Windows 10)
 Format1-Figure3


4. データの完全消去(Data Sanitization)


 情報管理の観点から、データの抹消を行う場合、ディスク全体にゼロフィルを実行することになるが、HDDにおいては、ゼロフィルを1回行ったしてもデータ抹消は完全ではないとする意見がある。HDDに保存してあるデータに「0x00」で上書きを1回行ったとしても、残留磁気(Residual Magnetism、Remanence:「残留磁束密度」とも)を完全に消失させることはできず、その僅かに残った磁気からのデータ復元の可能性は皆無ではない以上、データを完全に消去する(Sanitize)には少なくとも3回は上書きを行うべきだというのである。

(1) DoD 5220.22-M


 この見解に基づいて様々な公的機関によって種々のデータ消去に関する規格が策定されている。その中で最も流布しているのが、米国国防総省準拠方式と呼ばれ、DoD 5220.22-Mと表記されるデータ消去方式であろう。データ消去専用のソフトウェアには、必ずと言ってよいほどこの方式が選択肢の1つに挙っている。

 DoD 5220.22-Mという名称は、機密情報保護のために、米国国家安全保障会議(National Security Council)が最終的に責任を負い、国防長官(Secretary of Defense)が執行責任者となって立ち上げられたNational Industrial Security Program(NISP)を実際に管理執行する国防総省(Department of Defense: DoD)国防保安局(Defense Security Service: DSS)がその運用マニュアルとして策定した『National Industrial Security Program Operating Manual』(NISPOM)に付されているいわゆる管理番号である(図-5)。

 図-5 NISPOMの表紙
 Format1-Figure5
 (http://www.dss.mil/isp/fac_clear/download_nispom.html)

 ところが、そのNISPOMの『February 28, 2006』や『Incorporating Change 1 March 28, 2013』には、「CHAPTER 8. INFORMATION SYSTEM SECURITY」の「Section 3. Common Requirements」に「8-301. Clearing and Sanitization」と題される項目はあるが、具体的な消去方式が指示されている訳ではない。『Incorporating Change 2, May 18, 2016』に至っては、「Clearing and Sanitization」という項目すらなくなっている。

 実は、『January 1995』版に付属していた『National Industrial Security Program Operating Manual Supplement』(DoD 5220.22-M-Sup 1)「Section 5. Software and Data Files」、「d. Overwriting, Degaussing, Sanitizing, and Destroying Media.」、「(1) Overwriting Media.」及び「Table 1 Clearing and Sanitization Data Storage」に示されていた消去方式がDoD 5220.22-Mと呼称されるようになったとされる。前者には、「To clear magnetic disks, overwrite all locations three (3) times (first time with a character, second time with its complement, and the third time with a random character).」(8-5-2)、後者には、「Overwrite all locations with a character, its complement, then with a random character. Verify that all sectors have been overwritten and that no new bad sectors have occurred.」(8-5-4)と記述されており、この3回の上書き方式(固定値、補数、乱数をそれぞれ上書きした後、検証を実施)がDoD 5220.22-Mというデータ消去方式となったのである。これがその後のデータ消去方式の中心的な役割を果たしてきた。このSupplementは、もはやDSSでは閲覧することができなくなっているが、Federation of American Scientists(FAS、米国科学者連盟)のライブラリから入手することが可能である(https://fas.org/sgp/library/nispom.htm)。その当時のDSSのClearing and Sanitization Matrix (C&SM)も、DSSのサイトでは閲覧できないが、University of Oklahoma Health Sciences Center Information Technologyのサイトからであれば目にすることができる(https://it.ouhsc.edu/policies/documents/infosecurity/DoD_5220.pdf)。

 その後、NISPOMの2006年版の冒頭で「"National Industrial Security Program Operating Manual (NISPOM)," January 1995 (hereby canceled)」と表明され、1995年版は取り消されている。現在(2017年5月)、NISPOM『January 1995』版は、DSSのサイトで閲覧することは不可能となっており、Defense Technical Information Center(DTIC、米国国防技術情報センター)のアーカイブにも見つけることはできない(http://www.dtic.mil/whs/directives/corres/pdf)。さらに、DSSが発行していたIndustrial Security Letter(ISL)に記載していたClearing and Sanitization Matrix (Updated June 28, 2007)では、HDDなどの「Non-Removable Rigid Disk」のデータ消去方法は、消磁(Degauss)又は破壊(Destruction)に変更されていたが、これもまたその後取消となっている。

 なお、さらにDoD 5220.28-STDという7回の上書きを行う方式が、その「STD」の略語が示す通り、米国国防総省準拠方式の標準(standard)とされたが、後述するように、7回も上書きをしなければデータを完全に消去できないようなHDDは、実際にはもはや使用されていないといえよう。

(2) Secure Erase


 これに対し、米国商務省(U.S. Department of Commerce)配下の米国国立標準技術研究所(National Institute of Standards and Technology: NIST)は、CMRR(Center for Memory and Recording Research)が研究開発したSecure Eraseを承認しており(NIST 8008-88)、Secure Erase Commandは、米国国家規格協会(American National Standards Institute: ANSI)によりATAの規格とされ、「2001年以降に製造されたATAのHDD(15GB超)はSecure Erase Commandを内蔵し、CMRRの安全消去検証試験に合格している」(NIST、『Special Publication 800-88, Guidelines for Media Sanitization, September, 2006』、p.27)と説明されている。

 Secure Eraseは、データ消去のためにユーザが利用可能な全領域に1回の上書きを行うものであるが、代替処理されたセクタに対しても、さらには通常のソフトウェアではアクセスすることのできないHPA(Host Protected Area)やDCO(Device Configuration Overlay)の領域に対しても上書きを行うことが可能である(拙文「Secure Eraseとは」参照)。2000年以降、HDDの高密度化に伴う残留磁気の減少と高性能化に伴う不良セクタの減少が進むにつれ、2001年以降に製造されたHDD(15GB超)において、研究室レベルの技術によるデータ復元を防ぐにも1回の上書きで充分であるとする見解を、NISTは前掲2006年版の『Guidelines for Media Sanitization』(p.6)で明らかにしている。

(3) 完全消去の現況


 今日においても、HDD等の記録装置におけるデータの完全消去の方法としては、専用の装置や設備が必要な消磁や破壊に比べれば実施が容易なDoD 5220.22-MやSecure Eraseが多くの機関で採用されているようである。この辺りの事情は、「データ消去に関する海外規格の動向」(瀧澤和子、早稲田大学 WBS研究センター 招聘研究員、1916年4月11日)に詳しく解説されている。それによると、2000年以降は、3回上書きから1回上書き方式に主流は移ってきているが、データの種類によっては複数回の上書きを定めている機関もあるとのことである。「上書き抹消における適切な書込み回数よりも、むしろ、適切な消去技術を選択する判断基準に議論の対象がシフト」しており、「媒体ごとに適切なデータ消去方法を選択するための組織の意思決定の基準策定、抹消の検証および確認の重視など、確実な消去を行うため、いわばデータ消去に関するマネジメントとでもいうべき態勢づくりを重視する傾向」にあるという。

 なお、SSDにおいてもこれらデータ消去方式は有効であるとされるが、SSD特有の性質による格別の考慮が必要となる場合もあるという。

 さて、このDoD 5220.22-Mを行えるソフトは種々あるが、Darik's Boot and Nuke(DBANと略称されていたが、現在はDBANが正式名称となっている。https://dban.org/)が広く使われているようである。最新版は、2.3.0(2015-12-09)であるが、以前のバージョンはSourceForgeからダウンロードできる(https://sourceforge.net/projects/dban/files/dban/)。dban-1.0.7(2006-08-13)とdban-2.2.6(2010-05-24)は、よく使用されているバージョンのようである。しかし、1.0.7と2.2.6は、いずれも当方の自作機の3台ではエラーを生じ使用することができず、2.3.0のみが使用可能であった。

 DBANは、現在Blanccoが提供しており、個人用途向けの無償版とされ、業務用途向けには有償のBlancco Drive Eraserが勧められており、その無償評価版としてBlancco Drive Eraser Freeが用意されている。

 DBANの「Wipe Method」(消去方法)は6種選択でき、デフォルトでDoD 5220.22-Mが実行される。そこには「DoD Short」と表記され、「The American Department of Defense 5220.22-M short wipe.」と説明されているが、3回の上書きの後「blanking pass」(ゼロフィル)を1回行うものであり、一般にはこれで充分であろう。また、「Quick Erase」も選ぶことができ、1回の「blanking」(ゼロフィル)が実行される。

※【追記】:水平磁気記録方式から垂直磁気記録方式へ


 1956年にIBM製のHDDが登場して以来長らく、その記録方式は、磁気記録テープと同様の水平磁気記録方式面内磁気記録方式・長手磁気記録方式ともいう)であった。それは、磁性層を水平方向に磁化する方式であり、磁束の方向は記録面に平行であるため、磁束の向きを変えることによって1bitの「0」と「1」(二進数)を表すことになる。N極←S極・N極←S極のように磁束が同じ向きに並んでいる所は「0」、N極←S極・S極→N極又はS極→N極・N極←S極のように磁束が反転している所は「1」となる。

 これに対し、垂直磁気記録方式は、磁性層を記録面に対して垂直に磁化する記録方式であり、1977年に岩崎俊一博士(当時、東北大学教授)が発表した技術を基に2005年に東芝がこの方式のHDDを世界で初めて製品化した。爾後、瞬く間にHDDの記録方式は、垂直磁気記録方式が水平磁気記録方式に取って代わることなり、2010年頃には出荷されるHDDのほぼすべてが垂直磁気記録方式となっている(岩崎俊一博士、「垂直磁気記録の開拓と実現」、日本国際賞2010受賞記念講演、2010年)。この方式では、水平方向に同じ極が並んでいる場合、例えば、NN又はSSが「0」であり、異なる極が並んでいる場合、例えば、NS又はSNが「1」と判断されることになる。

 水平磁気記録方式においては、磁化点移転のノイズを低減するために磁性粒子の水平方向のサイズを小さくする必要があり、また、隣接する磁束から受ける反磁界の影響を低減するために磁性粒子の垂直方向のサイズも小さくする必要あるとされる。とすれば、磁性粒子の微細化を進めると、磁性粒子の体積は小さくならざるを得ず、「熱揺らぎ」という熱エネルギーによって、結晶粒の磁化方向が変化しデータが失われてしまう現象が現れるとされ("「熱揺らぎ」の問題とは?"、2002年)、水平磁気記録方式のHDDの記録密度を高めるには限界があると言われていた。

 ところが、垂直磁気記録方式では、隣り合う磁束は反発し合うことはなく、磁力を強め合うことから、磁性粒子の水平方向のサイズを小さくしても、磁性粒子の垂直方向のサイズを小さくする必要がないため、熱揺らぎ問題は生じないことになると言う。こうして、垂直磁気記録方式を採用するHDDは記録密度を飛躍的に向上させることが可能となり、その結果、水平磁気記録方式はその座を垂直磁気記録方式に譲り、姿を消すことになった。

 前述のDoD 5220.22-Mを始めとする複数回の上書き方式によるデータ消去法は、HDDの記録方式として水平磁気記録方式が採られていた時代に策定されたものである。前掲の『DoD 5220.22-M-Sup 1』の『January 1995』版には、「The effectiveness of the overwrite procedure may be reduced by several factors: ineffectiveness of the overwrite procedures, equipment failure (e.g., misalignment of read/write heads), or inability to overwrite bad sectors or tracks or information in inter-record gap.」 (8-5-2)と記述され、上書き方式は種々の要因でデータ消去の効を奏しない危惧があるとされており、1995年当時、HDDの容量はせいぜい10GB程度であり、1bitの磁気領域も大きく、磁気ヘッドのトラッキング精度も低く、上書き後の残留磁束あるいは漏洩磁束による痕跡をもとにした上書き前のデータ復元の可能性は存在していたと考えられる。少なくとも、当時は、その危険性は現実のものとして認識されていたといえる。そのためにより確実な消去方式が必要とされ、DoD 5220.22-Mのような複数回の上書き方式が提唱されたのであろう。

 2005年以降、水平磁気記録方式から垂直磁気記録方式へと切り替わっていく中で、磁気ヘッドの構造の変化や高精度化によって劇的に記録密度が高まるに伴い、実際上、一回の上書きを行えば、もはや残留磁束や漏洩磁束等の痕跡を検出して上書き前のデータを復元することは不可能となったとされている(沼田 理、「データ抹消に関する米国文書(規格)及び HDD、SSD の技術解説」、2016年)。こうして、Secure Erase等の一回の上書き方式がデータを消去するには充分であるとなり、消去方式の主流となってきたのであろう。

 なお、新たなHDDの記録方式としては、Heat-Assisted Magnetic Recording(HAMR、熱アシスト磁気記録方式)がSeagateにより開発され、Microwave-Assisted Magnetic Recording(MAMR、マイクロ波アシスト磁気記録方式)がWestern Digitalや東芝により開発されている(電子デバイス産業新聞)。2018年12月に熱アシスト磁気記録方式による16TBのHDDが製品化されており(PC Watch)、2019年末までには20TBを超える製品が量産化に入るとされ、3.5インチHDDでは40TBが可能であると言われている(PC Watch)。10TBを超えるHDDの記録方式は、これらHAMRやMAMRが担うことになるのであろう。(2019.3.3)

※【追記】:cipher.exeのデータ消去機能について


 Windowsには、NTFSの暗号化機能(Encrypting File System: EFS)を制御するcipher.exeというコマンドラインツールがあるが("cipher")、これにはデータの完全消去を行う機能が付加されている([/w]パラメーターを使う)。通常のデータ消去ソフトは、パーティション内あるいはディスク内のすべてのセクタを対象とするが、cipher /wは、パーティション内に存在し使用されているOSやアプリケーション、ユーザーによって保存されたファイル等は消去せず、空き領域のみを消去の対象とする。これによってパーティション内の空き領域に残っている削除済みデータを完全に消去することができる(「暗号化ファイル システム用 Cipher.exe セキュリティ ツール」)。

 コマンドプロンプトを開き、
例えば、D:ドライブを対象とする場合は、
cipher /w:d:
と入力して、実行するだけである。

 これは、ファイルシステムがNTFSの場合にしか使えないが、現在使用しているソフトやファイルはそのままにして空き領域だけをきれいに消去したいときは、他のソフトを用意する必要がないので便宜である。

 ただし、cipher /wは、3回の上書きを行うため(バイト・データとして0x00、0xFF、乱数を書き込む)、容量の大きなパーティションで実行する際は、かなりの時間を要するので注意する必要がある(「Windowsでディスクの内容を完全に消去する」)。(2020.9.8)

※参考:
・DSS(米国防保安局). 2006. NATIONAL INDUSTRIAL SECURITY PROGRAM OPERATING MANUAL February 28, 2006. http://www.dss.mil/documents/odaa/nispom2006-5220.pdf

・NISPOM Portal. 2013. NATIONAL INDUSTRIAL SECURITY PROGRAM OPERATING MANUAL FEBRUARY 2006, Incorporating Change 1 March 28, 2013. http://www.nispom.org/NISPOM-download.html

・DSS. 2016. NATIONAL INDUSTRIAL SECURITY PROGRAM OPERATING MANUAL FEBRUARY 2006, Incorporating Change 2, May 18, 2016. http://www.dss.mil/isp/fac_clear/download_nispom.html

・FAS(米国科学者連盟). 1995. NATIONAL INDUSTRIAL SECURITY PROGRAM OPERATING MANUAL SUPPLEMENT Februay 1995. https://fas.org/sgp/library/nispom.htm

・University of Oklahoma Health Sciences Center Information Technology. 1995. Clearing and Sanitization Matrix (C&SM). https://it.ouhsc.edu/policies/documents/infosecurity/DoD_5220.pdf

・DSS. Industrial Security Letter, ISL 2007-01 (October 11, 2007), pp.19-22, "Clearing and Sanitization Matrix (Updated June 28, 2007)". http://www.dss.mil/documents/isp/ISL%202007-01.pdf

・NIST. 2006. Special Publication 800-88, Guidelines for Media Sanitization, September, 2006. http://ws680.nist.gov/publication/get_pdf.cfm?pub_id=50819

・情報処理推進機構. 「セキュリティ関連NIST文書」. https://www.ipa.go.jp/security/publications/nist/

・Phooen, Sonpooshi. 2012. 「Secure Eraseとは」. http://blog.phooen.com/blog-entry-32.html

・瀧澤和子. 1916. 「データ消去に関する海外規格の動向」. https://digitalforensic.jp/wp-content/uploads/2016/02/standards.pdf

・Hashim M. S. Alawadi, Joseph D. Mount and Khalid J. Elibiary (Tabernus). "Security, Remanence, and Sanitizing of Sensitive and Confidential Data". http://www.tabernus.com/press/ITNS_Paper_Data_Remanence.pdf (Tabernusは、2015年にBlancco Technology Groupに買収されている。)
(以上閲覧日:2017年5月28日)

・岩崎俊一博士. 2010. 「垂直磁気記録の開拓と実現」(日本国際賞2010受賞記念講演). http://www.japanprize.jp/data/prize/commemorative_lec_2010_j.pdf

・ナノエレクトロニクス. 2002. 「「熱揺らぎ」の問題とは?」. 「ハードディスクとその将来」. http://www.s-graphics.co.jp/nanoelectronics/kaitai/harddisk/4.htm

・沼田理. 2016. 「データ抹消に関する米国文書(規格)及び HDD、SSD の技術解説」. https://digitalforensic.jp/wp-content/uploads/2016/02/technical-aspect.pdf

・アドバンスデザイン株式会社. 2013.「vol.3 ハードディスク(HDD)の磁性体について」. https://www.a-d.co.jp/support/g/dr-column/mag-ic/3.html

・西村二郎. 2015. 「ハードディスク事業にみる新事業の技術経営課題」. http://www.nishimura-reports.jp/HDProject.pdf

・電子デバイス産業新聞. 2018. 9/21. https://www.sangyo-times.jp/article.aspx?ID=2758

・PC Watch. 2018. 12/5. https://pc.watch.impress.co.jp/docs/news/1156805.html

・PC Watch. 2017. 10/26. https://pc.watch.impress.co.jp/docs/news/1088208.html
(以上閲覧日:2019年3月3日)

・Microsoft Docs. 2017. "cipher". https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/cipher

・Microsoftサポート. 2019. 「暗号化ファイル システム用 Cipher.exe セキュリティ ツール」. https://support.microsoft.com/ja-jp/help/298009/cipher-exe-security-tool-for-the-encrypting-file-system

・ITmedia. 2011. 「Windowsでディスクの内容を完全に消去する」. https://www.atmarkit.co.jp/ait/articles/0303/01/news003.html
(以上閲覧日:2020年9月8日)


5. セクタの再生


 ところで、物理フォーマットやデータの抹消とは異なり、HDDのセクタの再生を行うソフトウェアがある。HDD Regeneratorというソフトである。これは、その名の通りセクタの再生を行なうものであり、HDDの不良セクタの修復を試みるソフトである(http://www.dposoft.net/hdd.html)。

 このHDD Regeneratorの起動画面には、冒頭「HDD Regenerator serves to repair bad sectors on damaged hard drives without any loss of the existing data.(HDD Regeneratorは、既存のデータをそのままに、損傷を受けたHDDの不良セクタの修復を行なうものである。」と表示される。上記のサイトには、「How it works」と題されて、「不良セクタによって損傷を受けたHDDのほぼ60%は、ディスク表面が誤って磁化されています。我々は、損傷を受けたディスク表面を修復するために使用するアルゴリズムを開発しました。この技術は、ハードウェアに依存せずに、多くの種類のHDDに対応し、ローレベル・フォーマットでさえ修復できない損傷を修復するものです。その結果、これまで読み取れなかった情報が回復されることになります。この修復方法によれば、HDD上の既存の情報は影響を受けないのです。」と説明されている。

 HDD Regeneratorは有償ソフトであるが、free demo versionもある。この無償のデモバージョンを使えば、最初に見つかった不良セクタの修復を試み、その結果に基づきフルバージョンによってディスク全体を再生することが可能かどうかを示してくれるという。不良セクタによってデータを読み出せなくなった場合、およそ60%は再生可能だというのであるから、最後の頼みの綱として試してみる価値はあると思われる。
 ただし、HDDの全てのセクタに対して一つ一つ丁寧に作業を行うため完了には相当の時間を要するとのことなので、留意しておく必要がある(ハードディスク番長、「HDD Regeneratorで不良セクタを修復する」)。

※参考:
・ABSTRADROME. HDD Regenerator. http://www.dposoft.net/hdd.html

・ハードディスク番長. 「HDD Regeneratorで不良セクタを修復する」. https://hddbancho.co.jp/hdd_regenerator.html
(以上閲覧日:2017年6月4日)

6. システムエリア(サービスエリア)


 HDDのディスク上には、システムエリア又はサービスエリアと呼ばれる領域がある。そこには、HDDが正常に動作し、機能するための情報が保存されている。それは、最初のセクタ 0より外周のトラックに存在し、ユーザがアクセス可能な最後尾のセクタより後方に存在してHDDベンダーが独自の設定やサービスのために使用するHPA(Host Protected Area)やDCO(Device Configuration Overlay)とは異なる。

システムエリアは、
●システム情報
 ・HDDの仕様に関する情報(HDDモデル名/シリアルナンバーなど)
 ・S.M.A.R.T.(HDDの自己診断機能)
 ・P-List(製造段階で生じた不良セクタに関する情報)
 ・G-List(出荷後に生じた不良セクタに関する情報とその再配置情報)
 ・ファームウェア
 ・ゾーンテーブル(HDDの外周部と内周部の記録密度を調整するための情報)
 ・セキュリティ情報(パスワードや暗号化に関する情報)
●メンテナンス・トラック
●キャリブレーションエリア(HDD本体の発熱や、環境の変化によってHDDのプラッタが膨張したり、ヘッドのアライメントに歪みが生じるため、ヘッドがトラックの中心を正確にトレースできるようにHDDは定期的に歪みを補正するキャリブレーション処理を自動で行っている。)
●イニシャライゼーション・エリア
 などから構成されている(データ復旧センター、「ハードディスク故障箇所の特定について」)。

 HDDによっては、前述の註※2で触れたHDDの基板にある不揮発性メモリに、ヘッド位置の初期値だけでなく、フォームウェアの一部やHDDを特定する固有の情報等が格納されており、電源が入るとこの情報と上記のシステムエリアの情報とが照合され、確認後に正常に動作を開始するものもあるとされる(DataBE Data Recovery Service、「How Hard Drive works: Firmware on Disk Platter and PCB」)。

※参考:
・データ復旧センター. 「ハードディスク故障箇所の特定について」. http://www.drivedata.jp/hdd/hdd-troublepoint.html

・DataBE Data Recovery Service. "How Hard Drive works: Firmware on Disk Platter and PCB". http://www.databe.com/articles/article6.html
(以上閲覧日:2017年6月4日)

フォーマット、その2~論理フォーマット」】

tag : フォーマット物理フォーマットlow-level-formatセクタ

プロフィール

そんぷうし ふうえん

Author:そんぷうし ふうえん

忙中閑は、こっそりと見出す。
カミさんと子どもたちが寝静まるのを待って、夜な夜なPCの前に端座し、その不可思議なる箱の内奥にそっと手を入れては、悦に入る日々なのであります。
時としてその手はPC以外の内奥にも。


※ リンク貼付及び引用は自由ですが、引用する場合は該当ページのURL及びタイトルを明記して下さい。

Automatic Translation
If you click a language below on any page, the translator is supposed to display the latest page at first. So you need to jump back to the previous page you were about to read.
Please note that there are some translations that are non-grammatical and do not accurately reflect the meaning of the originals because of machine translation.
 【Translated by Google Translate】
全記事一覧表示

   全ての記事のタイトルを表示する

最新記事
カテゴリ別アーカイブ
最新コメント
月別アーカイブ
検索フォーム
リンク
最新トラックバック
RSSリンクの表示
累計閲覧回数
  
QRコード
QR