Di chuyển tệp giữa hai ổ đĩa trên một ổ SSD - nó sẽ được sao chép?


18

Khi di chuyển tệp trong một ổ đĩa, tệp không được sao chép và xóa. Bảng đề cập đến các tập tin vừa được cập nhật. Và theo như tôi biết, đó không phải là trường hợp trên 2 ổ đĩa trên ổ cứng. Nhưng SSD thì khác, không có không gian vật lý dành riêng cho mỗi ổ. ( nguồn )

Vì vậy, câu hỏi của tôi là điều gì xảy ra khi một tệp được di chuyển từ ổ đĩa này sang ổ đĩa khác trên cùng một ổ SSD, các byte được sao chép và bản gốc đã bị xóa hay một bảng nào đó được cập nhật, do đó sẽ giảm bớt SSD?

Đã có một câu hỏi trùng lặp ở đây . Nhưng cả hai câu trả lời đều khẳng định:

mỗi phân vùng sẽ có khu vực vật lý riêng của ổ đĩa cho chính nó

Phân vùng ổ cứng thực sự chỉ định các vùng vật lý cho mỗi phân vùng. [và trong một nhận xét:] SSD vẫn là ổ cứng, nó không có đĩa.

Theo tôi biết đó là sai. Xem tại đây .

Vì vậy, một người biết nhiều hơn về SSD sẽ cho tôi biết nếu họ đúng trong đánh giá của họ mặc dù sai lầm của họ?


14
Câu trả lời được chấp nhận là đúng: mỗi phân vùng có hệ thống tệp độc lập, riêng. Mỗi hệ thống tập tin tự quyết định cách nó sử dụng các khối được gán cho nó. Để làm những gì bạn đề xuất phần sụn của SSD, các hệ thống tập tin và các công cụ người dùng như Linux mvsẽ phải hợp tác, trộn các lớp trừu tượng rất nhiều.
Kamil Maciorowski

2
@Kamil: Nếu hệ điều hành triển khai nó, mvthực sự sẽ cần phải làm ít hơn hiện tại, tôi nghi ngờ. (Nghĩa là, HĐH sẽ chỉ cần đảm bảo rằng việc đổi tên hệ thống tập tin chéo () thành công thay vì thất bại như hiện tại.)
grawity

16
"2 ổ đĩa trên [SSD / HDD]" - Tôi nghĩ bạn muốn nói 2 hệ thống tập tin hoặc 2 phân vùng trên một ổ SSD / HDD. Hãy nhớ rằng chữ "D" cuối cùng trong cả hai từ viết tắt là "Drive", vì vậy bạn đang nói 2 ổ trong 1 ổ, điều này không có nghĩa gì.
JoL

1
Lấy ví dụ hộp thoại Quản lý đĩa. Nó nói Change Drive Letter and Pathskhi đề cập đến một phân vùng / âm lượng.
ispiro

4
@ispiro Có phải trên Windows không? Có vẻ như một cách khủng khiếp để gây nhầm lẫn cho người dùng. Tôi chỉ có thể đoán rằng họ đã đưa ra thuật ngữ "Drive Letter" trước các phân vùng ổ đĩa được triển khai và sau đó họ kết thúc việc đại diện cho các phân vùng ổ đĩa là "ổ đĩa" độc lập. Vì vậy, bây giờ bạn có thể có nhiều "ổ đĩa" Windows đại diện cho các phân vùng của một ổ đĩa cứng ...
JoL 26/12/18

Câu trả lời:


38

Theo tôi biết đó là sai

Mô tả được trích dẫn là nửa đúng, nửa sai. Nhưng nó cũng sai một nửa đối với ổ cứng.

Phân vùng một ổ đĩa chỉ định các vùng logic cho mỗi phân vùng. HĐH hoàn toàn không quan tâm đến các vị trí thực tế - nó chỉ yêu cầu ổ đĩa "đọc khối logic # 31415926" và chính ổ đĩa sẽ quyết định vị trí của dữ liệu. Điều này hoạt động theo cùng một cách cho bộ nhớ từ tính và flash.

Nó thực sự giống như với các ổ cứng từ 20 năm25 năm trước: mặc dù các hệ điều hành ban đầu sử dụng các vị trí trụ / đầu / khu vực vật lý, nhưng điều đó đã qua từ lâu. Bạn không biết chính xác nơi mà đĩa LBA # 1234 được giữ. Các ổ cứng thậm chí còn tự động sắp xếp lại các thành phần vật lý xấu, do đó, cùng một LBA có thể được đọc từ một khu vực vật lý hoàn toàn khác - giống như với SSD.

