Tại sao sao chép cùng một lượng dữ liệu mất nhiều thời gian hơn nếu trải rộng trên nhiều tệp riêng biệt?


12

Tôi nhận thấy rằng việc sao chép dữ liệu trị giá 24Mb từ thư mục này sang thư mục khác mất khoảng 30 giây bởi vì (tôi cho rằng đây là lý do) nó có hơn 1.000 tệp riêng biệt. Sao chép 24Mb không nên mất nhiều thời gian. Tại sao số lượng tập tin làm cho khác nhau?

Tôi đang chạy Windows 7 trên MacBook (ram 4GB, CPU Intel (R) Core (TM) 2 Duo P7450 @ 2.13GHz, Hệ điều hành 32 bit)

EDIT: NTFS là hệ thống tệp được sử dụng trên ổ đĩa

Câu trả lời:


5

Ổ cứng không có tốc độ truyền chính xác, nó phụ thuộc vào bảo trì thích hợp, nghĩa là không bị phân mảnh, cũng không có các thành phần xấu, v.v ...

Nếu HDD là SATA 2 và cùng phân vùng thì đó chỉ là tốc độ truyền dữ liệu.

Nếu có hai phân vùng trong cùng một ổ cứng, thì không cần phải truyền dữ liệu này giữa bus và bo mạch chủ, tức là nó tải vào bộ đệm. (sau đó phụ thuộc vào kích thước bộ đệm hdd.)

Nhưng đối với mỗi tệp được sao chép, hệ thống phải giữ chỉ mục của nó trong MFT (Bảng tệp chính) của ổ cứng, điều này làm cho quá trình sao chép chậm hơn nếu bạn sao chép nhiều tệp. Và nếu bạn có bất kỳ phần mềm chống vi-rút nào, nó sẽ quét từng tệp được sao chép. Và nếu bạn đã kích hoạt lập chỉ mục tệp tìm kiếm microsoft (hoặc bất kỳ dịch vụ lập chỉ mục tệp nào khác), kết quả sẽ tồi tệ hơn.

Tôi nghĩ rằng phải có nhiều lý do khác tại sao việc sao chép nhiều tệp chậm hơn, nhưng đây phải là lý do chính.


Vô hiệu hóa chương trình chống vi-rút làm cho trích xuất nhanh hơn 10 lần. Sau đó quét các tập tin cho virus.
fat_mike

30

Tại sao số lượng tập tin làm cho khác nhau?

Rõ ràng bạn chỉ tập trung vào khía cạnh "sao chép dữ liệu" của "sao chép tệp". Một tập tin không chỉ là dữ liệu; nó là một thực thể trong một hệ thống tập tin . Một tập tin có tên và thuộc tính và quyền. Tất cả thông tin bổ sung này về tệp phải được sao chép cùng với dữ liệu khi "tệp được sao chép". Có một số lượng đáng kể I / O đĩa để thực hiện chi phí hệ thống tập tin này.

Quy trình sao chép một (1) tệp trong hệ thống tệp chung sẽ giống như:

  • Tìm tập tin nguồn trong hệ thống tập tin. (a)
  • Đọc từ đĩa mục thư mục cho tập tin nguồn.
  • Xác nhận quyền đọc.
  • Tìm tập tin đích trong hệ thống tập tin. (b)
  • Xác nhận quyền ghi trong thư mục đích.
  • Mở rộng thư mục nếu cần thiết để chứa tập tin mới. (c)
  • Cập nhật thư mục trên đĩa. (c1)
  • Tìm các khối miễn phí, phân bổ chúng và cập nhật lại bảng. (d)
  • Đọc dữ liệu tệp và sao chép vào tệp đích (tức là sao chép "tệp").
  • Cập nhật mục nhập thư mục cho tệp mới với (kích thước và thời gian). (e)
  • Cập nhật thời gian truy cập của mục nhập thư mục nguồn. (f)

(a) Ít nhất điều này có nghĩa là tìm kiếm thư mục hiện tại. Hoặc đường dẫn có thể bắt đầu từ thư mục gốc của hệ thống tập tin và một số cấp độ thư mục phải được duyệt qua.

