// codeart.ru / Теория программирования / VirtualBox не любит sendfile Форум

VirtualBox не любит sendfile rss подписка

Автор: Evgeniy Sergeev

Наткнулся на один забавный баг в работе VirtualBox. Для разработки я использую Ubuntu 10.04, которая развернута под VirtualBox-ом. Это позволяет мне содержать систему для разработки в условиях, максимально приближенных к боевым, не засоряя операционку на хосте. При этом все текущие проекты хранятся в файловой системе на хосте, а в виртуальную машину подключаются через возможность VirtaulBox-а — shared folder support. На самом деле получается очень удобно, я могу без заморочек отдать образ девелоперской системы другим разработчикам или свободно перенести на ноутбук, который работает под Windows. Фактически это очень сильно развязывает руки.

[social_lock]
Но оказалось, что не все так гладко в этой связке. А именно при работе с shared folder у VirtualBox некорректно отрабатывает sendfile, в результате у Nginx сносит крышу и при обновлении статичный файлов (например, js-скриптов) вместо обновленного файла выдается старый файл с куском нечитаемого мусора в конце. Долгое время я грешил на сам Nginx. Пытался отключить кэширование, пересобирал с кучей разных опций, но никакого эффекта это не дало. Чтобы избежать глюков я даже нашел промежуточное обходное решение, которое позволяло мне хоть как-то работать на виртуальной машине. Решение заключалось в том, что я тупо удалял старый файл и повторно сохранял его, не очень удобно, но действенно. В итоге, намучившись с удалением файлов, я плотно занялся поиском проблемы. Видимо, на этот раз удача сопутствовала мне, потому что я почти сразу наткнулся на тему, в которой обсуждались аналогичные проблемы.

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

sendfile off;

После чего виртуальная машина начинает работать как часы.
[/social_lock]

  1. VirtualBox Shared Folders и ChicagoBoss
  1. Лож, пи**ж, и провокация.
    При чем тут виртуал бокс?

    Это особенности работы сендфайла с примантированными удаленными файловыми система (типа nfs, cif (smb))
    Даже в доки по апучу этот момент упоминается.
    http://httpd.apache.org/docs/2.0/mod/core.html#enablesendfile

  2. Vovochka, VirtualBox при том, что для подключения shared folders используется файловая система «vboxsf», данный тип файловой системы становится доступен только после установки guest additions.
    По проблеме sendfile-а открыт тикет для VirtualBox — https://www.virtualbox.org/ticket/819

  3. Не думаю что принцип ее работы сильно отличается от cifs (для простоты реализации расшареных папок в винде). Посему и наследует болезни сетевых файловых систем.

  4. Vovochka, подозреваю, что реализация все же отличается. Будет время покопаюсь с этим вопросом

Leave a Reply

« »