เหตุใดการตรวจสอบดิสก์ Ext4 จึงเร็วกว่า NTFS มาก


12

ฉันมีสถานการณ์วันนี้ที่ฉันรีสตาร์ทคอมพิวเตอร์และมันบอกว่าฉันต้องตรวจสอบดิสก์เพื่อความสอดคล้อง ประมาณ 10 นาทีต่อมา (ที่ "1%" เสร็จสมบูรณ์) ฉันยอมแพ้และตัดสินใจที่จะปล่อยให้มันทำงานเมื่อฉันกลับบ้าน

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

ดังนั้น Ext4 ทำการตรวจสอบดิสก์อย่างรวดเร็วอย่างไร มีความก้าวหน้าอย่างมากในการทำสิ่งนี้หลังจาก NTFS ออกมา (ประมาณ 10 ปีที่แล้ว)?

หมายเหตุ: ดิสก์ NTFS คือ ~ 300 GB และดิสก์ Ext4 คือ ~ 500 GB ทั้งสองประมาณครึ่งเต็ม


ฉันไม่ได้ใช้ Windows NT Chkdsk ในการบูทไดรฟ์ข้อมูลตั้งแต่เปิดตัว 2008 R2 แม้จะอยู่ในคลัสเตอร์ CSV ที่มีหลายโหนดที่เข้าถึงไดรฟ์ข้อมูล NTFS เดียวกันที่ล็อคไฟล์ดัชนี Lucene นับหมื่น มันค่อนข้างน่าประทับใจ
Brain2000

Chkdsk ทำงานเมื่อเริ่มต้นอาจหมายความว่าระบบปฏิบัติการได้พบกับระบบไฟล์เมตาดาต้าไม่สอดคล้องกันซึ่งเป็นปัญหาร้ายแรง Chkdsk มีโอกาสถูกเรียกด้วย "ตรวจสอบทุกภาคส่วนของดิสก์สำหรับความไม่ดีและการซ่อมแซมถ้าเป็นไปได้" ธงการดำเนินการที่ใช้เวลานานมาก ตรวจสอบ fsck ประจำไม่ได้ทำอย่างนั้น
kreemoweet

คำตอบ:


11

มีสองเหตุผลหลักสำหรับความแตกต่างของประสิทธิภาพและสองสาเหตุที่เป็นไปได้ ก่อนเหตุผลหลัก:


เพิ่มประสิทธิภาพของ ext4 กับ NTFS

มาตรฐานต่าง ๆได้ข้อสรุปว่าระบบแฟ้ม ext4 ที่เกิดขึ้นจริงสามารถดำเนินการความหลากหลายของการดำเนินงานอ่านเขียนได้เร็วขึ้นกว่าพาร์ติชัน NTFS โปรดทราบว่าในขณะที่การทดสอบเหล่านี้ไม่ได้บ่งบอกถึงประสิทธิภาพการทำงานจริง แต่เราสามารถคาดการณ์ผลลัพธ์เหล่านี้และใช้สิ่งนี้เป็นหนึ่งในเหตุผล

สำหรับสาเหตุที่ ext4 ทำงานได้ดีกว่าจริง ๆ แล้ว NTFS สามารถนำมาประกอบกับเหตุผลมากมาย ตัวอย่างเช่น ext4 รองรับการจัดสรรที่ล่าช้าโดยตรง อีกครั้งแม้ว่าประสิทธิภาพที่เพิ่มขึ้นนั้นขึ้นอยู่กับฮาร์ดแวร์ที่คุณใช้อย่างเคร่งครัด (และอาจถูกปฏิเสธทั้งหมดในบางกรณี)

ลดข้อกำหนดการตรวจสอบระบบไฟล์

ระบบไฟล์ ext4 ยังสามารถตรวจสอบระบบไฟล์ได้เร็วกว่าระบบไฟล์เจอร์นัลเทียบเท่าอื่น ๆ (เช่น NTFS) ตามหน้า Wikipedia:

