Установка загрузчика на отдельный раздел [закрыто]

После некоторого дополнительного исследования выяснилось, что эта проблема меньше связана с ядром, а больше связана с взаимодействием rsync и CIFS.

Насколько я понимаю, происходит следующее: когда rsync закрывает целевой файл, CIFS (и, возможно, любая сетевая файловая система) гарантирует, что файл полностью очищен и записан на удаленный диск перед тем, как системный вызов close возвращается. Это сделано для того, чтобы гарантировать любому приложению, что после успешного завершения операции закрытия файл был полностью сохранен, и нет риска каких-либо дальнейших ошибок, которые могут привести к потере данных.

Если этого не сделать, то приложение могло бы закрыть файл, выйти, думая, что операция сохранения прошла успешно, а затем (возможно, из-за проблем с сетью) данные все же не могли быть записаны, но к тому времени приложению уже слишком поздно что-либо делать с этим, например спрашивать пользователя, хотят ли они вместо этого сохранить файл в другом месте.

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

Обходной путь - смонтировать общий ресурс CIFS с параметром cache = none , который отключает эту функцию и заставляет все операции ввода-вывода идти прямо на сервер. Это устраняет проблему и позволяет выполнять чтение и запись параллельно, однако недостатком этого решения является несколько более низкая производительность. В моем случае скорость передачи данных по сети упала со 110 МБ / с до 80 МБ / с.

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

Кажется, rsync нуждается в опции, чтобы закрыть дескрипторы файлов в другом потоке, чтобы он мог начать чтение следующего файла, пока последний все еще очищается.

РЕДАКТИРОВАТЬ: Я подтвердил, что cache = none определенно помогает при передаче большого количества небольших файлов (с 10 МБ / с до 80 МБ / с), но при передаче больших файлов (1 ГБ +) cache = none снижает скорость передачи со 110 МБ / с до тех же 80 МБ / с. Это говорит о том, что медленная передача из многих небольших файлов связана не столько с поиском исходного диска, сколько с наличием большого количества сбросов кеша от всех небольших файлов.

2
29.01.2019, 05:57
1 ответ

См. Разница между установкой GRUB в сектор MBR или в первый сектор загрузочного раздела? и GRUB в MBR или разделе?

По сути, если вы хотите использовать какой-либо другой загрузчик для последовательной загрузки GRUB, вы должны установить GRUB на основной раздел, а не на MBR. Это может иметь место, если вы используете несколько операционных систем и хотите использовать другой загрузчик в MBR (, там может быть только один ). Кроме того, производители оборудования иногда включают код в MBR, и, перезаписав его с помощью GRUB, вы можете стереть его.

Тем не менее, в MBR должен быть какой-то загрузчик, поэтому, если GRUB — единственный загрузчик в вашей системе, он должен находиться там. Как правило, если возможно, вы должны установить GRUB в MBR.

0
27.01.2020, 22:29

Теги

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