An toàn ghi bộ nhớ cache trên ổ đĩa SATA với các rào cản


13

Gần đây tôi đã đọc về bộ nhớ đệm ghi, NCQ, lỗi phần sụn, rào cản, v.v. về ổ đĩa SATA và tôi không chắc cài đặt nào tốt nhất sẽ giúp dữ liệu của tôi an toàn trong trường hợp mất điện.

Theo những gì tôi hiểu, NCQ cho phép ổ đĩa sắp xếp lại ghi để tối ưu hóa hiệu suất, trong khi vẫn giữ cho hạt nhân được thông báo về những yêu cầu đã được ghi bằng vật lý.

Ghi bộ đệm làm cho ổ đĩa phục vụ một yêu cầu nhanh hơn nhiều, vì nó không chờ dữ liệu được ghi vào đĩa vật lý.

Tôi không chắc cách thức bộ đệm NCQ và Write ở đây ...

Các hệ thống tập tin, đặc biệt là các tạp chí, cần phải chắc chắn khi một yêu cầu cụ thể đã được viết ra. Ngoài ra, quy trình không gian người dùng sử dụng fsync () để buộc xóa một tệp cụ thể. Cuộc gọi đó đến fsync () không nên trả về cho đến khi hệ thống tập tin chắc chắn rằng dữ liệu được ghi vào đĩa.

Có một tính năng (FUA, Force Unit Access), mà tôi chỉ thấy trên các ổ đĩa SAS, điều này buộc ổ đĩa phải bỏ qua bộ đệm và ghi trực tiếp vào đĩa. Đối với mọi thứ khác, có các rào cản ghi, đó là một cơ chế được cung cấp bởi kernel có thể kích hoạt một bộ đệm cache trên ổ đĩa. Điều này buộc tất cả bộ đệm phải được ghi lại, không chỉ là dữ liệu quan trọng, do đó làm chậm toàn bộ hệ thống nếu bị lạm dụng, ví dụ với fsync ().

Sau đó, có các ổ đĩa có lỗi phần sụn hoặc cố tình nói dối khi dữ liệu được ghi bằng vật lý.

Đã nói điều này .. có một số cách để thiết lập các ổ đĩa / hệ thống tập tin: A) NCQ và bộ đệm ghi bị tắt B) Chỉ bật NCQ C) Chỉ cần ghi bộ đệm đã bật D) Cả NCQ và ghi bộ đệm được bật

Tôi đang xem xét các rào cản được kích hoạt .. BTW, làm thế nào để kiểm tra xem chúng có thực sự được kích hoạt không?

Trong trường hợp mất điện, trong khi chủ động ghi vào đĩa, tôi đoán là tùy chọn B (NCQ, không có bộ đệm) là an toàn, cho cả nhật ký hệ thống tệp và dữ liệu. Có thể có một hình phạt hiệu suất.

Tùy chọn D (NCQ + cache), nếu sử dụng các rào cản hoặc FUA, sẽ an toàn cho tạp chí hệ thống tập tin và các ứng dụng sử dụng fsync (). Sẽ rất tệ cho dữ liệu đang chờ trong bộ đệm và hệ thống tập tin sẽ phát hiện ra nó (kiểm tra) và ít nhất là hệ thống tập tin sẽ không (hy vọng) ở trạng thái không ổn định. Hiệu suất-khôn ngoan, nó sẽ tốt hơn.

Câu hỏi của tôi, tuy nhiên, đứng ... Tôi có thiếu gì không? Có bất kỳ biến nào khác để đưa vào tài khoản? Có công cụ nào có thể xác nhận điều này và các ổ đĩa của tôi hoạt động như bình thường không?


Ứng dụng trong tình huống của bạn là gì? Bạn đang xem hiệu ứng hoặc ảnh hưởng của bộ điều khiển RAID và bộ đệm của nó trên thiết lập. Bạn đang tập trung vào hệ điều hành nào? Những hệ thống tập tin bạn đang xem xét?
ewwhite

