読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】容量はあるのにファイルが作れん。df と du、inode、e2fsck・tune2fs・dumpe2fs と xfs_repair・xfs_db【LPICレベル1】

16レスカテゴリ:Linux
1: 名無しさん

No space left on device で新しいファイルが作れん
でも df -h ではまだ半分空いてる

2: 名無しさん

前提のおさらい。ファイルシステムは ext4・XFS・Btrfs など種類ごとに mkfs.種類 で作る。作るときに inode の数などが決まる

3: 名無しさん

>>1
df -i を見る。inode(ファイル1個ごとの管理情報)が尽きると、容量が残ってても作れない。小さいファイルが大量にあるときに起きる

4: 名無しさん

>>3
df のオプション
-h 読みやすい単位
-i inode の数と使用率
-T ファイルシステムの種類も
試したら / は Size 128G・Use% 6%、inode は IUse% 6% やった

5: 名無しさん

>>1
どのディレクトリが容量を食ってるかは?

6: 名無しさん

>>5
du。du -sh ディレクトリ で合計、du -h --max-depth=1 で1段下ごと

7: 名無しさん

>>6
truncate で作った64MiB のファイルは、ls -l では 67108864 バイトやのに du では 4.0K やった。du は実際に使ってるブロックを数えるから、穴あきのファイルは小さく出る。--apparent-size を付けると 64M になった

8: 名無しさん

>>2
壊れてないか調べるのは?

9: 名無しさん

>>8
ext 系は e2fsck(fsck から呼ばれる)。アンマウントしてから
e2fsck -n 何も直さずに調べるだけ。きれいなら clean と出て終わった
-f きれいでも全部調べる。Pass 1 から 5 まで動いた
-p 安全なものは聞かずに直す、-y 全部 yes

10: 名無しさん

>>9
設定を見たり変えたりするのが tune2fs
tune2fs -l 情報を表示(ブロック数・inode 数・予約ブロック・マウント回数など)
-L ラベル、-c 30 30回マウントしたらチェック、-i 2w 2週間ごとにチェック、-m 予約ブロックの割合、-j ext2 にジャーナルを足す

11: 名無しさん

>>10
試したら最初は Maximum mount count が -1(回数でのチェックなし)、-c 30 -i 2w のあとは 30 と 1209600 秒(2 weeks)になった

12: 名無しさん

>>10
予約ブロックは root のための残り。65536 ブロックのファイルで 3276 やった

既定の5%で、端数は切り捨て

13: 名無しさん

>>10
dumpe2fs -h でもスーパーブロックの情報が出る。-h なしならブロックグループごとの細かい情報まで

14: 名無しさん

>>8
XFS は?

15: 名無しさん

>>14
xfs_repair で調べて直す(fsck.xfs は何もしない)。xfs_repair -n は調べるだけで、Phase 1 から 7 まで動いて最後に No modify flag set と出た
xfs_db -r で中を読むだけの調査。xfs_admin -l でラベル、-u で UUID
xfs_fsr はマウントしたまま断片化を減らす

16: 名無しさん

>>3
容量は df -h、inode は df -i、場所は du。調べるのは e2fsck -n と xfs_repair -n、設定は tune2fs。これで原因を探せる

管理人のひとこと