« Firefoxのマウスホイール動作をカスタマイズ | トップページ | VMware PlayerでマウントしたISOイメージからyumでパッケージをインストール »

2012年1月23日

Windowsの新ファイルシステムReFSが防ごうとしている「torn write」

Building Windows 8ブログにReFSの記事が掲載された。NTFSの後継となる新しいファイルシステムで、名称はResilient File System(回復性のあるファイルシステム)に由来する。その名前が示すとおり、電源断などの異常が起きてもファイルが破損しないように、そしてもしファイルシステムに異常が見つかっても、全体をオフラインにすることなく、異常部分を切り離して業務を継続できるように設計されている。

記事の中に「torn write」という聞き慣れない言葉が出てきた。以下の部分である。

The main disadvantages of a journaling system are that writes can get randomized and, more importantly, the act of updating the disk can corrupt previously written metadata if power is lost at the time of the write, a problem commonly known as torn write.

「commonly known」と書いているが、Googleで検索すると5000件弱しかヒットしない。検索結果の多くがExchange Serverのエラーメッセージに関するページである。「How to use Eseutil to test transaction log files for damage in Exchange 2000 Server and in Exchange Server 2003」の中で、torn writeを定義している。マイクロソフトによる日本語訳は「データの欠落したページ」「書き込み時のデータ欠落」である。

A torn write is an incomplete physical write that is left in the E00.log file after the database service suddenly stops. A torn write may be caused by a power failure, by an operating system crash, by invoking End Process on the database process, or by using a termination utility such as Kill.exe. A torn write causes checksums on the affected transactions in the log file to be calculated incorrectly, and the log is then detected as damaged by Eseutil.

FAST08でNetAppの技術者たちが発表したものと思われるプレゼンテーションも参考になる。「Torn Write」は、ブロックの一部だけが書き込まれ、セクタの一部が失われるが、Writeは成功するとされている。

Parity Lost and Parity Regained
http://www.cs.berkeley.edu/~krioukov/ParityLostAndParityRegained-FAST08.ppt

元のブロックを更新中に電源が落ちると、そこにあったデータの一部が書き換わり、新しいデータは一部しか反映されていないという中途半端な状態になり、データが破損する。チェックサムが不正となるので、問題があることが検出できるが、破損したデータはリカバリできない。これを防ぐためReFSは新しいブロックを割り当てて、更新データをそこに書き込む(allocation on write)。書き込み途中で電源が落ちても、元データは手つかずのまま残っている。とブログは書いている。

ZFSも似たようなアプローチを取っている。ブロックを更新するときに常に新しいブロックを割り当てる。ファイルシステムを構成するツリーの最上位まで正しく更新完了するまで、以前のデータを保持する。もし更新途中で問題が起きた場合は、更新前の状態に戻す。アトミックなトランザクションとして行われるため、ファイルの状態は更新前か更新後かどちらかに定まり、中途半端な状態にはならない。

|

« Firefoxのマウスホイール動作をカスタマイズ | トップページ | VMware PlayerでマウントしたISOイメージからyumでパッケージをインストール »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« Firefoxのマウスホイール動作をカスタマイズ | トップページ | VMware PlayerでマウントしたISOイメージからyumでパッケージをインストール »