Score:1

ประสิทธิภาพของ ZFS: ความเร็วในการเขียนต่ำมาก

ธง pk

ฉันใช้โฮมเซิร์ฟเวอร์ขนาดเล็ก ข้อกำหนดคือ:

  • ซีพียู: AMD Ryzen 5 2600
  • RAM: 32 GB ECC
  • ไดรฟ์ระบบ: 128GB NVMe SSD
  • ไดรฟ์ข้อมูล: Seagate Barracuda HDD 3x4 TB

เซิร์ฟเวอร์เรียกใช้บางแอปพลิเคชันเช่น Nextcloud หรือ Gitea และฉันต้องการเรียกใช้ 1-2 VM บนนั้น ดังนั้นจึงมีเว็บแอปพลิเคชัน ฐานข้อมูล และ VM บางส่วน

แอปพลิเคชันและอิมเมจ qcow2 ถูกจัดเก็บไว้ในพูล Raidz1:

สถานะ $ sudo zpool
  สระว่ายน้ำ: ถัง
 สถานะ: ออนไลน์
การกำหนดค่า:

        ชื่อ รัฐ อ่าน เขียน CKSUM
        ถังออนไลน์ 0 0 0
          Raidz1-0 ออนไลน์ 0 0 0
            sdb ออนไลน์ 0 0 0
            เอสดีซี ออนไลน์ 0 0 0
            sdd ออนไลน์ 0 0 0

ข้อผิดพลาด: ไม่มีข้อผิดพลาดของข้อมูลที่ทราบ

เมื่อฉันใช้แอปพลิเคชันในสัปดาห์แรก ฉันไม่พบปัญหาใดๆ แต่ไม่กี่สัปดาห์ต่อมา ฉันก็พบว่าความเร็วการเขียนต่ำมาก อินสแตนซ์ nextcloud ไม่เร็วมาก และเมื่อฉันพยายามเริ่ม VM ใหม่ด้วย Windows 10 จะใช้เวลาประมาณ 5 นาทีเพื่อไปที่หน้าจอเข้าสู่ระบบ

ฉันทำการทดสอบประสิทธิภาพโดยใช้ ฟิโอ และได้ผลดังนี้

ทดสอบ IOPS แบนด์วิดธ์ (KiB/s)
สุ่มอ่าน 37,800 148,000
เขียนแบบสุ่ม 31 127
อ่านตามลำดับ 72,100 282,000
เขียนตามลำดับ 33 134

ฉันทำการค้นคว้าก่อนที่จะโพสต์ที่นี่และอ่านว่าฉันควรเพิ่ม SLOG ลงในพูล zfs เพื่อประสิทธิภาพที่ดีขึ้นด้วยฐานข้อมูลและ VM แต่นั่นไม่ใช่ทางเลือกในขณะนี้ ฉันต้องได้ของขวัญคริสต์มาสก่อน :D

แต่ถึงแม้จะไม่มี SLOG ฉันก็ไม่คิดว่าตัวเลขเหล่านี้ถูกต้อง :(

ไม่มีใครมีความคิด? :)

Philip Szalla avatar
pk flag
ฉันปิดใช้งาน `atime' ในชุดข้อมูลทั้งหมดแล้ว และตั้งค่า 'recordsize' เป็น 64K ในชุดข้อมูลที่จัดเก็บอิมเมจ qcow2
us flag
คุณไม่ควรใช้ RAIDZ1 ในทุกกรณี เมื่อใดก็ตามที่อุปกรณ์หนึ่งล้มเหลว มีความเสี่ยงสูงมากที่ไดรฟ์ที่สองจะล้มเหลวระหว่างการ resilvering และคุณจะสูญเสียข้อมูลทั้งหมดของคุณ RAIDZ1 อาจแสดงให้เห็นในความเชื่องช้าเช่นนี้ ใช้กระจกแทน
Score:2
ธง pk

ฉันพบปัญหาด้วยตัวเอง

ฉันเห็นบทความที่กล่าวถึง CMR และ SMR ฉันตรวจสอบไดรฟ์ของฉันและพบว่าฉันซื้อฮาร์ดไดรฟ์ที่มี SMR โดยไม่ตั้งใจ :(

ฉันจะเก็บมิเรอร์พูลไว้จนกว่าฉันจะเปลี่ยนไดรฟ์ด้วยไดรฟ์ CMR ใหม่ เมื่อฉันมีไดรฟ์ใหม่ ฉันจะใช้มิเรอร์พูลด้วย

ขอบคุณทุกคน!

Score:1
ธง ca

As a first-order approximation raidz provides the random performances of a single disk, which for a 7.2K HDD are about 70 IOPS. Your test shows 50% less IOPS (ie: ~30 vs ~70) and this can be explained with the relatively large recordsize you selected.

Especially for random writes, any recordsize larger than 4KB is going to face considerable read/modify/write penalty. Please note that I am not advocating for using such a small recordsize on mechanical disks as it commands a very high metadata overhead, high fragmentation and (almost) no compression. As a reference, when using HDDs I leave the default (128KB) recordsize even for virtualization hosts.

You can do the following to improve performance:

  • use mirror vs raidz where applicable (but you only have 3 disks, preventing the use of mirroring+striping)
  • use RAW image files rather than QCOW2 (if QCOW2 files really are required, be sure to preallocate their metadata)
  • try setting sync=disabled (but be sure to understand that in case of sudden power loss your system will lose up to 5s of written data)
Philip Szalla avatar
pk flag
ขอบคุณสำหรับคำตอบและขอโทษที่ตอบช้า! ฉันลบหนึ่งไดรฟ์ออกจากระบบและสร้างมิเรอร์พูล ซึ่งปรับปรุงความเร็วในการอ่านขึ้นประมาณ 30% ตามที่คาดไว้ แต่ความเร็วในการเขียนไม่เปลี่ยนแปลง :(

โพสต์คำตอบ

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