Tại sao một thiết bị đột kích 10 cần phải được khởi tạo?


9

Khi tạo một thiết bị đột kích phần mềm linux như một thiết bị raid10, tôi bối rối tại sao nó phải được khởi tạo. Câu hỏi tương tự áp dụng cho raid1 hoặc raid0, thực sự.

Cuối cùng, hầu hết mọi người sẽ đặt một hệ thống tệp nào đó lên trên và hệ thống tệp đó không nên thừa nhận bất kỳ trạng thái nào của dữ liệu của đĩa. Mỗi lần ghi sẽ ảnh hưởng đến cả hai đĩa trong thiết lập raid10 hoặc raid1, trong đó các gương N được ghi vào. Không có lý do gì để một raid10 được khởi tạo ban đầu, vì nó sẽ xảy ra theo thời gian.

Tôi có thể hiểu tại sao đối với thiết lập raid5 / 6 khi có yêu cầu chẵn lẻ, nhưng ngay cả khi đó có vẻ như điều này có thể được thực hiện một cách lười biếng.

Có phải chỉ để mọi người cảm thấy tốt hơn về nó?


1
Câu hỏi hay. Có thể bỏ qua việc đồng bộ hóa khi RAID được tạo và tôi đã gặp các đề xuất để làm như vậy trong trường hợp một hoặc nhiều thiết bị cơ bản là SSD. Tôi không biết nếu các kịch bản tồn tại trong đó đồng bộ hóa là cần thiết cho hoạt động chính xác.
kasperd

Câu trả lời:


2

Đồng bộ hóa ban đầu là cần thiết bởi vì bất kỳ sự khác biệt giữa các gương sẽ hiển thị là lỗi trong quá trình kiểm tra định kỳ.

Và bạn nên làm kiểm tra định kỳ.


1
Tôi có thể thấy tại sao kiểm tra định kỳ về khả năng đọc dữ liệu có thể hữu ích. Nhưng những gì tốt để kiểm tra định kỳ cho các bản sao giống hệt nhau làm gì? Việc kiểm tra như vậy có thể hữu ích nếu được thực hiện bởi một hệ thống tệp kiểm tra dữ liệu. Nhưng ở lớp RAID không có kiến ​​thức hệ thống tệp, bạn không thể biết bản sao nào trong hai bản sao khác nhau là tốt, bạn không thể biết sự khác biệt xảy ra ở nơi đầu tiên và bạn không thể biết tệp nào (nếu có) bị ảnh hưởng. Vì vậy, nó xuất hiện các cảnh báo về sự không nhất quán ở lớp này hầu hết là vô dụng vì dù sao thì quản trị viên cũng không thể làm gì với các cảnh báo.
kasperd

Vì dù sao bạn cũng cần đọc dữ liệu, chi phí so sánh nó là tối thiểu, nhưng nó có thể cho bạn thấy rằng một trong các đĩa đã phát triển một vấn đề khác mà không bị phát hiện (ví dụ: RAM xấu trong bộ nhớ cache của ổ đĩa). Sau đó, quản trị viên sẽ chia nhỏ mảng, xem xét thủ công sự khác biệt và chọn ổ đĩa nào để thay thế.
Simon Richter

Bạn nên mở rộng về điều đó trong câu trả lời của bạn sau đó.
kasperd

Tôi biết đã nhiều năm rồi, nhưng đây là lý do duy nhất tôi có thể thấy. Tôi không nghĩ nó có vấn đề gì khác nếu dữ liệu không đồng bộ, vì dữ liệu đó theo định nghĩa chưa được ghi vào, vì vậy hệ thống tệp được áp dụng cho ổ đĩa đột kích sẽ không bao giờ đọc được từ các khối đó. Tuy nhiên, đảm bảo kiểm tra định kỳ vượt qua từ đầu, làm cho điều này là cần thiết. Cảm ơn!
Michael Graff

7

Raid 1, là một tấm gương, phụ thuộc vào tất cả các đĩa trong gương là bản sao chính xác của nhau. Lấy ổ cứng ngẫu nhiên của bạn và một ổ cứng ngẫu nhiên khác, và bạn có thể có dữ liệu khác nhau ở đó, do đó vi phạm giả định này. Đây là lý do tại sao khởi tạo là cần thiết. Nó chỉ đơn giản là sao chép nội dung của ổ đĩa đầu tiên cho người khác. Lưu ý rằng trong một số điều kiện, bạn có thể thoát khỏi việc không khởi tạo ổ đĩa - thường là các thiết bị mới của nhà máy đã có số không ở khắp mọi nơi, vì vậy bạn chỉ cần bỏ qua điều này. Các mdadmtùy chọn --assume-cleanthực hiện điều này, nhưng cảnh báo bạn:

   --assume-clean

