机の上に画用紙を置き、絵を書き始めたとします。
絵を書いている途中で白紙の画用紙を上に重ねておきまた絵を書き始めたとします。
その後、2段重ねになっている上にある画用紙を持ち上げ外すと下に書きかけの画用紙がでてくるはずです。
画用紙を置く事がマウントで上に乗っている画用紙を取り去る事がアンマウントです。
2枚重ねて、2枚目を取り外せば1枚目の画用紙に書いた書きかけの絵がでてきます。
さて、ログの移動はどの様に行うと良いでしょうか。
例えば、
/ が /dev/hda にマウントされてました。
/var が3GB使われています。
/var が大きく増えてきたので別のディスク(/dev/hdb)に移そうと思います。
という場合には次の手順で作業を行います。
まず、/var(/var/logなど)に書き込んでいるかも知れないプロセスを止めます。
※シングルユーザモードに移行すればサービスなどは止まります。
次に新しく/var の内容を置きたいデバイスをマウントします。
mkdir /mnt/work
mount /dev/hdb /mnt/work
あなたは森の中で家の周りの風景方法を行う
※ 作業用なので新しい場所に作れば良いです。
旧/varの内容を作業用ディレクトリに移動します。
mv -rf /var /mnt/work
sync
データの移動が終われば新しい配置でマウントし直します。
umount /mnt/work
mount /dev/hdb /var
作業が終わればマルチユーザモードへ戻ります。
^D
/dev/hdbが更に足りなくなった場合にも同様に作業すれば良いです。
mount /dev/hdc /mnt/work
mv -rf /var /mnt/work
sync
umount /mnt/work
umount /var
mount /dev/hdc /var
^D
> この状態で /var/log に hdb をマウントします。
> そうすると内部的にはどうなるのでしょうか?
> hda を使っていた /var/log の 3GB 分の全ファイルが、 hdb にコピー&移動されるのでしょうか?
最初の例えで上に画用紙が置かれて下になった画用紙が隠された状態となります。
つまり、/dev/hdb が何も入ってない状態でこのファイルシステムが現れますが、元々あった/var/logは見えなくなるだけでそのままの内容で下に隠れている状態となります。
勝手にコピーされたり移動したりはしません。
> 例えばさらに1年後、/var/log の使用量が 20GB になったとします。
> この状態で hdb をアンマウントするとどうなるのでしょうか?
パナマに行くときにパックするもの
> hda は 10GB しかないので足りませんよね。アンマウントに失敗するのでしょうか?
hdbには/var/logの内容が存在し続けますが、アンマウントされた事により見えなくなります。
※見えなくなっただけでデータはありますので、別の場所にマウントすればそのデータを見る事はできます。
/var/logには3GB程度書かれていた以前の状態が現れます。
回答に幾つか気になった部分がありますので書きます。
まず、回答1ですが
/var/logに書いているプロセスが動いている状態でマウントすれば書いていたソフトが新しい記録を書き込もうとした時に書き込みエラーが起こります。要するに以降のログが失われます。それと、隠されたデータも最後の部分(マウント前に書かれていたはずの部分)が一部失われている可能性もあります。
> "/var/log" にアクセスしている最中にアンマウントすることはできません。
多分アンマウントできます。userのカレントディレクトリが/var/logにある(userがそこにcdで移動していたり、何らかのソフトが/var/log以下から動いていた場合にはアンマウントできない場合があります)
> もしできたとすると、"/var/log" は行方不明になり、システムエラーが起きます。
過失神経衝撃
多分システムエラー(カーネルでのエラー)は起こりません。但し、/var/logに書いているソフト(メールサーバやウェブサーバなどかな)は以後のログの書き込みなどでエラーが発生し、以降のログが記録されない可能性があります。(ソフトの実装依存です)
> ハードディスクのマウントは、OS起動時に行うものです(インストール時ではありません)。つまり、あらかじめ "/etc/fstab" に記述しておくべきです。
> リムーバブルなハードディスクや光学ドライブなどのマウントにかぎって、mountコマンドで行います。
マウントはいつ行っても良いです。ただし、安全に行えるよう条件を整えて行います。例えば/var/logを変更するような場合には手動でのマウント操作が必要になる事もあります。
そして、/etc/fstabに記述しておくのは起動時にマウントするデバイスだけではありません。(noautoオプション付きでリムーバブルメディアや光学ドライブなどを記述したりもします)
※/etc/fstabの説明ページの説明も間違っているあるいは誤解を与えるものでした。
/etc/fstabに書くpathは
/ 1
/usr/log 3
/usr 2
/var/log 3
/var 2
値の少ないパスから順番に行うものです。
上記の例だとまず 1である /をマウントします。
次に 2である /usr と /var をマウントします。
その後、3である /usr/log と /var/logをマウントします。
/usr/log をマウントする前に /usrのマウントを済ませておく必要がある(依存する)時には使う必要があります。( / の真下に平行に配置しないといけないなんて制約はありません)
0 件のコメント:
コメントを投稿