Không có ứng dụng cụ thể. Tôi đã sử dụng phần mềm raid1 trong nhiều năm, nhưng chưa bao giờ đi sâu vào vấn đề mà bộ nhớ cache thể hiện. Ngoài ra, việc xem xét các btrfs, chưa có fsck đáng tin cậy, khiến tôi đặt câu hỏi tôi có thể làm gì để ngăn ngừa tham nhũng, nếu tôi sử dụng nó.
julianjm

1
Sử dụng ZFS trên Linux thay thế và kết hợp với thiết bị ZIL được xây dựng có mục đích. Tôi sử dụng DDRDrive cho các hệ thống ZFS :)
ewwhite

Bạn đang sử dụng ZFS với FUSE?
julianjm

2
Hãy chắc chắn để có được một UPS.
Michael Hampton

Câu trả lời:


11

Đối với các hệ thống Enterprise thẳng, có một lớp bổ sung dưới dạng bộ điều hợp lưu trữ (hầu như luôn luôn là thẻ RAID) trên đó tồn tại một lớp bộ đệm khác. Có rất nhiều sự trừu tượng trong kho lưu trữ những ngày này, và tôi đã đi sâu vào chi tiết này trong một loạt blog tôi đã làm trên Biết I / O của bạn .

Thẻ RAID có thể bỏ qua bộ nhớ cache trên đĩa, một số trong đó thậm chí còn cho phép bật tính năng này trong BIOS RAID. Đây là một lý do tại sao các đĩa Enterprise là Enterprise, phần mềm mạnh hơn cho phép những thứ mà ổ đĩa của người tiêu dùng ( đặc biệt là ổ đĩa 'xanh') không có. Tính năng này trực tiếp giải quyết trường hợp bạn quan tâm: mất điện với ghi không được ghi. Bộ nhớ cache của thẻ RAID, phải là pin hoặc được hỗ trợ flash, sẽ được giữ lại cho đến khi có điện trở lại và những lần ghi đó có thể được sử dụng lại.

Một số ổ SSD doanh nghiệp nhất định bao gồm một tụ điện trên bo mạch có đủ oomph để cam kết bộ nhớ cache trên bo mạch trước khi tắt nguồn hoàn toàn.

Nếu bạn đang làm việc với một hệ thống với các đĩa được kết nối trực tiếp với bo mạch chủ thì sẽ có ít sự đảm bảo hơn. Trừ khi các đĩa tự có khả năng cam kết bộ đệm ghi, một bộ nguồn thực sự sẽ gây ra tổn thất. Hệ thống tập tin nổi tiếng vì không đáng tin cậy do không thể tồn tại chỉ trong chế độ thất bại này; nó được thiết kế để chạy trên các hệ thống doanh nghiệp đầy đủ với khả năng sống sót được lưu trữ kỹ thuật.

Tuy nhiên, thời gian đã trôi qua và XFS đã được thiết kế để tồn tại điều này. Các hệ thống tập tin Linux lớn khác (cũng như trên Windows) đã kỹ thuật để tồn tại chế độ rất thất bại này. Cách thức hoạt động của nó là các bài viết bị mất sẽ không xuất hiện trên tạp chí FS và nó sẽ biết rằng họ đã không được nhận, vì vậy tham nhũng sẽ được phát hiện và xử lý một cách an toàn.

Bạn chỉ ra một vấn đề ở đây: phần mềm điều khiển đĩa nằm. Trong trường hợp này, tạp chí FS sẽ đưa ra một giả định sai so với thực tế và tham nhũng có thể không được phát hiện trong một thời gian. RAID chẵn lẻ và RAID nhân bản có thể hoạt động xung quanh điều này vì cần có một bản sao được ghi nhận khác để lấy từ đó. Nhưng các thiết lập đĩa đơn sẽ không có kiểm tra chéo, vì vậy sẽ thực sự có lỗi.

