Tính toàn vẹn dữ liệu BTRFS (CRC32c) và tính toàn vẹn dữ liệu của ổ cứng (ECC ngành)


7

Tôi mới sử dụng BTRFS và tôi đang cố gắng hiểu tại sao BTRFS sử dụng CRC32c trong khi HDD đã có ECC toàn vẹn dữ liệu cấp ngành. Có phải vì BTRFS không chuyển tiếp trên phương tiện để có bảo vệ toàn vẹn dữ liệu? Cảm ơn bạn.


1
Nói một cách đơn giản: một lớp ECC đơn giản là không đủ với kích thước lưu trữ hiện nay. Xem liên kết trên câu trả lời @SteveWills.
Adam Ryczkowski 7/12/14

Câu trả lời:



1

Tôi chỉ không mua các đối số như vậy mà các đĩa thường xuyên có các lỗi không được báo cáo và đưa nó lên FUD. Có, nếu bạn ném đủ dữ liệu ngẫu nhiên vào mã phát hiện lỗi, đôi khi nó sẽ báo cáo dữ liệu là chính xác khi không. Mặc dù vậy, đây là điều: ổ đĩa không cố đọc dữ liệu ngẫu nhiên. Đó là đọc dữ liệu chủ yếu được viết và đọc lại một cách chính xác. Điều đó sau đó chuyển qua một mã sửa lỗi có thể sửa một số bit sai. Để nhận được một lỗi không được báo cáo, bạn phải nhận được số lỗi thô cao hơn nhiều so với ECC, và sau đó chúng phải được sắp xếp hợp lý sao cho đầu ra của ECC được sắp xếp vừa phải để nó đánh lừa được EDC nghĩ rằng nó là tốt Tỷ lệ cược rất nhiềucao hơn rằng ít nhất là EDC sẽ nhận thấy lỗi và báo cáo đó là lỗi không thể sửa. Bao lâu không xảy ra? Về cơ bản không bao giờ trừ khi một ổ đĩa đang đến gần thất bại hoặc bị mất điện đột ngột trong khi viết. Vì vậy, nếu một lỗi không thể sửa chữa hầu như không bao giờ xảy ra, và một lỗi không được báo cáo là có khả năng ít hơn một triệu lần, thì điều đó nói gì với bạn?

Mặt khác, nếu bạn đang lưu trữ một bản sao dữ liệu trùng lặp, thì có lẽ có một cách nào đó để biết cái nào đúng trong trường hợp rất khó xảy ra khi một bản sao bị hỏng âm thầm. Ngoài ra, crc rất hữu ích để phát hiện các khối xảy ra có chứa các bản sao trùng lặp của cùng một dữ liệu, do đó chúng có thể bị trùng lặp, đây là một tính năng thiết kế khác của btrfs.


Đó là tất cả về các lỗi không được sửa chữa bởi phần sụn của đĩa. Nếu phần sụn không sửa lỗi, tỷ lệ lỗi sẽ rất nhiều, rất nhiều, nhiều đơn đặt hàng có cường độ lớn hơn 10 ^ (- 14).
Adam Ryczkowski 7/12/14

@AdamRyczkowski, Umm ... vâng, đó thực sự là chủ đề của câu trả lời của tôi. Tôi không chắc tại sao bạn lại chỉ ra điều hiển nhiên.
psusi

Xin chào Tôi vừa có btrfs tìm thấy lỗi cấp độ 12 bit trên một đĩa đã được phục vụ rất nhiều trong bốn năm. Những điều này xảy ra, tôi có thể chứng thực điều này ngay bây giờ. btrfs làm cho nó có thể tìm thấy chúng.
Arthur Ulfeldt

@ArthurUlfeldt, tôi không biết ... Tôi đã dành một hoặc hai tuần trước để viết và đọc lại một vài TB dữ liệu mỗi ngày mà không có bất kỳ lỗi nào (im lặng hoặc nói cách khác). Theo thống kê 10 ^ -14, các nhà sản xuất ổ đĩa trích dẫn tôi đáng lẽ phải có một lỗi. Vì xác suất của một lỗi không được báo cáo thấp hơn nhiều lần so với một lỗi được báo cáo, tỷ lệ cược đột nhiên nhận được một lỗi không được báo cáo mà không bao giờ thấy một báo cáo là rất thấp.
psusi

nó đã xảy ra. nhật ký kernel cho tôi biết tập tin nào và tôi đã khôi phục chúng từ bản sao lưu. Tôi sẽ không bao giờ biết họ ở đâu không chính xác. Ổ đĩa này đã được bốn năm tuổi, có khả năng đã đóng góp (và tôi sẽ thay thế nó để an toàn)
Arthur Ulfeldt

