PC設定覚書と雑記

サーバー運用とPC日記

データの保管、保護について改めて考えてみる

 普段PCやスマホで扱っているデータが壊れてしまう事はめったにないので、普段は安心しちゃっています。

ですが、やはりトラブルは突然起こるものです。

システムデータが壊れた場合は、PCが起動しなかったり、Webサイトが失われてしまったり(!)という、深刻な事態になってしまいます!!

そこで、改めてデータファイルの保管、システムの保護等について考え直してみることにしました。

 

 自分は、今までの様々なデータをLinuxSambaを使った自作NASに保管していました。

そして、さらにこのデータをWindowsクライアントPCのセカンダリディスクに定期的にバックアップしていました。

このバックアップディスクはWebサーバーで連続稼働させていたお下がりで、いつ壊れてもおかしくないヤツなんですが、バックアップ用なので「まあいいか」と使い続けています。

そしてNASもRAID1で動かしていたので安心し切っていたんです。

 

 トラブルが起こったのは一昨年末でした。

家庭内LANの第3オクテットを変更しようと作業した際、NAS内部のDebian設定でつまずいてしまいDebianが起動しなくなってしまいました。

この時、ソフトウェアRAIDで組んでいたシステムであったのに、RAIDシステムの復旧もHDD内のデータ救出も出来ませんでした・・・!

RAIDの再構築も、セカンダリディスク(呼び方合ってる?)からのシステム立ち上げも出来なかったんです。

これらの方法の練習もやってなかったし、習得もしてなかったんですね・・・

こんな状況ではイザという時に対応なんか出来ませんね!

 

 そこで、再度ソフトウェアRAIDを構築する前に、曖昧だった次の知識についてまず調べることにしました。

 ①MBR

 ②ESP

 ③UEFI

 ④GPT

 ⑤ブートストラップローダー

 ⑥grub

 ⑦/boot

次に、実際に実験機でソフトウェアRAID機を構築して、故意にトラブルを起こしてみることにします。

そして、このトラブルに対処する手順を実習して習得しておこうと考えました。

 ①実験的に片側のディスク(grubがインストールされていないセカンダリディスク)を外して挙動を調べてみる。

 ② ①のあとに新しいセカンダリディスクを取り付けてRAIDを再構築し、RAIDシステムを復旧させてみる。

これが出来るようになったら、

 ①grubがインストールされていないセカンダリディスクに、grubを手動インストールしてセカンダリディスク単独でも起動できるようにしてみる。

 ②grubがインストールされているプライマリディスクを外して挙動を調べてみる。

 ③ ②のあとに新しいプライマリディスクを取り付けてRAIDを再構築し、RAIDシステムを復旧させてみる。

 

 次年度に備えて、今日からこれらの作業に取りかかっていますが、かなり時間がかかりそうです・・・

後日、ここに備忘録を残しておこうと思っています。

PC起動のしくみ(まだ細部まで理解できていない・・・)

電源投入
 ↓
BIOSによるデバイス初期化
 ↓
ブートデバイスの決定
 ↓
ブートストラップローダのロード
 ↓
ブートローダの実行
 ↓
OSの起動

 

 

 

PCの電源を投入すると、マザーボードのROM中のBIOSが起動。

このBIOSの初期化プログラムが、PCに接続されている各種デバイスの初期化を行う。

この過程が POST(Power On Self Test)。(起動直後に画面表示されている)

各種デバイスの初期化が終了すると、BIOSは次の段階に入り、起動するためのドライブを探す。

起動ドライブとなるのは、HDD、 CD-ROM、USBフラッシュメモリなど。

BIOSは起動ドライブを見つけるとそのデバイスをファーストブートドライブとして起動を試みる。

HDDの起動を例にすると、

BIOSはそのブートドライブの先頭セクタのロードという段階に移る。

HDDの先頭セクタは MBR(Master Boot Record)といい、MBRは1台のHDDに1つだけ。

BIOSはこのMBRをメモリ上にロードし、MBR領域にあるプログラムに制御を移す。

このMBR領域にあるプログラムを、ブートストラップローダと呼ぶ。

ブートストラップローダは、パーティションテーブルから起動フラグのあるパーティションを探す。

パーティションテーブルとは、複数のパーティションに関する情報が保存されているMBR内の1つの領域。

この起動フラグのあるパーティションにブートストラップローダから制御が移行。

このとき、ブートストラップローダから呼び出されるのが各基本パーティションにあるブートセクタ。

ブートセクタは各基本パーティションの先頭セクタのことを指し、PBR(Partition Boot Record)と呼ばれる。

PBRに制御が移行すると、そのPBRのプログラムが動作することになる。

このPBRにあるプログラムコードが IPL(Initial Program Loader)で、OSを起動させるためのブートローダの残りの機能を呼び出す機能を持つ。

MBRやPBRは512バイトと非常に小さな領域しかなく、その中のIPLのデータサイズはさらに小さい。

この小さなデータサイズにOSを起動させるためのブートローダのプログラムを全て格納できない。

そのため、IPLはブートローダの一部のプログラムコードを持ち、ブートローダの残りに機能はPBRの後続セクタに置いている。

IPLから呼び出されたブートローダが後続のOSのファイルを読み込んでいき、最終的にOSが起動する。

