Странный ZFS скрытая проблема файловой системы

Существует максимальный предел тому, какой длины список аргументов может быть для системных команд - этот предел является определенным для дистрибутива на основе значения MAX_ARG_PAGES когда ядро компилируется и не может быть изменено, не перекомпилировав ядро.

Из-за пути globbing обрабатывается оболочкой, это будет влиять на большинство системных команд при использовании того же аргумента (" *.jpg"). Так как шарик обрабатывается оболочкой сначала и затем отправляется в команду, команду:

cp -uf *.jpg /targetdir/

по существу то же к оболочке, как будто Вы записали:

cp -uf 1.jpg 2.jpg ... n-1.jpg n.jpg /targetdir/

Если Вы имеете дело с большим количеством jpegs, это может стать неуправляемым очень быстрый. В зависимости от Вашего соглашения о присвоении имен и количества файлов на самом деле необходимо обработать, можно выполнить команду CP на другом подмножестве каталога за один раз:

cp -uf /sourcedir/[a-m]*.jpg /targetdir/
cp -uf /sourcedir/[n-z]*.jpg /targetdir/

Это могло работать, но точно то, насколько эффективный это будет, на основе того, как хорошо можно разбить список файлов в удобные globbable блоки.

Globbable. Мне нравится это слово.

Некоторые команды, те, которые находят и xargs, могут обработать большие списки файлов, не делая мучительно измеренные списки аргументов.

find /sourcedir/ -name '*.jpg' -exec cp -uf {} /targetdir/ \;

- исполнительный аргумент выполнит остаток от командной строки однажды для каждого файла, найденного находкой, заменяя {} с каждым найденным именем файла. Так как команда CP только выполняется на одном файле за один раз, предел списка аргументов не является проблемой.

Это может быть медленно из-за необходимости обработать каждый файл индивидуально. Используя xargs мог предоставить более эффективное решение:

find /sourcedir/ -name '*.jpg' -print0 | xargs -0 cp -uf -t /destdir/

xargs может взять полный список файлов, предоставленный находкой, и разломать его на списки аргументов управляемых размеров и выполнить CP в каждом из тех подсписков.

Конечно, существует также возможность просто перекомпиляции Вашего ядра, устанавливая большее значение для MAX_ARG_PAGES. Но перекомпиляция ядра является большим количеством работы, чем я готов объяснить в этом ответе.

1
задан 9 June 2010 в 03:29
2 ответа

Вместо Соляриса 10, Linux/ZFS-fuse или FreeBSD, я использовал бы последний dev opensolaris, сборка (создайте 134 с сегодняшнего дня), который имеет более актуальный код ZFS, включенный для диагностирования, какова проблема могла бы быть. Отправьте вывод "zfs, заставляют всю 'невидимую файловую систему'" видеть то, что свойство могло бы предотвратить некоторых из них для разоблачения.

1
ответ дан 4 December 2019 в 10:58
  • 1
    Насколько стабильный сборки dev OpenSolaris? Я мог захватить копию только для инструментов диагностики, но I' m не ужасно удобная установка его как постоянное решение. –  RandomInsano 12 June 2010 в 21:31
  • 2
    Они, вероятно, более стабильны, чем кто-либо не Солярис ОС, обеспечивающая поддержку ZFS. Я исключительно использовал сборки Разработки OpenSolaris больше пяти лет как мое персональное основное / работа ОС без любой значимой проблемы. Я однако только предлагал использовать его для диагностирования цели. Если Вы работаете и нуждаетесь в формальной поддержке, Солярис 10 является, вероятно, самым разумным решением. –  jlliagre 13 June 2010 в 10:54

"из-за него разрушающий ядро во время тяжелой межфайловой системы загрузка IO"

Это не может быть ядром FreeBSD, но 3 + ошибка лет с ARC ZFS, который все еще сохраняется!

http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6522017

(Этот противен, поскольку это также выйдет от пределов VM гипервизора!)

-3
ответ дан 4 December 2019 в 10:58
  • 1
    Вы даже читали тот отчет об ошибках? Это ничего не имело к должному с загрузкой IO или катастрофическим отказом. Изо всех предыдущих ZFS-связанных комментариев Вы уехали этим вечером, кажется, как будто у Вас, возможно, есть персональная вендетта против него. –  EEAA 26 July 2010 в 05:16
  • 2
    См. мой комментарий и рабочую временную меру в serverfault.com/questions/162693 / … –  user48838 26 July 2010 в 05:45

Теги

Похожие вопросы