ファイルバックアップNo space left on deviceエラー
今日はbackupを見ます.logファイルでは、多くのエラーが報告されています.
gzip: stdout: No space left on device mysqldump: Got errno 32 on write
このエラーの原因:ファイルのinodeが切れたためです.
Linux/Unix like OSのファイルシステムの各ディレクトリツリーのノードは、Windowsのようにファイルの具体的な情報を直接含んでいるのではなく、ファイル名とInode numberのみを含んでいます.ファイルのサイズ/物理アドレス/所有者/アクセス/タイムスタンプ/ハードリンクされた回数などの実際のmetadataは、Inode numberによって見つけられたファイル名に対応するInodeノードに記録されます.そのため、Linuxシステムではハードリンク(hard link)でファイルに複数の異なるディレクトリの下にあるファイル名を作成することができますが、実際のファイルデータにはコピーが必要です.
しかし、このようなファイルシステムの構造のため、LinuxでIO操作を行う場合、必要なリソースはディスクスペースのほかに、Inodeが残っています.デフォルトでは、Linuxはシステムのインストール中に1つのInodeに対応する2 kディスク領域で各パーティションの最大Inode数を計算します.ファイルシステムが作成されると、各パーティションで使用可能なInode数は動的に調整できません.
バックアップハードディスク(HDD)でこのようなエラーが発生したのは、小さな画像や他の小さなファイルが大量に存在し、Inodeが消費される可能性があるためです.
解決策も簡単です.まず、現在の各ディスクInodeの使用状況を確認します.
それから、小さなファイルの数を減らす方法を考えます.ファイルシステムのInodeを解放すればOKです.
gzip: stdout: No space left on device mysqldump: Got errno 32 on write
このエラーの原因:ファイルのinodeが切れたためです.
Linux/Unix like OSのファイルシステムの各ディレクトリツリーのノードは、Windowsのようにファイルの具体的な情報を直接含んでいるのではなく、ファイル名とInode numberのみを含んでいます.ファイルのサイズ/物理アドレス/所有者/アクセス/タイムスタンプ/ハードリンクされた回数などの実際のmetadataは、Inode numberによって見つけられたファイル名に対応するInodeノードに記録されます.そのため、Linuxシステムではハードリンク(hard link)でファイルに複数の異なるディレクトリの下にあるファイル名を作成することができますが、実際のファイルデータにはコピーが必要です.
しかし、このようなファイルシステムの構造のため、LinuxでIO操作を行う場合、必要なリソースはディスクスペースのほかに、Inodeが残っています.デフォルトでは、Linuxはシステムのインストール中に1つのInodeに対応する2 kディスク領域で各パーティションの最大Inode数を計算します.ファイルシステムが作成されると、各パーティションで使用可能なInode数は動的に調整できません.
バックアップハードディスク(HDD)でこのようなエラーが発生したのは、小さな画像や他の小さなファイルが大量に存在し、Inodeが消費される可能性があるためです.
解決策も簡単です.まず、現在の各ディスクInodeの使用状況を確認します.
- ##[root@svr1 disk2]# df -i
- Filesystem Inodes IUsed IFree IUse% Mounted on
- /dev/mapper/VolGroup00-LogVol00
- 37781504 1024057 36757447 3% /
- /dev/sda1 26104 62 26042 1% /boot
- tmpfs 189160 1 189159 1% /dev/shm
- /dev/sdc5 122109952 12918904 109191048 11% /disk2
- /dev/sdb5 122109952 616980 121492972 1% /disk3
- mfs#192.168.100.15:9421
- 1001869388 863377 1001006011 1% /gmfs
それから、小さなファイルの数を減らす方法を考えます.ファイルシステムのInodeを解放すればOKです.