1

btrfslà một hệ thống tập tin thế hệ tiếp theo - nó bao gồm nhiều mục đích giống như các mô hình phân lớp trong quá khứ được xử lý giữa chúng. btrfscũng là một ngăn xếp rộng rãi có thể định dạng được - faq khuyên nó nên được ghi ra một đĩa không phân chia * [s] * và rằng tất cả phân vùng, hạn ngạch, nén, hình ảnh, tước, sao chép, ghi, và có thể 10 điều khác Tôi quên mất việc bị xử lý như là phẩm chất của hệ thống riêng. Nó có thể làm tất cả những điều này và nhiều hơn nữa.

btrfsmảng đĩa là động - chúng có thể được thêm vào và xóa khỏi hệ thống trực tiếp mà không gặp sự cố. Điều này hoạt động vì chỉ btrfstách ra các nhóm khối lưu trữ khi nó muốn chúng - và chúng có thể nằm trên bất kỳ thiết bị cụ thể nào trong mảng hiện tại của nó. Câu hỏi thường gặp có một số điều để nói về điều này - đặc biệt là khi nó nói về sự không đáng tin cậy của các ước tính không gian trống:

Ví dụ: nếu bạn có một subvolume là "đơn" và một là RAID-1, thì subvolume đầu tiên sẽ tiêu thụ bộ nhớ thô với tốc độ một byte cho mỗi byte dữ liệu được ghi. Subvolume thứ hai sẽ lấy hai byte dữ liệu thô cho mỗi byte dữ liệu được ghi. Vì vậy, nếu chúng ta có sẵn 30GiB dung lượng thô, chúng ta có thể lưu trữ 30GiB dữ liệu trên subvolume đầu tiên hoặc 15GiB dữ liệu trên giây và không có cách nào biết được đó sẽ là gì cho đến khi người dùng ghi dữ liệu đó.

Vì vậy, nói chung, không thể đưa ra ước tính chính xác về dung lượng trống trên bất kỳ hệ thống tập tin btrfs nào. Vâng, điều này hút . Nếu bạn có một ý tưởng thực sự tốt về cách làm cho nó đơn giản để người dùng hiểu được họ còn bao nhiêu dung lượng, xin vui lòng cho chúng tôi biết, nhưng cũng xin lưu ý rằng những bộ óc tốt nhất trong phát triển btrfs đã nghĩ về vấn đề này trong ít nhất một vài năm và chúng tôi chưa tìm thấy một giải pháp đơn giản nào.

Đọc phần có liên quan sẽ cung cấp cho bạn các ví dụ cụ thể hơn, nhưng nó cho thấy rất rõ rằng btrfscác thiết bị có thể thay đổi về số lượng, sự thay đổi liên tục, bị chặn và bị tách rời hoặc cùng nhau và ... tốt, nó tiếp tục. Một trích dẫn khác từ FAQ:

Quản lý thiết bị là một chủ đề phức tạp và có nhiều ý kiến ​​khác nhau về cách tốt nhất để làm điều đó. Trong nội bộ, mã Btrfs tách ra các thành phần liên quan đến quản lý thiết bị và duy trì các lớp riêng cho chúng. Phần lớn siêu dữ liệu hệ thống tập tin không biết có nhiều thiết bị liên quan.

Nó nói điều này về RAID:

btrfs hỗ trợ RAID-0, RAID-1 và RAID-10. Kể từ Linux 3.9, btrfs cũng hỗ trợ RAID-5 và RAID-6 mặc dù mã đó vẫn đang thử nghiệm.

btrfs kết hợp tất cả các thiết bị vào một nhóm lưu trữ trước, sau đó sao chép các khối khi dữ liệu tệp được tạo. RAID-1 hiện được định nghĩa là "2 bản sao của tất cả dữ liệu trên các thiết bị khác nhau". Điều này khác với MD-RAID và sợ, ở chỗ chúng tạo ra chính xác n bản sao cho n thiết bị. Trong một btrfs RAID-1 trên ba thiết bị 1 TB, chúng tôi nhận được 1,5 TB dữ liệu có thể sử dụng. Vì mỗi khối chỉ được sao chép vào 2 thiết bị, nên việc viết một khối nhất định chỉ yêu cầu chính xác 2 thiết bị được ghi vào; đọc chỉ có thể được thực hiện từ một.

Phục hồi dữ liệu:

Ưu điểm của btrfs-raid 5/6 là không giống như MD-RAID, btrfs biết những khối nào thực sự được sử dụng bởi dữ liệu / siêu dữ liệu và có thể sử dụng thông tin đó trong tình huống xây dựng lại / khôi phục để chỉ đồng bộ hóa / xây dựng lại các khối thực sự được sử dụng trên một bổ sung lại hoặc thay thế thiết bị, bỏ qua các khối hoàn toàn không được sử dụng / trống ở vị trí đầu tiên.

