Tại sao kiểm tra đĩa Ext4 nhanh hơn nhiều so với NTFS?


12

Tôi đã có một tình huống ngày hôm nay khi tôi khởi động lại máy tính của mình và nó nói rằng tôi cần kiểm tra sự thống nhất của đĩa. Khoảng 10 phút sau (hoàn thành "1%"), tôi bỏ cuộc và quyết định để nó chạy khi về nhà.

Để so sánh, máy tính ở nhà của tôi sử dụng Ext4 cho tất cả các phân vùng và việc kiểm tra đĩa (chạy khoảng một tuần) chỉ mất vài giây. Tôi nhớ đọc rằng kiểm tra đĩa nhanh là ưu tiên hàng đầu, nhưng tôi không biết làm thế nào họ có thể làm điều đó.

Vậy, làm thế nào để Ext4 kiểm tra đĩa nhanh như vậy? Có một số bước đột phá lớn trong việc này sau khi NTFS xuất hiện (~ 10 năm trước)?

Lưu ý: Đĩa NTFS là ~ 300 GB và đĩa Ext4 là ~ 500 GB. Cả hai đều đầy một nửa.


Tôi chưa có Windows chkdsk một ổ NTFS khi khởi động kể từ năm 2008 R2 được phát hành. Ngay cả trong cụm CSV có nhiều nút truy cập vào cùng một ổ đĩa NTFS, khóa hàng chục nghìn tệp chỉ mục Lucene. Nó khá ấn tượng.
Brain2000

Câu trả lời:


11

Có hai lý do chính cho sự khác biệt hiệu suất và hai lý do có thể . Đầu tiên, những lý do chính:


Tăng hiệu suất của ext4 so với NTFS

Nhiều điểm chuẩn khác nhau đã kết luận rằng hệ thống tệp ext4 thực tế có thể thực hiện nhiều thao tác đọc-ghi nhanh hơn phân vùng NTFS. Lưu ý rằng mặc dù các thử nghiệm này không biểu thị hiệu suất trong thế giới thực, chúng tôi có thể ngoại suy các kết quả này và sử dụng điều này như một lý do.

Đối với lý do tại sao ext4 thực sự hoạt động tốt hơn thì NTFS có thể được quy cho nhiều lý do. Ví dụ, ext4 hỗ trợ phân bổ chậm trễ trực tiếp. Một lần nữa, hiệu suất tăng phụ thuộc hoàn toàn vào phần cứng bạn đang sử dụng (và có thể bị phủ nhận hoàn toàn trong một số trường hợp nhất định).

Giảm yêu cầu kiểm tra hệ thống tập tin

Hệ thống tệp ext4 cũng có khả năng thực hiện kiểm tra hệ thống tệp nhanh hơn các hệ thống tệp nhật ký tương đương khác (ví dụ NTFS). Theo trang Wikipedia:

Trong ext4, các nhóm và phần khối chưa được phân bổ của bảng inode được đánh dấu như vậy. Điều này cho phép e2fsck bỏ qua chúng hoàn toàn trên séc và giảm đáng kể thời gian kiểm tra một hệ thống tệp có kích thước ext4 được xây dựng để hỗ trợ. Tính năng này được triển khai trong phiên bản 2.6.24 của nhân Linux.


Và bây giờ, hai lý do có thể :


Hệ thống tập tin Kiểm tra các tiện ích Bản thân

Một số ứng dụng có thể chạy các thói quen khác nhau trên các hệ thống tệp để thực sự "kiểm tra" sức khỏe. Điều này có thể dễ dàng nhận thấy nếu bạn sử dụng tiện ích fsck được thiết lập trên Linux so với tiện ích chkdsk trên Windows. Các ứng dụng này được viết trên các hệ điều hành khác nhau cho các hệ thống tệp khác nhau. Lý do tôi đưa ra điều này vì một lý do có thể là các cuộc gọi hệ thống cấp thấp trong mỗi hệ điều hành là khác nhau và do đó bạn không thể so sánh trực tiếp các tiện ích sử dụng hai hệ điều hành khác nhau.

Phân mảnh đĩa

Điều này là dễ hiểu, và cũng giúp chúng tôi hiểu sự khác biệt giữa các hệ thống tập tin. Mặc dù tất cả dữ liệu kỹ thuật số được lưu trữ trong một tệp là như nhau, cách lưu trữ trên ổ cứng khá khác nhau từ hệ thống tệp đến hệ thống tệp. Phân mảnh tệp rõ ràng có thể tăng tốc độ truy cập, do sự khác biệt về tốc độ.


1
Điều khiến tôi bối rối là điểm thứ hai của bạn ban đầu có vẻ như có ảnh hưởng lớn nhất, nhưng phân vùng Ext4 của tôi có dung lượng sử dụng nhiều như phân vùng NTFS của tôi - thay vì nhanh hơn nhiều, chúng có cùng tốc độ. Tôi đoán nó có khả năng cải thiện hiệu suất của Ext4 làm cho nó nhanh hơn để kiểm tra là tốt, nhưng Ext4 không phải là nhanh hơn nhiều so với NTFS (chắc chắn không phải là số đơn đặt hàng của chênh lệch độ lớn tôi thấy trong kiểm tra hệ thống tập tin).
Brendan Long

Tôi không chắc ý của bạn là gì ... Nói chung, nội dung tệp chiếm nhiều không gian hơn các chỉ mục trên hầu hết các hệ thống tệp hiện đại (bao gồm cả ext4 và NTFS). Các hệ thống tập tin chỉ lưu trữ nội dung khác nhau, mà (như tôi đã đề cập, trong một số trường hợp) cho phép hiệu suất cao hơn.
Đột phá

