ระบบไฟล์ที่คำนึงถึงขนาดตัวพิมพ์สำหรับเซิร์ฟเวอร์ที่ใช้งานจริง?


10

สถานการณ์เริ่มต้นมีลักษณะดังนี้:

  • ซอฟต์แวร์ขององค์กรใช้ PHP
  • มันถูกส่งโดย Apache 2 บนเซิร์ฟเวอร์ Windows 2003
  • มันเป็นใหญ่
  • มันเป็นมรดกของนักพัฒนามืออาชีพที่ค่อนข้างเป็นมืออาชีพซึ่งไม่ได้คำนึงถึงความอ่อนไหวของตัวพิมพ์เล็กหรือตัวคั่นไดเรกทอรี

สถานการณ์ที่ต้องการดูเหมือนว่า:

  • ทุกสิ่งที่ย้ายไปยัง Apache 2 ภายใต้การกระจาย Linux ของรสชาติยังไม่แน่นอน

ปัญหา:

  • โค้ดจำนวนนับไม่ถ้วนโดยไม่ต้องคำนึงถึงตัวอักษรพิมพ์เล็ก - ใหญ่หรือตัวคั่นไดเรกทอรี

ฉันได้ทำการวิจัยมาบ้างแล้ว แต่น่าเสียดายที่ไม่พบสิ่งใดที่เหมาะกับสภาพแวดล้อมการผลิต CIOPFSดูดี แต่มีความหมายอย่างชัดเจนว่าไม่ควรใช้กับระบบการผลิต คุณคิดว่าmod_spellingสำหรับ Apache จะเป็นตัวเลือกหรือไม่? คำถามที่ยังไม่ได้แก้ไขสำหรับฉันคือถ้า PHP เข้าถึงไฟล์ด้วยความช่วยเหลือของโมดูลนั้นหรือโดยตรง (ซึ่งจะทำให้ไร้ประโยชน์)

เราควรกลืนเม็ดยาขมและผ่านรหัสทั้งหมดหรือไม่ เราต้องการหลีกเลี่ยงปัญหาดังกล่าวเนื่องจากเราจะแทนที่สภาพแวดล้อมซอฟต์แวร์ปัจจุบันทีละชิ้นด้วยสิ่งสร้างใหม่ (ในระยะยาว)


ความเป็นไปได้อีกอย่างก็คือการสร้าง proxy ( mod_rewrite) สำหรับแอปพลิเคชั่นรุ่นเก่า (ที่อยู่ในการตั้งค่าแบบเก่า) ผ่านเซิร์ฟเวอร์ใหม่แทนที่ส่วนต่างๆด้วยวิธีนี้ ... อาจจะ
sr_

โฮสต์ภายใต้ OS X แทน Linux ... คุณยังได้รับสภาพแวดล้อม unix ของคุณ แต่คุณยังได้รับระบบไฟล์ที่ไม่ตรงตามตัวพิมพ์เล็กและใหญ่
larsks

@sr_ นั่นสามารถทำงานได้ แต่เนื่องจากเราใช้ระบบร้านค้าออนไลน์ขนาดใหญ่ซึ่งทำให้เกิดการรับส่งข้อมูลที่เพียงพอแล้วอย่างน้อยก็จะเพิ่มเป็นสองเท่า (ไม่สำคัญว่าเครือข่ายภายในหรือภายนอก) เท่าที่ฉันเข้าใจ.
ปีเตอร์

@ larsks แม้ว่าฉันจะสนับสนุน OS X สำหรับธุรกิจฉันไม่คิดอีกต่อไปว่ามันมีอนาคตเป็นเว็บเซิร์ฟเวอร์ขนาดใหญ่ นอกจากนี้ บริษัท ของเรากำลังสนับสนุนการใช้ซอฟต์แวร์โอเพ่นซอร์สและมุ่งมั่นที่จะคงความเป็นอิสระของแพลตฟอร์มให้ได้มากที่สุด
ปีเตอร์

เพียงแค่อัปเดต: โมดูล apache เศร้าที่ไม่ได้ทำงานเนื่องจากถูกเรียกใช้ในกรณีที่มีการร้องขอ HTTP เท่านั้นฟังก์ชั่นการทำงานของ PHP รวมถึงตัวอย่างเช่นการเข้าถึงไฟล์โดยตรง ฉันจะลองวิธี samba ที่กล่าวถึงด้านล่างนี้
ปีเตอร์

คำตอบ:


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 แสดงความคิดเห็นในที่สุดเคอร์เนลลินุกซ์เพิ่ม ext4 ต่อไดเรกทอรีไม่จำเป็นกรณีที่ไม่จำเป็นกรณีเริ่มต้นจากรุ่น 5.2 และ efsprogs 1.45

โปรดทราบว่า Linus Torvalds ต่อต้านคุณลักษณะนี้อย่างมาก


1
สำหรับผู้ที่มองสิ่งนี้ในปี 2020 ext4 เพิ่งเพิ่ม caseFold support คุณต้องการ Linux Kernel 5.2 และ e2fsprogs 1.45 หรือใหม่กว่า มองหา chattr + F
Jorge Yanes Diez

2

คุณสามารถใช้ Samba เพื่อแชร์ระบบไฟล์โลคัลในลักษณะที่ไม่สำคัญ ... บทความนี้มีรายละเอียดบางอย่าง


2
นี่เป็นบ้าอย่างสมบูรณ์ แต่ IMO เป็นบ้าน้อยที่สุดของตัวเลือกอื่น ๆ ทั้งหมด
jgoldschrafe

@ larsks ขอบคุณฉันจะมองลึกลงไปและจะลองวิธีการทำงาน
ปีเตอร์

@ larsks แม้ว่าฉันจะติดตามบทความและทดลองใช้งานรูปแบบต่าง ๆ แต่ก็ไม่ได้ผลสำหรับเรา ขอบคุณค่ะ เราตัดสินใจตัดสินใจที่จะเขียนสิ่งที่ไม่ได้อยู่ในระบบไฟล์ที่มีความอ่อนไหวเพราะทางเลือกอื่นดูเหมือนจะใช้เวลามากเกินไป
ปีเตอร์

1

เขียนฟิวส์ห่อของคุณเองที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่กว่า fs อื่น ๆ ? ด้วยรหัสไพ ธ อนบางตัวสามารถทำได้อย่างรวดเร็ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.