Bạn có thể khắc phục rủi ro phần sụn bằng cách sử dụng các ổ đĩa cấp Doanh nghiệp để xác thực nhiều hơn (và được kiểm tra so với các mẫu khối lượng công việc giả định của bạn) và thiết kế hệ thống lưu trữ của bạn để nó có thể tồn tại như vậy.


Tôi hiểu rằng trong RAID phần cứng, tùy thuộc vào bộ điều khiển để thực hiện bộ nhớ đệm (hy vọng được hỗ trợ pin) và nên tắt bộ đệm đĩa thực tế. Trong trường hợp của tôi (không đề cập đến nó) tôi đang sử dụng cuộc đột kích phần mềm. Có vẻ như không nên ghi cache vì nó sẽ gây mất dữ liệu. Có thể không phải catastrofic (tham nhũng hệ thống tập tin), nhưng dù sao cũng mất dữ liệu. Tôi sẽ kiềm chế, trong thời gian hiện tại, từ việc chuyển phần mềm của tôi1 + ext4 sang btrfs + raid1. :)
julianjm

RAID không giúp được điều này vì dữ liệu có thể dễ dàng ngồi trong cả hai ổ đĩa ghi bộ nhớ cache như một ổ đĩa.
psusi

@psusi Nó không phải là giảm thiểu 100%, nhưng nó cung cấp bảo vệ bổ sung . Đó là một vấn đề thời gian. Triển khai RAID cá nhân khác nhau.
sysadmin1138

Nó hoàn toàn không phải là giảm nhẹ. Ổ đĩa thứ cấp hoàn toàn không thành vấn đề, vì trong trường hợp xảy ra sự cố, ổ đĩa chính sẽ được sao chép lại trên ổ thứ cấp để khôi phục. Do đó, bạn quay lại việc ghi hay không vào ổ đĩa (đầu tiên) hay không.
psusi

3

Tạp chí hệ thống tập tin ban đầu đã chờ ghi vào nhật ký để hoàn thành trước khi phát hành ghi vào siêu dữ liệu, giả sử rằng không có ổ đĩa ghi bộ đệm. Khi kích hoạt bộ đệm ghi ổ đĩa, giả định này bị hỏng và có thể gây mất dữ liệu. Do đó, các rào cản đã được tạo ra. Với các rào cản, tạp chí có thể đảm bảo rằng ghi vào nhật ký hoàn thành trước khi ghi vào siêu dữ liệu, ngay cả khi đĩa đang sử dụng bộ đệm ghi. Ở lớp trình điều khiển đĩa, rào cản buộc xóa bộ đệm đĩa trước khi IO tiếp theo được gửi xuống, khi ổ đĩa báo cáo rằng nó có bộ đệm ghi và nó được bật. Mặt khác, điều này là không cần thiết, do đó, rào cản chỉ ngăn việc phát hành IO tiếp theo cho ổ đĩa cho đến khi IO trước đó hoàn thành. NCQ chỉ có nghĩa là nó có thể phải chờ nhiều hơn một yêu cầu đang chờ xử lý để hoàn thành trước khi ban hành thêm.


Tôi nghĩ rằng các rào cản bảo vệ bạn khỏi tham nhũng tạp chí (nếu hệ thống tệp yêu cầu như vậy), nhưng tôi không chắc chắn về dữ liệu thực tế trên các tệp ... Việc phát hành bộ đệm ẩn sau mỗi lần ghi sẽ khiến bộ đệm ghi bị vô dụng, sẽ không ?
julianjm

@julianjm, tất nhiên ... dữ liệu tệp được lưu trong bộ nhớ cache luôn bị mất trong trường hợp xảy ra sự cố, có hoặc không có NCQ hoặc ổ đĩa ghi bộ đệm.
psusi
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.