При переносе большого количества файлов с рабочей станции Linux Redhat на внешний жесткий диск, отформатированный в FAT32
(WD 2 TB
отформатированный утилитой для дисков Mac), я столкнулся с ошибкой, что на моем диске недостаточно места. Но я проверил, осталось ли еще ~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
каталогов, каждый из которых может содержать от ~7000
до ~11000
файлов. Каждый файл представляет собой двоичный файл размером (проверяется с помощью du -sh), ~32K
или 96K
КБ (примерно половина каждого), и его имя похоже на XC6_9k.131_132.12.2012.210.s3
(длиной 29
символов). Размер файла выглядит нормально, поскольку предполагается, что это двоичные файлы с 8000
или 24000
числами с плавающей запятой.
Возможно ли что-то еще не так? К сожалению, я не могу проверить точное дисковое пространство, занимаемое каталогами, попытка du -sh
занимает вечно.
Редактировать 1 - я использовал Mac Disk Utility для проверки внешнего жесткого диска, и он говорит - 11361590 files, 1076797472 KiB free (33649921 clusters)
Редактировать 2 -
Следуя советам Анджело, я попробовал df -h
и df -i
на внешнем жестком диске, подключенном к моему ноутбуку (mac). Похоже, у меня закончились свободные иноды в /Volumes/GUDDULINUX3
. Любые предложения о том, что делать - получу ли я inode, если я 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
зависимости от имени файла. Во-первых, я скопировал множество существующих файлов на внешнем жестком диске, которые должны были освободить много inodes
(или эквивалент FAT32
). Но при перемещении большого каталога (в нем ~23k
Файлов) выдается ошибка "на устройстве не осталось места". Затем, вместо того, чтобы перемещать отдельные файлы, я сделал tar из каталога и переместил его на внешний диск !!! Попытка распаковать его на диске ext снова вызвала ошибку. Итак, я думаю, что я столкнулся с ограничением на количество файлов в каталоге. См. Комментарий w3dk об этих файлах Max для каждого каталога
Я проверил каталоги, которые сообщили об ошибке при перемещении. Ограничение составляет 16383
файла для имен файлов с 29
символами и 21843
файла для имен файлов с 20
символами. Теоретически, ограничение составляет ~65k
Файлов для файлов с именами в формате 8.3
. Спасибо всем, кто помог мне диагностировать проблему. Сейчас я просто соберу все, что имею.