Windowsのシステムイメージ作成で謎の“ファンクションが間違っています”エラー発生、この回避方法は?山市良のうぃんどうず日記(256)

筆者は数カ月に一度、あるいはシステムに大きな変更を加えたときにWindowsの標準機能を使ってUSB外付けHDDにシステムイメージをバックアップしています。最近、複数のPCでバックアップの最後の最後に“ファンクションが間違っています”エラーが発生して失敗するというトラブルに遭遇しました。

» 2023年05月10日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「山市良のうぃんどうず日記」のインデックス

山市良のうぃんどうず日記

回避方法は既知、バックアップ先ディスクのフォーマットまたはディレクトリの削除

 いつも問題なく「システムイメージの作成」で、同じUSB外付けHDDにバックアップを作成してきたのに、突然、エラーで失敗すると少し焦ります。数時間かかってバックアップを作成したのに、それが失敗したという無駄な時間を過ごした感もそうですが、再起動して再試行してまた失敗したらどうしようという不安もあります。

 しかし、「システムイメージの作成」がエラーで失敗した場合の自分なりの回避方法は幾つか持ち合わせています。

 1つは、コマンドプロンプトを管理者として開き、次のコマンドラインを実行することです(以下の例はバックアップ先がE:ドライブの場合)。

wbadmin START BACKUP -backupTarget:E: -Include:C: -allCritical -vssFull

 今回の“ファンクションが間違っています。(0x80070001)”エラーは、「wbadmin」コマンドでも同様に発生しました。

 もう1つの方法は、バックアップ先のUSB外付けHDDをフォーマットすることです。もし、複数のPCのバックアップ先として使用している場合は、フォーマットではなく、「WindowsImagebackup」ディレクトリ内の「コンピュータ名」サブディレクトリをディレクトリごと削除します。

画面1 画面1 最近、立て続けに複数のPCで発生した「システムイメージの作成」のエラー

パーティション構成の変更が原因と仮定し、再現テスト

 今回、複数のPCで立て続けに同じエラーが発生したことで、根本的な原因が何となく見えてきました。問題が発生したPCに共通していることは、本連載第254回で紹介した「回復パーティションの再作成」をしたことです。このときは「Windows回復環境(WinRE)」の脆弱(ぜいじゃく)性への対策のタイミングで、一部のPCではアップグレード後の無駄な古い回復パーティションを削除し、解放された領域をC:ドライブを拡張するために利用しました。

 以前は「Complete PC Backup」と呼ばれたWindows標準のバックアップ機能は、バックアップ先のファイルとして、Hyper-Vと同じ容量可変タイプの仮想ハードディスク形式(VHDX)を使用します。以前にバックアップしたときと、失敗したときでは、パーティションのサイズが変わってしまった(大きくなった)ため、VHDXの最大割当量を超えることになり、最後の最後で書き込みエラーが発生するのではないかと予想しました。

 この仮説を検証するために、Hyper-Vの「Windows 11」仮想マシンで試してみました。仮想マシンにバックアップ用のVHDXを新たに割り当て、初期化し、NTFSでフォーマットして準備します。

 最初のバックアップと、2回目のバックアップ時に、C:ドライブのパーティションサイズが大きくなるように、最初のバックアップを作成する前に、C:ドライブのパーティションを少しだけ縮小しておきます。その後、フォーマットしたばかりのバックアップ用ディスクに「システムイメージの作成」でバックアップを取得します。最初のバックアップはもちろん成功します(画面2)。

画面2 画面2 C:ドライブのパーティションサイズを縮小してから、初回バックアップを実施。これは成功する

 次に、先ほど縮小したC:ドライブのパーティション領域を、縮小で未割り当てになった部分を利用して拡張し、元のサイズに戻します(画面3)。これで、前回のバックアップ後に、パーティション構成を変更してC:ドライブのサイズが拡張された状況を意図的に作り出しました。

画面3 画面3 C:ドライブのパーティションサイズを元に戻す(拡張する)

 その後、同じバックアップ先ディスクに「システムイメージの作成」を実行してバックアップを取得します。すると、予想通り、あまり見ることのない“ファンクションが間違っています。(0x80070001)”エラーを再現することができました(画面4)。そして、このエラーを回避する方法は、バックアップ先ディスクの再フォーマット、またはバックアップ先サブディレクトリ(コンピュータ名)の削除であることも、確認できました(画面5)。

画面4 画面4 以前のバックアップからC:ドライブのサイズが大きくなっていると“ファンクションが間違っています。(0x80070001)”エラーで失敗する
画面5 画面5 バックアップ先のVHDXをサブディレクトリごと削除(またはディスク全体をフォーマット)すれば、その後のバックアップでは問題が解消

 バックアップ先の「\WindowsImageBackup\<コンピュータ名>」には、バックアップ対象のパーティションごとにVHDXファイルが作成され、イメージが書き込まれるようになっています。2回目以降のバックアップでは、「ボリュームシャドウコピーサービス(VSS)」を利用して、差分のみが新しいファイル名のVHDXに書き込まれます(バックアップ先がDVDメディアやネットワーク共有の場合は除く)。

 次の画面6は、筆者がメインで使用しているデスクトップPCで、実際のバックアップ先ディスクからC:ドライブに対応したVHDXファイルを、「Hyper-Vマネージャー」の「ディスクの検査」機能を利用して参照したものです。「ディスクの管理」スナップインのC:ドライブのサイズと比べてみると分かるように、容量可変タイプのVHDXに割り当てられた最大サイズは、C:ドライブのサイズとほぼ一致しています。

画面6 画面6 C:ドライブのパーティションサイズと、バックアップ先VHDXの最大割り当てサイズはほぼ一致

 もし、現在のC:ドライブのパーティションサイズが拡張されることがあれば、その後のバックアップ時に先に以前のバックアップ(VHDX)を削除しておけば、新たなサイズでVHDXが作成されるので、“ファンクションが間違っています。(0x80070001)”エラーは発生しないはずです。

 なお、このPCには回復パーティションが3つありますが、これはWinREの脆弱性対策後の再整理されたパーティション構成であり、後ろ2つの回復パーティションはOEMが用意したものです。WinREの脆弱性対策のために、後ろから3つ目の真の回復パーティションのサイズを拡張するために再作成しましたが、C:ドライブのパーティションから領域をもらってきたため、C:ドライブは縮小されました。

 このPCのバックアップで、エラーは発生していません。再作成された回復パーティションの復元がエラーにならなかったのは、新たなパーティション(別のパーティション)として扱われたものと想像しています。

 なお、パーティション構成変更の影響でバックアップが失敗する問題は、「Windows 10」およびWindows 11のバックアップ機能で確認しました。Windows Serverの「Windows Serverバックアップ」では、同様の問題は確認されていません。同じようにバックアップ前後でC:ドライブを拡張してもバックアップが失敗することはありませんでした。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP 2008 to 2023(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。