Nói với mdadm rằng mảng tồn tại trước và được biết là sạch. Nó có thể hữu ích khi cố gắng phục hồi từ một thất bại lớn vì bạn có thể chắc chắn rằng không có dữ liệu nào bị ảnh hưởng trừ khi bạn thực sự ghi vào mảng. Nó cũng có thể được sử dụng khi tạo RAID1 hoặc RAID10 nếu bạn muốn tránh đồng bộ lại ban đầu, tuy nhiên cách này - trong khi thông thường an toàn - không được khuyến nghị. Chỉ sử dụng điều này nếu bạn thực sự biết những gì bạn đang làm.

Nếu bạn không làm điều đó, có một sự khác biệt giữa các ổ đĩa và nó được đọc, không biết ổ đĩa sẽ đọc gì. Bạn nên khá an toàn với một hệ thống tệp (nhưng lưu ý bên dưới), vì hầu hết có thể bạn sẽ viết trước khi bạn đọc bất cứ thứ gì từ thiết bị đó, và sau đó bạn rõ ràng.

Lưu ý rằng ít nhất Linux mdadmsẽ khởi tạo mảng trong nền. Bạn có thể vui vẻ tạo FS trên đầu giây đó. Hiệu suất sẽ bị ảnh hưởng cho đến khi việc khởi tạo kết thúc, nhưng đó là tất cả mọi thứ.

Nhưng:

a) Khi thực hiện mkfsmột số tiện ích kiểm tra xem đã có cái gì trên ổ đĩa đó chưa. Trong khi điều này chỉ chạm vào một vài vùng ổ đĩa nổi tiếng, nó sẽ đọc trước khi bạn viết bất cứ điều gì, do đó khiến bạn gặp nguy hiểm.

b) Nếu bạn thực hiện đồng bộ lại định kỳ cho mảng của mình, thiết bị RAID không biết gì về FS của bạn. Nó chỉ đơn giản là đọc mọi khối từ mọi thiết bị và so sánh chúng. Và nếu bạn không sử dụng một FS sao chép (ví dụ ZFS hoặc BTRFS) và không bao giờ điền vào FS của bạn, thì việc một khối không thể bị loại bỏ khỏi quan điểm của FS trong nhiều năm là hoàn toàn hợp lý.

Tại sao phải đồng bộ lại với các thiết bị RAID1?

Vì lý do tương tự, bạn đồng bộ lại với các thiết bị RAID5 hoặc bất kỳ cấp độ nào khác (ngoại trừ RAID0). Nó đọc tất cả dữ liệu và so sánh / xác minh tổng kiểm tra RAID (trong RAID 5 hoặc 6). Nếu một chút bị lật theo bất kỳ cách nào (vì bộ nhớ HD bị lật tự phát, vì điện thoại di động của bạn và 5 người hàng xóm của bạn chỉ vô tình can thiệp vào khu vực đĩa đặc biệt này, bất cứ điều gì) nó sẽ phát hiện sự không nhất quán, nhưng sẽ không thể giúp bạn. Nếu, OTOH, một trong những ổ đĩa cứng sẽ báo cáo đơn giản là "Tôi không thể đọc được khối đó", có khả năng cao hơn với một ổ đĩa bị lỗi, bạn vừa phát hiện ra lỗi sớm và giảm thời gian bạn đang chạy ở chế độ xuống cấp (tính từ lỗi ổ đĩa, không phải từ khi bạn nhận thấy nó). Raid sẽ không giúp bạn nếu một ổ đĩa bị lỗi và một tháng sau ổ đĩa kia sẽ thất bại nếu bạn không '

RAID10

Bây giờ, đối với RAID10, tất cả các khoản giữ ở trên. Xét cho cùng, RAID10 chỉ là một cách thông minh để nói 'Tôi đang đặt hai thiết bị RAID1 của mình vào một cặp RAID0'.

Hãy cẩn thận:

Đây là tất cả các hành vi không xác định. Tại sao tôi đã kiểm tra trên Linux, bằng cách sử dụng mdadm, các cài đặt RAID phần mềm khác có thể hoạt động khác đi. Các phiên bản khác của nhân Linux và / hoặc mdadmcông cụ mà tôi đang sử dụng cũng có thể hoạt động khác đi.


1
Vui lòng cung cấp một trích dẫn cho If you don't do it, there is a discrepancy between the drives and it's read, the RAID device will report failure of a drive. Tôi tin rằng tuyên bố đó là không chính xác. Ít nhất cung cấp một ví dụ về thông báo lỗi sao cho có thể tham khảo nguồn để xác minh trong trường hợp nào nó được tạo ra.
kasperd

1
Cái đó tốt hơn. Bạn đã xác minh tuyên bố về việc viết số không? Tôi nghĩ rằng nó không ghi số không mà chỉ sao chép một trong các đĩa sang (các) đĩa khác.
kasperd

1
While this only touches a few well-known regions of drive, it reads before you write anything, thus putting you in danger.Trong nguy hiểm của những gì? Tôi nhận ra rằng việc đọc có thể dẫn đến bất cứ điều gì, nhưng tại sao điều đó lại gây ra một số nguy hiểm cho người dùng nếu (a) thông tin đang đọc không được sử dụng ở bất cứ đâu và (b) việc viết sắp xảy ra?
Vegard

