Đây là một trong những lĩnh vực mà SATA là tối ưu. Vấn đề là ở cấp độ giao thức kết nối thiết bị lưu trữ, và do đó không liên quan đến phần mềm bạn đang chạy. Sử dụng một máy photocopy tệp hoặc hệ điều hành khác sẽ không làm cho mọi thứ trở nên tốt hơn, ngoại trừ việc nó có thể cố gắng đặt các giá trị thời gian chờ khác nhau để giảm tác động của sự cố (có thể hoặc không thể tùy thuộc vào phần cứng và phần sụn; ).
Có một vài điểm quan trọng ở đây:
- Với SATA, nếu ổ đĩa ngừng đáp ứng, điều này có thể kết nối toàn bộ hệ thống lưu trữ, không chỉ một ổ đĩa đang gặp sự cố. Nó chắc chắn có khả năng kết nối toàn bộ bộ điều khiển và vì hầu hết các hệ thống tiêu dùng chỉ có một bộ điều khiển đĩa duy nhất (bộ tích hợp trên bo mạch chủ), điều này có nghĩa là tất cả lưu trữ. Thậm chí còn tệ hơn nếu ổ đĩa bị lỗi theo một số cách không chuẩn và / hoặc bất ngờ, điều này chắc chắn có thể xảy ra nếu ổ đĩa bị lề. Bạn có thể quan tâm Làm thế nào một đĩa đơn trong mảng phần cứng SATA RAID-10 có thể khiến toàn bộ mảng bị dừng lại? trên Lỗi máy chủ.
- Hầu hết các ổ đĩa SATA tiêu dùng có thời gian chờ mặc định dài (theo thứ tự phút) và nhiều ổ đĩa SATA tiêu dùng thiếu kiểm soát phục hồi lỗi cấu hình . Các ổ đĩa được gọi là "NAS" thường có ERC cấu hình và các ổ đĩa cao cấp hầu như luôn luôn làm như vậy; các ổ đĩa như vậy cũng có thể có thời gian chờ mặc định ngắn hơn (7 giây là giá trị chung). Thời gian chờ dài là thuận lợi nếu ổ đĩa giữ bản sao duy nhất của dữ liệu, điều không may là phổ biến trên các hệ thống tiêu dùng; chúng là một bất lợi trong cấu hình dự phòng hoặc nơi bạn chỉ muốn lấy càng nhiều càng tốt khỏi ổ đĩa trước khi nó xuống cấp hơn nữa.
- Một ổ đĩa sẽ tiếp tục cố gắng đọc một khu vực xấu cho đến khi nó đạt đến ngưỡng thời gian chờ của nó hoặc cho đến khi việc hủy bỏ được báo hiệu bởi máy chủ. Do bus SATA có thể bị trói khi chờ đọc xong, nên HĐH không thể báo hiệu hủy bỏ lệnh lưu trữ và trong trường hợp cực đoan, các ổ đĩa thậm chí có thể không đáp ứng tốt với thiết lập lại bus SATA trong tình huống như vậy
Điểm # 1 là một trong những điểm bán hàng chính cho SAS trên các máy chủ; SAS có khả năng xử lý lỗi tốt hơn đáng kể so với SATA. Điểm # 2 là giới hạn phần sụn ổ đĩa và # 3 trở thành vấn đề thực sự chỉ vì # 2.
Vì vậy, những gì xảy ra là hệ điều hành phát lệnh "đọc các ngành" vào đĩa và các lĩnh vực cụ thể bị hư hỏng theo cách nào đó. Do đó, đĩa chuyển sang chế độ thử lại để cố gắng lấy dữ liệu ra khỏi đĩa, thử đọc đi đọc lại cho đến khi nhận được dữ liệu đủ tốt để sửa lỗi ( FEC ) của đĩa có thể sửa cho các lỗi còn lại. Nếu bạn không may mắn, điều này có thể không bao giờ, nhưng ổ đĩa sẽ tiếp tục cố gắng trong một khoảng thời gian khá dài trước khi quyết định rằng việc đọc này sẽ không thành công.
Bởi vì hệ điều hành đang chờ đọc, điều này ít nhất sẽ làm chậm quá trình sao chép để thu thập dữ liệu và tùy thuộc vào kiến trúc hệ điều hành chính xác có thể khiến HĐH bị giật hoặc thậm chí đóng băng trong suốt thời gian. Tại thời điểm này, đĩa đang bận với việc đọc ban đầu và sẽ không phản hồi các lệnh đọc thêm cho đến khi lệnh hiện đang thực thi kết thúc (thành công hoặc không thành công) và phần mềm khác thường không làm tốt hơn hệ điều hành. đang chạy
Do đó, bất cứ điều gì kích hoạt đọc ở nơi khác ( lý tưởng , chỉ trên ổ đĩa bị hỏng) sẽ phải chờ xếp hàng cho đến khi ổ đĩa bị hỏng đọc thành công khu vực được đề cập hoặc xác định rằng nó không thể đọc được. Do việc xử lý tối thiểu các ổ đĩa không phản hồi tối ưu của SATA, điều này có thể có nghĩa là không chỉ ổ đĩa bạn đang sao chép sẽ bị trì hoãn I / O. Điều này rất dễ khiến các phần mềm khác trở nên chậm hoặc không phản hồi, vì phần mềm đó chờ một yêu cầu I / O khác để kết thúc, ngay cả khi hệ điều hành có thể đối phó.
Điều quan trọng cần lưu ý ở đây là I / O đĩa có thể xảy ra mặc dù bạn không truy cập rõ ràng bất kỳ tệp nào trên đĩa. Hai nguyên nhân chính cho điều này sẽ là mã thực thi tải theo yêu cầu và trao đổi. Vì trao đổi đôi khi được sử dụng ngay cả khi hệ thống không chịu áp lực bộ nhớ và mã thực thi tải theo yêu cầu là phổ biến trên các hệ thống hiện đại và với các định dạng tệp thực thi hiện đại, hoạt động đọc đĩa ngoài ý muốn trong quá trình sử dụng bình thường là một khả năng rất thực tế.
Như Matteo Italia đã chỉ ra trong một nhận xét cho câu hỏi , một chiến lược giảm thiểu là sử dụng một kết nối lưu trữ khác, đây là một cách phức tạp để nói "đặt đĩa vào vỏ USB". Bằng cách trừu tượng hóa thông qua giao thức lưu trữ dung lượng lớn USB , phần này tách biệt phần SATA có vấn đề với phần còn lại của hệ thống của bạn, điều đó có nghĩa là về mặt lý thuyết , chỉ có I / O trên đĩa cụ thể đó bị ảnh hưởng bởi các vấn đề I / O trên đĩa đó.
Nói một chút, đây là lý do tại sao SATA (đặc biệt là SATA không có ERC cấp ổ đĩa) thường không được khuyến khích cho RAID (đặc biệt là các cấp RAID có dự phòng, trong số các tiêu chuẩn đều là ngoại trừ RAID 0 ); thời gian chờ dài và xử lý lỗi kém có thể dễ dàng khiến toàn bộ thiết bị bị loại khỏi mảng cho một khu vực xấu duy nhất, bộ điều khiển RAID có thể xử lý tốt nếu có dư thừa và bộ điều khiển lưu trữ chỉ đơn giản biết rằng đây là sự cố. SAS được thiết kế cho các mảng lưu trữ lớn và do đó với mong muốn thỉnh thoảng sẽ xảy ra sự cố trên các ổ đĩa khác nhau, dẫn đến việc nó được thiết kế để xử lý trường hợp một ổ đĩa có vấn đề hoặc yêu cầu I / O một cách duyên dángngay cả khi ổ đĩa không. Các đĩa có vấn đề không phổ biến lắm trong các hệ thống tiêu dùng đơn giản vì các đĩa có xu hướng không có nhiều đĩa được cài đặt và các đĩa được cài đặt hầu như không bao giờ có dự phòng; Do SATA nhằm mục đích thay thế PATA / IDE chứ không phải SCSI (sau này là mục tiêu mà SAS hướng tới), nên có khả năng các tính năng và yêu cầu xử lý lỗi (hoặc bảo đảm) của nó được coi là phù hợp với trường hợp sử dụng dự định của nó.