たくさんのシステムをチェックして、読み取り専用でマウントされているファイルシステムを見つけるにはどうすればよいですか?おそらくスクリプト経由ですか?
awk '$4~/(^|,)ro($|,)/' /proc/mounts
問題のあるファイルシステムを見つけることを意図している場合(つまり、ファイルシステムエラーのためにマウントステータスが読み取り専用に変更されている場合)、次のようにします(ext *ファイルシステムを想定)。
tune2fs -e panic [raw-disk-partition-name]
例:
tune2fs -e panic /dev/sda1
これにより、システムがパニックになり、サーバーが再起動し、問題のあるファイルシステムでfsckが呼び出されて修正されます。したがって、深刻なファイルシステムの問題は、システムが自動的に修正することによって処理されます。これは、私があまり役に立たないと感じた読み取り専用モードにダンプするのではなく、さらに、問題のあるファイルシステムをパニックにしたいのですが、時間が経つにつれ、より多くの損傷を引き起こす可能性がある損傷した状態で実行しようとするよりも、ファイルシステムを修正します。
私は過去に以下を使用しました
grep ' ro ' /proc/mounts
場合によっては、ROの仕様になっている可能性があるリモートマウントをスキップすることができます。
grep ' ro ' /proc/mounts | grep -v ':'
Automountでマウントされたものをスキップすることもできます
grep ' ro ' /proc/mounts | egrep -v 'automount|autofs'
cat /proc/mounts|sort|awk '{print $1 "\011" toupper(substr($4,0,2))}'
マウント名とモードを含むタブ区切りの出力を生成します。
私は少し遅れましたが、これは私がそれを処理する方法です。
#!/bin/bash
FILE=/tmp/test.txt
# Check health of LXD Host machine
touch ${FILE}
if [ -f ${FILE} ];
then
rm ${FILE}
echo "File System is Good!"
else
message="File System is R/O !"
echo ${message} >> /var/log/lxd/health.log >&2
send_twilio "${TWILIO_ACCOUNT_SID}" "${TWILIO_ACCOUNT_TOKEN}" "${TWILIO_NUMBER}" "${to_twilio}" "${Host}" "${message}"
他の回答が示唆しているように、grep
またはawk
を使用して/proc/mounts
を解析できます。たとえば、読み取り専用のマウントを一覧表示できます。
$ grep "\sro[\s,]" /proc/mounts
または
$ awk '$4~/(^|,)ro($|,)/' /proc/mounts
あなたが試すことができる/proc/mounts
のコンテンツを解析する代わりの方法は
$ grep '^ro$' /proc/fs/*/<device>/options
ここで、<device>
は/dev
の下のファイルシステムのデバイスノード名です。例えば
$ grep '^ro$' /proc/fs/*/sdc1/options
/dev/sdc1
が読み取り専用でマウントされている場合、ro
を返します。
(マウントされたファイルシステムの代わりに)読み取り専用のブロックデバイスを確認したい場合は、
$ cat /sys/block/<device>/ro
ファイルシステムが読み取り専用の場合は1
を、読み取り/書き込みの場合は0
を返します。
上記の<device>
は実際のデバイスノードを指すことに注意してください。シンボリックリンクデバイス(device-mapperまたはby-uuid
参照によって作成されたデバイスなど)を確認する場合は、basename
およびreadlink
を使用してデバイスノード名を取得します。これらの例のように:
$ grep '^ro$' /proc/fs/*/$(basename $(readlink -f /dev/mapper/foo)/options
$ cat /sys/block/$(basename $(readlink -f /dev/mapper/foo)/ro
リモートファイルシステム(roにエクスポートしてもrwにマウントでき、読み取り専用のファイルシステムになる)でも機能するアプローチは、各ファイルシステムでテストファイルを作成し、そのコマンドの戻りコードをテストすることです。 。
しかし、これが定期的に発生する問題である場合は、症状を修正し続けるのではなく、原因を調査する必要があります。
ro
マウントオプションを探してください。