FAT32
Linux Redhat ワークステーションからフォーマット済みの外付けハード ディスク ( Mac ディスク ユーティリティでフォーマット済み)に大量のファイルを転送しているときにWD 2 TB
、ディスクに十分な空き容量がないというエラーが発生しました。しかし、~700 GB
ディスク容量が残っていることを確認したので、長いファイル名が原因でディスク容量が不足しているのではないかと思います (よくわかりません)。どうすれば確認できますか?
私の外付けHDDの詳細は
/dev/sdc1 on /media/GUDDULINUX3 type vfat (rw,nosuid,nodev,relatime,uid=988,gid=2000,fmask=0022,dmask=0077,codepage=cp437,iocharset=ascii,s
~545
現在、約 個のディレクトリがあり、各ディレクトリには から 個のファイルがあります。各ファイルは、サイズが (du -sh で確認) または (それぞれ約半分) のバイナリ ファイルで~7000
、名前は( 文字長) のようなものです。ファイル サイズは問題ないように見えますが、これは、ファイル サイズが または浮動小数点数のバイナリ ファイルであると考えられるためです。~11000
~32K
96K
XC6_9k.131_132.12.2012.210.s3
29
8000
24000
他に何か問題がある可能性はありますか? 残念ながら、ディレクトリによって消費されるディスク容量を正確に確認することはできません。試行するとdu -sh
永遠に時間がかかります。
編集1- Macのディスクユーティリティを使用して外付けハードディスクを検証したところ、次のように表示されました -
11361590 files, 1076797472 KiB free (33649921 clusters)
編集2-
Angelo の提案に従って、ラップトップ (Mac) に接続された外付けハード ディスクでdf -h
と を試しました。 の空き inode が不足しているようです。 対処法について何かアドバイスはありますか。ディレクトリごとに小さなファイルを 1 つのファイルにすると、inode が増えますか。フォーマット済みのディスクに移動する必要がありますか。df -i
/Volumes/GUDDULINUX3
tar
tar
NTFS
avinash$ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk0s2 233Gi 216Gi 17Gi 93% 56587186 4482254 93% /
devfs 187Ki 187Ki 0Bi 100% 646 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
/dev/disk1s1 1.8Ti 836Gi 1.0Ti 45% 0 0 100% /Volumes/GUDDULINUX3
avinash$ df -i
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk0s2 488555536 452185504 35858032 93% 56587186 4482254 93% /
devfs 373 373 0 100% 646 0 100% /dev
map -hosts 0 0 0 100% 0 0 100% /net
map auto_home 0 0 0 100% 0 0 100% /home
localhost:/rGEmV8JCfpffeQBEQFAlLe 488555536 488555536 0 100% 0 0 100% /Volumes/MobileBackups
/dev/disk1s1 3906009792 1752414720 2153595072 45% 0 0 100% /Volumes/GUDDULINUX3
これらは、Linux ワークステーションに接続されたディスクの結果であり、inode 情報は表示されません。
seismo82% df -h /media/GUDDULINUX3/
Filesystem Size Used Avail Use% Mounted on
/dev/sdc1 1.9T 836G 1.1T 45% /media/GUDDULINUX3
seismo82% df -i /media/GUDDULINUX3/
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdc1 0 0 0 - /media/GUDDULINUX3
編集3-
inode
ではうまくいかないようですFAT32
。問題は、FAT32
ディレクトリに存在できるファイル数の下限が、~65k
ファイル名に応じて より低いことだと思います。まず、ext HDD 内の既存のファイルを大量に tar で圧縮しました。これで、かなりのinodes
(またはFAT32
同等の) 空き容量が確保できたはずです。しかし、それでも大きなディレクトリ (~23k
ファイルがある) を移動すると、「デバイスに空き容量がありません」というエラーが表示されました。次に、個々のファイルを移動する代わりに、ディレクトリの tar を作成し、外部ディスクに移動できました。ext ディスクで解凍しようとすると、再びエラーが発生しました。つまり、ディレクトリ内のファイル数の上限に達したと思います。翻訳:のコメント
ディレクトリあたりの最大ファイル数
移動時にエラーが報告されたディレクトリを確認しました。文字16383
を含むファイル名の場合は files 、文字を含むファイル名の場合はfiles という制限があるようです。理論的には、形式の名前を持つファイルの場合は files という制限があります。問題の診断に協力してくれた皆さんに感謝します。今のところは、手元にあるものはすべて tar で圧縮するだけです。29
21843
20
~65k
8.3
答え1
FAT32 ファイル システムのパーティション サイズの制限、ファイル サイズの制限、およびディレクトリ サイズの制限 (これらはすべてご存知のとおりです) に加えて、ディレクトリに関係なく、FAT32 ボリューム上のファイル総数には最大 268,435,437 という制限もあります。
ざっと計算すると、545のディレクトリにそれぞれ7000個のファイルがあるとすると、ほぼ4百万ファイル数は FAT32 が処理できる範囲をはるかに超えています。