(b) Ít nhất điều này có nghĩa là tìm kiếm thư mục hiện tại. Hoặc đường dẫn có thể bắt đầu từ thư mục gốc của hệ thống tập tin và một số cấp độ thư mục phải được duyệt qua. Nếu tệp đích đã tồn tại, sau đó xác định cách sao chép nên tiến hành hoặc hủy bỏ. Nếu tệp đích không tồn tại, thì phải tạo một mục nhập thư mục mới và có thể điều này liên quan đến việc mở rộng thư mục phân bổ (tức là khối tệp (còn gọi là cụm) ).

(c) Nếu thư mục phải được mở rộng, hãy phân bổ một khối mới bằng cách tìm một khối miễn phí, sửa đổi bảng phân bổ với phân bổ mới, sau đó ghi (các) khối ra đĩa. Vì hầu hết các hệ thống tập tin duy trì nhiều bản sao của bảng phân bổ, điều đó có nghĩa là nhiều lần ghi vào đĩa.
(c1) Khi thư mục đích được định vị, hãy đọc khối thư mục từ đĩa, sửa đổi nó với mục nhập thư mục mới cho tệp đã sao chép, sau đó ghi khối ra đĩa.

(d) Để sao chép tệp, phân bổ các khối bằng cách tìm các khối miễn phí, sửa đổi bảng phân bổ với các phân bổ mới, sau đó ghi (các) khối ra đĩa. Vì hầu hết các hệ thống tập tin duy trì nhiều bản sao của bảng phân bổ, điều đó có nghĩa là nhiều lần ghi vào đĩa. Để duy trì tính toàn vẹn dữ liệu, hệ thống tệp có thể không cố gắng kết hợp (trì hoãn và hợp nhất) các hoạt động ghi đĩa cho các thư mục và bảng phân bổ, mà thực hiện các thao tác ghi ngay lập tức khi các tệp mới được tạo và chặn phân bổ.

(e) Sau khi sao chép dữ liệu là tuân thủ, hãy cập nhật mục nhập thư mục mới cho tệp được sao chép với độ dài và dấu thời gian của tệp thích hợp, sau đó ghi khối thư mục ra đĩa.

(f) Cập nhật mục nhập thư mục nguồn với dấu thời gian "truy cập" mới và sau đó ghi khối thư mục ra đĩa.

Vì vậy, thay vì chỉ một tệp, câu hỏi của bạn là hỏi liệu thực hiện tất cả nội dung này cho một nghìn tệp có thể thêm thời gian để sao chép phần dữ liệu của tệp không? Nếu bạn chỉ sao chép một tệp 24MB, thì bạn sẽ có thứ gì đó để so sánh với thời gian sao chép của bạn là một nghìn tệp.

Khi sao lưu hệ thống tệp, sao chép các tệp riêng lẻ sang hệ thống tệp khác trên đĩa hoặc phân vùng hiếm khi được sử dụng vì đó là một quá trình khá chậm như bạn đã phát hiện ra. Phương pháp nhanh hơn là tạo và ghi một tệp lưu trữ duy nhất chứa các mục nhập thư mục nguồn và nội dung tệp ở định dạng tệp đặc biệt; các chương trình sao lưu và lệnh * nix 'tar' có thể xuất ra tệp lưu trữ như vậy. (Lưu ý rằng 'tar' chỉ xử lý các tệp lưu trữ và không sử dụng nén như lưu trữ + tiện ích nén.) Phương pháp sao lưu nhanh nhất là ghi vào thiết bị khối (chứ không phải là hệ thống tệp trên thiết bị), để hệ thống tệp nguồn là bỏ qua (được coi là nhiều dữ liệu hơn) và có thể thực hiện sao chép hình ảnh theo từng khối của thiết bị nguồn.


-1

Đây là một sự tương tự về khái niệm:

(xin nhớ internet thân yêu, sự tương tự đó là thiếu sót. Hãy thoải mái chỉ ra làm thế nào trong các bình luận.)

