anchor
「ローカルスナップショットは2〜3GB程度にしかならない」はウソだった〜そしてバックアップ破損で空き容量が100GB失われる〜またシステム終了に失敗癖も再発〜結局Mavericks再インストールへ<追記あり>
ここ数日、というより先日ディスクをフォーマットしてMavericksを入れ直した時から内臓ディスクの空き容量の表示がおかしくなっていた。
MenuMetersやディスクユーティリティは空き容量を100GB程度と表示しているのに、Finderは200GB以上空き容量があると表示している。
まだOSがおかしいのかと思ったが、この原因が判明した。
ローカルスナップショットがOS再インストール以来、大量に内部にバックアップを取ってこれが100GBを超えていたのが判明した。
これについては、以前どこかの個人ブログに
「ローカルスナップショットは1〜2GBしか容量を取らないから、ローカルスナップショットを殺すのはディスク容量の節約にはほとんど寄与しない」
ということが書いてあって
「おかしいな、そんなはずないんだが」
とずっと疑問に思っていたのだが、今回その疑問が晴れた。
やっぱりローカルスナップショットも100GBを超えることがあるのだ。
詳しくはこちら参照
そうだSnapShot使ってみよう〜Time Machineのローカルスナップショット機能は使えるようになったか〜それとオンオフアプリSnapShotKill更新しました
結論から言うとローカルスナップショットは数GBしかバックアップを取らないなんてことは、それぐらいしかバックアップ領域を取れないほどディスクに空き容量が無い場合にかぎる話で、空き容量に十分余裕があれば今回のように100GBでもバックアップをローカルに取る。
もっとあればテラバイトクラスのバックアップも取るかもしれない。
だからローカルスナップショットをオンにしていると、内臓ディスクの空き容量は常に100GB前後または10%程度に圧縮されてしまう。
先日のOS再インストール以来ディスクの空き容量表示が変だった
MenuMetersやディスクユーティリティは空き容量は100GB程度しかないと
表示するがFinderは空き容量が200GB以上あると表示している
しかもこの差は日に日に開いていく
その原因が判明した
「このMacについて」の詳細でストレージを見ると100GB以上
ローカルディスクにバックアップを取っていた
バックアップを取っていたのはもちろんローカルスナップショットだった
Time Machineに入ると白く表示されるローカルディスクのバックアップが大量にあった
外付けハードディスクへのバックアップは成功しているがローカルスナップショットは
ディスクに余裕がある時はローカルにも無制限にどんどんバックアップを取るというのが仕様らしい
以前にも書いたがこのローカルスナップショットはディスクの空き容量が少なくなってくると、過去のバックアップを削除して常に空き容量を確保するのでこれ自体は無害なはずだった。
なのでLion導入時に速攻でkillしたローカルスナップショットを、最近気まぐれでまた使ってみようと有効にしていた。
ところが今回このローカルスナップショットが問題を起こした。
Time Machineをオフにする、あるいはSnapShotKillでローカルスナップショットを無効にすれば、このディスク容量を圧迫しているバックアップは自動で消えるはずだった。
前回は確かにそういう動作をした。
ところが今回はそれをやっても空き容量が増えない。
ディスクのクリーンアップのメンテを一通りやって、再起動してApplejackまでかけたのに変化無し。
そこでバックアップを見てみたが、/Volumes/Mobilebackups/Backups.backup.dbというディレクトリが前はあったが、ちゃんと消えている。
しかしこれも以前以下の記事で書いたようにこれはハードリンクの影で、Time Machineのバックアップの実体はここにあるわけではなく不可視領域を表示しても見えないさらにインビジブルなHFSバックアップ領域があってそこの実体が不具合で消えずに残ってしまったようだ。
Time Machineボリュームの中身は手動で削除したりしてはいけない〜正しいディスク容量確保法<追記あり>
ここの記事でも書いたがBackups.backup.dbは絶対に手動で削除してはいけない。
Terminalでrmコマンドを使えばひょっとして削除できるかもしれないが、この.dbの領域は合計でも数十MB程度しか容量がないハードリンク(エイリアスのようなものだがもっとファイルシステムよりの仕組み)の固まりでしかない。
これを消してしまうとTime MachineなどのGUIやTerminalなどのCUIでは触れない領域にバックアップの実体があるので削除ができなくなってしまう。
ハードリンクそのものがこんがらがったスパゲッティのようなものなのでそこは直接触ってはいけない。
今回はその.dbを削除してしまったと同じ状態になぜかなってしまったようだ。
これまで外付けハードディスクのTime Machine領域でこういう問題が起きた時の対処法はとてもシンプルだった。
「ディスクを初期化してTime Machineを再設定してバックアップを取り直す」
これしか方法はない。
ところが今回はローカルスナップショットなのでMacBook Proの起動ボリュームの中にバックアップがある。
どこにあるかはJaguarなどの古いOSにボリュームをマウントしてみないと見えないので分からないが、多分起動ボリュームのルートに「.HFSなんとか…」みたいな名前のフォルダとして存在しているはずだ。
今手元にそれができる環境がないので確認できないが、これをボリュームを初期化しないで削除する方法がないかググってみたが、成功例が見つからない。
うまくいっても不具合の原因に遅かれ早かれなるか…
今からローカルでMavericksの上書きインストールを試してみる。
先日来再起動に失敗する癖がまた再発しているので、その検証も兼ねている。
これでバックアップが消えればいいけど、消えなければまた内臓ディスクの初期化をするはめになる。
年末にやっているので1週間もしないうちに2回目だ。
OS9時代はしょっちゅうだったが、OS Xになってこんなにインストールを繰り返すのは初めてのことだ。
教訓としてはMavericksではローカルスナップショットは殺すべしということか。
(ひょっとしてMavericksだけではないかもしれないが)
このバックアップ領域がどんどん膨らんでいくのでこれを削除するために
SnapShotKillを使ってローカルスナップショットを無効にした
前回はこれでバックアップはすぐに消えたのだが今回は
消えたのは消えたが『その他』の領域が100GB増えた
バックアップが削除されずにそちらに移行してしまったらしい
元に戻すと/Volumes/Mobilebackups/Backups.backup.dbに
新しいバックアップはできるが古いバックアップは見えなくなってしまった
これは誤ってこのBackups.backup.dbを手動削除してしまった時と同じ症状だ
要するにバックアップが破損して操作できなくなってしまったという状態だ
キャッシュやメモリクリア、仮想メモリのクリア、再起動してApplejackと
考えられることは一通りやってみたがやはり『その他』は100GB増えたまま
Finderの空き容量表示も一致するようになったが残り30GBと悪い方に統一されただけだ
不可視領域を表示してこのバックアップの実体が見えないか探してみたが
やはりleopard以降のOSではこれは見えない
これを見るには古いOSにターゲットモードでマウントしないといけない
起動ボリュームを初期化して再インストールしかないか…また半日つぶれるなぁ…
ちょうど数日起動しっぱなしで使い続けると再起動に失敗する問題がMacBook Proで再発していた
そこでまずMavericksを内臓ディスクから上書きインストールしてみることにした
この通り強制終了をするとシングルユーザモードに入ってfsck -fyコマンドを実行した時に
The Volume was modifiedという警告が出る
これが出たら出なくなるまでコマンドを繰り返すのが鉄則だが
どのみち起動ボリュームにストレスがかかっていることは間違いない
この問題も解決したいので上書きインストールを試してみる
インストール前の在りし日のMacBook Pro
これから何されるかも知らないで…
上書きインストールで不良バックアップが消えてくれればいいんだけど…まずダメだろうなぁ
おそらくディスク初期化は避けられないと思うが一応試してみる
<追記>
Mavericks上書きインストール完了。
結果はやっぱり惨敗。
ディスク空き容量は6GBちょい増えただけでOS Xインストーラが完了して削除された分だけ容量が増えただけの結果となった。
つまり孤児になったバックアップ100GBはまだ起動ボリュームの中にいるということだ。
帰ったら早速ディスク初期化かな…空しいなぁ
Mavericks上書きインストール完了
ディスク空き容量は6〜7GB増えたがほとんどインストール完了して
削除されたOS Xインストール.appの大きさなので全く改善していない
このまま再起動失敗が改善したかテストしたい気もするがどんどん計画が
遅延しているのでもう見切りを付けて初期化してしまおうか…
2014年1月4日
anchor
「ローカルスナップショットは2〜3GB以上増えない」はウソ〜は間違いかもしれない〜バックアップ破損で空き容量が100GB失われたのはメタデータ原因の誤表示〜でもMavericksのバグは間違いなさそうだが…
先日ローカルスナップショットで100GBを超えるバックアップ領域ができて、スナップショットを無効にしたところこれがそのまま「その他」領域に組み込まれて、破損したのではないかと先日書いた。
参照。
「ローカルスナップショットは2〜3GB程度にしかならない」はウソだった〜そしてバックアップ破損で空き容量が100GB失われる〜またシステム終了に失敗癖も再発〜結局Mavericks再インストールへ<追記あり>
その後このMacBook ProをTキーを押したままディスクターゲットモードで起動。
これを老兵iBook DualUSBにFireWireで繋いでマウントしてみた。
Time Machineのバックアップは以前にも書いたが、あたかもBackups.backupdbというフォルダの中に日付順に並んで保存されているように見えているが、これはハードリンクで構成されたバックアップの影でしかない。
Time Machineのバックアップの実体はルート直下の
.HFS+ Private DIrectory Data
というフォルダの中にある。
しかも元の起動ボリュームとは全く似ても似つかない姿で保存されている。
これはLeopard導入の時に確認していたのだが、今も変わっていなかった。
そしてローカルスナップショットの実体ファイルはやはり起動ボリューム直下の同じ名前のフォルダの中にあった。
これはOS Xの不可視属性とはまた違う仕組みで不可視に設定されておりMainMenuなどのユーティリティを使って、不可視ファイルを見えるように設定してもこのバックアップの実体は見えない。
Time Machineが採用される以前の古いMacにマウントしてみるとこれが見えるわけだ。
(ちなみにiBook DualUSBのOSは、TigerたんOS10.4.11だ)
ただし今回はその中身を見たところ、空っぽだった。
やはりローカルスナップショットを無効にした時点でその中身はきれいに削除されるらしい。
ここまでのおさらい
ディスクユーティリティとFinderの空き容量表示があまりにも違うので
Appleメニューの「このMacについて」の詳細でストレージの中の
構成を確認したところバックアップが105GBとなった
ローカルスナップショットを有効にしてバックアップを取っていなかったために
内臓ディスクにバックアップが大量に溜まったのだと判断した
そこでSnapShotKillを使ってローカルスナップショットを無効にしたところ内臓ディスクの
空き容量が105GB増えるのではなく「その他」の領域が100GBほど増えただけになった
Time Machineを無効化してまた有効化したりいろいろ試したが
この100GBは空き容量にならずにその他領域で定着してしまった
どうやらシステムでいじれないゴミが100GBできてしまったと判断した
そこでMacBook ProをTキーを押しながら再起動
久しぶりに起動したiBook DualUSBご老体にFirewireで接続し
いわゆるディスクターゲットモードで外付けハードディスクのようにマウントしてみた
Time Machineのバックアップの実体はBackups.backupdbというGUIで見えているフォルダではなく
こういう旧OSでマウントしないと見えない特殊な不可視フォルダ
.HFS+ Private Directory Dataというフォルダの中にある
そのフォルダを開くとこのようにTime Machineのデータベースとして
元の起動ボリュームとは似ても似つかない姿で保存されているはずだ
ところが今回MacBook Proをマウントしてみたところ
その.HFS+ Private Directory Dataの中身は空っぽだった
他の場所も探してみたがゴミになったDBの残骸は見つからなかった
さらに旧OSでも見えないもう一段不可視な領域にでもなっているのかと思い
サイズを検証してみたがこのフォルダやはりサイズ0KBとなっていてどう見ても中身空っぽ
念のためにこの.HFS+ Private Directory Dataをゴミ箱に入れて削除してみた
Tigerタンならこんな無茶もできる…
が、結局MacBook Proを正常起動してみると何も変わっていなかった
100GBはやはりその他の領域に組み込まれただけ
TigerタンでSpotlightのデータベースも削除していたのだが確認のため
また「このMacについて」の中身を見たところなんと全領域が「その他」になっている
数時間待ってメタデータが作成されたらまた100GBが
「その他」に組込まれた2番目のキャプチャの状態に戻った
つまりこのストレージの領域やFinderの空き容量表示はメタデータをもとにしているということだ
ここでそろそろ現実的な思考をしないといけない
ユーザフォルダの中のVMWare Fuion、Virtual Boxの
仮想マシンファイルの合計が150GBを超えていることに気がついた
つまり「その他」領域が170GBちょっとしかないという最初の
ストレージの表示の方が実はおかしかったということだ
Finderもそれに連れてバギーな表示をしていたということだ
バックアップが100GB以上もあったというのは間違いだったらしい
ということで今回もゴミがどこかに隠れていないかディスク初期化、OSクリアインストール、Time Machineからユーザ領域復元…を実施したが空き領域は増えなかった。
そしてディスクの中を徹底的に洗ったところ、VMWare Fuion、Virtual Boxなどの仮想マシンファイルの合計が150GBを超えていることに気がついた。
それに諸々のユーザファイル、システムファイルなどを合計すると170GBというのはあり得ない数字だ。
GarageBandなどのサウンドファイルも入っているしね。
ということでバックアップが100GB以上あるという表示の方が間違いだったことに気がついた。
そしてこれらの領域表示はSpotlightのメタデータを利用していること、Finderの空き容量計算もメタデータを利用しているため、メタデータが間違って「バックアップ」と判断してしまうとそれも空き容量として表示してしまうことが分かった。
だから空き領域が100GBしか無いのに200GB以上空き容量があるという誤表示をFinderがしてみたり。
これの解消法はSpotlightのメタデータ削除しか無い。
システム再インストールでもいいけど。
そしてさらにやっぱりローカルスナップショットは殺しておくべきだなとも思った。
もう一度ご案内。
弊サイトで配付しているローカルスナップショットをkillするアプリ。
SnapShotKill(Freeware)
OS10.7Lion対応
こちらがLion以前のバージョン向け。
SnapShotKill(Freeware)
OS10.8Mountain Lion対応
OS10.9Mavericks対応
そしてこちらがMountain Lion、Mavericks向けのバージョン。
間違えないようにダウンロードして使ってほしい。
2014年1月11日