サーバーのホームスペースがいっぱいで、不要なファイルをクリアする必要があることがわかりましたが、ファイルを削除した後、使用可能なスペースが変更されていないことがわかりました。
os:centos6.0
現象:
現在のディスクスペース使用量が見つかりました:
[ root@ticketb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 981M 203M 729M 22% /
none 16G 0 16G 0%/dev/shm
/dev/sda9 2.9G 37M 2.7G 2%/tmp
/dev/sda7 4.9G 1.9G 2.7G 42%/usr
/dev/sda8 2.9G 145M 2.6G 6%/var/dev/mapper/vghome-lvhome
20 G 19G 11M 100%/home
/dev/mapper/vgoradata-lvoradata
144 G 48G 90G 35%/u01/oradata
/dev/mapper/vgbackup-lvbackup
193 G 7.8G 175G 5%/u01/backup
次のコマンドを使用して不要なファイルを見つけてから削除します
[ root@ticketb ~]# find /home/oracle/admin/dbticb/udump/ -name "dbticb_*.trc" -mtime +50 | xargs rm -rf
その後、ディスクスペースの使用状況を確認した後、/ homeスペースに変更はありません。
[ root@ticketb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 981M 203M 729M 22% /
none 16G 0 16G 0%/dev/shm
/dev/sda9 2.9G 37M 2.7G 2%/tmp
/dev/sda7 4.9G 1.9G 2.7G 42%/usr
/dev/sda8 2.9G 145M 2.6G 6%/var/dev/mapper/vghome-lvhome
20 G 19G 11M 100%/home
/dev/mapper/vgoradata-lvoradata
144 G 48G 90G 35%/u01/oradata
/dev/mapper/vgbackup-lvbackup
193 G 7.8G 175G 5%/u01/backup
これは気のめいるようです。ファイルを削除しました。スペースが解放されなかった理由です。rmコマンドを直接削除する必要があります。/homeの下で占有されているスペースを確認してください。
[ root@ticketb ~]# du -h --max-depth=1/home
16 K /home/lost+found
2.6 G /home/oracle
2.6 G /home
しかし、ここの表示スペースは解放されているので、グーグルの下で、
ディスクスペースを解放しない理由:
LinuxまたはUnixシステムでは、rmまたはファイルマネージャーを使用してファイルを削除すると、ファイルシステムのディレクトリ構造からリンクが解除(リンク解除)されます。ただし、ファイルが
開くと(使用中のプロセスがあります)、プロセスは引き続きファイルを読み取ることができ、ディスク領域は常に占有されます。そして私が削除したのはオラクルアラームログファイルです
ファイルは削除時に使用されている必要があります
解決
最初に、以下に示すように、削除されたがアプリケーションによって占有されているファイルのリストを取得します。
[ root@ticketb ~]# lsof |grep deleted
oracle 12639 oracle 5w REG 253,0648215907/home/oracle/admin/dbticb/udump/dbticb_ora_12637.trc(deleted)
oracle 12639 oracle 6w REG 253,016749822091215748/home/oracle/admin/dbticb/bdump/alert_dbticb.log(deleted)
oracle 12639 oracle 7u REG 253,0036282/home/oracle/oracle/product/10.2.0/db_1/dbs/lkinstdbticb(deleted)
oracle 12639 oracle 8w REG 253,016749822091215748/home/oracle/admin/dbticb/bdump/alert_dbticb.log(deleted)
oracle 12641 oracle 5w REG 253,0648215907/home/oracle/admin/dbticb/udump/dbticb_ora_12637.trc(deleted)
oracle 12641 oracle 6w REG 253,016749822091215748/home/oracle/admin/dbticb/bdump/alert_dbticb.log(deleted)
。
。
oracle 23492 oracle 6w REG 253,016749822091215748/home/oracle/admin/dbticb/bdump/alert_dbticb.log(deleted)
oracle 23492 oracle 7u REG 253,0036282/home/oracle/oracle/product/10.2.0/db_1/dbs/lkinstdbticb(deleted)
oracle 23492 oracle 8w REG 253,016749822091215748/home/oracle/admin/dbticb/bdump/alert_dbticb.log(deleted)
oracle 23494 oracle 10u REG 253,0036307/home/oracle/oracle/product/10.2.0/db_1/dbs/lkinstrmandb(deleted)
出力から、/ home / oracle / admin / dbticb / bdump / alert_dbticb.logがまだ使用されており、スペースが解放されていないことがわかります。
プロセスを解放する方法は?
1つの方法は、対応するプロセスを強制終了するか、このファイルを使用するアプリケーションを停止して、osにディスクスペースを自動的に再利用させることです。
このファイルは私の環境の多くのプロセスで使用されています。プロセスを停止するのは少し面倒で、非常に危険です。
linuxがファイルを開くと、Linuxカーネルは/ proc / "/ proc / nnnn / fd /ディレクトリ(nnnnはpid)"にプロセスごとにpidを作成します。
名前付きディレクトリは、プロセスに関する情報を格納するために使用され、そのサブディレクトリfdは、プロセスによって開かれたすべてのファイルのfd(fd:ファイル記述子)を格納します。
強制終了プロセスでは、procファイルシステム内のファイルを切り捨てることにより、システムに使用用に割り当てられたファイルを再利用させることができます。
これは高度な手法であり、管理者が実行中のプロセスに影響を与えないと確信している場合にのみ使用されます。これへの適用
サポートが良くない使用中のファイルが切り捨てられると、予期しない問題が発生する可能性があります
だから私はまだ停止アプリケーションを使用して解決します
oracleデータベースを再起動し、/ home / oracle / admin / dbticb / bdump /alert_dbticb.logに対応するスペースが解放されていることを確認します
ディスクスペースの使用状況を確認したところ、スペースが再利用されていることがわかりました
[ root@ticketb ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 981M 203M 729M 22% /
none 16G 0 16G 0%/dev/shm
/dev/sda9 2.9G 37M 2.7G 2%/tmp
/dev/sda7 4.9G 1.9G 2.7G 42%/usr
/dev/sda8 2.9G 145M 2.6G 6%/var/dev/mapper/vghome-lvhome
20 G 2.6G 16G 15%/home
/dev/mapper/vgoradata-lvoradata
144 G 48G 90G 35%/u01/oradata
/dev/mapper/vgbackup-lvbackup
193 G 7.8G 175G 5%/u01/backup
わかりました、問題は解決されてから、仕上げ作業を行います
lsofコマンドを学ぶ
lsofのフルネームは、開いているファイルのリストです。これは、システムで開かれているファイルをリストするためのものです。 Linux環境では、すべてがファイルであることは誰もが知っています。
デバイスはファイルであり、ディレクトリはファイルであり、ソケットでさえファイルです。したがって、lsofコマンドは日常のLinux管理に非常に役立ちます。
lsofはLinuxで最も一般的に使用されるコマンドの1つであり、通常の出力形式は次のとおりです。
見積もり
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
通常、次のフィールドを含めます。より見やすいマニュアル。
1、 COMMAND
デフォルトで表示されるコマンド名。長さは9文字です。 + cパラメータを使用して、表示の幅を指定できます。+ cが後に続くパラメータがゼロの場合、コマンドのフルネームが表示されます。
2、 PID:プロセスのID番号
3、 PPID
親プロセスのIP番号はデフォルトでは表示されません。-Rパラメーターを使用すると開くことができます。
4、 PGID
プロセスグループのID番号はデフォルトでは表示されません。-gパラメータを使用すると開くことができます。
5、 USER
コマンドの実行UIDまたはシステムにログインしているユーザーの名前。デフォルトの表示はユーザー名です。-lパラメーターを使用すると、UIDを表示できます。
6、 FD
ファイルのファイル記述子番号、または次の内容です。
(ここで対応する意味を翻訳することは困難です、英語を維持してください)
見積もり
cwd current working directory;
Lnn library references(AIX);
jld jail directory(FreeBSD);
ltx shared library text(code and data);
Mxx hex memory-mapped type number xx.
m86 DOS Merge mapped file;
mem memory-mapped file;
mmap memory-mapped device;
pd parent directory;
rtd root directory;
tr kernel trace file(OpenBSD);
txt program text(code and data);
v86 VP/ix mapped file;
ファイルのファイル記述子番号の表示モードは次のとおりです。
見積もり
r for read access;
w for write access;
u for read and write access;
N for a Solaris NFS lock of unknown type;
r for read lock on part of the file;
R for a read lock on the entire file;
w for a write lock on part of the file;
W for a write lock on the entire file;
u for a read and write lock of any length;
U for a lock of unknown type;
x for an SCO OpenServer Xenix lock on part of the file;
X for an SCO OpenServer Xenix lock on the entire file;
space if there is no lock.
7、 TYPE
見積もり
IPv4IPv4パッケージ;
IPv6はIPv6形式のパケットを使用します。アドレスがIPv4の場合でも、IPv6として表示され、IPv6アドレスにマップされます。
DIRディレクトリ
LINKリンクファイル
詳細については、マニュアルのその他の注記を参照してください。
8、 DEVICE
文字スペシャルとブロックスペシャルで表されるデバイス番号
9、 SIZE
ファイルのサイズ。サイズで表現できない場合は空白になります。 -sパラメーターを使用して制御します。
10、 NODE
ローカルファイルのノードコード、またはTCPなどのプロトコル。
11、 NAME
マウントポイントとファイルのフルパス(リンクは実際のパスに解決されます)、または接続されているパーティのアドレス、ポート、ステータスなど
一般的な例:
[ root@svr-db-test ~]# lsof /home/oracle/10.2.0/db_1/bin/tnslsnr
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tnslsnr 3520 oracle txt REG 253,543106211408866/home/oracle/10.2.0/db_1/bin/tnslsnr
[ root@svr-db-test ~]# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 3101 root 3u IPv6 8670 TCP *:ssh(LISTEN)
sshd 4545 root 3u IPv6 4237972 TCP 203.aibo.com:ssh->win-avbmq9e8ka7.gdgg.local:nsjtp-ctrl(ESTABLISHED)
[ root@svr-db-test ~]# lsof -c init
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 253,040962/
init 1 root rtd DIR 253,040962/
init 1 root txt REG 253,043496524446/sbin/init
init 1 root mem REG 253,0130448917826/lib64/ld-2.5.so
init 1 root mem REG 253,01678480917827/lib64/libc-2.5.so
init 1 root mem REG 253,023520917686/lib64/libdl-2.5.so
init 1 root mem REG 253,0247528917844/lib64/libsepol.so.1
init 1 root mem REG 253,095480917845/lib64/libselinux.so.1
init 1 root 10u FIFO 0,162311/dev/initctl
[ root@svr-db-test ~]# lsof -p 1
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 253,040962/
init 1 root rtd DIR 253,040962/
init 1 root txt REG 253,043496524446/sbin/init
init 1 root mem REG 253,0130448917826/lib64/ld-2.5.so
init 1 root mem REG 253,01678480917827/lib64/libc-2.5.so
init 1 root mem REG 253,023520917686/lib64/libdl-2.5.so
init 1 root mem REG 253,0247528917844/lib64/libsepol.so.1
init 1 root mem REG 253,095480917845/lib64/libselinux.so.1
init 1 root 10u FIFO 0,162311/dev/initctl
[ root@svr-db-test ~]# lsof -g 3520
COMMAND PID PGID USER FD TYPE DEVICE SIZE NODE NAME
tnslsnr 35203520 oracle cwd DIR 253,5409611059201/home/oracle
tnslsnr 35203520 oracle rtd DIR 253,040962/
tnslsnr 35203520 oracle txt REG 253,543106211408866/home/oracle/10.2.0/db_1/bin/tnslsnr
tnslsnr 35203520 oracle mem REG 253,0130448917826/lib64/ld-2.5.so
tnslsnr 35203520 oracle mem REG 253,01678480917827/lib64/libc-2.5.so
tnslsnr 35203520 oracle mem REG 253,023520917686/lib64/libdl-2.5.so
tnslsnr 35203520 oracle mem REG 253,0615136917834/lib64/libm-2.5.so
tnslsnr 35203520 oracle mem REG 253,0141208917829/lib64/libpthread-2.5.so
tnslsnr 35203520 oracle mem REG 253,0109824917839/lib64/libnsl-2.5.so
tnslsnr 35203520 oracle mem REG 253,52070662211405436/home/oracle/10.2.0/db_1/lib/libclntsh.so.10.1
tnslsnr 35203520 oracle mem REG 253,5380309711410641/home/oracle/10.2.0/db_1/lib/libnnz10.so
tnslsnr 35203520 oracle mem REG 253,58349311407251/home/oracle/10.2.0/db_1/lib/libons.so
tnslsnr 35203520 oracle mem REG 253,053880917532/lib64/libnss_files-2.5.so
tnslsnr 35203520 oracle mem REG 253,5854511407615/home/oracle/10.2.0/db_1/lib/libskgxn2.so
tnslsnr 35203520 oracle mem REG 253,551370511410332/home/oracle/10.2.0/db_1/lib/libocrutl10.so
tnslsnr 35203520 oracle mem REG 253,563616111410330/home/oracle/10.2.0/db_1/lib/libocr10.so
tnslsnr 35203520 oracle mem REG 253,565782511410331/home/oracle/10.2.0/db_1/lib/libocrb10.so
tnslsnr 35203520 oracle mem REG 253,5174576911410365/home/oracle/10.2.0/db_1/lib/libhasgen10.so
tnslsnr 35203520 oracle mem REG 253,56198511410366/home/oracle/10.2.0/db_1/lib/libclsra10.so
tnslsnr 35203520 oracle 0u CHR 1,32553/dev/null
tnslsnr 35203520 oracle 1u CHR 1,32553/dev/null
tnslsnr 35203520 oracle 2u CHR 1,32553/dev/null
tnslsnr 35203520 oracle 3w REG 253,531885301211633459/home/oracle/10.2.0/db_1/network/log/listener.log
tnslsnr 35203520 oracle 4r FIFO 0,615661 pipe
tnslsnr 35203520 oracle 5r REG 253,51177611410579/home/oracle/10.2.0/db_1/network/mesg/nlus.msb
tnslsnr 35203520 oracle 6r REG 253,54659211407160/home/oracle/10.2.0/db_1/network/mesg/tnsus.msb
tnslsnr 35203520 oracle 7w FIFO 0,615662 pipe
tnslsnr 35203520 oracle 8u IPv4 15665 TCP 203.aibo.com:ncube-lm(LISTEN)
tnslsnr 35203520 oracle 9u unix 0xffff81021b7d698015666/var/tmp/.oracle/s#3520.1
tnslsnr 35203520 oracle 10u unix 0xffff81021b7d66c015668/var/tmp/.oracle/s#3520.2
[ root@svr-db-test ~]# lsof +d /home/oracle
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tnslsnr 3520 oracle cwd DIR 253,5409611059201/home/oracle
[ root@svr-db-test ~]# lsof +D /home/oracle
構文:lsof -i [46] [protocol] [@ hostname | hostaddr] [:service | port]
46 - - > IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr-> IPv4の場所
service-> / etc / service内のサービス名(複数の場合があります)
ポート->ポート番号(複数の可能性があります)
例:
[ root@svr-db-test ~]# lsof -i [email protected]:1521-n
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
oracle 15633 oracle 16u IPv4 4069605 TCP 192.168.2.203:31580->192.168.2.245:ncube-lm(ESTABLISHED)
または
[ root@svr-db-test ~]# lsof -i [email protected]:1521
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
oracle 15633 oracle 16u IPv4 4069605 TCP 203.aibo.com:31580->192.168.2.245:ncube-lm(ESTABLISHED)
lsof -nはIPをホスト名に変換しません。デフォルトでは、-nパラメーターは追加されません
[ root@svr-db-test ~]# lsof -u oracle
または
[ root@svr-db-test ~]# lsof -u 0
[ root@svr-db-test ~]# lsof -tc sshd
3101
4545
注意:
プロセスデバッグコマンド:truss、strace、ltrace
プロセスを開始できない、ソフトウェアの実行速度が突然遅くなる、プログラムの「SegmentFault」などはすべてUnixシステムユーザーにとって頭痛の種です。これらの問題は、truss、strace、ltraceの3つの一般的なデバッグツールを使用することで解決できます。ソフトウェアの「難治性疾患」を迅速に診断します。
Recommended Posts