Vì vậy, với cả ổ cứng và SSD, HĐH chỉ có một loạt LBA (ví dụ 0 099999999) để đọc và ghi dữ liệu từ đó. Mục đích của việc phân vùng là phân bổ các phạm vi con trong đó - ví dụ: phân vùng A được 101044999, phân vùng B được 500000 Nott999999. Mỗi phân vùng có một hệ thống tệp độc lập và các hệ thống tệp bên trong mỗi phân vùng không thể tham chiếu dữ liệu bên ngoài nó - chúng không thể vượt qua ranh giới phân vùng. (Ví dụ: phân vùng A không thể có tệp có dữ liệu được lưu trong sector # 600000.)

Do đó, tất cả các tệp chuyển từ tệp này sang tệp khác phải được sao chép đầy đủ.

(Điều đó nói rằng, về mặt lý thuyết, HĐH có thể yêu cầu đĩa tự sao chép dữ liệu từ vùng này sang vùng khác (ví dụ: "sao chép LBA # 1234 sang # 567890"), mà không phải sao chép nó vào bộ nhớ chính rồi quay lại, và tất nhiên điều này sẽ hoàn toàn bỏ qua ranh giới phân vùng. Ví dụ, điều này có thể sử dụng "lớp dịch flash" của SSD. Nhưng trong thực tế, theo như tôi biết, điều này không được thực hiện.)


Tôi cho rằng bạn đúng. Tuy nhiên, nhận thấy rằng có một tùy chọn. Ổ đĩa có thể quyết định rằng sector # 001 trên ổ # 1 bây giờ sẽ chuyển sang sector # 123 trong ổ # 2 (tức là sector # 001 trên ổ # 1 bây giờ sẽ đề cập đến dữ liệu vật lý từng được gọi là sector # 123 trong ổ đĩa số 2) do đó di chuyển tệp mà không phải sao chép các byte. Vì vậy, di chuyển một TB dữ liệu có thể về nguyên tắc được gần như tức thời.
ispiro

15
Ổ đĩa không biết về các tệp hoặc hệ thống tệp và do đó không thể tự đưa ra quyết định như vậy. Nó cần nhận được yêu cầu từ HĐH để điều này xảy ra. Như tôi đã đề cập trong đoạn trước, chắc chắn là có thể về mặt kỹ thuật nhưng các hệ điều hành thường không bận tâm đến điều này đối với các bản sao hệ thống tập tin chéo và tôi nghi ngờ chúng làm cho các bản sao cùng hệ thống (thường được thực hiện ở cấp độ FS).
grawity

6
Một số ổ SSD thực hiện sao chép cấp khối. Ví dụ: Sandforce ( en.wikipedia.org/wiki/SandForce#T Technology ) là một trong những người đầu tiên thực hiện điều này và bộ điều khiển của họ đã tìm đường vào nhiều sản phẩm của nhà sản xuất SSD. Bộ điều khiển Sandforce có hệ số "khuếch đại ghi" nhỏ hơn một - có nghĩa là họ đã ghi ít dữ liệu vào bộ lưu trữ flash hơn so với những gì HĐH gửi đến ổ đĩa. Để so sánh, SSD thường có hệ số amp ghi lớn hơn một.
hojusaram

2
@hojusaram: Đúng, nhưng đó vẫn là sự trùng lặp sau thực tế - giảm ghi flash, nhưng dữ liệu vẫn được đọc, sao chép từ đĩa vào bộ nhớ hệ điều hành và sau đó quay lại bộ điều khiển đĩa. Ý nghĩa của ispiro là SSD tương đương với "Reflink" hoặc "copy on write" (ví dụ cp --reflink) mà HĐH có thể yêu cầu đĩa tự thực hiện một cách rõ ràng.
grawity

1
Sẽ rất thú vị khi khám phá cách APFS xử lý vấn đề này, vì ranh giới phân vùng không còn cố định, chúng có thể thay đổi mà không cần sự can thiệp từ người dùng.
Tetsujin

9

Điều gì xảy ra khi dữ liệu được ghi vào Solid State Disk xứng đáng với một số bài viết (tóm tắt tốt ở đây ), vì nó rất phức tạp và phụ thuộc vào công nghệ cơ bản. Câu chuyện ngắn là SSD nói chung không thể ghi bit 0 vào bộ nhớ. Thay vào đó, họ phải loại bỏ toàn bộ (xóa) toàn bộ phần bộ nhớ và sau đó họ có thể lưu trữ dữ liệu sau đó bằng cách chỉ ghi những phần đó vào đó. Thông thường ngày nay họ viết các khối 512 byte nhưng xóa một trang 8 khối là 4096. Điều này và thực tế là mỗi chu kỳ ghi / xóa gây ra một số hao mòn vật lý của bộ nhớ và bộ nhớ cuối cùng bị hao mòn, làm cho SSD trở nên khác biệt hơn là quay ổ cứng từ tính.

Đặt sang một bên, các ổ đĩa SATA (và các ổ AFAIK SAS) không thực hiện lệnh gốc để sao chép dữ liệu từ một lĩnh vực này sang một lĩnh vực khác. (Hoặc ít nhất không có gì trong thông số SATA hoặc SAS yêu cầu chúng phải có, vì vậy HĐH không thể dựa vào lệnh như vậy.) Vì vậy, một bản sao tệp trên một phân vùng sẽ liên quan đến việc đọc dữ liệu từ một ổ đĩa vào bộ nhớ máy chủ và sau đó ghi nó quay trở lại ổ đĩa ở một khu vực khác.

Điều này là do liên quan đến HĐH, một ổ đĩa là một tập hợp các lĩnh vực logic được đánh số và tất cả những gì nó có thể làm là đọc từ các lĩnh vực và ghi vào các lĩnh vực. HĐH không thể yêu cầu ổ đĩa sắp xếp lại các cung.

Hơn nữa, hệ thống tệp (HFS +, NTFS, ext3, v.v.) là một tập hợp các cấu trúc dữ liệu áp đặt trật tự trên một tập hợp các khối logic. Các cấu trúc dữ liệu đó thực hiện "tệp", "tên tệp", "thư mục", "quyền", v.v. Vì vậy, có, khi bạn di chuyển tệp từ thư mục này sang thư mục khác, nó không được sao chép; chỉ dữ liệu hệ thống tệp cho biết thư mục nào trong tệp được cập nhật.

Khái niệm của một phân vùng là nó là một tập hợp các thành phần logic trên ổ đĩa được yêu cầu bởi một hệ thống tệp duy nhất. Hệ quả của điều đó là một hệ thống tệp có thể không truy cập vào các cung bên ngoài phân vùng của nó. Phần lớn đây là một tính năng an toàn, nhưng nó cũng xuất phát từ thực tế là các cấu trúc dữ liệu của hệ thống tệp được xây dựng xung quanh kế toán cho mọi khu vực của ổ đĩa thuộc quyền sở hữu của hệ thống tệp và việc thêm hoặc xóa các thành phần không tầm thường đến những cấu trúc đó. Đây là lý do tại sao bạn phải chạy các thói quen đặc biệt để điều chỉnh kích thước của phân vùng và cũng là lý do tại sao các hệ thống tệp cứ khăng khăng chạy trên một tập hợp các khu vực liền kề.

Vì vậy, sẽ không thực tế và nguy hiểm khi thực hiện sao chép tệp khi chỉ chuyển các ngành từ hệ thống tệp này sang hệ thống tệp khác. Trên một ổ đĩa từ tính quay vòng, nó cũng sẽ là một cơn ác mộng về hiệu suất, bởi vì mặc dù ổ đĩa sẽ tạo ra ngoại lệ cho các thành phần xấu, nhưng nói chung, nó sắp xếp cho các khu vực được định vị theo cách vật lý để tối ưu hóa tốc độ đọc và ghi liên tục các ngành.

Ngoài ra, 2 hệ thống tệp có thể không lưu trữ dữ liệu tệp theo cùng một cách trên đĩa, có nghĩa là các thành phần hoán đổi sẽ không hoạt động ngay cả khi nó thực tế. Ngay cả khi chúng là cùng loại hệ thống tệp, giả sử NTFS, một loại có thể đang sử dụng mã hóa hoặc nén và loại kia thì không, hoặc cả hai có thể mã hóa dữ liệu, nhưng bằng các khóa khác nhau. Không yêu cầu dữ liệu trong tệp phải chính xác là những gì được lưu trữ trên đĩa, tất cả những gì phải lưu trữ là một chuyển đổi có thể đảo ngược của dữ liệu, để hệ thống tệp có thể lấy dữ liệu của tệp bằng cách thực hiện điều gì đó với dữ liệu trên đĩa. Vì vậy, trừ khi cả hai hệ thống tệp đang sử dụng chính xác cùng một phép chuyển đổi, chỉ cần hoán đổi các thành phần sẽ không hoàn thành mục tiêu chuyển dữ liệu tệp.

Vì tất cả những lý do này, công việc của các nhà văn và hệ thống tập tin hệ điều hành chỉ là quá nhiều công việc để tối ưu hóa việc di chuyển trên các phân vùng cho SSD. Vì vậy, bất kỳ di chuyển phân vùng chéo sẽ là đọc và viết.

Bên trong SSD, đó là một câu chuyện hơi khác. Mặc dù HĐH không cho biết ổ đĩa đang sao chép dữ liệu từ nơi này sang nơi khác, nhưng việc ghi vào ổ SSD rất tốn kém (và phức tạp) đến nỗi bộ điều khiển SSD phải làm rất nhiều việc để giảm thiểu việc ghi. Một số ổ SSD đã cố gắng phát hiện khi một khu vực được ghi vào bộ lưu trữ khớp với một khu vực đã được lưu trữ và đánh dấu phần bộ nhớ vật lý đó hiện đang ánh xạ tới 2 khu vực logic khác nhau thay vì sao chép nó, làm ở cấp ổ đĩa bên trong Hệ điều hành không thể.

Nhưng đừng tin vào điều đó.


1
Không phải đoạn cuối cùng của bạn ngụ ý rằng hệ thống tập tin phải giống nhau? Tôi cho rằng SSD không biết hệ thống tập tin nào đang chạy trên đầu. Ví dụ: nếu một phân vùng sử dụng nén và phân vùng khác thì không, bản sao của SSD có thể làm hỏng tệp.
blablabla

@blablabla Đoạn cuối giả định cả hai hệ thống tệp lưu trữ nội dung tệp thực tế trên đĩa mà không thay đổi. Tôi đã làm điều đó rõ ràng bây giờ.
Old Pro
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.