Нечувствительная к регистру файловая система для производственного сервера?


10

Начальная ситуация выглядит так:

  • Корпоративное программное обеспечение на основе PHP.
  • Поставляется Apache 2 на Windows 2003 Server.
  • Это большой .
  • Это наследие довольно непрофессиональных разработчиков, которые не обращали внимания на чувствительность к регистру или разделители каталогов.

Желаемая ситуация выглядит так:

  • Все перешло на Apache 2 в дистрибутиве Linux, еще не решенном.

Проблема:

  • Бесконечные тонны кода без какой-либо заботы о чувствительности к регистру или символе разделителя каталогов.

Я уже провел некоторые исследования, но, к сожалению, не нашел ничего подходящего и для производственной среды. CIOPFSвыглядит красиво, но явно не предназначено для использования в производственных системах. Вы думаете, mod_spellingдля Apache будет вариант? Для меня все еще не решен вопрос, получает ли PHP доступ к файлам с помощью этого модуля или напрямую (что делает его бесполезным).

Должны ли мы проглотить горькую таблетку и пройти весь код? Мы хотели бы избежать этого, поскольку мы заменим текущую программную среду по частям новыми компонентами сборки (в долгосрочной перспективе).


Другой возможностью может быть создание какого-либо прокси ( mod_rewrite) для унаследованного приложения (находящегося в старой настройке) через новый сервер, заменяя части таким образом ... возможно.
Sr -

Размещайте его под OS X вместо Linux ... вы по-прежнему получаете среду unix, но вы также получаете нестандартную файловую систему без учета регистра.
Жаворонки

@ sr_ Это может сделать работу. Но поскольку у нас работает крупная система интернет-магазинов, которая уже генерирует достаточно трафика, она как минимум удвоит его (не имеет значения, внутренняя или внешняя сеть). Насколько я понимаю.
Питер

@larsks Несмотря на то, что я поощряю OS X для бизнеса, я больше не думаю, что у него есть будущее в качестве веб-сервера для больших масштабов. Также наша компания поощряет использование программного обеспечения с открытым исходным кодом и стремится оставаться максимально независимой от платформы.
Питер

Просто обновление: модули Apache, к сожалению, не справляются с этой задачей, так как в случае HTTP-запросов вызывается только функция PHP, например, они обращаются к файлам напрямую. Сейчас я опробую подход самбы, упомянутый ниже.
Питер

Ответы:


3

Просто посмотрите мой пост здесь на Ubuntuforums:

http://ubuntuforums.org/showthread.php?t=1497253

Создать виртуальный диск

dd if=/dev/zero of=virtual.dsk bs=1048576 count=150

Отформатируйте это

mkfs.vfat virtual.dsk

Смонтировать его

sudo mkdir -p /mnt/vfat
sudo mount virtual.dsk /mnt/vfat -t vfat -o loop

PS: постоянно монтировать:

/path/to/virtual.dsk /mnt/vfat vfat loop,owner,group,umask=000 0 0

Наряду с дополнительной информацией здесь: http://fatter-keine.dk/helptipsguides/ubuntu/understanding_fstab.html


3

И ZFS, и JFS могут быть настроены без учета регистра:

zfs create -o casesensitivity=insensitive filesystem

jfs_mkfs -O /dev/sdax

Изменить (7 лет спустя):

Как прокомментировал @JorgeYanesDiez, ядро ​​Linux, наконец, добавило ext4 для каждого каталога, необязательную нечувствительность к регистру, начиная с версии 5.2 и efsprogs 1.45.

Обратите внимание, что Линус Торвальдс был категорически против этой особенности .


1
Для тех, кто смотрит на это в 2020 году, ext4 просто добавила поддержку caseFold. Вам нужно Linux Kernel 5.2 и e2fsprogs 1.45 или более поздней версии. Ищите chattr + F
Хорхе Янес Диез

2

Вы можете использовать Samba для совместного использования локальной файловой системы без учета регистра ... в этой статье есть некоторые подробности.


2
Это абсолютно безумно, но ИМО наименее безумный из всех других вариантов.
jgoldschrafe

@larsks Спасибо, я глубже изучу и попробую, как это работает.
Питер

@larsks Несмотря на то, что я следил за статьей и опробовал некоторые варианты, к сожалению, у нас это не сработало. Однако, спасибо. В итоге мы решили переписать все, что не касается чувствительной файловой системы, так как другие альтернативы, похоже, занимают слишком много времени.
Питер

1

Напишите свою собственную обертку-предохранитель, которая делает нечувствительным к регистру по сравнению с другими fs? С помощью некоторого кода на Python это можно сделать быстро.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.