Файлова система, що не враховує регістр, для виробничого сервера?


10

Початкова ситуація виглядає приблизно так:

  • Корпоративне програмне забезпечення базується на PHP.
  • Він доставляється Apache 2 на сервері Windows 2003.
  • Він великий .
  • Це спадщина досить непрофесійних розробників, які не заперечували щодо чутливості регістрів чи роздільників каталогів.

Бажана ситуація виглядає так:

  • Все перейшло на Apache 2 під дистрибутивом Linux ще не визначився.

Проблема:

  • Нескінченні тони коду без будь-якої турботи про чутливість до регістру чи символу роздільника каталогів.

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

Чи варто проковтнути гірку таблетку і пройти весь код? Ми хотіли б цього уникнути, оскільки замінимо поточне середовище програмного забезпечення по черзі новим складанням матеріалів (у довгостроковій перспективі).


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

Розмістіть його під OS X замість Linux ... ви все одно отримаєте своє середовище unix, але ви також отримаєте файлову систему, нечутливу до регістру, з коробки.
larsks

@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 5.2 та e2fsprogs 1.45 або новіші. Шукайте chattr + F
Хорхе Янес Дієз

2

Ви можете використовувати Samba для обміну локальною файловою системою у випадку нечутливого до випадків ... У цій статті є деякі деталі.


2
Це абсолютно божевільно, але ІМО - найменш божевільний з усіх інших варіантів.
jgoldschrafe

@larsks Дякую, я поглиблюю це глибше і спробую, як це працює.
Пітер

@larsks Незважаючи на те, що я стежив за статтею і випробував деякі варіанти, для нас це, на жаль, не вийшло. Дякую, хоча. Ми врешті-решт вирішили переписати всі матеріали, які не стосуються файлової системи, де чутливі до регістру, оскільки інші альтернативи забирають занадто багато часу.
Петро

1

Напишіть свій власний запобіжник, який не відповідає чутливості до будь-яких інших фс? З деяким кодом python це можна зробити швидко.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.