Giả định:

  • Tác nhân truyền thông tin cho == một số đứa trẻ, hãy gọi anh ta là Sam, đang chuyển trứng từ giỏ này sang giỏ khác.
  • Các phương tiện truyền thông tin == tôi đoán. Không thực sự quan trọng ở đây.
  • Những quả trứng đến từ nhiều loài khác nhau, bao gồm như ... khủng long ... & huyền thoại dưới nước và rồng. (những quả trứng có thể rất lớn)
  • Khối lượng trứng kích thước tập tin == . Hãy nghĩ trứng của robbin so với trứng của draggon.

Sự giống nhau:

Vì vậy, Sam phải di chuyển trứng từ giỏ này sang giỏ khác vì anh ta làm việc trong một trang trại và bất cứ ai giao nhiệm vụ cho anh ta là có ý nghĩa. Có nhiều loài động vật đẻ trứng trong trang trại này, bao gồm rồng & quái vật biển huyền thoại; Sam nghĩ rằng điều này là tuyệt vời vì nhiều lý do. (không thực sự quan trọng nhưng đây là sự tương tự của tôi)
Sam là chillin bên bờ sông với 2 giỏ của mình, một trong những giỏ là cái có trứng bên trong. Trứng trong giỏ có kích thước từ

  • một quả trứng của robbin chiếm 100 byteskhông gian trong giỏ

đến

  • Trứng Kraken, có kích thước xung quanh 2.7Gb.

Sam phải bắt đầu di chuyển trứng, vì vậy anh ta chỉ bắt đầu lấy trứng và di chuyển chúng. Hãy nói rằng anh ấy quyết định đầu tiên di chuyển một quả trứng rồng. Bây giờ quả trứng cực kỳ to và dày đặc, vì vậy anh phải mất một thời gian để kéo thứ này vào giỏ khác.
Sam lấy trứng của rồng vào giỏ khác và anh ấy bực mình. Điều đó thật khó khăn vì thứ đó chiếm quá nhiều không gian; sự di chuyển của nó đã kéo dài chỉ một quả trứng.

Sam là một kẻ ngốc.

Sam quay trở lại giỏ thứ 1 của mình để lấy một quả trứng khác. Anh nhận ra mình chỉ thực sự có 1 cái lớn. Tuy nhiên, vẫn còn 100.000.000 trứng robbin.

Như bạn có thể thấy, buổi chiều của Sam bị hủy hoại. Xu hướng tự nhiên của anh ta là trứng khủng long sẽ tệ hơn khi anh ta phải di chuyển. Điều đó có ý nghĩa khi chúng ta nói về trứng & giỏ, nhưng máy tính xử lý số lượng như 100.000.000.

Nói ngắn gọn:

Câu trả lời về lý do tại sao phải mất nhiều thời gian hơn để di chuyển một số tệp nhỏ so với một vài tệp lớn, phải làm với chi phí liên quan đến hành động di chuyển chúng. Bạn càng có nhiều tệp nhỏ, hành động đó sẽ cần được thực hiện nhiều lần hơn. Một cách khác để xem xét điều này sẽ là nói về mật độ thông tin.


-2

Đọc FAT, đặt lại vị trí đầu, mở tệp khi thay đổi tệp - tất cả đều cần có thời gian


Đó là ổ đĩa NTFS
Trindaz

Trong NTFS, tất cả dữ liệu tệp Tên tập tin, ngày tạo, quyền truy cập và nội dung của tập tin dữ liệu được lưu trữ dưới dạng siêu dữ liệu trong Bảng tệp chính. Bảng tệp chính (MFT) chứa siêu dữ liệu về mọi tệp, thư mục và siêu tệp trên một ổ đĩa NTFS. Nó bao gồm tên tệp, vị trí, kích thước và quyền. Một mục nhập thư mục bao gồm tên tệp và "ID tệp" là số bản ghi đại diện cho tệp trong Bảng tệp chính. ID tệp cũng chứa số lần sử dụng lại để phát hiện các tham chiếu cũ.
Lazy Badger

Vì vậy, câu trả lời của bạn cho câu hỏi dựa trên thực tế là nó phải làm thêm rất nhiều công việc tạo hồ sơ cho tên tệp, vị trí, kích thước, quyền, v.v.? Đó là nơi mà tất cả các công việc làm thêm đến từ.
Trindaz

Tạo mới đọc hiện có
Lazy Badger
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.