ใน ext4 กลุ่มบล็อกที่ไม่ได้ถูกจัดสรรและส่วนของตาราง inode จะถูกทำเครื่องหมายเช่นนี้ สิ่งนี้ทำให้ e2fsck ข้ามมันทั้งหมดบนการตรวจสอบและลดเวลาที่ใช้ในการตรวจสอบระบบไฟล์ขนาด ext4 ที่สร้างขึ้นเพื่อรองรับ คุณลักษณะนี้มีการใช้งานในเวอร์ชัน 2.6.24 ของเคอร์เนล Linux


และตอนนี้ด้วยเหตุผลสองประการที่เป็นไปได้ :


การตรวจสอบระบบไฟล์ด้วยตนเอง

แอปพลิเคชั่นบางอย่างอาจใช้งานรูทีนที่แตกต่างกันในระบบไฟล์เพื่อตรวจสอบสถานะ "ตรวจสอบ" สิ่งนี้สามารถมองเห็นได้ง่ายถ้าคุณใช้ยูทิลิตีfsck ที่ตั้งค่าบน Linux กับยูทิลิตี้chkdskบน Windows แอปพลิเคชันเหล่านี้เขียนบนระบบปฏิบัติการที่แตกต่างกันสำหรับระบบไฟล์ที่แตกต่างกัน เหตุผลที่ฉันนำมาใช้ด้วยเหตุผลที่เป็นไปได้คือการเรียกระบบระดับต่ำในแต่ละระบบปฏิบัติการนั้นแตกต่างกันดังนั้นคุณอาจไม่สามารถเปรียบเทียบยูทิลิตี้โดยตรงโดยใช้ระบบปฏิบัติการสองระบบ

การกระจายตัวของดิสก์

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


1
สิ่งที่ทำให้ฉันสับสนคือจุดที่สองของคุณในตอนแรกดูเหมือนว่ามันจะมีผลกระทบมากที่สุด แต่พาร์ติชัน Ext4 ของฉันมีพื้นที่ใช้งานมากเท่ากับพาร์ติชัน NTFS ของฉันมีทั้งหมด - แทนที่จะเร็วกว่ามากควรความเร็วเท่าเดิม ผมคิดว่ามันเป็นไปได้ว่าการปรับปรุงประสิทธิภาพ Ext4 ให้มันเร็วขึ้นในการตรวจสอบเช่นกัน แต่ Ext4 ไม่ได้ว่าเร็วกว่า NTFS (ไม่แน่นอนคำสั่งหลายขนาดแตกต่างกันที่ฉันเห็นในการตรวจสอบระบบแฟ้ม)
เบรนแดน Long

ฉันไม่แน่ใจว่าสิ่งที่คุณหมายถึง ... โดยทั่วไปเนื้อหาไฟล์ใช้พื้นที่มากขึ้นแล้วดัชนีในระบบไฟล์ที่ทันสมัยที่สุด (รวมถึง ext4 และ NTFS) ระบบไฟล์จัดเก็บเนื้อหาต่างกันซึ่งในบางกรณี(ที่ฉันกล่าวถึง) ช่วยให้มีประสิทธิภาพสูงขึ้น
Breakthrough

สิ่งที่ทำให้ฉันสับสนคือส่วนที่ตรวจสอบจริงควรมีขนาดเท่ากันทั้งคู่ (เนื่องจากพาร์ติชัน Ext4 ของฉันมีพื้นที่ใช้งานมากที่สุดเท่าที่พาร์ติชัน NTFS มีทั้งหมด) แต่พาร์ติชัน Ext4 ทำการตรวจสอบในไม่กี่วินาทีในขณะที่ NTFS ใช้เวลาหนึ่งชั่วโมง
Brendan Long