1
@kasperd bạn nói đúng, nó sao chép thiết bị đầu tiên sang thiết bị thứ hai. Thử nghiệm trên urandomthiết bị -initialized, với mdadm linux cho thấy 80k đầu tiên vẫn khác nhau, cũng như 48k cuối cùng. Cái sau có lẽ là do làm tròn kích thước RAID thành kích thước khối. Tôi chưa thử nghiệm với các kích thước thiết bị khác nhau, nhưng 80 + 48 chính xác là sự khác biệt về kích thước giữa thiết bị RAID và thiết bị khối bên dưới.
Torinthiel

1
Một điều cần xem xét là thông thường trong quá trình khởi tạo, hệ thống đột kích sẽ LUÔN đọc đĩa A và sao chép nó vào đĩa B. Tại sao? Vì bạn có thể sử dụng đĩa trong khi khởi tạo, bạn có thể đã ghi dữ liệu ở khối 100.000. Khi init đột kích được vào khối đó, cả A và B đều giống hệt nhau, vì vậy không có gì xảy ra. Nếu nó thay vào đó là các khối zeroing, nó sẽ xóa sạch dữ liệu tốt. Do đó, một lần nữa, tôi thấy hai lý do để đảm bảo các khối giống hệt nhau: "nó luôn được thực hiện" và "để bạn có thể chạy kiểm tra sau" - Tôi cũng đặt câu hỏi về tính hữu dụng của kiểm tra. Đọc có tốt không, so sánh? không chắc.
Michael Graff

5

Hãy nhớ rằng RAID 1 là một tấm gương và RAID 10 là một dải gương.

Câu hỏi là, trên đĩa nào trong mỗi gương là dữ liệu hợp lệ? Trong một mảng mới được tạo, điều này không thể biết được, vì các đĩa có thể có dữ liệu khác nhau.

Cũng cần nhớ rằng RAID hoạt động ở mức rất thấp; nó không biết gì về hệ thống tập tin hoặc bất kỳ dữ liệu nào có thể được lưu trữ trên đĩa. Thậm chí có thể không một hệ thống tập tin được sử dụng.

Do đó, khởi tạo trong các mảng này bao gồm dữ liệu từ một đĩa trong mỗi máy nhân bản được sao chép nguyên bản sang đĩa khác.

Điều này cũng có nghĩa là mảng an toàn để sử dụng từ thời điểm tạo và có thể được khởi tạo trong nền; hầu hết các bộ điều khiển RAID (và Linux sợ) có một tùy chọn cho việc này hoặc tự động thực hiện.


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Michael Hampton

1

Đơn giản chỉ cần đặt vì hai đĩa mới dự kiến ​​sẽ không phải là bản sao hoàn hảo của nhau từ khi bắt đầu.

Chúng cần được biến thành bản sao hoàn hảo của nhau.

Ngoài ra, khởi tạo bao gồm thiết lập siêu dữ liệu siêu dữ liệu với thông tin về cấu hình mảng.

Tệp / Proc / mdstat sẽ cho bạn biết rằng thiết bị đã được khởi động, rằng gương đang được tái tạo và ETA về việc hoàn thành việc tái thiết. Tái thiết được thực hiện bằng cách sử dụng băng thông I / O nhàn rỗi. Vì vậy, hệ thống của bạn vẫn phải phản hồi, mặc dù đèn LED trên đĩa của bạn cũng sẽ hiển thị nhiều hoạt động.

Quá trình tái cấu trúc là trong suốt, vì vậy bạn thực sự có thể sử dụng thiết bị mặc dù gương hiện đang được tái cấu trúc.


2
Nhưng tại sao họ cần phải là bản sao hoàn hảo của nhau? Điều gì có thể có thể phá vỡ từ hai không nhất quán trong các lĩnh vực không bao giờ được sử dụng bởi hệ thống tập tin?
kasperd

@kasperd RAID được triển khai ở mức thấp hơn bất kỳ hệ thống tệp nào. Vì vậy, câu hỏi trở thành, "hệ thống tập tin" mà bạn đề cập đến là gì.
Taemyr

@Taemyr Tôi không đề cập đến bất kỳ hệ thống tập tin cụ thể. Chọn bất cứ thứ gì bạn thích và giải thích những gì sẽ phá vỡ bằng cách sử dụng nó trên RAID-1 trong đó các bản sao không được đồng bộ hóa trước khi khởi tạo hệ thống tệp.
kasperd

@kasperd Không hệ thống tập tin nào bị hỏng ở cấp độ RAID hoạt động.
Taemyr

1
Trong trường hợp của tôi, là người đăng ban đầu, tôi không quan tâm hệ thống tập tin nào. Tôi biết rằng không có hệ thống tệp nào sẽ đọc các khu vực chưa từng được viết, do đó, bất kỳ trạng thái không xác định nào của các khu vực không được ghi nhận đó đều không thành vấn đề.
Michael Graff
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.