web-dev-qa-db-ja.com

マウントが失敗したときにルートシステムがいっぱいになるのを防ぐ最善の方法は?

内部Webサーバー(仮想化され、ReviewBoardをホストしていますが、あまり関連性がありません)があり、NFSマウントが失敗して/がいっぱいになる比較的一貫した障害モードがあります。 DistroはUbuntuです(質問しないでください)。ソリューションが別のディストリビューションに依存している場合は、実装が遅くなります。

別のシステムへのNFSマウントが想定されている/ mnt/backup /へのバックアップが実行されています。残念ながら、マウントが失敗したり、マウントが外れたりすると、ルートファイルシステムでバックアップが実行されます。これは、/が一杯になるまで時間がかからないため、サービスが失敗し始めます。

多くの可能な解決策が議論されてきた。

  1. / mnt/backupsを監視し、それがルートでないことを確認します。おそらくcronジョブ。

  2. / mnt/protected/backupsを使用し、最初に/ protectedを小さなファイルシステムにマウントします。おそらくローカルファイルへのループマウントなので、失敗する可能性ははるかに低くなります。

  3. Chmod a-rwx/mnt/backups(ルートファイルシステムのマウントポイント)。保護されたディレクターにマウントすることが機能するかどうかはわかりませんが、機能すると思います。

  4. マウントされたツリーで、「バックアップ」というディレクトリを作成し、次にソフトリンク「ln-s/mnt/backup/Backups/Backups」を作成します。ローカルツリーにはサブディレクトリが含まれていないため、/ mnt/backupがマウントされていない限り、バックアップに/ Backupsを使用すると失敗します。

  5. ディレクトリがバックアップスクリプトに正しくマウントされていることを確認します。

私は、これらのアプローチ、賛否両論、または人々がこの種のわいせつさからルートファイルシステムを保護する標準的な方法として使用する追加のテクニックに関するフィードバックに興味があります。

16
Peter

番号5-バックアップスクリプトにテストを入れて、続行する前にディレクトリがマウントされていることを確認します。マウントが利用できないか存在しない場合、スクリプトは失敗するはずです。または、バックアップを実行する前に、マウントされていることを確認することもできます。

mountpointコマンドを実行して、指定したディレクトリがマウントポイントであるかどうかを確認します。

mountpoint -q /mnt/backups || mount /mnt/backups

13
ewwhite

最もエラーのないソリューションは、マウントポイントを書き込み不可にすることです。これはあなたのソリューション#3です。ただし、実行する必要がある追加の手順が1つあります。 chattr +i /mnt/backups。これは、権限がない場合でも、rootがディレクトリに書き込むことができるためです。 chattr +i(不変フラグを設定します)rootも書き込みできません。マウントがマウントされると、権限はローカルディレクトリではなくリモートディレクトリのものになるため、権限は重要ではありません。

22
Patrick

Ewwhiteが言ったこと。また、基本システムの正常性を監視するために追加の監視を行うことは悪い考えではありません。

Monitのようなもの 残りのスペースを確認してください 。システムモニタリングに本格的に取り組みたい場合は、Nagiosを見ることができますが、Monitは軽量で基本的な作業を行います。

Ubuntuを使用しているため、Monitはすでにリポジトリにあるため、「Sudo apt-get install monit」を実行してから、構成ファイルを確認し、適切な場所にアラートを送信したり、適切なサービスを監視したりできます。 。ここに簡単な チュートリアル があります。

3
cjc

以下は、cronジョブとして実行できる1つのライナーです。問題のマウントがfstabにあると想定しています。

if mountpoint -q /mnt ; then : ; else mount /mnt ; fi
1
dan

長期的なソリューションの場合:Ubuntuでこれを行う方法(私はRH中心です)またはその価値があるかどうか(マシンが1つしかない場合)はわかりませんが、何年にもわたって機能してきた方法論は、個別の論理を作成することですボリューム、ファイルシステム、さらにはサーバーマシン上のボリュームグループ。したがって、標準的な慣行として、/、/ tmpのLVM論理ボリュームを作成します。/usr、/ usr/local、/ opt、/ home、/ var、スワップスペース、および/ boot用の個別のパーティション。このアプローチでは、ファイルシステムがシステムをいっぱいにして無効にすることがさらに困難になります。実際、この方法では/ファイルシステムをいっぱいにすることはほとんど不可能になります。もちろん、/ tmp、/ varを監視する必要があります。データを格納する必要がある場合は、まったく異なるボリュームグループを作成します。このアプローチには他の利点もあります。ファイルシステムを自由に拡張し、移動し、新しいファイルシステムを作成するなどです。そして、歴史的なメモとして、1990年代にこの方法をAIX OSからLinuxに引き継いだ。

0
ank