はじめに:同一機種での移行について
私は以前の記事でも記載したが、使用用のHP Dragonfly Proを2台持っており、1台に何かあったときのためにもう1台ですぐに作業を開始できるように、バックアップの環境を整えておこうとした。全く同じハードウェア構成なのだから、クローンを作るように簡単に終わるはずだ。そう思っていた。
ところが、同一機種(同じCPU、同じSSD容量)へのLinux環境の移行で問題があった。
結論から言うと、これは「不具合」ではなく「仕様」と思われるが、知らなかったので共有する。
前提条件
- 移行元: HP Dragonfly Pro (SSD 256GB) – 白モデル
移行先: HP Dragonfly Pro (SSD 256GB) – 黒モデル - Linux環境サイズ: 約120GB
- 復元は外付けSSDに格納したものから直接行う(内部ストレージには保存しない)
理論上、そのまま入るはずだと思っていた。同じハードウェア、同じ容量。空き容量も計算上は足りているはずだった。しかしその目論見はChromeOSの仕様によって脆くも崩れ去った。
起きた現象
移行先の黒モデルで復元を実行したところ、「SSDの容量不足」エラーが発生し、復元できなかった。
検証
Linux容量と復元時に必要な容量の関係を調べるために、調査環境を用意した。
調査に用いたのはASUS ExpertBook CX54でSSDを256GBから2TBに換装した機体である。
これで容量不足ということはなくなった。(HP Dragonfly ProのSSDは基板直付け)
検証用Linux環境は以下2つ。
- 容量66GB (Linux空き容量なし)
- 容量80GB (Linux空き容量14GB)
まず66GBの復元の挙動は以下の通り。


復元を開始し、ストレージの画面で容量値を監視し続けていると、902GBからどんどん容量が増えていき、完了直前に以下となる。

完了直前、つまり復元中に必要な最大ストレージが
968GB – 902GB = 66GB
となっていることがわかる。
復元が完了すると容量は以下となる。

復元完了後に使用している容量は、
958GB – 902GB = 56GB となる。
元のLinux環境がない状態の容量は892GBなので、
958GB – 892GB = 66GB となる。
つまり、Linux環境インストール前から追加された容量はLinux容量である66GBになる。
次に、 80GBの場合も見てみることにする。
始める前の条件は同じで、復元完了直前の容量は以下となる。

復元中に必要な最大ストレージは、
982GB – 902GB = 80GB
となる。

復元完了後に使用している容量は、
972GB – 892GB = 80GB
となる。
上記2つの場合から、復元するためには、現在使用している容量+Linux容量が必要ということになる。つまりHP Dragonfly Proでの失敗のメカニズムは以下と思われる。
1.バックアップファイルを外付けSSDから読む
2.内部ストレージに展開し始める
3.最終的な容量が足りていても、一時的に必要な容量が足りておらず256GBの天井を叩いて
しまった。
考察・結論
つまり、Linux環境が事前にインストールされている場合には、注意が必要になる。復元するのであれば前のLinux環境は不要であろうから一度削除し、容量をあける。そして復元時はすでにインストールされているLinuxの容量は復元するLinuxより小さくても構わない。容量を最大に確保して復元を行う手順は、
元のLinux環境削除 → Linux環境再インストール → 容量を変更し最小化する → その状態でストレージ容量を確認し、復元しようとするLinux環境より使用可能領域が大きければ復元できる
ということになる。
検証過程でついでにわかったことも列挙する。
- 最初のLinux容量の設定値は少ない分には何でも良い、復元値より大きくしておく必要はない
- ただそうすると復元は問題ないがシステム環境設定で見るストレージ容量とデベロッパーのLinux開発環境→ディスクサイズで表示される値に差異がでる( 初期設定の値のまま)ので一度変更を押して読み込むと現在の値が反映される
- 復元はSSDから直接行う。ローカルに一度圧縮ファイルを持ってくるなどはしない(容量節約)
- 拡張子は.img.zstまででひとつなので.imgと.zstの間に文字を入れると復元ファイルとして認識されない
今回の教訓と、これからの運用戦略
それでも容量が足りない場合があるかもしれない。
その際は、もう環境を見直し、ワークフローを変えていくサインかも知れない。
私はHP Dragonfly ProのLinux環境は、実は今は22.6GBまで減らしてある。本当に必要なローカルで今動く必要のあるものだけを入れた結果である。私はChromebookと相性の良い自作のヘッドレスPC(Windowsホスト)を用意しているので、重たい計算や容量を100GB以上食うアプリはそちらに入れている。ヘッドレスPCがあれば手元のデバイスに左右されずどんなOSになっても左右されないパワーが手に入る。とはいっても手元で行う作業は様々なので手元のデバイスのクオリティ・性能が大切なのは言うまでもない。かつ使用デバイスは気分にも直結するので、快適さ・生産性に影響を及ぼす。
ChromeOSのLinux環境はバックアップ可能で、クラウドに上げておけばデータの紛失も防げるし、万が一環境が壊れてもすぐに復元可能である。この堅牢なサーバーのような環境が良いのである。


コメント