2024-06-02 15:12 — asano
カテゴリー:
前回 /varパーティションを潰してしまったと書きました。
一応復旧できた(と思う)のでその顛末を書いてみたいと思います。
なんのための作業か
このマシンのディスク構成は以下のようになっていました。
- wd0 2TB HDD disklabel
- wd1 2TB HDD disklabel
- wd2 6TB HDD GPT
wd0のみでサーバとして必要なものは揃っています。(wd1, wd2はNASに置きたくないデータの置き場です)
これで3年ほど運用してきましたが、/, /varパーティションの容量が不足してきたことと、しばらく前に安さにつられて買った120GB SSDが余っていることから、以下のように構成を変更することにしました。
- /, /usrパーティションをSSDに移して、SSDを起動ディスクにする。
- /usrパーティションだった領域を利用して/varパーティションを拡大する。
- 可能ならswap領域も拡大する。
作業開始
SSDの追加自体は簡単でした。
wd3として接続しておいてMBR書き込み・disklabel書き込み・/, /usrのコピーを行ないます。wd3の方の/etc/fstabも変更して/, /usr以外をwd1以降からマウントするように変更しておきます。
おっと、忘れてはいけないのは/etc/sysctl.confでwd1のNCQを切るようにすることです。PC入替(1月経過)を参照。
SSDがwd0になるようSATAのコネクタを入れ替えて再起動し、何事も無かったかのように立ち上がってきました。
ここまでは成功です。
あれ、やっちまった?
続いて/varの移動・拡大です。
wd1(旧wd0)は先頭から、/パーティション・swap領域・/varパーティション・/usrパーティション……となっています。
wd1f(/usrパーティション)は/varパーティションには大きすぎるので後ろ一部を新たなwd1fとしてdisklabelを書き換え、wd1e(元の/varパーティション)からwd1f(新/varパーティション)にコピーします。念のため他ドライブにもバックアップを作っておきます。
wd1eとwd1fの前半部分は後にwd1b(swap)の拡大に利用する予定です。
/varパーティションとして/dev/wd1fをマウントするように/etc/fstabを書き換えて再起動……
あれっ、何か変だぞ?
もう一度再起動して今度はシングルユーザモードに入ります。
確認すると/varパーティションの中身が壊れています。コピーに失敗していたのかな? でもまだwd1eの領域は上書きしていないはずだからと手動でマウントしてみたら、こっちも壊れているではないですか!
ここでヤバいと思いバックアップを確認すると……
これも壊れています。/varを完全に失ってしまったようです。
当然swap領域の拡大は保留です。
原因は?
実は原因の明確な心当たりはありません。
可能性として考えられるのはdisklabelの書き換えですが、これまでにもこういう形でのパーティション移動は何度もしているので違いが判らないのです。
破壊のタイミングはwd1eからwd1fのコピー時しかないかと思いますが、tarで-vオプション付けてファイル名が流れていくの見た気がするんですよね。
次回は復元作業についてを予定しています。
コメントを追加