1
@ Brendan ลองดูที่ลิงค์แรกในคำตอบของฉันบางคนพบว่าการอ่านไฟล์นั้นเร็วกว่าไดรฟ์ที่ใช้ ext4 กับ NTFS แม้ว่าข้อมูลดิจิทัลที่เก็บไว้ในไฟล์จะเหมือนกันแต่จะไม่ถูกจัดเก็บในลักษณะเดียวกันบนดิสก์ อย่างไรก็ตามถ้าคุณบอกว่า NTFS ใช้เวลาหลายชั่วโมงคุณอาจตรวจสอบแต่ละเซกเตอร์ในไดรฟ์ดังนั้นคุณอาจข้ามการตรวจสอบทางเลือกบางอย่างในการตรวจสอบระบบไฟล์ ext4 (อธิบายความแตกต่างความเร็วสูง) มันเร็วกว่ามากในการตรวจสอบแต่ละไฟล์แทนที่จะเป็นพื้นผิวดิสก์ทั้งหมด
พัฒนา

1
คำตอบนี้เป็นเพียงรายการของจุดพูดคุย ext4 vs NTFS ที่ไม่มีความเกี่ยวข้องกับคำถาม ระบบไฟล์ที่เจอร์นัลไม่จำเป็นต้องถูกตรวจสอบในการทำงานปกติ การตรวจสอบอัตโนมัติหมายถึงบางสิ่งผิดปกติอย่างร้ายแรง โดยไม่ทราบว่ามีอะไรผิดปกติเป็นไปไม่ได้ที่จะรู้ว่าเพราะเหตุใดการตรวจสอบจึงช้ามาก เปรียบเทียบกับการตรวจสอบรายสัปดาห์ของ ext4 คือการเปรียบเทียบแอปเปิ้ลและส้ม
benrg

3

จากความเข้าใจของฉัน ext4 พยายามเขียนข้อมูลไปยังช่องว่างต่อเนื่องที่ใหญ่ที่สุดของ inode แบบเปิดที่ไม่มีข้อมูลอยู่ในปัจจุบัน สิ่งนี้จะช่วยลดความหน่วงอย่างรุนแรงเมื่อต้องอ่านไฟล์เหล่านั้นส่วนใหญ่เนื้อหาทั้งหมดของไฟล์ส่วนใหญ่จะอยู่บนแทร็กต่อเนื่องเดียวดังนั้นหัวไดรฟ์จะค้นหาน้อยลงเมื่อค้นหาทุกบล็อกที่มีข้อมูล ที่ประกอบเป็นหนึ่งไฟล์

มัน (ext4) ยังสามารถแยกส่วน แต่น้อยมากและไม่จำเป็นในทางที่มีผลต่อประสิทธิภาพการอ่าน / เขียนอย่างรุนแรงเช่นเดียวกับ NTFS บน NTFS ข้อมูลจะถูกเขียนไปยังบล็อกที่เปิดครั้งแรกในเส้นทางของส่วนหัว

ดังนั้นที่ใดก็ตามที่หัวอยู่และมีบล็อกแบบเปิดมันเขียนข้อมูลมากที่สุดเท่าที่จะสามารถใส่ได้แล้วเขียนที่ใดก็ตามที่มันตกลงไปที่อื่นบนดิสก์เมื่อหัวต้องย้ายพูดไปยังอีกส่วนหนึ่งของดิสก์เพื่อเข้าถึงไฟล์อื่น จะต้องเปิดขึ้นในโปรแกรมที่คุณเพิ่งโหลดในขณะที่ไฟล์อื่นกำลังถูกเขียนอยู่
ซึ่งหมายความว่าหากไฟล์มีขนาดใหญ่มีแนวโน้มที่จะกระจายออกเป็นบล็อกแยกจากกันบนแทร็กแยกและเป็นเหตุผลที่จำเป็นต้องจัดเรียงข้อมูลสำหรับ NTFS บ่อยครั้ง

