Tại sao Linux 30x nhanh hơn Windows 10 trong Sao chép tệp?


20

Tôi đã nhận được 20,3 Gig tệp và thư mục với tổng trị giá 100 nghìn + mục. Tôi đã sao chép tất cả các tệp đó trong một thư mục từ Windows 10 và nó khiến tôi mất 3 giờ sao chép. Làm xong.

Một ngày khác, tôi đã khởi động Linux Linux Fedora 24, nhận được cùng một thư mục và bam! Tôi chỉ mất 5 phút để nhân đôi nó trên cùng một địa điểm nhưng thư mục khác nhau.

Tại sao Linux lại nhanh như vậy? Và Windows có chậm một cách khó khăn?

Có một câu hỏi tương tự ở đây

Thuật toán sao chép tệp Linux (Ubuntu) có tốt hơn Windows 7 không?

Nhưng câu trả lời được chấp nhận là khá thiếu.


Bạn không sử dụng "Windows" hoặc "Linux" để sao chép tệp, bạn sử dụng một số chương trình cụ thể đang chạy trong mỗi hệ điều hành đó. Các chương trình rất khác nhau trong các phương pháp họ sử dụng và sự đánh đổi mà họ thực hiện. Những cái nào bạn đã sử dụng? Và làm thế nào?
kreemoweet

5
@kreemoweet: Các hệ điều hành cũng vậy - NTFS của Windows được biết là xử lý rất kém với rất nhiều tệp nhỏ, so với hầu hết các hệ thống tệp khác.
dùng1686

2
Và downvote đẹp từ một người hâm mộ Windows huh. Bạn thấy, sao chép các tập tin, mặc dù đơn giản có rất nhiều ứng dụng, từ sao lưu dữ liệu trong kinh doanh đến các nghiên cứu khoa học. Ví dụ, trong CERN, có Petabyte dữ liệu để xử lý, sao chép chậm sẽ không được chấp nhận.
Jones G

Từ liên kết tương tự - kiểm tra câu trả lời thứ 2 từ dưới lên. Linux lưu trữ tất cả các tệp vào RAM có sẵn và ghi vào đĩa khi chúng có thể - do đó tại sao nó trông nhanh hơn (vì nó chỉ cần đọc ngay bây giờ và ghi khi chúng có thể).
Darius

@DominicGuana Các hệ thống tệp thực hiện phần của chúng (ext3 / ext4 có thể phân bổ các khối 100Mb cùng một lúc). Bạn có nghĩ rằng phần mềm chống vi-rút dưới cửa sổ cũng có thể đóng vai trò (làm chậm) không? BTW cho các vấn đề tương tự với luồng thu thập dữ liệu SLAC (sau khi kích hoạt cấp 1 có quá nhiều dữ liệu), chúng tôi đã học cách viết song song trên ổ cứng ...
Hastur

Câu trả lời:


25

Khái niệm cơ bản của nó được chia thành một vài thành phần chính của toàn bộ hệ thống: phần tử UI (phần đồ họa), chính hạt nhân (nói về phần cứng) và định dạng lưu trữ dữ liệu (ví dụ: hệ thống tệp ).

Đi ngược lại, NTFSđã trở thành sự thật cho Windows trong một thời gian, trong khi thực tế cho các biến thể Linux chính là exthệ thống tệp. Bản thân hệ thống tệp NTFS đã không thay đổi kể từ Windows XP (2001), rất nhiều tính năng tồn tại (như thu hẹp / chữa lành phân vùng, NTFS giao dịch, v.v.) là các tính năng của HĐH (Windows Vista / 7/8/10) và không phải bản thân NTFS. Các exthệ thống tập tin có nó cuối cùng phát hành ổn định lớn ( ext4) trong năm 2008. Kể từ khi hệ thống tập tin chính là những gì điều chỉnh như thế nào và nơi các tập tin được truy cập, nếu bạn đang sử dụng ext4có một cơ hội rất có thể bạn sẽ nhận thấy một sự cải tiến tốc độ trên NTFS; lưu ý tuy nhiên nếu bạn đã sử dụng, ext2bạn có thể nhận thấy rằng nó có thể so sánh về tốc độ.

Cũng có thể là một phân vùng được định dạng trong các phần nhỏ hơn các phân vùng khác. Mặc định cho hầu hết các hệ thống là kích thước cụm 4096 byte 1 , 2 , nhưng nếu bạn định dạng ext4phân vùng của mình thành thứ gì đó như 16k 3 thì mỗi lần đọc trên ext4hệ thống sẽ nhận được gấp 4 lần dữ liệu so với hệ thống NTFS ( có thể có nghĩa là gấp 4 lần tệp tùy thuộc vào những gì được lưu trữ ở đâu / như thế nào và lớn như thế nào, v.v.). Sự phân mảnh của các tập tin cũng có thể đóng một vai trò trong tốc độ. NTFS xử lý phân mảnh tệp rất khác so với exthệ thống tệp và với tệp 100k +, rất có thể có một số phân mảnh.

