プロが教えるわが家の防犯対策術!

FreeBSD7.2で構築したsendmailサーバを正・副の2台構成で運用しています。

正サーバのメールボックスを副サーバにコピーするため、
cronで正サーバのデータを圧縮し、副サーバで展開する処理を行っていますが、
展開処理が、以下のメッセージをrootにメール出力して、異常終了してしまいました。
*** Mail of at least 943079424 bytes could not be accepted
*** at ss5gw.kensetsukankyo.co.jp due to lack of disk space for temp file.
*** Currently, 921462 kilobytes are available for mail temp files.

メールボックスはシンボリックリンクで/usr/homeに作成していて、容量は十分にあるのですが、
/varディレクトリ自体の容量は、1GB程度しか割り当てていません。
状況を見ると、展開処理の際に/varを一時的に利用しようとして、容量不足になっているように見えます。

既に運用しているサーバのため、ディレクトリの再割り当てをしての再インストールは、極力回避したいと考えています。

cronでの展開処理の際の一時利用ディレクトリを別ディレクトリに指定する等の回避方法がお分かりの方はお教えいただけると助かります。

当方は、サーバ運用を引き継いではいますが、unix系OSについては素人のため、回避策が見つけられません。

よろしくお願いいたします。

A 回答 (3件)

ちょっと気になることがあるんだけど....



「正サーバ」の /usr/mail がどのくらいの容量を使っていて, その中にどのくらいファイルがあるかはわかりませんか?

この回答への補足

ご指摘ありがとうございます。
一度アップしたと思ったのですが、消えてしまったので、再度アップします。

コマンドの実行結果です。

> df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 507630 152726 314294 33% /
devfs 1 1 0 100% /dev
/dev/ad0s1e 1012974 22 931916 0% /tmp
/dev/ad0s1f 466415488 48793620 380308630 11% /usr
/dev/ad0s1d 1012974 17846 914092 2% /var

17G /usr/home

その後の動作を見ていると、圧縮処理対象ファイルに、大容量(1GB程度)ファイルがあると、エラーになるようです。

よろしくお願いいたします。

補足日時:2012/11/06 11:14
    • good
    • 0

/var/spoolのmqueueもしくはclientmqueue


あたりの容量をみてみてください。
# du -d1 -h/var/spool

かなり比重がたかくなっているようなら
容量に余裕のある別ディレクトリ(たとえば/usr/local/varあたり?)に
ディレクトリごとシンボリックリンクするとか有効かもしれません。

この回答への補足

確認結果です。
/var/spoolのmqueue,clientmqueue共に殆ど使用していませんでした。

該当サーバでは、MTAとして、sendmailを使用しています。
sendmailの場合、標準ではメールボックスが/var/mailに作られますが、/var/mailディレクトリごと、/usr/mailにシンボリックリンクしています。
そのため、現状では/varの容量を1GBにしています。

もし、この/varの容量が不足している場合に、/var自体をどこかにシンボリックリンクすることなど可能なものでしょうか?

補足日時:2012/10/31 14:01
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
このサイト自体の利用が初めてなので、お礼が送れて申し訳ありません。
ご指摘いただいた内容でを確認してみます。

お礼日時:2012/10/31 10:50

はじめまして。



> cronでの展開処理の際の一時利用ディレクトリを別ディレクトリに指定する等の回避方法がお分かりの方はお教えいただけると助かります。

FreeBSDには詳しくないのですが、単純にcronから呼び出されているシェルスクリプトの問題では?
おそらくtarやzipコマンドでメールボックスを圧縮しているのでしょうが、

tar czvf /var/のどっかのフォルダ/メールバックアップ.tar.gz /usr/home/ユーザ名/メールボックス

となっている行があったら、/var~を別のディレクトリに変更すればいいんじゃないでしょうか。

この回答への補足

確認結果です。

該当サーバでは、MTAとして、sendmailを使用しています。
sendmailの場合、標準ではメールボックスが/var/mailに作られますが、/var/mailディレクトリごと、/usr/mailにシンボリックリンクしています。
そのため、現状では/varの容量を1GBにしています。

この状態で、正サーバ側では、以下のスクリプトでバックアップを圧縮ファイルで取得しています。
!/bin/csh -f
set DIR = "/usr/home/tool/back/file"
|
(中略)
|
cd /usr/mail
tar cvf - ./* | compress > $DIR/usr-mail.Z

この処理を完了後、副サーバ上で以下のスクリプトを実行して、展開しています。
#!/bin/csh -f
set DIR = "/ss4gw/usr/tool/back/file"
|
(中略)
|
cd /usr/mail
\rm *
zcat $DIR/usr-mail.Z | tar xvf -

("/ss4gw/usr/tool/back/file"は正サーバ上のディレクトリをネットワークマウントしたものです)

スクリプト上は、/varの指定はしていないのですが、副サーバでの展開処理の際に、/varの容量不足と思われるメッセージを出力して異常終了します。

この処理の組合せ自体は、前担当者が作ったもので、どのような意図でこうなっているかは不明です。

お気づきの点等あれば、アドバイスいただけると助かります。

補足日時:2012/10/31 14:13
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
このサイト自体の利用が初めてなので、お礼が送れて申し訳ありません。
ご指摘いただいた内容でを確認してみます。

お礼日時:2012/10/31 10:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!