Ubuntu - на устройстве не осталось места (NTFS)

11

У меня есть сервер, который хранит много данных, я храню много вложенных каталогов с миллионами файлов в них.

При попытке переместить один большой каталог (~ 700 ГБ) с одного диска на другой я получаю сообщение об ошибке:

mv /media/storage3/dir /media/storage4/

"No space left on device"

Кроме того, попытка создать небольшой текстовый файл на диске не работает:

Error opening file '/media/storage4/Untitled Document': No space left on device

Я проверил много вариантов онлайн, ни один не работал.

вывод df -h:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdg7        77G  9.2G   64G  13% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             32G  4.0K   32G   1% /dev
tmpfs           6.3G  1.4M  6.3G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             32G   76K   32G   1% /run/shm
none            100M   48K  100M   1% /run/user
/dev/sdg6        19G  6.7G   11G  39% /home
/dev/sdb1       440G  278G  140G  67% /var
/dev/sda1       2.8T  2.0T  764G  73% /media/storage1
/dev/sdh1       2.8T  1.6T  1.3T  56% /media/storage2
/dev/sdi1       2.8T  1.7T  1.2T  60% /media/storage3
/dev/sdf1       2.8T  876G  1.9T  32% /media/storage4

вывод df -i:

Filesystem         Inodes    IUsed      IFree IUse% Mounted on
/dev/sdg7         5079040   514215    4564825   11% /
none              8242449        2    8242447    1% /sys/fs/cgroup
udev              8239750      611    8239139    1% /dev
tmpfs             8242449      696    8241753    1% /run
none              8242449        5    8242444    1% /run/lock
none              8242449        4    8242445    1% /run/shm
none              8242449       28    8242421    1% /run/user
/dev/sdg6         1220608   218613    1001995   18% /home
/dev/sdb1        29310976 12863877   16447099   44% /var
/dev/sda1       858436804 41630853  816805951    5% /media/storage1
/dev/sdh1      1356948436 38728057 1318220379    3% /media/storage2
/dev/sdi1      1217505624 34748869 1182756755    3% /media/storage3
/dev/sdf1      2048962648 36308921 2012653727    2% /media/storage4

Читая онлайн, люди говорили, что подобные проблемы возникают из-за доступа к огромному количеству файлов и что установка fs.inotify.max_user_watches на большое количество может решить эту проблему, я увеличил его с 8192 до 1000000, но это не помогло.

PeterN
источник
Ты пробовал lsof +L1? man lsof: спецификация формы + L1 выберет открытые файлы, которые не были связаны.
AB
Нет причин mvиспользовать inotifyмеханизм. Посмотрите здесь : некоторые процессы могут все еще использовать несвязанные файлы из целевой файловой системы.
Джон У. С. Смит,
Удаленные файлы все равно будут отображаться при использовании, заданном df...
Стивен Китт
@StephenKitt Нет. Несвязанные файлы, которые хранятся в файловой подсистеме из-за ссылки на inode, будут. Те, которые были полностью неиспользованы и не связаны («удалены»), не отображаются. Смотрите здесь .
Джон У. С. Смит,
1
Проверьте ntfsinfo -m /dev/DEVна подсказки. Это часть NTFS-3G. Также обратите внимание, что на одном томе NTFS может быть до 2 ^ 32 файлов. Я бы не стал доверять никаким родным инструментам linux / unix, чтобы точно сообщать количество инодов NTFS.
Микки

Ответы:

1

Запустите следующее:

lsof -s | sort -nrk 7 | head

Вы увидите вывод примерно так:

firefox    2997                     j   52rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j   50rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j    3rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j   39rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j   31ur     REG              252,0 10485760    5505182 /some/path

Заметка; Выше приведен лишь пример, который вам понадобится, чтобы определить свое использование пространства.

О выходе:

  • Колонка 7 - это размер используемого пространства.
  • Колонка 4 - это дескриптор файла.

Вы можете удалить содержимое в дескрипторе файла, чтобы вернуть это пространство:

cat /dev/null > /proc/2997/fd/50

Очевидно, это уничтожит все данные этого дескриптора файла.


источник
Если проблема возникнет снова, я попробую
PeterN
0

Вы можете попробовать tar скопировать все данные, а затем удалить их:

cd /media/storage3/; tar cfp - ./dir | ( cd /media/storage4; tar xfp - )

Это сохранит все права собственности, разрешения и ссылки

Чад Смит
источник
Копирование не сработало. Мало того, создание простого пустого файла вернуло исключение без пробелов
PeterN
0

Я бы использовал rsync -avrz storage3 storage4и затем удалил файлы, но у меня возник другой вопрос, почему у вас есть эти общие папки, использующие файловую систему NTFS, если вы используете Linux (Ubuntu), тогда я бы выбрал ext4 или ReiserFS, ButterFS. Если эти общие папки находятся на коробке Windows, попробуйте переместить эти файлы из Windows в Windows, используя robocopy, что отлично в этом отношении. Робокопия работает в основном как rsync.

Страница man для rsync: http://linux.die.net/man/1/rsync

страница справки для robocopy: https://technet.microsoft.com/en-us/library/cc733145.aspx

Страница поддержки драйверов 3g-ntfs для Linux: www.tuxera.com/community/open-source-ntfs-3g/

FAQ для 3g-ntfs: www.tuxera.com/community/ntfs-3g-faq/

Я подозреваю, что что-то должно быть исправлено в драйверах файловой системы NTFS, которые вы используете в вашей установке Ubuntu, какой дистрибутив NTFS вы используете, как вы монтировали диски, они локально подключены к блоку ubuntu, на котором вы сидите, или они монтируются используя iSCSI из SAN?

Это не только устранение неполадок: просто «я не могу переместить мои файлы, они находятся в NTFS, и я запускаю ubuntu для их перемещения».

OMG-1
источник
Как уже упоминалось, ни одна копия не сработала, я попробовал все виды команд rsync. Но даже создание пустого файла на storage4 вернуло исключение. \ n Причиной использования NTFS является то, что у нас есть другие серверы, на которых запущены окна, и мы хотели позволить легко переносить диски с одного сервера на другой. Оглядываясь назад, я бы не использовал NTFS из-за всех проблем, которые он вызывает, Ubuntu очень нестабилен с монтированием NTFS. \ n Диски подключены через кабель SATA непосредственно к материнской плате на компьютере, без SAN или чего-либо еще. Это прямое монтирование в системе Linux.
PeterN
Я бы посоветовал вам две вещи: при использовании технологий MS идти чисто MS, использовать файловый сервер Microsoft Windows, если вам нужна NTFS, иначе используйте ext4 или другую файловую систему Linux и поделитесь диском с Smb.
OMG-1
Избавьте себя от некоторых проблем и никогда не пытайтесь сочетать Windows и Linux. Никакая помощь не спасет вас в долгосрочной перспективе, в конечном итоге это всегда закончится слезами. Это похоже на проблему с дескрипторами inode или file, но когда вы помещаете NTFS в смесь ... бомба замедленного действия. Если вашей среде требуется взаимодействие Linux и NTFS, поместите NTFS на сервер Windows и выполните взаимодействие таким образом. Не пытаясь объединить в одной системе.
Баазигар