56505: Acronis Files Connect: NTFSの循環参照

次の言語でも参照できます:

use Google Translate

次の製品に該当します: 

Last update: 11-07-2017

要約

Windows 2008サーバーをフリーズまたはハングアップさせるNTFS破損の問題がMicrosoftに検出されました。この記事には、破損の定義、試験装置で破壊を再現できたいくつかの方法、及びサーバーのフリーズを防ぐための可能な回避方法について説明しています。詳細に興味があれば、ぜひご参照ください。簡単に問題を解決するために、MicrosoftのHotfixをダウンロードしてください:https://support.microsoft.com/ja-jp/kb/2866695 

詳細

ここで説明される特定の破損は、Windowsの自己回復システムが修正できない複数レベルのNTFS循環参照です。循環参照は、例えば、NTFS IDの上にNTFSの親IDが存在し、その親IDがまた前者のIDを指していることです。NTFS ID xxxxに同じID(xxxx)のある親IDが存在する場合、1つのレベルで発生する循環参照となります。 この場合、Windows 2008の自己回復システムに自動的に修正されます。しかし、a->b->c->aのように、より深くネストされた問題の場合、MicrosoftのHotfixがないと、カーネルの無限ループに繋がります。サーバーもハングアップします。 

GroupLogicが初めてこの問題が再現できたのは、Macクライアントを使って、サーバーで同じフォルダ階層の2つのウインドウを同時に開いた時です。あるフォルダをその下位のフォルダに移動するために、ユーザーが1つ目のウインドウから2つ目のウインドウへフォルダをドラッグします。すると、循環参照になります。言い換えると、1つ目のウインドウからaフォルダを2つ目のウインドウのa/b/cのcフォルダへ移動することです。より稀な場合ですが、二人の違うユーザーが非常に短時間でフォルダを移動すると、循環参照になることもあります。例えば、山田さんはaフォルダをx/y/zに移動しますが、殆ど同じタイミングで田中さんがxフォルダをa/b/cに移動することです。

複数レベルのNTFS循環参照が発生する場合、Acronis Files Connect(以前、ExtremeZ-IP)がハングアップします。なぜハングアップするかというと、Acronis Files ConnectはOSにそのフォルダに関する情報を要求すると、カーネルが無限ループに入るからです。Acronis Files Connectには組み込みセーフガードがあるので、同じ操作のスレッドが5分以上継続する場合、Acronis Files Connectはこのプロセスを停止してみます。循環参照が5分続いてから、Acronis Files Connectはスタックスレッドを終了しようとします。残念ながら、5分経ってからはもう遅すぎます。カーネルタスクを実行するAcronis Files Connectの別のスレッドは、この1つのスレッドに優先されます。サービスはスタックスレッドを終了するのに十分なリソースでも得られないことになります。Acronis Files Connectにおけるスタックスレッドの詳細については、この記事をご参照ください。 

回避方法

MicrosoftのHotfixを使うと、NTFSドライバーにおける既知の循環参照の問題がすべて解決されます。循環参照の問題の最善のソリューションだとされています。Hotfixの詳細については、Microsoft KBのこの記事をご参照ください。

Microsoftによると、破壊に起因するカーネルのハングアップがWindows Server 2012には修正されたと思われているそうです。我々は試験装置でWindows Server 2012を使って問題を再現できました。しかし、Windows Server 2012にこの問題が発生したという現場報告がありませんでした。それでも、Server 2012でこの問題が完全に解決されていない可能性がありますから、このサーバーをAcronis Files Connectの最新バージョンにアップグレードすることを推奨しています。 

Acronis Files Connect 8.0.4及びそれ以降のバージョンは、Microsoft Hotfixがインストールされているかどうかにも関わらず、Microsoft ディスクの破損(循環参照とも呼ばれます)を検出し、それを避けようとします。残念ながら、ファイルシステムに循環参照がないかをチェックするだけでカーネルがハングアップすることが時々あります。循環参照が検出できる場合、Acronis Files Connectはイベント ログに循環参照の場所を示すメッセージを残ります。 

In Acronis Files Connect 8.0.5及びそれ以降のバージョンでは、既に存在する破損を検出するだけではなく、一般的なWindowsドライブでは、ユーザーが親フォルダを子フォルダに移動することを防ぐための技術も実現しました。 

Acronis Files Connect 8.0.6及びそれ以降のバージョンでは、ブロック行動がマウント ポイントまで拡張されています。このリリースを始め、Macクライアントで循環参照に繋がる既知の操作がすべてAcronis Files Connectにブロックされています。 

修正

ファイルシステムに既に循環参照が発生した場合、/f スイッチを指定し、chkdskを実行してください。これは、問題を解決する唯一の方法です。(!) 読み取り専用モードのchkdskがNTFSボリュームの破損を検出しないことに注意してください(Microsoft KBのこの記事をご参照ください)。それで、/f オプションを使って実行する必要があります。/f オプションを使うと、chkdskにドライブへの排他アクセスが与えられます。また、Windows 2008では2-3分で、Windows 2012では更にずっと少ない時間で百万のファイルをスキャンできます。

chkdskが「Breaking links between parent file xxxxx and child file xxxxx」(訳:「親ファイルxxxxと子ファイルxxxxの間のリンクを解除しています」)のようにエラーを検出し修正した場合、ディスクに循環参照があったということです。修正の後、またこのような長時間の遅延が発生するはずがありません。 

タグ: