ファイルとその名前によって消費される物理ディスク容量

ファイルとその名前によって消費される物理ディスク容量

FAT32Linux 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~32K96KXC6_9k.131_132.12.2012.210.s329800024000

他に何か問題がある可能性はありますか? 残念ながら、ディレクトリによって消費されるディスク容量を正確に確認することはできません。試行するとdu -sh永遠に時間がかかります。

編集1- Macのディスクユーティリティを使用して外付けハードディスクを検証したところ、次のように表示されました - 11361590 files, 1076797472 KiB free (33649921 clusters)

編集2-

Angelo の提案に従って、ラップトップ (Mac) に接続された外付けハード ディスクでdf -hと を試しました。 の空き inode が不足しているようです。 対処法について何かアドバイスはありますか。ディレクトリごとに小さなファイルを 1 つのファイルにすると、inode が増えますか。フォーマット済みのディスクに移動する必要がありますか。df -i/Volumes/GUDDULINUX3tartarNTFS

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 で圧縮するだけです。292184320~65k8.3

答え1

FAT32 ファイル システムのパーティション サイズの制限、ファイル サイズの制限、およびディレクトリ サイズの制限 (これらはすべてご存知のとおりです) に加えて、ディレクトリに関係なく、FAT32 ボリューム上のファイル総数には最大 268,435,437 という制限もあります。

ざっと計算すると、545のディレクトリにそれぞれ7000個のファイルがあるとすると、ほぼ4百万ファイル数は FAT32 が処理できる範囲をはるかに超えています。

関連情報