Professional Documents
Culture Documents
Cùng
với cách tạo các RAID phổ biến như (RAID0, RAID1, RAID5, RAID6, RAID10) trên Linux
và một số phương pháp thường được sử dụng trên RAID để từ đây có thể giúp cho các
bạn tự học Linux một cách dễ dàng.
RAID là từ viết tắt của cụm từ "Redundant Array of Inexpensive Disks" hoặc "Redundant
Arrays of Independent Disks", là hình thức ghép nhiều ổ đĩa vật lý lại với nhau nhằm dung
lỗi và tăng tốc.
RAID là một tập hợp các đĩa trong một nhóm để trở thành một logical volume. RAID chứa
các nhóm hoặc bộ (set) hoặc mảng (array). Số đĩa tối thiểu 2 được kết nối với một bộ
điều khiển (controller) RAID và tạo ra một logical volume hoặc nhiều ổ đĩa hơn có thể
nằm trong một nhóm. Chỉ có một cấp độ RAID có thể được áp dụng trong một nhóm các
đĩa. RAID được sử dụng khi chúng ta cần hiệu suất tuyệt vời. Theo cấp độ RAID đã chọn
của chúng ta, hiệu suất sẽ khác nhau. Lưu dữ liệu của chúng ta bằng khả năng chịu lỗi
và tính sẵn sàng cao.
Dự phòng
Hiệu quả cao
Giá thành thấp
Hardware RAID có hiệu năng cao, không sử dụng tài nguyên từ máy chủ. Nó là một bộ
điều khiển (controller) RAID chuyên dụng được xây dựng về mặt vật lý bằng cách sử
dụng thẻ PCI express, có NVRAM cho bộ nhớ cache để đọc và viết. Lưu trữ bộ đệm để
xây dựng lại ngay cả khi mất điện, nó sẽ lưu trữ bộ đệm bằng các bản sao lưu sử dụng
năng lượng pin. Chi phí rất tốn kém cho một quy mô lớn. Hardware RAID Card có hình
dạng như sau:
Stripe chia sẻ dữ liệu ngẫu nhiên vào nhiều đĩa. Việc chia sẻ dữ liệu này thì sẽ không có
dữ liệu đầy đủ trong một đĩa.
Mirroring được sử dụng trong RAID1 và RAID10. Mirroring tạo một bản sao của cùng
một dữ liệu. Trong RAID 1, nó sẽ lưu cùng một nội dung vào đĩa khác.
Hot spare là một ổ đĩa dự phòng trong máy chủ nó có thể tự động thay thế các ổ đĩa bị
lỗi. Nếu bất kỳ một trong các ổ đĩa bị lỗi, ổ đĩa dự phòng này sẽ được sử dụng và xây
dựng lại tự động.
Chunks là một kích thước của dữ liệu có thể tối thiểu từ 4KB trở lên. Bằng cách xác định
kích thước chunks, chúng ta có thể tăng hiệu suất I/O.
RAID0
RAID1
RAID5
RAID6
RAID10
RAID0 (Striping) dữ liệu sẽ được ghi vào đĩa bằng phương pháp chia sẻ, một nửa nội
dung sẽ nằm trong một đĩa và một nửa khác sẽ được ghi vào đĩa khác. RAID0 cho phép
ghi và đọc được hoàn thành nhanh hơn. Tuy nhiên, không giống như các cấp RAID khác,
RAID0 không có tính Parity. Khi phân chia đĩa mà không có dữ liệu parity không có dự
phòng hoặc khả năng chịu lỗi. Nếu một ổ đĩa bị lỗi, tất cả dữ liệu trên ổ đĩa đó sẽ bị mất.
RAID0 được sử dụng tốt nhất để lưu trữ văn bản có yêu cầu đọc và ghi tốc độ cao. Bộ
nhớ đệm phát trực tiếp video và chỉnh sửa video là những cách sử dụng phổ biến cho
RAID 0 do tốc độ và hiệu suất.
Ưu điểm của RAID0 là cải thiện hiệu năng. RAID0 tránh tình trạng nghe lỏm bằng cách
không sử dụng dữ liệu parity và bằng cách sử dụng tất cả dung lượng lưu trữ dữ liệu có
sẵn. RAID0 có chi phí thấp nhất trong tất cả các cấp RAID và được hỗ trợ bởi tất cả các
bộ điều khiển phần cứng.
Nhược điểm của RAID0 là khả năng phục hồi thấp. Nó không nên được sử dụng để lưu
trữ quan trọng.
4.2. RAID1
RAID1 (Mirroring) là sự sao chép dữ liệu vào hai hoặc nhiều đĩa. RAID1 là một lựa chọn
tốt cho các ứng dụng đòi hỏi hiệu năng cao và tính sẵn sàng cao, như các ứng dụng giao
dịch, email,... Cả hai đĩa đều hoạt động, dữ liệu có thể được đọc từ chúng đồng thời làm
cho hoạt động đọc khá nhanh. Tuy nhiên, thao tác ghi chậm hơn vì thao tác ghi được
thực hiện hai lần.
RAID1 yêu cầu tối thiểu hai đĩa vật lý, vì dữ liệu được ghi đồng thời đến hai nơi. Nếu một
đĩa bị lỗi, đĩa kia có thể truy xuất dữ liệu.
4.3. RAID5
RAID5 (Distributed Parity) được sử dụng ở cấp doanh nghiệp. RAID5 hoạt động theo
phương pháp parity. Thông tin chẵn lẻ sẽ được sử dụng để xây dựng lại dữ liệu. Nó xây
dựng lại từ thông tin còn lại trên các ổ đĩa tốt còn lại. Điều này sẽ bảo vệ dữ liệu của
chúng ta khi ổ đĩa bị lỗi. Dử liệu trên RAID5 có thể tồn tại sau một lỗi ổ đĩa duy nhất, nếu
các ổ đĩa bị lỗi nhiều hơn 1 sẽ gây mất dữ liệu.
RAID5 Có thể được sử dụng trong các máy chủ tập tin, máy chủ web, sao lưu rất quan
trọng.
4.4. RAID6
RAID6 (Two Parity Distributed Disk) giống như RAID5 hoạt động theo phương pháp
parity. Chủ yếu được sử dụng trong một số lượng lớn các mảng. Chúng ta cần tối thiểu
4 ổ đĩa, khi có 2 ổ đĩa bị lỗi, chúng ta có thể xây dựng lại dữ liệu trong khi thay thế các ổ
đĩa mới.
Rất chậm so với RAID5, vì nó ghi dữ liệu cho cả 4 trình điều khiển cùng một lúc. Sẽ có
tốc độ trung bình trong khi chúng ta sử dụng card điều khiển RAID. Nếu chúng ta có 6 số
ổ cứng 1TB thì 4 ổ đĩa sẽ được sử dụng cho dữ liệu và 2 ổ đĩa sẽ được sử dụng cho
parity.
4.5. RAID10
RAID10 có thể được gọi là RAID1 + RAID0 hoặc RAID0 + RAID1. RAID10 sẽ làm cả hai
công việc của Mirror và Striping. Mirror sẽ là đầu tiên và Stripe sẽ là thứ hai trong RAID10.
Stripe sẽ là đầu tiên và mirror sẽ là thứ hai trong RAID01. RAID10 tốt hơn so với RAID01.
Để bắt đầu cài đặt, bạn phải thêm repo bằng cách thực hiện lệnh sau:
add-apt-repository ppa:eugenesan/ppa
Tiếp theo chúng ta cần cập nhật (update) hệ thống:
apt-get update
Chạy lệnh sau để cài đặt gói mdadm :
Để thực hiện cài đặt gói mdadm chúng ta cần thực hiện cập nhật (update) hệ
thống:
yum update
Chạy lệnh bên dưới để thực hiện cài đặt gói mdadm :
Trong ví dụ dưới đây yêu cầu: Số lượng đĩa ít nhất để tạo RAID0 là 2 bạn có thể thêm
nhiều đĩa hơn nhưng thứ tự sẽ gấp đôi 2, 4, 6, 8. Nếu bạn có thẻ RAID vật lý có đủ cổng,
bạn có thể thêm nhiều đĩa hơn.
Ví dụ bên dưới chúng ta không sử dụng Hardware RAID các thiết lập này phụ thuộc vào
Software RAID.
Để thiết lập RAID0 trên hệ điều hành Linux chúng ta cần thực hiện cập nhật (update) hệ
thống và cài đặt gói mdadm.
Trước khi tạo RAID0, cần đảm bảo có ít nhất hai ổ đĩa cứng chạy lệnh sau để kiểm tra:
Thực hiện tạo phân vùng trên đĩa có tên là sdb và sdc cho RAID bằng lệnh fdisk .
Chạy lệnh fdisk /dev/sdb để tạo phân vùng cho sdb và thực hiện các thao tác sau:
Thực hiện các bước sau đây để tạo Linux RAID tự động trên các phân vùng:
Changes will remain in memory only, until you decide to write them.
Partition type:
e extended
Selected partition 1
Syncing disks.
Tương tự như vậy chúng ta tạo phân vùng cho sdc .
Sau khi tạo xong chúng ta chạy lệnh bên dưới kiểm tra xem phân vùng được tạo hay
chưa.
/dev/sdb:
/dev/sdc:
Ngoài ra lệnh tạo RAID0 sau đây cũng có ý nghĩa như lệnh chúng ta vừa chạy:
Personalities : [raid0]
md0 : active raid0 sdc1[1] sdb1[0]
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 2
State : clean
Events : 0
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 2
State : clean
Events : 0
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 2
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 98cffedb:dd23fd6d:07b60209:b92643bd
Events : 0
Filesystem label=
OS type: Linux
4096000
[root@localhost ~]# df -h
total 20
This is RAID0
Thiết bị /dev/md0 gắn kết của chúng ta là tạm thời. Nếu hệ điều hành được khởi động
lại, các thư mục được gắn kết này sẽ bị mất. Vì vậy, chúng ta cần phải gắn kết vĩnh viễn.
Để thực hiện gắn kết vĩnh viễn phải nhập trong tệp /etc/fstab . Bạn có thể sử dụng trình
soạn thảo vi để nhập dòng bên dưới vào:
# /etc/fstab
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/ : ignored
swap : ignored
Lưu cấu hình RAID vào một tệp để giữ cấu hình để sử dụng trong tương lai.
Chúng ta sử dụng lệnh mdadm với các tùy chọn -s (quét) và -v (dài dòng) như sau:
devices=/dev/sdc1,/dev/sdb1
Qua các bước trên chúng ta đã tạo thành công RAID0 trên Centos7.
Yêu cầu:
Ít nhất hai đĩa để tạo RAID1, nhưng bạn có thể thêm nhiều đĩa hơn bằng cách sử dụng
hai lần là 2, 4, 6, 8. Để thêm nhiều đĩa, hệ thống của bạn phải có bộ điều khiển vật lý
RAID(thẻ phần cứng).
Ví dụ bên dưới chúng ta sử dụng software RAID, nếu hệ thống của bạn có thẻ RAID bạn
có thể truy cập nó với giao diện người dùng tiện ích của nó hoặc sử dụng tổ hợp phím Ctrl
+ I.
Để thiết lập RAID1 trên hệ điều hành Linux chúng ta cần thực hiện cập nhật (update) hệ
thống và cài đặt gói mdadm.
Trước khi tạo RAID1, chúng ta cần có ít nhất hai ổ đĩa cứng chạy lệnh sau để kiểm tra:
Tạo phân vùng đĩa sdb và sdc cho RAID bằng lệnh fdisk như bên dưới.
Thực hiện các bước sau đây để tạo Linux RAID tự động trên các phân vùng:
Changes will remain in memory only, until you decide to write them.
Partition type:
e extended
Selected partition 1
Syncing disks.
Tương tự cách tạo trên chúng ta thực hiện tạo phân vùng trên sdc .
Tiếp theo chúng ta chạy lệnh bên dưới để kiểm tra xem các đĩa hiện có tham gia RAID
nào không:
/dev/sdb:
Tiếp theo chúng ta sẽ tạo thiết bị RAID1 có tên /dev/md0 bằng cách sử dụng lệnh sau
và xác thực RAID1 đã được tạo.
--metadata=0.90
Personalities : [raid1]
Qua kết quả trên cho chúng ta thấy RAID1 đã được tạo với hai phân
vùng sdb1 và sdc1 . Chúng ta có thể kiểm tra bằng lệnh bên dưới:
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 2
State : active
Events : 9
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 2
Events : 9
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 2
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 6e8d46d8:d307ecf4:13ec9c89:52955fe6
Events : 17
Filesystem label=
OS type: Linux
80 block groups
root@localhost ~]# df -h
total 16
This is RAID1
Personalities : [raid1]
# /etc/fstab
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/ : ignored
swap : ignored
👉 Bước 6: Lưu cấu hình RAID1 theo cách thủ công vào tệp mdadm.conf bằng lệnh bên
dưới.
devices=/dev/sdb1,/dev/sdc1
👉 Bước 7: Kiểm tra dữ liệu sau khi hỏng đĩa
Mục đích chính của chúng ta là sau khi bất kỳ ổ cứng nào bị hỏng hoặc sập dữ liệu chúng
ta có khôi phục dữ liệu từ đĩa khác.
Đầu tiên chúng ta chạy lệnh sau kiểm tra RAID1 đã được tạo và sử dụng phân
vùng /dev/sdb1 và /dev/sdc1 :
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 2
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 6e8d46d8:d307ecf4:13ec9c89:52955fe6
Events : 17
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 2
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
UUID : 6e8d46d8:d307ecf4:13ec9c89:52955fe6
Events : 27
1 8 33 1 removed
Kết quả trả về cho chúng ta một ổ đĩa của chúng tôi bị mất. Bây giờ thực hiện kiểm tra
dữ liệu của chúng ta.
This is RAID1
[root@localhost raid1]# df -h
Parity là một phương pháp phổ biến đơn giản nhất để phát hiện lỗi trong lưu trữ dữ liệu.
Nếu bất kỳ một trong các đĩa bị lỗi, chúng tôi vẫn có thể lấy dữ liệu bằng cách xây dựng
lại từ thông tin Parity sau khi thay thế đĩa bị lỗi.
Ví dụ bên dưới yêu cầu chúng ta phải có ít nhất 3 ổ cứng để tạo Raid5, bạn có thể thêm
nhiều đĩa hơn, khi bạn có bộ điều khiển RAID cứng chuyên dụng với nhiều cổng. Ở ví dụ
dưới đây, chúng ta sử dụng software RAID và gói mdadm để tạo ra RAID.
Để thiết lập RAID5 trên hệ điều hành Linux chúng ta cần thực hiện cập nhật (update) hệ
thống và cài đặt gói mdadm.
Trước khi tạo RAID5, cần đảm bảo có ít nhất ba ổ đĩa cứng chạy lệnh sau để kiểm tra:
Chúng ta cần phải tạo phân vùng đĩa cứng cho sdb , sdc và sdd để tạo RAID bằng
lệnh fdisk .
Chạy lệnh fdisk /dev/sdb để tạo phân vùng cho sdb và thực hiện các thao tác sau:
Thực hiện các bước sau đây để tạo Linux RAID tự động trên các phân vùng:
Changes will remain in memory only, until you decide to write them.
Partition type:
e extended
Selected partition 1
Syncing disks.
Tương tự cách tạo phân vùng trên chúng ta thực hiện tạo phân dùng cho sdc và sdd .
Sau khi chúng ta đã tạo xong phân vùng chúng ta cần chạy lệnh sau để kiểm tra xem các
phân vùng đã được tạo chưa:
/dev/sdc:
/dev/sdd:
Tiếp theo chúng ta sẽ tạo thiết bị RAID5 có tên /dev/md0 bằng cách sử dụng lệnh sau
và xác thực RAID5 đã được tạo.
20951040 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[=>...................] recovery = 5.7% (600192/10475520) finish=0.5min
speed=300096K/sec
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 3
State : clean
Events : 13
Layout : left-symmetric
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 3
Events : 13
Layout : left-symmetric
/dev/sdd1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 3
State : clean
Events : 13
Layout : left-symmetric
/dev/md0:
Version : 1.2
Raid Devices : 3
Total Devices : 3
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
UUID : ea6753b0:d8a3f6d8:571dfcd9:340fc3cd
Events : 18
Filesystem label=
OS type: Linux
4096000
[root@localhost ~]# df -h
total 16
total 16
This is RAID5
20951040 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
# /etc/fstab
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/ : ignored
swap : ignored
👉 Bước 6: Lưu cấu hình RAID1 theo cách thủ công vào tệp mdadm.conf bằng lệnh bên
dưới.
devices=/dev/sdb1,/dev/sdc1,/dev/sdd1
Trong phần này chúng ta đã thiết lập RAID5 bằng ba đĩa. Qua đây giúp các bạn có thể
hiểu hơn về RAID5.
Để có thể thiết lập RAID6 chúng ta cần ít nhất 4 đĩa. Nếu bạn muốn thêm nhiều đĩa hơn,
bạn phải có bộ điều khiển RAID. Trong software RAID, chúng ta sẽ không có hiệu năng
tốt hơn trong RAID6. Vì vậy, chúng ta cần một bộ điều khiển RAID vật lý.
Để thiết lập RAID6 trên hệ điều hành Linux chúng ta cần thực hiện cập nhật (update) hệ
thống và cài đặt gói mdadm.
Trước khi tạo RAID6, cần đảm bảo có ít nhất 4 ổ đĩa cứng chạy lệnh sau để kiểm tra:
Trước khi tạo RAID chúng ta cần tạo phân vùng đĩa cho 4
đĩa sdb , sdc , sdd và sde bằng lệnh fdisk .
Chạy lệnh fdisk /dev/sdb để tạo phân vùng cho sdb và thực hiện các thao tác sau:
Thực hiện các bước sau đây để tạo Linux RAID tự động trên các phân vùng:
Changes will remain in memory only, until you decide to write them.
Partition type:
e extended
Selected partition 1
Syncing disks.
Thực hiện tương tự cho việc tạo phân vùng trên đĩa sdc , sdd , sde .
Sau khi chúng ta đã tạo xong phân vùng chúng ta cần chạy lệnh sau để kiểm tra xem các
phân vùng đã được tạo chưa:
/dev/sdb:
/dev/sdc:
/dev/sde:
Tiếp theo chúng ta sẽ tạo thiết bị RAID6 có tên /dev/md0 bằng cách sử dụng lệnh sau
và xác thực RAID6 đã được tạo.
20951040 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 4
State : clean
Events : 17
Layout : left-symmetric
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 4
State : clean
Device UUID : dd9d84a2:e0418c7b:67027378:4276d174
Events : 17
Layout : left-symmetric
/dev/sdd1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 4
State : clean
Events : 17
Layout : left-symmetric
/dev/sde1:
Magic : a92b4efc
Version : 1.2
State : clean
Events : 17
Layout : left-symmetric
/dev/md0:
Version : 1.2
Raid Devices : 4
Total Devices : 4
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
UUID : 39a8d4b6:ea69722c:371c0aa2:9eff943c
Events : 17
Filesystem label=
OS type: Linux
4096000
Allocating group tables: done
total 16
total 16
This is RAID6
Để tự động gắn kết /dev/md0 khi khởi động lại hệ thống chúng ta cần tạo một mục trong
tệp /etc/fstab . Bạn có thể sử dụng trình soạn thảo vi để nhập dòng bên dưới vào:
# /etc/fstab
# Created by anaconda on Tue May 14 10:34:53 2019
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/ : ignored
swap : ignored
RAID mặc định không có tệp cấu hình. Chúng ta phải lưu nó bằng cách sử dụng lệnh
bên dưới và sau đó xác minh trạng thái của thiết bị /dev/md0.
devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1
👉 Bước 7: Thêm một ổ đĩa dự phòng
Chúng ta đã có 4 đĩa và có sẵn hai thông tin parity. Nếu bất kỳ một trong các đĩa bị lỗi,
chúng tôi có thể lấy dữ liệu, bởi vì có 2 parity trong RAID6.
Các bước sau đây sẽ giúp chúng ta có thể thêm một ổ đĩa dự phòng sau khi bất kỳ đĩa
nào bị lỗi.
Đầu tiên chúng ta gắn thêm 1 đĩa mới vào hệ thống của chúng ta chạy lệnh bên dưới để
kiểm tra:
Tiếp theo hãy xác nhận đĩa mới chưa tham gia RAID đã được cấu hình hoặc không sử
dụng, Bằng việc chạy lệnh mdadm --examine như sau:
Changes will remain in memory only, until you decide to write them.
Partition type:
e extended
Selected partition 1
Syncing disks.
Sau khi tạo phân vùng mới trên /dev/sdf chạy lệnh bên dưới để xác định phân vùng
và đĩa mới chính xác là của RAID:.
/dev/sdf:
/dev/md0:
Version : 1.2
Raid Devices : 4
Total Devices : 5
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
UUID : 39a8d4b6:ea69722c:371c0aa2:9eff943c
Events : 18
4 8 81 - spare /dev/sdf1
Sau khi thực hiện các thao tác trên thì chúng ta sẽ kiểm tra xem ổ đĩa dự phòng có hoạt
động tự động hay không, nếu bất kỳ một đĩa nào bị lỗi.
Để kiểm tra vấn đề trên bạn hãy đánh dấu một ổ đĩa bị lỗi. Trong ví dụ bên dưới thì chúng
ta thực hiện đánh dấu /dev/sdd1 là ổ đĩa bị lỗi:
/dev/md0:
Version : 1.2
Raid Devices : 4
Total Devices : 5
Working Devices : 4
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
UUID : 39a8d4b6:ea69722c:371c0aa2:9eff943c
Events : 24
2 8 49 - faulty /dev/sdd1
Qua ví dụ trên chúng ta thấy đĩa dự phòng đã tự động xây dựng lại dữ liệu và
đĩa /dev/sdd1 liệt kê là bị lỗi.
Chúng ta có thể theo dõi quá trình xây dựng bằng cách sử dụng lệnh sau:
20951040 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
Yêu cầu:
Trong RAID10, chúng tôi cần ít nhất 4 đĩa, 2 đĩa đầu cho RAID0 và 2 đĩa khác cho RAID1.
Nếu chúng tôi cần mở rộng nhóm RAID, chúng ta phải tăng đĩa tối thiểu 4 đĩa.
Để thiết lập RAID10 trên hệ điều hành Linux chúng ta cần thực hiện cập nhật (update)
hệ thống và cài đặt gói mdadm.
Trước khi tạo RAID10, cần đảm bảo có ít nhất 4 ổ đĩa cứng chạy lệnh sau để kiểm tra:
Chúng ta cần thực hiện tạo phân vùng đĩa cứng cho sdb , sdc , sdd và sde để RAID
có thể sử dụng bằng lệnh fdisk .
Chạy lệnh fdisk /dev/sdb để tạo phân vùng cho sdb và thực hiện các thao tác sau:
Thực hiện các bước sau đây để tạo Linux RAID tự động trên các phân vùng:
Nhấn L để liệt kê tất cả các loại có sẵn.
Nhập t để chọn phân vùng.
Nhập fd để chọn Linux RAID tự động và nhấn Enter để áp dụng.
Sử dụng phím p để in những thay đổi.
Cuối cùng chúng ta nhấn phím w lưu các thay đổi.
Changes will remain in memory only, until you decide to write them.
Partition type:
e extended
Selected partition 1
Syncing disks.
Chúng ta sẽ tạo các phân vùng mới cho các đĩa /dev/sdc , /dev/sdd , /dev/sde giống
như trên.
Tiếp theo chúng ta chạy lệnh bên dưới để kiểm tra xem các đĩa hiện có tham gia RAID
nào không:
/dev/sdb:
/dev/sdc:
/dev/sdd:
Tiếp theo chúng ta sẽ tạo thiết bị RAID10 có tên /dev/md0 bằng cách sử dụng lệnh sau:
Personalities : [raid10]
Magic : a92b4efc
Version : 1.2
Raid Devices : 4
State : active
Events : 5
Layout : near=2
Chunk Size : 512K
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 4
State : active
Events : 5
Layout : near=2
/dev/sdd1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 4
State : active
Device UUID : 268eaaee:9eca2565:5c49d81d:5618a9a0
Events : 5
Layout : near=2
/dev/sde1:
Magic : a92b4efc
Version : 1.2
Raid Devices : 4
State : active
Events : 5
Layout : near=2
/dev/md0:
Version : 1.2
Raid Devices : 4
Total Devices : 4
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
UUID : 981e3a84:52808df0:5d26b18d:bea511d9
Events : 9
👉 Bước 5: Tạo file system (ext4) cho thiết bị RAID10 /dev/md0 chạy lệnh sau:
Filesystem label=
OS type: Linux
4096000
total 16
total 16
This is RAID10
Thiết bị /dev/md0 gắn kết của chúng ta là tạm thời. Nếu hệ điều hành được khởi động
lại, các thư mục được gắn kết này sẽ bị mất. Vì vậy, chúng ta cần phải gắn kết vĩnh viễn.
Để thực hiện gắn kết vĩnh viễn phải nhập trong tệp /etc/fstab . Bạn có thể sử dụng trình
soạn thảo vi để nhập dòng bên dưới vào:
# /etc/fstab
# Created by anaconda on Tue May 14 10:34:53 2019
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/ : ignored
swap : ignored
Theo mặc định, RAID không có tệp cấu hình, vì vậy chúng ta cần lưu tệp thủ công sau
khi thực hiện tất cả các bước trên, để duy trì các cài đặt này trong khi khởi động hệ thống.
devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1
6.5.2. Tạo RAID10 bằng RAID1 + RAID0
Đối với cách này chúng ta phải xác định 2 bộ RAID1 và sau đó chúng ta cần xác định
RAID0 bằng cách sử dụng hai bộ RAID1 đã tạo.
Để thiết lập RAID10 trên hệ điều hành Linux chúng ta cần thực hiện cập nhật (update)
hệ thống và cài đặt gói mdadm.
Để có thể tạo RAID chúng ta cần tạo phân vùng đĩa cứng cho các
đĩa sdb , sdc , sdd và sde bằng lệnh fdisk .
Chạy lệnh fdisk /dev/sdb để tạo phân vùng cho sdb và thực hiện các thao tác sau:
Thực hiện các bước sau đây để tạo Linux RAID tự động trên các phân vùng:
Changes will remain in memory only, until you decide to write them.
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Selected partition 1
Syncing disks.
Tương tự như việc tạo phân vùng của đĩa /dev/sdb chúng ta sẽ tạo phân vùng cho cho
các đĩa còn lại là /dev/sdc , /dev/sdd và /dev/sdc .
Tiếp theo chúng ta chạy lệnh bên dưới để kiểm tra xem các đĩa hiện có tham gia RAID
nào không:
/dev/sdb:
/dev/sdc:
/dev/sdd:
/dev/sde:
Personalities : [raid1]
Filesystem label=
OS type: Linux
4096000
total 16
total 16
This is RAID10
Thiết bị /dev/md0 gắn kết của chúng ta là tạm thời. Nếu hệ điều hành được khởi động
lại, các thư mục được gắn kết này sẽ bị mất. Vì vậy, chúng ta cần phải gắn kết vĩnh viễn.
Để thực hiện gắn kết vĩnh viễn phải nhập trong tệp /etc/fstab . Bạn có thể sử dụng trình
soạn thảo vi để nhập dòng bên dưới vào:
# /etc/fstab
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/ : ignored
swap : ignored
raid10 : already mounted
Nếu có lỗi, không reboot server để tránh tình trạng server không thể khởi động. Kiểm tra
cấu hình trong file /etc/fstab và chạy lại lệnh cho tới khi không có thông báo lỗi.
Chúng ta cần lưu cấu hình trong tệp /etc/mdadm.conf để tải tất cả các thiết bị RAID
trong mỗi lần khởi động lại.
devices=/dev/sdb1,/dev/sdc1
devices=/dev/sdd1,/dev/sde1
devices=/dev/md1,/dev/md2
Trong ví dụ bên dưới chúng ta đang sử dụng 2 đĩa trong một mảng để tạo thành một
RAID và trong một số trường hợp nếu chúng ta cần thêm không gian trong nhóm đó,
chúng ta có thể mở rộng kích thước của một mảng bằng lệnh mdadm -grow . Sau khi
phát triển (thêm đĩa vào một mảng hiện có), chúng ta sẽ xem cách loại bỏ một trong các
đĩa bị lỗi khỏi mảng.
Để phát triển một mảng RAID, chúng ta cần một bộ RAID hiện có. Chúng ta cần
thêm đĩa để phát triển Array.
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 2
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : d5a64756:00be081e:3429ccfb:3300a5ac
Events : 19
Bước 2: Thêm đĩa mới sdd vào hệ thống và thực hiện tạo một phân vùng mới trên
đĩa /dev/sdd bằng lệnh fdisk .
Chạy lệnh fdisk /dev/sdb để tạo phân vùng cho sdb và thực hiện các thao tác sau:
Thực hiện các bước sau đây để tạo Linux RAID tự động trên các phân vùng:
Partition type:
e extended
Selected partition 1
Syncing disks.
Chạy lệnh sau để kiểm tra phân vùng đã được tạo chưa:
Tiếp theo chúng ta chạy lệnh bên dưới để kiểm tra xem các đĩa hiện có tham gia RAID
nào không:
Bước 3: Thêm phân vùng mới /dev/sdd1 trong mảng /dev/md0 hiện có, sử dụng lệnh
sau.
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 3
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
UUID : d5a64756:00be081e:3429ccfb:3300a5ac
Events : 20
2 8 49 - spare /dev/sdd1
Bạn có thể thấy ổ đĩa đã được thêm vào như một ổ đĩa phụ.
Bước 4: Để phát triển mảng sử dụng đĩa mới thêm vào thì chúng ta phải sử dụng lệnh
dưới đây:
/dev/md0:
Version : 1.2
Raid Devices : 3
Total Devices : 3
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
UUID : d5a64756:00be081e:3429ccfb:3300a5ac
Events : 37
Giả sử rằng đĩa /dev/sdb1 là một đĩa yếu và cần phải được gỡ bỏ khỏi mảng RAID,
trước khi nó bị lỗi.
Bước 1: Trước khi loại bỏ một đĩa chúng ta phải đánh dấu đĩa đó là fail như sau:
[root@localhost ~]# mdadm --fail /dev/md0 /dev/sdb1
/dev/md0:
Version : 1.2
Raid Devices : 3
Total Devices : 3
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
UUID : d5a64756:00be081e:3429ccfb:3300a5ac
Events : 43
- 0 0 0 removed
0 8 17 - faulty /dev/sdb1
Từ kết quả trên, chúng ta thấy rằng đĩa /dev/sdb1 được đánh dấu là bị lỗi ở phía dưới.
Bây giờ chúng ta loại bỏ ổ đĩa bị lỗi khỏi mảng RAID và phát triển mảng RAID với 2 thiết
bị.
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : d5a64756:00be081e:3429ccfb:3300a5ac
Events : 47
Qua đây gíúp cho chúng ta biết cách phát triển một RAID hiện có và cách xóa đĩa bị lỗi
khỏi một mảng sau khi đồng bộ hóa lại nội dung hiện có. Tất cả các bước này có thể
được thực hiện mà không có bất kỳ thời gian chết. Trong quá trình đồng bộ hóa dữ liệu,
người dùng hệ thống, tệp và ứng dụng sẽ không bị ảnh hưởng trong mọi trường hợp.
Bạn có thể sử dụng phương pháp thủ công là xem /proc/mdstat để kiểm tra trạng thái
của RAID, nhưng có một phương pháp tiết kiệm thời gian bằng việc chạy mdadm ở chế
độ nền và quét, sẽ gửi thông báo qua email đến người nhận.
Để sử dụng phương pháp này chúng ta phải thêm vào tệp /etc/mdadm.conf cú pháp
như sau:
devices=/dev/sdb1,/dev/sdc1
MAILADDR root@localhost.localdomain
Để chạy mdadm trong nền và quét chúng ta chạy lệnh sau:
Personalities : [raid1]
Sau khi thực hiện lệnh trên chúng ta nhận được cảnh báo về sự cố của một đĩa bị lỗi
trong RAID.
[root@localhost ~]#
Return-Path: <root@localhost.localdomain>
X-Original-To: root@localhost.localdomain
Delivered-To: root@localhost.localdomain
To: root@localhost.localdomain
Subject: DegradedArray event on /dev/md0:localhost.localdomain
Message-Id: <20190524123904.6D6E63055398@localhost.localdomain>
running on localhost.localdomain
Personalities : [raid1]
/dev/md0:
Version : 1.2
Raid Devices : 1
Total Devices : 1
State : clean
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
UUID : 16e08f8b:2eaaf81e:87e6d213:4a3b6c37
Events : 49
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 2
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 16e08f8b:2eaaf81e:87e6d213:4a3b6c37
Events : 49
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 2
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 16e08f8b:2eaaf81e:87e6d213:4a3b6c37
Events : 49
total 20
This is RAID1
Sau khi đĩa /dev/sdb1 lỗi:
/dev/md0:
Version : 1.2
Creation Time : Fri May 24 08:32:19 2019
Raid Devices : 2
Total Devices : 1
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
UUID : 16e08f8b:2eaaf81e:87e6d213:4a3b6c37
Events : 52
- 0 0 0 removed
total 20
This is RAID1
Qua kết quả trên cho chúng ta thấy sau khi thêm /dev/sdd1 vào RAID thay thế
cho /dev/sdc1 việc xây dựng lại dữ liệu đã được hệ thống tự động thực hiện.
Trước khi thực hiện khôi phục dữ liệu thì dữ liệu của chúng ta như sau:
total 20
This is RAID1
Đầu tiên có thể minh hoạ khôi phục dữ liệu khi hai đĩa bị lỗi đồng thời chúng ta cần thực
hiện các thao tác sau:
Finished
Lưu ý: Tạo phân vùng loại fd trong /dev/sde
Bây giờ xây dựng lại RAID bằng hai đĩa /dev/sde1 và /dev/sdf1 :
--metadata=0.90
total 20
This is RAID1
Qua đây chúng ta thấy dữ liệu của chúng ta được thực hiện đầy đũ không bị mất mát dữ
liệu.
Trong hướng dẫn này, chúng ta sẽ liệt kê chức năng được cung cấp bởi mdadm để chúng
ta có thể sử dụng nó khi cần.
...
Để xem các nhiệm vụ mdadm --manage cho phép chúng ta thực hiện là gì chạy lệnh sau:
The --manage option is not needed and is assumed if the first argument
: prefer to use
Chúng ta thực hiện thêm đĩa /dev/sdc1 vào RAID1 hiện có trên hê thống thực hiện như
sau:
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 2
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
UUID : ab832548:73f97be5:49acca17:171a6890
Events : 18
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 3
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
UUID : ab832548:73f97be5:49acca17:171a6890
Events : 18
Number Major Minor RaidDevice State
2 8 33 - spare /dev/sdc1
Đĩa /dev/sdc1 sau khi được thêm vào RAID1 trở thành đĩa dự phòng. Khi một đĩa bị lỗi
và được gỡ khỏi hệ thống nó sẽ được tự động sử dụng để thay thế.
Đây là bước bắt buộc trước khi gỡ bỏ thiết bị khỏi mảng một cách hợp lý và sau đó rút
thiết bị vật lý ra khỏi máy - theo thứ tự đó (nếu bạn bỏ lỡ một trong những bước này, bạn
có thể sẽ gây ra ảnh hưởng cho thiết bị):
Để đánh dấu một thiết bị RAID bị lỗi chúng ta thực hiện như sau:
/dev/md0:
Version : 1.2
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
UUID : ab832548:73f97be5:49acca17:171a6890
Events : 25
Sau khi tạo RAID, bạn phải tạo một hệ thống tập tin trên nó và gắn nó vào một thư mục
để sử dụng nó. Bạn có thể đánh dấu RAID là ro chỉ cho phép đọc được thực hiện trên
nó, hoặc rw ß để ghi vào thiết bị.
Để đánh dấu thiết bị là ro , đầu tiên chúng ta phải ngắt kết nối:
[root@localhost ~]# umount raid1