ソフトウェアRAID1、今後障害対応出来そうです!

 ソフトウェアRAIDは、当然ですが、OSが立ち上がった後でないとRAIDが機能しません。

ということは、OSが立ち上がるまではRAID動作ではないし、RAID動作開始までは1本のみのディスクで動いているということになります。

ですから、起動ドライブ(ドライブ1)に不具合が発生してしまうと、起動さえも出来なくなってしまいます。

これを避けるために、「ドライブ2にもMBRを用意しておきgrub 等のブートストラップローダーをドライブ2にもインストールしておけば良い」と書かれています。

しかし、今までこの作業をしてきませんでした。

RAIDシステムが出来上がって機能し始めれば、トラブルが起こるまでは対応は必要ないし、「まあ後で対応すればいいや」と思いながら結局対応しないままになっちゃっていたんです。

さて、サーバーOSのインストールはインストールメディアから立ち上がるインストーラーに任せていますが、最後のgrubインストールで/dev/sdaを指定してインストールが終わった後に、再度grubを/dev/sdbに手動でインストールするようにと、手引きには書いてありました。

ところが、この作業がエラーになってしまい上手くいきません。

試行錯誤している中で、今日試してみた作業がたまたま上手くいったので書いておきます。

 

 RAID構築が終わったあと、インストールメディアをレスキューモードで起動させます。

①ディスク1、ディスク2をRAIDドライブとして認識させる。

②RAIDドライブを構成している/dev/sdbを指定してgrubをインストールする。

これでうまく行きました!

 もちろん、うまくいったかどうかの検証が必要ですね。

まず、ディスク2を外して電源を入れてみます。

起動してディスク1本のみの環境を作っているようです・・・

この後しばらくしてログイン画面となりました。

起動完了したようです。

 では、次にディスク1を外して電源を入れ、ディスク2からの起動を試みます!

立ち上がりましたね!

先ほどと同様、ディスク1本のみの環境を作っているようです・・・

この後、しばらくしてログイン画面が表示されました!

ディスク2からの起動もOKのようですね!

最後にディスクを2本とも元通りに接続して、電源を入れてみます。

2つのディスクを完全に同期させる動作を行っているようです・・・

このあと最終的な結果が表示され、RAID1環境が完全に出来上がっていることが確認できました!

もう少し実験したいことがありますが、これで重要な一区切りまでは行けたようですね! 

RAID1システムまだ正常動作していませんでした

 Debian10サーバーによるRAID1システムが出来上がったので、Sambaファイルサーバーの運用を再開しました。

ところが、Webminでディスクの状況を確認してみたところ、赤字で「degraded」の警告らしきものが出ていました。

degraded?

「劣化? 退化? 低下?」!!

異常の通知のようですね!

 

このディスクはWD社REDのNAS用モデルなんですが、Webサーバーのシステムディスクとして1年以上ノンストップ連続運転させていたお下がりなんです。

エラーも出ていないしまだ使えるだろうと思っていたんですが、やっぱりもうダメかな? と調べてみることにしました。

すると、どうもこの前やった実験(RAID構築後に片側ディスクだけで起動するか)のあと、両方のディスクを接続し直しただけではRAID1システムは再構築されていないようだということが分かってきました。

RAIDが不完全なまま動いているようで、これではダメですね!

きちんと復旧させておかなければいけません。

そしてその復旧作業のあと、念のために、どちらの片側ディスクからも起動することをもう一度確かめておく必要があります。

もちろん、最終的には再度RAID1復旧作業を行って終わりにしておかないといけませんが。

こういう実験は今回のような自粛期間中にどんどんやっておきたいと思います!

外で動けるような日に室内に閉じこもって作業するのはイヤですからね!(笑)

Wordpressに簡易グループウェア機能を持たせることが可能?

自分のWebサイトを今後どうするのか、いつまで運用できるのか、良く考えるんですが、

 ①自分自身でサーバーマシン、システムのメンテ、サイトの更新が出来る時まで

 ②このNetcommons等のWebアプリケーションの開発が続き、自分自身で更新していける時まで

 ③無料DDNSサービスが継続するまで

さしあたってはこんな感じなんですが、②のNetcommonsに関しては不安があるんです。

自分が持っている程度のスキルでNetcommonsのメンテを続けていくためにはWeb上での多くの情報が必要ですが、現状では情報があまり得られていません。

Netcommonsの運営方針も昔とは異なってしまい、今後どうなっていくのか現時点では不透明です。 

自分もあと数年で教育現場から完全に引退すれば、グループウェアもあまり使わなくなってくるかもしれません。

 今日何気なくサイトを見ていたら、「Wordpressがグループウェア的に使える」といった感じの記事が目に留まりました!

Wordpressは、大規模なWebサイト構築に使われているCMSで世界中で広く利用されています。

また2020年の統計では、世界中のCMSの60%以上、世界中のWebサイトの35%以上のシェアを持っているソフトです。

Wordpressの運用情報は非常に多く、このシステムの構築とメンテナンスを続けていくことに関しては先が明るい感じがします。

Netcommonsのような高度なグループウェア機能はないかもしれませんが、ちょっと気になる情報でした。

現状では、例えば以下のようなプラグインを使うことでグループウェア機能を実現しているようです。

ということは、今後新しいプラグインも開発されていくかもしれませんね!