Thành phần tiếp theo là chính hạt nhân (không phải UI, mà là mã thực sự nói chuyện với phần cứng, hệ điều hành thực sự). Ở đây, thực sự không có nhiều khác biệt. Cả hai hạt nhân có thể được cấu hình để thực hiện một số việc nhất định, như bộ đệm / bộ đệm đĩa, để tăng tốc độ đọc và nhận biết ghi, nhưng các cấu hình này thường có cùng một sự đánh đổi bất kể HĐH; ví dụ: bộ nhớ đệm dường như có thể tăng tốc độ sao chép / lưu một cách ồ ạt, nhưng nếu bạn mất nguồn trong quá trình ghi bộ đệm (hoặc rút ổ USB ra), thì bạn sẽ mất tất cả dữ liệu không thực sự được ghi vào đĩa và thậm chí có thể bị hỏng dữ liệu đã được ghi vào đĩa.

Ví dụ, sao chép nhiều tệp vào ổ USB được định dạng FAT trong Windows và Linux. Trên Windows, có thể mất 10 phút trong khi trên Linux, sẽ mất 10 giây; ngay lập tức sau khi bạn đã sao chép các tệp, hãy xóa ổ đĩa một cách an toàn bằng cách đẩy nó ra. Trên Windows, nó sẽ bị đẩy ra khỏi hệ thống ngay lập tức và do đó bạn có thể xóa ổ đĩa khỏi cổng USB, trong khi trên Linux, có thể mất 10 phút trước khi bạn thực sự có thể gỡ ổ đĩa; điều này là do bộ nhớ đệm (tức là Linux đã ghi các tệp vào RAM sau đó ghi chúng vào đĩa trong nền, trong khi Windows không có bộ đệm đã ghi các tệp ngay lập tức vào đĩa).

Cuối cùng là UI (phần đồ họa mà người dùng tương tác). Giao diện người dùng có thể là một cửa sổ đẹp với một số biểu đồ thú vị và các thanh đẹp cho tôi ý tưởng chung về số lượng tệp đang được sao chép và tất cả lớn như thế nào và có thể mất bao lâu; Giao diện người dùng cũng có thể là bảng điều khiển không in bất kỳ thông tin nào trừ khi hoàn thành. Nếu trước tiên UI phải đi qua từng thư mục và tệp để xác định có bao nhiêu tệp, cộng với độ lớn của chúng và đưa ra ước tính sơ bộ trước khi nó thực sự có thể bắt đầu sao chép, thì quá trình sao chép có thể mất nhiều thời gian hơn do UI cần làm cái này. Một lần nữa, điều này đúng bất kể hệ điều hành.

Bạn có thể định cấu hình một số thứ bằng nhau (như bộ đệm đĩa hoặc kích thước cụm), nhưng thực tế, nó chỉ đơn giản là làm thế nào tất cả các bộ phận liên kết với nhau để làm cho hệ thống hoạt động và cụ thể hơn là tần suất các đoạn mã đó thực sự được cập nhật. HĐH Windows đã đi được một chặng đường dài kể từ Windows XP, nhưng hệ thống phụ đĩa là một khu vực chưa thấy nhiều TLC trong HĐH trong tất cả các phiên bản trong nhiều năm (so với hệ sinh thái Linux dường như thấy một số FS mới hoặc cải thiện khá thường xuyên).

Hy vọng rằng thêm một số rõ ràng.


Câu trả lời khủng khiếp theo ý kiến ​​của tôi và bỏ phiếu. Bạn đang giới thiệu sự khác biệt nơi không có. Không ai hỏi làm thế nào các ổ phân vùng khác nhau thực hiện. Tất nhiên, trung tâm câu hỏi về giới luật "tất cả những người khác đều bình đẳng". Tôi có thể chọn fs cho 8 nvme raid0 theo bất kỳ cách nào tôi muốn với tốc độ đọc tự nhiên trên 16 gigabyte mỗi giây và bản sao tệp Windows đạt tối đa 1,4-1,5 gigabyte mọi lúc. Không có gì để làm với bộ nhớ đệm, fs, phân vùng, nhưng nhiều hơn với các giới hạn hệ điều hành Windows.
Matthias Wolf

@Matt hệ thống tập tin nào bạn định dạng mảng RAID trong? Nếu là NTFS, điều đó có thể giải thích sự chậm lại .. nhưng nếu bạn có thêm thông tin để cung cấp, bạn có thể thêm một câu trả lời có liên quan, đặc biệt là nếu bạn có bất kỳ mã nguồn nào (và không phải là kết xuất lắp ráp) cho HĐH Windows lõi để giải thích trực tiếp lý do tại sao nói chậm lại xảy ra (tôi đối với một người sẽ đặc biệt quan tâm đến điều đó!).
txtechhelp

Tôi sử dụng ntfs, còn lựa chọn nào tốt hơn là fs trên máy chủ windows?
Matthias Wolf

Tôi đã liên hệ với MSFT và đã có nhiều cuộc thảo luận và đã thử nhiều thứ trong nhiều năm và không bao giờ vượt quá 1,5 GB / giây, mặc dù có 100Gb nics trên mỗi máy và có tất cả lưu lượng truy cập khác trên mỗi công cụ định hình Mellanox cho thấy các kết nối đang hoạt động rất tốt tại Thông lượng 94-95Gb / giây. Không có sự chậm lại giữa các máy linux, nhưng ngay khi có máy Windows OS, tôi thấy những vướng mắc đó
Matthias Wolf

Tôi đang nói về chuyển tập tin duy nhất, tất cả các luồng đơn. Không có bất kỳ tắc nghẽn phần cứng nào, hoàn toàn dựa trên hệ điều hành của nó.
Matthias Wolf
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.