ทำไมเซิร์ฟเวอร์โดยทั่วไปไม่ใช้เนื่องจากมี I / O ที่หนักกว่าเกิดขึ้นกับเซิร์ฟเวอร์ที่มีการเขียนและอ่านข้อมูลจากดิสก์ตลอดเวลา 24/7

นอกจากนี้ฉันไม่แน่ใจ แต่ถ้าchkdskตรวจสอบความถูกต้องของแต่ละไฟล์ (ซึ่งฉันเชื่อทั้งไฟล์และfsckทำ) แล้วมันก็จะช้าลงในการเปรียบเทียบเนื่องจากสิ่งที่ฉันเพิ่งอธิบายเกี่ยวกับการแยกส่วนใน NTFS


NTFS chkdsk หรือ ext4 fsck ไม่อ่านข้อมูลไฟล์ มันจะไม่มีจุดหมายเพราะไม่มีการตรวจสอบหรือวิธีการอื่นในการตรวจสอบความสมบูรณ์ของมัน
benrg

1

Windows ไม่จำเป็นต้องตรวจสอบวอลุ่มของ NTFS เมื่อเริ่มต้น ถ้าเป็นเช่นนั้นมีบางอย่างผิดพลาดอย่างรุนแรง - เป็นสิ่งที่เลวร้ายยิ่งกว่า BSOD หรือไฟฟ้าดับ มีโอกาสที่สำคัญที่ข้อมูลบางส่วนของคุณเสียหายด้วยข้อมูลเมตาของระบบไฟล์ที่เสียหาย การตรวจสอบดิสก์ไม่สามารถตรวจพบสิ่งนั้นได้ วัตถุประสงค์เพียงอย่างเดียวคือเพื่อหลีกเลี่ยงการทุจริตเพิ่มเติม

KB2854570แสดงสาเหตุบางประการที่อาจเกิดขึ้น หนึ่งคือการจำศีลในระบบปฏิบัติการที่มีปริมาณการติดตั้งแก้ไขเนื้อหาของปริมาณแล้วกลับมาจากการจำศีลกับปริมาณ (อีกครั้ง) ที่แนบมา หากคุณทำเช่นนั้นมีความน่าจะเป็นสูงในการเกิดความเสียหายของข้อมูลเงียบ

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


1
เป็นเวลานานการตรวจสอบ fsck อัตโนมัติทุกการเมานต์ระบบไฟล์ Nth นั้นเป็นมาตรฐานในการแจกแจง Linux ส่วนใหญ่ ทุกวันนี้ตัวเลือกนั้นมักถูกปิดโดยปริยาย
kreemoweet

0

เนื่องจากเทคโนโลยี UNIX / Linux Ext2 / Ext3 / Ext4 วางแถบแม่เหล็กที่แน่นกว่าของบิตข้อมูลกับ NTFS วางบิตข้อมูลแม่เหล็กไม่ต่างจากสเปรย์กระป๋องที่จะทำ NTFS ต้องการ "Defrag" ปกติซึ่งเป็น Ext2 / 3/4 ไม่ค่อยต้องการ defrag มันง่ายอย่างนั้น หากคุณต้องการบางสิ่งบางอย่างนอกไดรฟ์ UNIX / Linux ของคุณ - ระบบปฏิบัติการรู้ได้อย่างแม่นยำว่าจะเก็บบิตข้อมูลแม่เหล็กที่แน่นหนาได้อย่างไรในขณะที่ NTFS ต้องแย่งดิสก์ทั่วดิสก์เพื่อรับมัน ระบบบันทึก NTFS ทำงานได้ดีมาก - แต่หัวกำลังเล่นปิงปองเพื่อหยิบชิ้นแม่เหล็กที่วางลง ระบบไฟล์ FAT คู่ทำงานได้ดี - แต่เมื่อคุณต้องวิ่งไปทั่วลานเอเคอร์เพื่อรวบรวมบุชเชลของคุณในบิตเดียว - มันจะเร็วกว่ามากถ้าคุณไม่ต้องและสามารถรับสายบิตทั้งหมดได้

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