MD-RAID không thể làm điều đó, bởi vì nó cố gắng trở thành lớp bất khả tri của hệ thống tập tin mà không biết và không quan tâm khối nào trên các lớp bên trên nó thực sự được sử dụng hoặc trống. Để nó cố gắng theo dõi đó sẽ là một vi phạm phân lớp và sẽ làm phức tạp nghiêm trọng mã và / hoặc giới hạn sử dụng đối với chỉ các hệ thống tệp hoặc các lớp khác ở trên mà nó hỗ trợ / hiểu / có thể theo dõi chính xác.

Tất nhiên, btrfsđược thiết kế từ mặt đất lên đến các lớp siêu việt . Để làm được điều này, nó phải duy trì một tổng kiểm tra, có thể xây dựng lại và hy vọng ít nhất là một cây dư thừa bao gồm tất cả các thiết bị hiện được kết hợp của nó. btrfstheo nhiều cách là một cơ sở dữ liệu tệp cũng như hệ thống tệp. Nó không dựa trên nền tảng thiết bị cho ecc bởi vì, phần lớn, nó không xem xét rằng có những thiết bị cơ bản. Bạn có thể nghĩ về nó như một đĩa kudzu, có thể.

Trong mọi trường hợp, chính xác là việc kiểm tra siêu dữ liệu và quản lý siêu dữ liệu liên tục cho phép btrfsthực hiện rất nhiều điều thú vị mà nó làm và thực hiện mà không cần quan tâm nhiều đến phần cứng cơ bản của nó.


Tôi nghĩ rằng câu trả lời của bạn quá dài và phức tạp. Nếu bạn cảm thấy câu trả lời cần phải dài như vậy, hãy thử thêm một số tiêu đề sẽ hướng dẫn sự chú ý của người đọc. Tôi có vấn đề bản thân trong việc hiểu điểm của bạn. BTW không phải là tôi đã đánh giá thấp bạn trả lời.
Adam Ryczkowski 7/12/14

@AdamRyczkowski - cảm ơn vì nhận xét - Tôi đánh giá cao sự chỉ trích - nói chung - tất cả các loại. Và bạn làm cho điểm rất tốt. Đây không phải là một trong những điều tốt nhất của tôi. Tôi có thể khắc phục nó. Tôi sẽ ping bạn ở đây nếu tôi làm. Và không bao giờ lo sợ cho các downvote - bạn không thể ăn các điểm internet.
mikeerv

@AdamRyczkowski - bạn là Adam của btrfs? Tôi nghĩ rằng tôi đã nhận ra tên và đã làm một google. Điều đó thật tuyệt. Bạn có nằm trong số những người đã chuyển sang facebook không? (không phải google nhiều như vậy) ... Tôi có thể yêu cầu bạn trả lời không? Tôi rất muốn đọc nó.
mikeerv

Tôi không có gì chung với Facebook.
Adam Ryczkowski

0

Có, nó không tin tưởng thiết bị báo cáo lỗi hoặc lưu trữ dữ liệu chính xác ở vị trí đầu tiên. Cho dù điều này là thực sự cần thiết là một câu hỏi hoàn toàn khác. Thông thường, đó không phải là điều mà bất cứ ai lo lắng, và mọi thứ chỉ hoạt động.

Nếu bạn có một đĩa không báo cáo lỗi, dù sao bạn cũng gặp vấn đề lớn; không chỉ các hệ thống tập tin dựa vào báo cáo lỗi như vậy mà còn các thành phần khác như bộ điều khiển RAID, v.v.; lưu trữ không đáng tin cậy khiến toàn bộ dữ liệu của bạn gặp rủi ro, không chỉ một vài bit.

Bất kể hệ thống tập tin của bạn có kiểm tra lỗi hay không, bạn nên luôn luôn chạy các bài kiểm tra của riêng mình trên bộ lưu trữ; chẳng hạn như các lựa chọn thông minh SMART hoặc trong trường hợp RAID, hãy kiểm tra sự không phù hợp trong dữ liệu chẵn lẻ ( /sys/block/mdX/md/mismatch_cnt= 0 sau khi chạy kiểm tra sync_action).


Đó là tất cả về các lỗi không được sửa chữa bởi phần sụn của đĩa. Nếu phần sụn không sửa lỗi, tỷ lệ lỗi sẽ rất nhiều, rất nhiều, nhiều đơn đặt hàng có cường độ lớn hơn 10 ^ (- 14).
Adam Ryczkowski 7/12/14
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.