NFS共有をマウントしてみてください(次からインディアナオープンサーバー) クライアントマシンでOIサーバーがクラッシュしました。ログダンプのように見える黒い死画面が表示された後、システムが再起動します。回復されておらず、起動を停止した後、次のエラーメッセージが表示されました。
svc.startd[9] Could not log for svc:/network/dns/mulitcast:default: write(30) failed with No space left on device?
私のブートドライブにはOS以外には何もありません...ドライブに何がいっぱいになるのかわかりません。おそらくどのようなログファイルですか?とにかく何も削除できないようです。何でも削除しようとすると、スペースなしエラーが発生します。
$ rm filename
cannot remove 'filename' : No space left on device
メンテナンスモードにログインできますが、標準ユーザープロンプトにはログインできません。
出力はdf
次のとおりです
rpool/ROOT/openindiana-baseline 4133493 4133493 0 100% /
swap 83097900 11028 830386872 1% /etc/svc/volatile
/usr/lib/libc/libc_hwcap1.so.1 4133493 4133493 0 100% /lib/libc.so.1
出力はmount
次のとおりです
/ on rpool/ROOT/openindiana-baseline read/write/setuid/devices/dev:2d9002 on Wed Dec 31 16:00:00 1969
/devices on /devices read/write/setuid/devices/dev:8b40000 on Fri Jul 8 14:56:54 2011
/dev on /dev read/write/setuid/devices/dev:8b80000 on Fri Jul 8 14:56:54 2011
/system/contract on ctfs read/write/setuid/devices/dev:8c40001 on Fri Jul 8 14:56:54 2011
/proc on proc read/write/setuid/devices/dev:8bc0000 on Fri Jul 8 14:56:54 2011
/etc/mnttab on mnttab read/write/setuid/devices/dev:8c80001 on Fri Jul 8 14:56:54 2011
/etc/svc/volatile on swap read/write/setuid/devices/xattr/dev:8cc0001 on Fri Ju8 14:56:54 2011
/system/object on objfs read/write/setuid/devices/dev:8d00001 on Fri Jul 8 14:6:54 2011
/etc/dfs/sharetab on sharefs read/write/setuid/devices/dev:8d40001 on Fri Jul 14:56:54 2011
/lib/libc.s0.1 on /usr/lib/libc/libc_hucap1.s0.1 read/write/setuid/devices/dev:d90002 on Fri Jul 8 14:57:06 2011
「zfs list -t all」の出力は次のようになります。
rpool 36.4G 0 47.5K /rpool
rpool/ROOT 4.23G 0 31K legacy
rpool/ROOT/openindiana 57.5M 0 3.99G /
rpool/ROOT/openindiana-baseline 61K 0 3.94G /
rpoo1/ROOT/openindiana-system-edge 4.17G 0 3.98G /
rpool/ROOT/openindiana-system-edge@install 19.9M - 3 38G -
rpoo1/ROOT/openindiana-system-edge@2011-07-06-20:45:08 73.1M - 3.57G -
rpoo1/ROOT/openindiana-system-edge@2011-07-06-20:48:53 75.9M - 3 82G -
rpoo1/ROOT/openindiana-system-edge@2011-07-07-02:14:04 61K - 3.94G -
rpoo1/ROOT/openindiana-system-edge@2011-07-07-02:15:14 61K - 3.94G -
rpoo1/ROOT/openindiana-system-edge@2011-07-07-02:28:14 61K - 3.94G -
rpool/ROOT/openindiana-system-stable 61K 0 3.94G /
rpoo1/ROOT/pre_first_update_07.06 108K 0 3 82G /
rpool/ROOT/pre_second_update_07.06 90K 0 3.57G /
rpool/dump 9.07G 0 9.07G -
rpool/export 3.85G 0 32K /export
rpool/export/home 3.85G 0 32K /export/home
rpool/export/home/admin 3.85G 0 3.85G /export/home/admin
rpool/swap 19.3G 19.1G 126M -
答え1
ああ、変ですね…ファイルを削除するスペースが足りません!
これはすべてのファイルシステムで発生する可能性がありますが、ZFSでは比較的一般的な問題であることがわかりました。持つ スナップ写真。
削除するファイルがスナップショットにまだ存在するという説明です。したがって、削除してもコンテンツはまだ存在し(スナップショットのみ)、システムはスナップショットにファイルがあったが現在の状態にはないという情報をさらに記録する必要があります。追加情報に十分なスペースがありません。
短期的な回避策は、最新のスナップショット以降に作成されたファイルを見つけて削除することです。もう1つの方法は、最新のスナップショットの後に添付されたファイルを見つけて、最新のスナップショットの時点でサイズに切り捨てることです。ログにスパムが発生してディスクがいっぱいになったら、最大のログファイルを切り取ります。
より一般的な修正は、一部のスナップショットを削除することです。リストスナップショットを使用できますzfs list -t snapshot
。特定のスナップショットを削除すると、そのスナップショットがどのくらいのスペースを取り戻すかを予測する簡単な方法はないようです。スナップショットに保存されているデータが他のスナップショットに必要になる可能性があるため、そのスナップショットを削除してもデータはそのまま残ります。したがって、必要に応じてデータを別のディスクにバックアップし、不要になったスナップショットを識別してから実行しますzfs destroy name/of/snap@shot
。
この問題に関する広範な議論があります。このOpenSolarisフォーラムのトピック。
答え2
これは、書き込み中のコピーファイルシステムのよく知られた問題です。ファイルを削除するには、ファイルシステムが最初にブロックを割り当てて新しい状態を回復するまで、削除されたファイルに含まれている多くのスペースを解放できます。ファイル。
(これはいいえ書き込み中にコピーに加えてスナップショットを実装する他の方法があるため、スナップショットがあるファイルシステムに問題があります。
問題から抜け出す方法:
- スナップショットの公開(存在する場合...)
- プール拡張(割り当てが残っている場合)
- プール内の他のファイルシステムを削除した後の圧縮ファイルシステムの拡張
- ファイルを切り取り、削除します。 (たとえタイトに絞り込んで、そうすることはできませんが、ZFS議論のスレッド)
- ファイルの関連付けを解除します。 (同じ上記と)
私は数年前に同じ落とし穴に陥りましたが、私を救うための投稿可能なスナップショットはありませんでした。スレッドビューZFS議論この問題は深く議論された。
答え3
4.Z3G(rpool / root USED列)が疑わしいです。
とにかく、rpool/export/home/adminが大きすぎる場合(3.85GB)が根本的な原因である可能性があります。内容を確認し、不要なファイルを削除してください。管理対象ファイルシステムにはスナップショットがないため、プール内の一部のスペースをすぐに解放する必要があります。
答え4
私はこれを持っていて、何が必要かを理解しようとしばらく時間を費やしました。私の解決策は、ファイルを削除する前にファイルスペースをゼロにすることでした。
時々奇妙に動作し、ディスクをコアファイル(数字で終わるファイル)で埋めるいくつかの誤動作するプロセスがあるため、コピーを保持するためにこのようなスクリプトを作成しました。
for file in core*[0-9]
do
coreFile=${file%.[0-9]*}
mv $file $coreFile
if [[ $? == 0 ]]
then
chmod 644 $coreFile
else
truncate -s 0 $file # we can't just delete if disk is full so zero out first
rm $file
fi
done
スクリプトを実行するとエラーが発生します。
mv: cannot rename core.200000 to core: No space left on device
ファイルを消去できます。
これをテストするために、ディスクに次の項目を記入しました。
for ((ii=0; ii<100000; ii++))
do
mkfile 1m core.$ii
done