Score:1

ไดเร็กทอรีแยกส่วนใน ext4?

ธง id

ระบบไฟล์ ext4 ของฉันสูญเสียประสิทธิภาพเมื่อเติบโต

ฉันมีระบบจัดเก็บไฟล์รูปภาพจำนวนมาก เซิร์ฟเวอร์อิมเมจที่ใช้ Debian นี้จัดเก็บไฟล์อิมเมจโดยแบ่งเป็นโฟลเดอร์ปีบนชุดดิสก์ขนาด 1-2TB พร้อม RAID-1 ของฮาร์ดแวร์ ไฟล์เหล่านี้ถูกจัดเก็บไว้ในโครงสร้างของโฟลเดอร์ปีและโฟลเดอร์ 256 ระดับต่ำกว่านั้น 2 ระดับ

เช่น

ภาพ/2021/2b/0f/193528211006081503835.tif

ไฟล์เหล่านี้ถูกเขียนอย่างต่อเนื่องในระหว่างปีและกระจายอย่างสม่ำเสมอโดยใช้แฮช ดังนั้นแต่ละโฟลเดอร์ leaf/image มีประมาณ 400 ไฟล์ในช่วงปลายปี

ซึ่งให้ไฟล์ทั้งหมดประมาณ 256 x 256 x 400 = 26 214 400 ไฟล์ต่อปีโฟลเดอร์

การวนซ้ำโครงสร้างโฟลเดอร์นี้ทำงานได้ดีจนถึงประมาณ 20 ล้านไฟล์ อาจใช้เวลาสองสามชั่วโมง เมื่อขยายใหญ่ขึ้น แม้แต่การแสดงรายการโฟลเดอร์ leaf ที่มีไฟล์ 300-400 ไฟล์ก็อาจใช้เวลา 1-4 วินาทีเมื่อไม่ได้อยู่ในแคช ฉันสงสัยว่ามันเกี่ยวข้องกับการแยกส่วนในรายการไดเร็กทอรี

การเข้าถึงแต่ละไฟล์เมื่อคุณรู้ว่าเส้นทางนั้นรวดเร็วเสมอ และไม่ใช่ปัญหาฮาร์ดแวร์/ดิสก์ ประสิทธิภาพของ raw io นั้นดี อย่างไรก็ตาม ไฟล์จะไม่มีวันถูกลบออกจากโครงสร้างนี้

Defrag ด้วย e4defrag ไม่สร้างความแตกต่าง ฉันคิดว่ามันแค่จัดเรียงไฟล์ไม่ใช่ไดเร็กทอรี fsck.ext4 -D อาจเป็นวิธีแก้ปัญหา แต่เนื่องจากนี่เป็นระบบที่ใช้งานจริง ฉันจึงไม่กระตือรือร้นที่จะยกเลิกการต่อเชื่อมระบบไฟล์แล้วลอง

สิ่งที่ช่วยได้คือการคัดลอกไฟล์ไปยังโฟลเดอร์ชั่วคราวแล้วย้ายกลับไปเขียนทับต้นฉบับ เช่น

