クライアントサーバーの1つのディスクスペースが不足しています。
ls -lah
のコマンド/var/lib/mysql
の出力は次のとおりです。
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
しかし、コマンドdu -sh *
を使用して同じカタログ内のファイルサイズを確認すると、出力には次のように表示されます。
22G database_xyz
これらのコマンドの出力が2つのまったく異なる結果を示すのはなぜですか?
ドライブに残っているのは2.2GBだけです。
root@jon-cust-lifeincity:/var/lib/mysql# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg-root 49G 44G 2.2G 96% /
tmpfs 1007M 0 1007M 0% /lib/init/rw
udev 1002M 108K 1002M 1% /dev
tmpfs 1007M 0 1007M 0% /dev/shm
/dev/sda1 228M 16M 200M 8% /boot
編集:
database_xyz
は実際にはカタログであり、ファイルではないことがわかりました。だから混乱は私の脳によって埋められました。
あなたはあなたが言われていることについて誤解しているようです。 ls -lah
コマンドは、現在のディレクトリの内容を一覧表示します。この特定のケースでは、それは/var/lib/mysql
です。とりわけあなたはこれを言われました
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
あなたはこれがあなたに何を言っているのか誤解しています。
ディレクトリは、ディレクトリエントリのリストを含むフラットファイルのようなものと見なすことができます。 (単に)ディレクトリエントリは、ファイル名と、そのファイルがディスク上に存在する場所へのポインタです。この情報はディスクスペースを占有します。
何
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
/var/lib/mysql
にdatabase.xyz
というディレクトリエントリがあることを示しています。このエントリは、ファイルタイプd
用であり、ディレクトリであることを示します。特に、ディレクトリ「file」のサイズは16Kです。
database_xyzファイルのサイズを知るには、次のように入力するだけです。
du -sh database_xyz
あなたは正確な結果を見つけるでしょう
ls
は、ディレクトリサイズを見つけるための適切なツールではありません。ディレクトリではなくファイルに対してのみ機能します。
ディレクトリの詳細をリストしていることがわかります(最初のd
char)
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
代わりにdu
を使用してください。これは 同様の投稿 stackoverflowです。