Điều khiến tôi bối rối là phần thực sự được kiểm tra phải có cùng kích thước trên cả hai (vì phân vùng Ext4 của tôi có dung lượng sử dụng nhiều như phân vùng NTFS có tổng số), nhưng phân vùng Ext4 sẽ kiểm tra trong vài giây, trong khi NTFS mất một giờ
Brendan Long

1
@Brendan Lâu nếu bạn nhìn vào liên kết đầu tiên trong câu trả lời của tôi, một số người đã thấy rằng việc đọc tệp thực sự nhanh hơn với một ổ đĩa sử dụng ext4 so với NTFS. Mặc dù dữ liệu kỹ thuật số được giữ trong tệp là như nhau , nhưng nó không được lưu trữ theo cùng một cách trên đĩa. Tuy nhiên, nếu bạn nói rằng NTFS mất hàng giờ , thì bạn có thể xác minh từng khu vực trên ổ đĩa, do đó bạn có thể bỏ qua một số kiểm tra thay thế trong kiểm tra hệ thống tệp ext4 (giải thích sự khác biệt tốc độ lớn). Nó nhanh hơn rất nhiều để xác minh từng tệp thay vì toàn bộ bề mặt đĩa.
Đột phá

Câu trả lời này chỉ là một danh sách các điểm nói chuyện ext4 vs NTFS không liên quan đến câu hỏi. Hệ thống tập tin được ghi lại không bao giờ cần phải được kiểm tra trong hoạt động bình thường. Kiểm tra tự động có nghĩa là một cái gì đó là sai nghiêm trọng. Không biết có gì sai, không thể biết tại sao việc kiểm tra lại chậm như vậy. So sánh nó với kiểm tra hàng tuần của ext4 là so sánh táo và cam.
benrg

3

Theo hiểu biết của tôi, ext4 cố gắng ghi dữ liệu vào khoảng trống lớn nhất liên tục của các nút mở nơi không có dữ liệu hiện đang cư trú. Điều này làm giảm đáng kể độ trễ khi các tệp đó phải được đọc, vì phần lớn, toàn bộ nội dung của một tệp riêng lẻ hầu hết sẽ nằm trên một rãnh liên tục duy nhất để đầu ổ đĩa sẽ ít tìm kiếm hơn khi tìm mọi khối chứa dữ liệu tạo nên một tập tin.

Nó (ext4) vẫn có thể bị phân mảnh nhưng ít hơn nhiều và không nhất thiết theo cách ảnh hưởng nghiêm trọng đến hiệu suất đọc / ghi như với NTFS. Trên NTFS, dữ liệu được ghi vào các khối mở đầu tiên trong đường dẫn của đầu.

Vì vậy, bất cứ nơi nào đầu nằm và có các khối mở, nó ghi càng nhiều dữ liệu càng tốt, sau đó ghi bất cứ nơi nào nó nằm trên đĩa khi đầu phải di chuyển, nói, đến một phần khác của đĩa để truy cập vào một tệp khác phải được mở trong một chương trình bạn vừa tải trong khi tệp khác vẫn đang được ghi.
Điều này có nghĩa là nếu tệp lớn, nó có khả năng được trải ra trong các khối tách biệt với nhau trên các rãnh riêng biệt và đó là lý do tại sao việc chống phân mảnh là cần thiết cho NTFS.

Ngoài ra, tại sao các máy chủ thường không sử dụng nó vì I / O nặng hơn đang diễn ra với một máy chủ nơi dữ liệu liên tục được ghi và đọc từ đĩa 24/7.

Ngoài ra tôi không chắc nhưng nếu chkdskkiểm tra tính toàn vẹn của từng tệp (mà tôi tin cả hai và fscklàm) thì nó cũng sẽ chậm hơn so với những gì tôi vừa mô tả về phân đoạn trên NTFS.


Cả NTFS chkdsk và ext4 fsck đều không đọc dữ liệu tệp. Nó sẽ là vô nghĩa, bởi vì không có tổng kiểm tra hoặc bất kỳ cách nào khác để xác minh tính toàn vẹn của nó.
benrg

0

Windows không bao giờ cần phải kiểm tra ổ đĩa NTFS khi khởi động. Nếu đúng như vậy, một cái gì đó đã đi sai nghiêm trọng, một cái gì đó tồi tệ hơn nhiều so với một BSOD hoặc mất điện. Có một khả năng đáng kể là một số dữ liệu của bạn cũng bị hỏng bởi bất cứ điều gì làm hỏng siêu dữ liệu của hệ thống tệp. Kiểm tra đĩa không thể phát hiện ra rằng; Mục đích duy nhất của nó là để tránh tham nhũng hơn nữa.

KB2854570 liệt kê một số lý do mà điều này có thể xảy ra. Một là ngủ đông hệ điều hành với âm lượng được gắn, sửa đổi nội dung của âm lượng, sau đó tiếp tục từ chế độ ngủ đông với âm lượng (lại) được đính kèm. Nếu bạn làm điều đó, có khả năng cao tham nhũng dữ liệu im lặng.

Tôi không biết tại sao hệ thống tập tin ext4 của bạn lại tự kiểm tra mỗi tuần một lần, nhưng có lẽ (hy vọng) không phải do một cuộc khủng hoảng tương đương xảy ra hàng tuần. Nó có lẽ chỉ là thực hiện kiểm tra vệ sinh thông thường, và không phải là kiểm tra tính nhất quán đầy đủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.