cp -a ภาพ/2021/2b/0f/* ภาพ/2021/2b/tmp
mv -f ภาพ/2021/2b/tmp/* ภาพ/2021/2b/0f

หลังจากการดำเนินการนี้ได้รับการกู้คืน (แม้ว่าจะไม่ได้อยู่ในแคช) หากไฟล์ถูกแยกส่วน ฉันเข้าใจว่าทำไมสิ่งนี้ถึงช่วยได้ แต่มันไม่ได้เป็นไปตาม e4defragการย้ายไฟล์ไปยังโฟลเดอร์ temp และย้อนกลับไม่ได้ช่วยอะไร

บางคนสามารถช่วยฉันเข้าใจสิ่งที่เกิดขึ้นที่นี่

djdomi avatar
za flag
ฉันคิดว่าคุณต้องเพิ่มรายละเอียดเพิ่มเติมเกี่ยวกับเซิร์ฟเวอร์ นอกจากนี้ฉันคิดว่าชั่วโมงของคุณจะระเบิดขนาด ;) ลองดูที่ https://serverfault.com/questions/796665/what-are-the-performance-implications- for-millions-of-files-in-a-modern-file-sys ยังเป็นคำถามของคุณที่ซ้ำกันและ https://serverfault.com/questions/506465/is-there-a-hard-limit-to- จำนวนไฟล์ที่ไดเร็กทอรีสามารถมีได้
id flag
@djdomi อธิบายระบบได้ดีขึ้น ขอบคุณ โปรดอธิบายความหมายของ Exploding Journal ฉันไม่แน่ใจว่าคุณหมายถึงอะไร สำหรับบทความที่ยกมานั้น ไม่มีโฟลเดอร์ใดที่จะมีไฟล์มากกว่าประมาณ 500 ไฟล์ ดังนั้นนั่นไม่ควรเป็นปัญหา ฉันเคยคิดเกี่ยวกับ XFS (ไม่เคยใช้) แต่ได้อ่านทั้งข้อดีและข้อเสียแล้ว อาจคุ้มค่าที่จะพิจารณา
djdomi avatar
za flag
ที่ฉันหมายถึง นอกจากนี้ คุณจะพบจำนวนไฟล์สูงสุดที่ ext4 ถ้าฉันนับถูกต้อง ดูที่นี่ https://serverfault.com/questions/104986/what-is-the-maximum-number-of-files- a-file-system-can-contain
id flag
@djdomi ขอบคุณสำหรับคำชี้แจง ชุดดิสก์แต่ละชุดเป็นระบบไฟล์ของตัวเอง ดังนั้นชุดดิสก์จะเต็มก่อนที่ไฟล์จะเต็มหรือปัญหาการขาดแคลนไอโหนด ตราบเท่าที่สามารถจัดเก็บไฟล์ได้หนึ่งปีบนดิสก์หนึ่งชุดก็ไม่เป็นไร
djdomi avatar
za flag
ฉันไม่ใช่การส่งออกระบบไฟล์ แต่ฉันคิดว่ามันเป็นปัญหาระหว่างการใช้ ext4 สำหรับไฟล์จำนวนมากเช่นนี้
Score:0
ธง in

ฉันจะพยายามตอบสำหรับ ext4 คุณจะสร้างระบบไฟล์ได้อย่างไร ผลลัพธ์ของอะไรเช่น:

sudo tune2fs -l /dev/sda1

โดยที่ฉันถือว่าปริมาณ ext4 ของคุณคือ sda1 คุณควรมี "dir_index", "filetype" อยู่ในคุณสมบัติระบบไฟล์ ถ้าไม่ คุณต้องจัดรูปแบบโดยเปิดใช้งานเหล่านี้ เมื่อสิ่งเหล่านี้ตกลง คุณอาจต้องการแลกเปลี่ยนไฟล์แคชสำหรับแคชข้อมูลเมตา ถ้าผลลัพธ์ของ:

แมว /proc/sys/vm/vfs_cache_pressure

แสดง 100 ลองลดลงเหลือ 50 มันสามารถคงอยู่ในไฟล์ etc/sysctl.conf คุณสามารถเขียนได้ที่ไหน:

vm.vfs_cache_pressure=50

และนำไปใช้โดย sudo sysctl -p ซึ่งจะเพิ่มความน่าจะเป็นในการแคชข้อมูลเมตา ดัชนี ext4 dir สามารถแยกส่วนตามที่คุณแนะนำ ไม่มีการรักษาโดยตรง แต่คุณสามารถดูโพสต์ Stackexchange นี้: วิธีการจัดระเบียบอะตอม ext4 ไดเร็กทอรี

id flag
ขอบคุณสำหรับคำแนะนำ พารามิเตอร์ความดันแคชดูน่าสนใจสำหรับการเก็บข้อมูลเมตาเพิ่มเติมในแคช แต่ที่ผมมีปัญหาที่สุดคือตอนสแกนทั้งต้น ฉันสงสัยว่ามันช่วยเพิ่มประสิทธิภาพที่นี่ ฉันจะจำไว้เมื่อชุดดิสก์ใหม่มีประชากรมากขึ้นในช่วงปลายปี ฉันยังประเมิน XFS instate of ext4 เพื่อดูว่ามันทำงานอย่างไร
A. Genchev avatar
in flag
โดยปกติแล้วระบบไฟล์ ext สามารถเก็บ 64k รายการในหนึ่งโฟลเดอร์โดยไม่มี perf ปัญหา. ฉันยังสงสัยว่าทำไมคุณต้องสแกนต้นไม้ทั้งหมดอีกครั้งในขณะที่คุณแน่ใจว่าไม่มีไฟล์ที่ถูกลบ คุณได้พิจารณาเปลี่ยนโครงสร้าง L2/L3 ของคุณเป็น Month/Day แทน hash หรือไม่ เหตุผลคือ คุณจะไม่ถูกลบหรือเพิ่มไฟล์ใหม่ ดังนั้นผลการสแกนเก่าจึงจะใช้ได้ คุณจะต้องสแกนในเดือนถัดไปเท่านั้น และเวลาอยู่ในทิศทางเดียว
id flag
เหตุผลในการใช้แฮชคือสิ่งเดียวที่ทราบเมื่อเรียกค้นไฟล์ภาพคือปีและชื่อไฟล์ แม้ว่าจะสามารถแก้ไขได้ในอนาคต แต่ก็จะส่งผลให้มีการจัดเก็บไฟล์มากขึ้นต่อโฟลเดอร์ลีฟ เช่น 100,000 ต่อวัน
A. Genchev avatar
in flag
คุณไม่ได้เพิ่มรูปภาพจากวัน/เดือนปัจจุบัน แต่รวมถึงไฟล์เก่าตั้งแต่ต้นปีด้วย ? ดังนั้นคุณไม่ต้องเรียกไฟล์เหล่านี้ทุกวัน/เดือน มิฉะนั้น คุณจะรู้ว่าไฟล์ใดปรากฏขึ้นในเวลาใด (จากมุมมองของคุณ)
id flag
ใช่ คุณพูดถูก เราเขียนภาพที่เก่ากว่า แม้แต่ภาพที่เป็นของปีก่อน จากนั้นเราจะสุ่มดึงรูปภาพอายุไม่เกิน 5-10 ปี

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา