Bài viết này giới thiệu các bạn về Software RAID toàn tập trên hệ điều hành Linux. 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.
1. Giới thiệu về RAID
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.
Lợi thế của việc sử dụng RAID:
- Dự phòng
- Hiệu quả cao
- Giá thành thấp
2. Software RAID và Hardware RAID
Software RAID có hiệu suất thấp do sử dụng nguồn tài nguyên từ máy chủ, nó cần tải để đọc dữ liệu từ software RAID volumes. Không cần phần cứng vật lý trong các software RAID không tốn chi phí.
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:
3. Các khái niệm về RAID
Parity là một phương pháp tạo lại nội dung bị mất từ thông tin parity. Chúng được ứng dụng trong RAID5 và RAID6 dựa trên parity.
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.
Các cấp độ RAID thường được sử dụng:
- RAID0
- RAID1
- RAID5
- RAID6
- RAID10
4. Cấp độ của RAID
4.1. RAID0
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.
Một số ưu điểm của RAID5:
- Đọc sẽ cực kỳ rất tốt về tốc độ.
- Ghi sẽ ở mức trung bình, chậm nếu chúng tôi không sử dụng card điều khiển RAID.
- Xây dựng lại từ thông tin parity từ tất cả các ổ đĩa.
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.
Ưu và nhược điểm của RAID:
- Hiệu suất kém.
- Hiệu suất đọc sẽ tốt.
- Hiệu suất ghi sẽ kém nếu chúng tôi không sử dụng card điều khiển RAID.
- Xây dựng lại từ 2 ổ đĩa parity.
- Không gian 2 đĩa sẽ nằm dưới parity.
- Có thể được sử dụng trong mảng lớn.
- Có thể được sử dụng trong mục đích sao lưu, truyền phát video, được sử dụng ở quy mô lớn.
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.
Ưu và nhược điểm của RAID10:
- Hiệu suất đọc và viết tốt.
- Nửa không gian sẽ bị mất trong tổng công suất.
- Xây dựng lại nhanh chóng từ sao chép dữ liệu.
- Có thể được sử dụng trong lưu trữ cơ sở dữ liệu cho hiệu suất cao và tính sẵn sàng.
5. Cài đặt mdadm
RAID được quản lý bằng gói mdadm
trong hầu hết các bản phân phối Linux. Để kiểm tra xem gói mdadm
có khả dụng trên hệ thống của chưa bằng cách chạy lệnh sau:
[root@localhost ~]# mdadm --version
mdadm - v4.1-rc1 - 2018-03-22
Nếu gói mdadm
không có trên hệ thống của bạn, bạn có thể dễ dàng cài đặt như sau:
Đối với bản phân phối Debian/Ubuntu:
Để 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
:apt-get install mdadm
Đối với với bản phân phối RHEL/CentOS:
Để 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
:yum install mdadm
6. Hướng dẫn tạo RAID
Lưu ý: Tất cả các hướng dẫn bên dưới điều được thực hiện trên bản phân phối Centos7.
6.1. Hướng dẫn tạo RAID0
Khi sử dụng RAID0 nếu chúng ta có hai đĩa và lưu nội dung vào logical volume thì nó sẽ được lưu vào cả hai đĩa vật lý bằng cách chia nội dung. RAID0 sẽ không thể lấy dữ liệu nếu một trong các ổ đĩa bị lỗi.
Ưu điểm của RAID0:
- RAID 0 có hiệu năng cao.
- Không có dung lượng sẽ bị lãng phí.
- Zero Fault Tolerance (Không thể lấy lại dữ liệu nếu bất kỳ một trong các đĩa bị lỗi).
- Viết và đọc sẽ là tuyệt vời.
Chú ý: RAID0 có thể mất dữ liệu nếu ổ cứng hỏng
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.
6.1.1. Tạo RAID0
👉 Bước 1: Cập nhật hệ thống và cài đặt mdadm
để quản lý 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.
👉 Bước 2: Kiểm tra thông tin ổ đĩa trên máy:
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:
[root@localhost ~]# fdisk -l |grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Qua lệnh kiểm tra trên chúng ta thấy có 2 đĩa cứng mới được phát hiện, bây giờ chúng ta thực hiện kiểm tra xem các ổ cứng có sử dụng RAID nào chưa bằng lệnh mdadm
cùng với tùy chọn --examine
như bên dưới.
[root@localhost ~]# mdadm --examine /dev/sd[b-c]
mdadm: No md superblock detected on /dev/sdb.
mdadm: No md superblock detected on /dev/sdc.
Kết trên trả về cho chúng ta biết rằng không có RAID nào được áp dụng cho hai ổ sdb
và sdc
.
👉 Bước 3: Tạo phân vùng đĩa cứng
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
.
Tạo phân vùng trên ổ đĩa sdb.
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:
- Nhấn n để tạo phân vùng mới.
- Sau đó chọn p cho phân vùng chính.
- Tiếp theo chọn số phân vùng là 1 .
- Nhập giá trị ban đầu, giá trị kết thúc và nhấn phím Enter.
- Tiếp theo nhấn p để in phân vùng đã được tạo.
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.
Các thao tác trên được thực hiện như sau:
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xd1c9ae6a.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd1c9ae6a
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
Command (m for help): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd1c9ae6a
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
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.
[root@localhost ~]# fdisk -l | grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdc1 2048 20971519 10484736 fd Linux raid autodetect
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:
[root@localhost ~]# mdadm --examine /dev/sd[b-c]
/dev/sdb:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sdc:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
[root@localhost ~]# mdadm --examine /dev/sd[b-c]1
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdc1.
👉 Bước 4: Tạo RAID0
Chúng ta chạy lệnh sau để tạo RAID0:
[root@localhost ~]# mdadm -C /dev/md0 -l raid0 -n 2 /dev/sd[b-c]1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Trong đó:
-C
: Tạo RAID mới.-l
: Level của RAID.-n
: Không có thiết bị RAID.
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:
mdadm --create /dev/md0 --level=stripe --raid-devices=2 /dev/sd[b-c]1
Kiểm tra lại RAID vừa tạo bằng các cách sau:
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdc1[1] sdb1[0]
20951040 blocks super 1.2 512k chunks
unused devices: <none>
Qua kết quả trên cho chúng ta thấy RAID0 đã được tạo với hai phân vùng sdb1
và sdc1
. Chúng ta cũng có thể kiểm tra bằng lệnh bên dưới:
[root@localhost ~]# mdadm -E /dev/sd[b-c]1
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 98cffedb:dd23fd6d:07b60209:b92643bd
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 11:40:09 2019
Raid Level : raid0
Raid Devices : 2
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18352 sectors, after=0 sectors
State : clean
Device UUID : fedf81e4:0cea1e46:3f96f2c1:9c4fa897
Update Time : Sun May 19 11:40:09 2019
Bad Block Log : 512 entries available at offset 8 sectors
Checksum : af1ccef - correct
Events : 0
Chunk Size : 512K
Device Role : Active device 0
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 98cffedb:dd23fd6d:07b60209:b92643bd
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 11:40:09 2019
Raid Level : raid0
Raid Devices : 2
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18352 sectors, after=0 sectors
State : clean
Device UUID : 7abd085c:5144fc8f:5a200101:4a70369c
Update Time : Sun May 19 11:40:09 2019
Bad Block Log : 512 entries available at offset 8 sectors
Checksum : ff2af79 - correct
Events : 0
Chunk Size : 512K
Device Role : Active device 1
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
Hoặc có thể chạy lệnh sau để kiểm tra:
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May 19 11:40:09 2019
Raid Level : raid0
Array Size : 20951040 (19.98 GiB 21.45 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun May 19 11:40:09 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 98cffedb:dd23fd6d:07b60209:b92643bd
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
👉 Bước 5: Tạo file system (ext4) cho thiết bị RAID /dev/md0
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5237760 blocks
261888 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Tiếp theo tạo thư mục gắn kết raid0
để gắn thiết bị /dev/md0
thực hiện như bên dưới.
[root@localhost ~]# mkdir raid0
[root@localhost ~]# mount /dev/md0 raid0/
Tiếp theo, chạy lệnh df
để kiểm tra xem thiết bị /dev/md0
được gắn trong thư mục /root/raid0
không.
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 17G 1.3G 16G 8% /
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 1014M 201M 814M 20% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/md0 9.8G 37M 9.2G 1% /root/raid0
Tạo một tệp raid0/test0.txt
, thêm nội dung vào tệp đã tạo và xem nội dung của tệp.
[root@localhost ~]# ls -l raid0/
total 20
drwx------. 2 root root 16384 May 19 13:36 lost+found
[root@localhost ~]# echo "This is RAID0" > raid0/test0.txt
[root@localhost ~]# cat raid0/test0.txt
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:
/dev/md0 raid0 ext4 defaults 0 0
Thực hiện như sau:
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue May 14 10:34:53 2019
#
# 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
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID=58253f4e-01e2-47c8-8f0c-49a1e5b0b7bf /boot xfs defaults 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
/dev/md0 raid0 ext4 defaults 0 0
Lưu lại file /etc/fstab
và chạy lệnh:
[root@localhost ~]# mount -a
[root@localhost ~]# mount -av
/ : ignored
/boot : already mounted
swap : ignored
raid0 : 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.
👉 Bước 6: Lưu cấu hình RAID
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:
[root@localhost ~]# mdadm -E -s -v >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md/0 level=raid0 metadata=1.2 num-devices=2 UUID=98cffedb:dd23fd6d:07b60209:b92643bd name=localhost.localdomain:0
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.
6.2. Hướng dẫn tạo RAID1
RAID1 tạo ra để bảo vệ chống mất dữ liệu do lỗi đĩa. Mỗi đĩa trong RAID1 liên quan đến một bản sao của dữ liệu. Khi một đĩa bị lỗi, dữ liệu tương tự có thể được lấy từ đĩa khác.
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.
6.2.1 Tạo RAID1
👉 Bước 1: Cập nhật hệ thống và cài đặt mdadm
để quản lý RAID
Để 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.
👉 Bước 2: Kiểm tra thông tin ổ đĩa trên máy:
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:
[root@localhost ~]# fdisk -l | grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Qua lệnh kiểm tra trên chúng ta thấy có 2 đĩa cứng mới được phát hiện. Khi gói mdadm
đã được cài đặt chúng ta thực hiện kiểm tra xem các ổ cứng có sử dụng RAID nào chưa bằng lệnh mdadm
bên dưới.
[root@localhost ~]# mdadm -E /dev/sd[b-c]
mdadm: No md superblock detected on /dev/sdb.
mdadm: No md superblock detected on /dev/sdc.
Như kết quả trên, chưa có bất kỳ super-block nào được phát hiện, có nghĩa là không có RAID nào được xác định.
👉 Bước 3: Tạo phân vùng đĩa cứng
Tạo phân vùng đĩa sdb
và sdc
cho RAID bằng lệnh fdisk
như bên dưới.
Tạo phân vùng trên ổ đĩa sdb.
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:
- Nhấn n để tạo phân vùng mới.
- Sau đó chọn p cho phân vùng chính.
- Tiếp theo chọn số phân vùng là 1 .
- Nhập giá trị ban đầu, giá trị kết thúc và nhấn phím Enter.
- Tiếp theo nhấn p để in phân vùng đã được tạo.
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.
Các thao tác trên được thực hiện như sau:
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x9603d7a3.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9603d7a3
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
Command (m for help): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9603d7a3
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
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:
[root@localhost ~]# mdadm -E /dev/sd[b-c]
/dev/sdb:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sdc:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
[root@localhost ~]# mdadm -E /dev/sd[b-c]1
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdc1.
Kết quả trên cho thấy không có bất kỳ RAID nào được xác định trên các phân vùng sdb1
và sdc1
.
👉 Bước 4: Tạo RAID1
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.
[root@localhost ~]# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[b-c]1
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
10475520 blocks super 1.2 [2/2] [UU]
[=>...................] resync = 7.0% (740096/10475520) finish=0.6min speed=246698K/sec
unused devices: <none>
Trong quá trình tạo hệ thống yêu cầu chúng ta xác nhận tạo RADI thì bấm phím y để xác nhận.
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:
[root@localhost ~]# mdadm -E /dev/sd[b-c]1
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 6e8d46d8:d307ecf4:13ec9c89:52955fe6
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 13:34:48 2019
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 10475520 (9.99 GiB 10.73 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : active
Device UUID : 0abdd700:2ba093e6:0ef69271:7dc4690d
Update Time : Sun May 19 13:35:18 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 1bff3521 - correct
Events : 9
Device Role : Active device 0
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 6e8d46d8:d307ecf4:13ec9c89:52955fe6
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 13:34:48 2019
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 10475520 (9.99 GiB 10.73 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : active
Device UUID : 41b745a4:6003de2d:e0bd8fc8:0c6b891e
Update Time : Sun May 19 13:35:18 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 6ed400ef - correct
Events : 9
Device Role : Active device 1
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
Hoặc có thể chạy lệnh sau để kiểm tra:
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May 19 13:34:48 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun May 19 13:35:41 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 6e8d46d8:d307ecf4:13ec9c89:52955fe6
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
Từ 2 kết quả trên chúng ta có thể thấy RAID1 đã được tạo và sử dụng phân vùng /dev/sdb1
và /dev/sdc1
và bạn cũng có thể thấy trạng thái là đồng bộ hóa.
👉 Bước 5: Tạo file system (ext4) cho thiết bị RAID /dev/md0
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2618880 blocks
130944 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Tiếp theo tạo thư mục gắn kết raid1
để gắn thiết bị /dev/md0
thực hiện như bên dưới.
[root@localhost ~]# mkdir raid1
[root@localhost ~]# mount /dev/md0 raid1/
Tiếp theo, chạy lệnh df
để kiểm tra xem thiết bị /dev/md0
được gắn trong thư mục /root/raid1
không.
root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 17G 1.3G 16G 8% /
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 1014M 201M 814M 20% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/md0 9.8G 37M 9.2G 1% /root/raid1
Tạo một tệp raid1/test1.txt
, thêm nội dung vào tệp đã tạo và xem nội dung của tệp.
[root@localhost ~]# ls -l raid1/
total 16
drwx------. 2 root root 16384 May 19 13:36 lost+found
[root@localhost ~]# echo "This is RAID1" > raid1/test1.txt
[root@localhost ~]# cat raid1/test1.txt
This is RAID1
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
10475520 blocks super 1.2 [2/2] [UU]
unused devices: <none>
Để 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:
/dev/md0 raid1 ext4 defaults 0 0
Thực hiện như sau:
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue May 14 10:34:53 2019
#
# 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
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID=58253f4e-01e2-47c8-8f0c-49a1e5b0b7bf /boot xfs defaults 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
/dev/md0 raid1 ext4 defaults 0 0
Lưu lại và chạy lệnh sau để kiểm tra xem có bất kỳ lỗi nào trong mục /etc/fstab
không.
[root@localhost ~]# mount -a
[root@localhost ~]# mount -av
/ : ignored
/boot : already mounted
swap : ignored
raid1 : 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.
👉 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.
[root@localhost ~]# mdadm --detail --scan --verbose >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=localhost.localdomain:0 UUID=6e8d46d8:d307ecf4:13ec9c89:52955fe6
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
:
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May 19 13:34:48 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun May 19 13:39:36 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 6e8d46d8:d307ecf4:13ec9c89:52955fe6
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
Chúng ta có thể thấy có 2 thiết bị có sẵn trong RAID và chúng đang hoạt động. Bây giờ chúng ta hãy xem điều gì sẽ xảy ra khi một đĩa bị lỗi.
[root@localhost ~]# ls -l /dev | grep sd
brw-rw----. 1 root disk 8, 0 May 19 13:29 sda
brw-rw----. 1 root disk 8, 1 May 19 13:29 sda1
brw-rw----. 1 root disk 8, 2 May 19 13:29 sda2
brw-rw----. 1 root disk 8, 16 May 19 13:32 sdb
brw-rw----. 1 root disk 8, 17 May 19 13:34 sdb1
Như chúng ta thấy thì đĩa sdc đã mất chỉ còn lại đĩa sdb. Chạy lệnh bên dưới kiểm tra RAID1:
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May 19 13:34:48 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sun May 19 13:39:36 2019
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 6e8d46d8:d307ecf4:13ec9c89:52955fe6
Events : 27
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
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.
[root@localhost ~]# cd raid1/
[root@localhost raid1]# cat test1.txt
This is RAID1
[root@localhost raid1]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 17G 1.3G 16G 8% /
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 1014M 201M 814M 20% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/md0 9.8G 37M 9.2G 1% /root/raid1
Dữ liệu của chúng ta vẫn còn không bị mất mát. Qua đây cho chúng ta biết được lợi ích của RAID1
và giúp bạn hiểu cách thức hoạt động của RAID 1(Mirror).
6.3 Hướng dẫn tạo RAID5
Trong RAID5 dải dữ liệu chứa trên nhiều ổ đĩa có parity. Đối với cấp RAID5, nó phải có ít nhất ba ổ cứng trở lên. RAID5 đang được sử dụng trong môi trường sản xuất quy mô lớn, nơi có chi phí và cung cấp hiệu năng cũng như dự phòng.
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.
6.3.1. Tạo RAID5
👉 Bước 1: Cập nhật hệ thống và cài đặt mdadm
để quản lý 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.
👉 Bước 2: Kiểm tra thông tin ổ đĩa trên máy:
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:
[root@localhost ~]# fdisk -l | grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
Qua lệnh kiểm tra trên chúng ta thấy có 3 đĩa cứng mới được phát hiện. Khi gói mdadm
đã được cài đặt chúng ta thực hiện kiểm tra xem các ổ cứng có sử dụng RAID nào chưa bằng lệnh mdadm
với tùy chọn -E
bên dưới.
[root@localhost ~]# mdadm -E /dev/sd[b-d]
mdadm: No md superblock detected on /dev/sdb.
mdadm: No md superblock detected on /dev/sdc.
mdadm: No md superblock detected on /dev/sdd
Như kết quả trên, chưa có bất kỳ super-block nào được phát hiện, có nghĩa là không có RAID nào được xác định.
👉 Bước 3: Tạo phân vùng đĩa cứng
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
.
Tạo phân vùng trên ổ đĩa sdb.
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:
- Nhấn n để tạo phân vùng mới.
- Sau đó chọn p cho phân vùng chính.
- Tiếp theo chọn số phân vùng là 1 .
- Nhập giá trị ban đầu, giá trị kết thúc và nhấn phím Enter.
- Tiếp theo nhấn p để in phân vùng đã được tạo.
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.
Các thao tác trên được thực hiện như sau:
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x46f77f84.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x46f77f84
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
Command (m for help): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x46f77f84
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
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:
[root@localhost ~]# fdisk -l | grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdc1 2048 20971519 10484736 fd Linux raid autodetect
Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdd1 2048 20971519 10484736 fd Linux raid autodetect
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:
[root@localhost ~]# mdadm -E /dev/sd[b-d]
/dev/sdb:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sdc:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sdd:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
[root@localhost ~]# mdadm -E /dev/sd[b-d]1
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdc1.
mdadm: No md superblock detected on /dev/sdd1.
Kết quả trên cho thấy không có bất kỳ RAID nào được xác định trên các phân vùng sdb1
và sdc1
và sdd1
.
👉 Bước 4: Tạo RAID5
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.
[root@localhost ~]# mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
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
unused devices: <none>
Qua kết quả trên cho chúng ta thấy RAID5 đã được tạo với ba phân vùng sdb1
, sdc1
và sdd1
. Chúng ta có thể kiểm tra bằng lệnh bên dưới:
[root@localhost ~]# mdadm -E /dev/sd[b-d]1
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : ea6753b0:d8a3f6d8:571dfcd9:340fc3cd
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:01:42 2019
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : clean
Device UUID : 29f0ca70:c405053e:da7ad71f:29c46aca
Update Time : Sun May 19 14:02:21 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 41d2ad27 - correct
Events : 13
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 0
Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : ea6753b0:d8a3f6d8:571dfcd9:340fc3cd
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:01:42 2019
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : clean
Device UUID : e4d4fe70:2a25816c:5e568c67:0af8ca28
Update Time : Sun May 19 14:02:21 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 1697c0ae - correct
Events : 13
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdd1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x2
Array UUID : ea6753b0:d8a3f6d8:571dfcd9:340fc3cd
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:01:42 2019
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Recovery Offset : 15713376 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : clean
Device UUID : af9ff7ef:cd637be0:69dd80bf:6009b0a9
Update Time : Sun May 19 14:02:21 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : e35426e2 - correct
Events : 13
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 2
Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)
Hoặc có thể chạy lệnh sau để kiểm tra:
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May 19 14:01:42 2019
Raid Level : raid5
Array Size : 20951040 (19.98 GiB 21.45 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sun May 19 14:02:34 2019
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : ea6753b0:d8a3f6d8:571dfcd9:340fc3cd
Events : 18
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
3 8 49 2 active sync /dev/sdd1
Từ 2 kết quả trên chúng ta có thể thấy RAID5 đã được tạo và sử dụng phân vùng /dev/sdb1
, /dev/sdc1
và /dev/sdd1
.
👉 Bước 5: Tạo file system (ext4) cho thiết bị RAID5 /dev/md0
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5237760 blocks
261888 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Tiếp theo tạo thư mục gắn kết raid5
để gắn thiết bị /dev/md0
thực hiện như bên dưới.
[root@localhost ~]# mkdir raid5
[root@localhost ~]# mount /dev/md0 raid5/
Tiếp theo, chạy lệnh df
để kiểm tra xem thiết bị /dev/md0
được gắn trong thư mục /root/raid
không.
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 17G 1.3G 16G 8% /
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 1014M 201M 814M 20% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/md0 20G 45M 19G 1% /root/raid5
Tạo một tệp raid1/test5.1.txt
, raid1/test5.2.txt
, raid1/test5.3.txt
, raid1/test5.4.txt
, raid1/test5.5.txt
, thêm nội dung vào tệp đã tạo và xem nội dung của tệp.
[root@localhost ~]# ls -l raid5/
total 16
drwx------. 2 root root 16384 May 19 14:03 lost+found
[root@localhost ~]# touch raid5/test5.{1..5}.txt
[root@localhost ~]# ls -l raid5
total 16
drwx------. 2 root root 16384 May 19 14:03 lost+found
-rw-r--r--. 1 root root 0 May 19 14:05 test5.1.txt
-rw-r--r--. 1 root root 0 May 19 14:05 test5.2.txt
-rw-r--r--. 1 root root 0 May 19 14:05 test5.3.txt
-rw-r--r--. 1 root root 0 May 19 14:05 test5.4.txt
-rw-r--r--. 1 root root 0 May 19 14:05 test5.5.txt
[root@localhost ~]# echo "This is RAID5" > raid5/test5.1.txt
[root@localhost ~]# cat raid5/test5.1.txt
This is RAID5
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
20951040 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
Để 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:
/dev/md0 raid5 ext4 defaults 0 0
Thực hiện như sau:
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue May 14 10:34:53 2019
#
# 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
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID=58253f4e-01e2-47c8-8f0c-49a1e5b0b7bf /boot xfs defaults 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
/dev/md0 raid5 ext4 defaults 0 0
Lưu lại và chạy lệnh sau để kiểm tra xem có bất kỳ lỗi nào trong mục /etc/fstab
không.
[root@localhost ~]# mount -a
[root@localhost ~]# mount -av
/ : ignored
/boot : already mounted
swap : ignored
raid5 : 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.
👉 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.
[root@localhost ~]# mdadm --detail --scan --verbose >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 level=raid5 num-devices=3 metadata=1.2 name=localhost.localdomain:0 UUID=ea6753b0:d8a3f6d8:571dfcd9:340fc3cd
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.
6.4. Hướng dẫn tạo RAID6
RAID6 là phiên bản nâng cấp của RAID5 nó có hai parity, cung cấp khả năng phục hồi dữ liệu khi hai ổ đĩa bị lỗi.
Ưu và nhược điểm của RAID6:
- Hiệu suất là tốt.
- RAID 6 đắt tiền, vì nó yêu cầu hai ổ đĩa độc lập được sử dụng cho các chức năng tương đương.
- Sẽ mất dung lượng hai đĩa để sử dụng thông tin parity.
- Không mất dữ liệu, ngay cả khi hai đĩa bị lỗi.
- Đọc sẽ tốt hơn RAID 5, vì nó đọc từ nhiều đĩa, nhưng hiệu suất ghi sẽ rất kém nếu không có bộ điều khiển RAID.
Để 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ý.
6.4.1. Tạo RAID6
👉 Bước 1: Cập nhật hệ thống và cài đặt mdadm
để quản lý RAID
Để 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.
👉 Bước 2: Kiểm tra thông tin ổ đĩa trên máy:
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:
[root@localhost ~]# fdisk -l | grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sde: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Qua lệnh kiểm tra trên chúng ta thấy có 4 đĩa cứng mới được phát hiện. Khi gói mdadm
đã được cài đặt chúng ta thực hiện kiểm tra xem các ổ cứng có sử dụng RAID nào chưa bằng lệnh mdadm
bên dưới.
[root@localhost ~]# mdadm -E /dev/sd[b-e]
mdadm: No md superblock detected on /dev/sdb.
mdadm: No md superblock detected on /dev/sdc.
mdadm: No md superblock detected on /dev/sdd.
mdadm: No md superblock detected on /dev/sde.
Như kết quả trên, chưa có bất kỳ super-block nào được phát hiện, có nghĩa là không có RAID nào được xác định.
👉 Bước 3: Tạo phân vùng đĩa cứng
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
.
Tạo phân vùng trên ổ đĩa sdb.
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:
- Nhấn n để tạo phân vùng mới.
- Sau đó chọn p cho phân vùng chính.
- Tiếp theo chọn số phân vùng là 1 .
- Nhập giá trị ban đầu, giá trị kết thúc và nhấn phím Enter.
- Tiếp theo nhấn p để in phân vùng đã được tạo.
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.
Các thao tác trên được thực hiện như sau:
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x161d682d.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x161d682d
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
Command (m for help): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x161d682d
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
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:
[root@localhost ~]# fdisk -l |grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
Disk /dev/sde: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sde1 2048 20971519 10484736 fd Linux raid autodetect
Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdd1 2048 20971519 10484736 fd Linux raid autodetect
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdc1 2048 20971519 10484736 fd Linux raid autodetect
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:
[root@localhost ~]# mdadm -E /dev/sd[b-e]
/dev/sdb:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sdc:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sdd:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sde:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
[root@localhost ~]# mdadm -E /dev/sd[b-e]1
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdc1.
mdadm: No md superblock detected on /dev/sdd1.
mdadm: No md superblock detected on /dev/sde1.
Kết quả trên cho thấy không có bất kỳ RAID nào được xác định trên các phân vùng sdb1
, sdc1
, sdd1
và sde1
.
👉 Bước 4: Tạo RAID6
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.
[root@localhost ~]# mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sde1[3] sdd1[2] sdc1[1] sdb1[0]
20951040 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
[===>.................] resync = 15.5% (1631872/10475520) finish=0.8min speed=181319K/sec
unused devices: <none>
Qua kết quả trên cho chúng ta thấy RAID6 đã được tạo với bốn phân vùng sdb1
, sdc1
, sdd1
và sde1
. Chúng ta có thể kiểm tra bằng lệnh bên dưới:
[root@localhost ~]# mdadm -E /dev/sd[b-e]1
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 39a8d4b6:ea69722c:371c0aa2:9eff943c
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:18:15 2019
Raid Level : raid6
Raid Devices : 4
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : clean
Device UUID : 3df397e4:3b9028de:6c9ddd6d:7387f28a
Update Time : Sun May 19 14:19:13 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : f52e1e16 - correct
Events : 17
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 0
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 39a8d4b6:ea69722c:371c0aa2:9eff943c
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:18:15 2019
Raid Level : raid6
Raid Devices : 4
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : clean
Device UUID : dd9d84a2:e0418c7b:67027378:4276d174
Update Time : Sun May 19 14:19:13 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 44f2ce26 - correct
Events : 17
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdd1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 39a8d4b6:ea69722c:371c0aa2:9eff943c
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:18:15 2019
Raid Level : raid6
Raid Devices : 4
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : clean
Device UUID : 8ca436af:e5cc2b9a:ff98b804:7746464a
Update Time : Sun May 19 14:19:13 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : d1fec6a7 - correct
Events : 17
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 2
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sde1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 39a8d4b6:ea69722c:371c0aa2:9eff943c
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:18:15 2019
Raid Level : raid6
Raid Devices : 4
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : clean
Device UUID : 86e552f7:9810ebbc:959fd02a:e9554be2
Update Time : Sun May 19 14:19:13 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : faf7615e - correct
Events : 17
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 3
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
Hoặc có thể chạy lệnh sau để kiểm tra:
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May 19 14:18:15 2019
Raid Level : raid6
Array Size : 20951040 (19.98 GiB 21.45 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sun May 19 14:19:13 2019
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 39a8d4b6:ea69722c:371c0aa2:9eff943c
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
Từ 2 kết quả trên chúng ta có thể thấy RAID6 đã được tạo và sử dụng phân vùng /dev/sdb1
, /dev/sdc1
, /dev/sdd1
và /dev/sde1
.
👉 Bước 5: Tạo file system (ext4) cho thiết bị RAID6 /dev/md0
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5237760 blocks
261888 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Thực hiện tạo thư mục gắn kết raid6
để gắn thiết bị /dev/md0
như bên dưới.
[root@localhost ~]# mkdir raid6
[root@localhost ~]# mount /dev/md0 raid6/
Tạo một tệp raid6/test6.txt
, thêm nội dung vào tệp đã tạo và xem nội dung của tệp.
[root@localhost ~]# ls -l raid6/
total 16
drwx------. 2 root root 16384 May 19 14:20 lost+found
[root@localhost ~]# touch raid6/test6.txt
[root@localhost ~]# ls -l raid6
total 16
drwx------. 2 root root 16384 May 19 14:20 lost+found
-rw-r--r--. 1 root root 0 May 19 14:21 test6.txt
[root@localhost ~]# echo "This is RAID6" > raid6/test6.txt
[root@localhost ~]# cat raid6/test6.txt
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:
/dev/md0 raid6 ext4 defaults 0 0
Thực hiện như sau:
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue May 14 10:34:53 2019
#
# 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
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID=58253f4e-01e2-47c8-8f0c-49a1e5b0b7bf /boot xfs defaults 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
/dev/md0 raid6 ext4 defaults 0 0
Lưu lại và chạy lệnh sau để kiểm tra xem có bất kỳ lỗi nào trong mục /etc/fstab
không.
[root@localhost ~]# mount -a
[root@localhost ~]# mount -av
/ : ignored
/boot : already mounted
swap : ignored
raid6 : already mounted
Nếu có lỗi chúng ta không được reboot server mà chúng ta cần tìm sữa lỗi đến khi chạy lệnh trên không còn lỗi.
👉 Bước 6: Lưu cấu hình RAID 6
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.
[root@localhost ~]# mdadm --detail --scan --verbose >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 level=raid6 num-devices=4 metadata=1.2 name=localhost.localdomain:0 UUID=39a8d4b6:ea69722c:371c0aa2:9eff943c
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:
[root@localhost ~]# ls -l /dev/ | grep sd
brw-rw----. 1 root disk 8, 0 May 19 14:28 sda
brw-rw----. 1 root disk 8, 1 May 19 14:28 sda1
brw-rw----. 1 root disk 8, 2 May 19 14:28 sda2
brw-rw----. 1 root disk 8, 16 May 19 14:28 sdb
brw-rw----. 1 root disk 8, 17 May 19 14:28 sdb1
brw-rw----. 1 root disk 8, 32 May 19 14:28 sdc
brw-rw----. 1 root disk 8, 33 May 19 14:28 sdc1
brw-rw----. 1 root disk 8, 48 May 19 14:28 sdd
brw-rw----. 1 root disk 8, 49 May 19 14:28 sdd1
brw-rw----. 1 root disk 8, 64 May 19 14:28 sde
brw-rw----. 1 root disk 8, 65 May 19 14:28 sde1
brw-rw----. 1 root disk 8, 80 May 19 14:28 sdf
Kết quả trên cho thấy đĩa sdf
đã được thêm vào hệ thống.
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:
[root@localhost ~]# mdadm --examine /dev/sdf
mdadm: No md superblock detected on /dev/sdf.
Giống như chúng ta đã tạo phân vùng cho bốn đĩa trước đó, tương tự như chúng ta đã tạo phân vùng mới trên đĩa sdf
bằng lệnh fdisk
thực hiện như sau:
[root@localhost ~]# fdisk /dev/sdf
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xcb22f5d6.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdf: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xcb22f5d6
Device Boot Start End Blocks Id System
/dev/sdf1 2048 20971519 10484736 83 Linux
Command (m for help): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): p
Disk /dev/sdf: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xcb22f5d6
Device Boot Start End Blocks Id System
/dev/sdf1 2048 20971519 10484736 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
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:.
[root@localhost ~]# mdadm --examine /dev/sdf
/dev/sdf:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
[root@localhost ~]# mdadm --examine /dev/sdf1
mdadm: No md superblock detected on /dev/sdf1.
Tiếp theo chúng ta thực hiện thêm phân vùng mới tạo vào /dev/md0
và kiểm tra xem chúng ta thêm thành công chưa thực hiện như sau:
[root@localhost ~]# mdadm --add /dev/md0 /dev/sdf1
mdadm: added /dev/sdf1
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May 19 14:18:15 2019
Raid Level : raid6
Array Size : 20951040 (19.98 GiB 21.45 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Sun May 19 14:31:22 2019
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 39a8d4b6:ea69722c:371c0aa2:9eff943c
Events : 18
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
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:
[root@localhost ~]# mdadm --manage --fail /dev/md0 /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md0
Để kiểm tra thông tin chi tiết về bộ RAID và kiểm tra xem đĩa dự phòng của chúng ta có tự động đồng bộ hóa không.
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May 19 14:18:15 2019
Raid Level : raid6
Array Size : 20951040 (19.98 GiB 21.45 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Sun May 19 14:32:39 2019
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 26% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 39a8d4b6:ea69722c:371c0aa2:9eff943c
Events : 24
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
4 8 81 2 spare rebuilding /dev/sdf1
3 8 65 3 active sync /dev/sde1
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:
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sdf1[4] sde1[3] sdd1[2](F) sdc1[1] sdb1[0]
20951040 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
Qua các bước trên giúp cho chúng ta có thể thiết lập RAID6, cách thêm đĩa mới vào RAID6.
6.5. Hướng dẫn tạo RAID10 trên CentOS 7
RAID10 là sự kết hợp của RAID0 và RAID1 để tạo thành RAID10.
Ưu và nhược điểm của RAID10:
- Hiệu suất đọc và viết tốt.
- Nửa không gian sẽ bị mất trong tổng công suất.
- Xây dựng lại nhanh chóng từ sao chép dữ liệu.
- Có thể được sử dụng trong lưu trữ cơ sở dữ liệu cho hiệu suất cao và tính sẵn sàng.
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.
6.5.1. Tạo RAID10 với level=10
👉 Bước 1: Cập nhật hệ thống và cài đặt mdadm
để quản lý RAID
Để 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.
👉 Bước 2: Kiểm tra thông tin ổ đĩa trên máy:
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:
[root@localhost ~]# fdisk -l | grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sde: 10.7 GB, 10737418240 bytes, 20971520 sectors
Qua lệnh kiểm tra trên chúng ta thấy có 4 đĩa cứng mới được phát hiện. Khi gói mdadm
đã được cài đặt chúng ta thực hiện kiểm tra xem các ổ cứng có sử dụng RAID nào chưa bằng lệnh mdadm -E
bên dưới.
[root@localhost ~]# mdadm -E /dev/sd[b-e]
mdadm: No md superblock detected on /dev/sdb.
mdadm: No md superblock detected on /dev/sdc.
mdadm: No md superblock detected on /dev/sdd.
mdadm: No md superblock detected on /dev/sde.
Như kết quả trên, cho chúng ta thấy chưa có bất kỳ super-block nào được phát hiện, có nghĩa là không có RAID nào được xác định.
👉 Bước 3: Tạo phân vùng đĩa cứng
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
.
Tạo phân vùng trên ổ đĩa sdb.
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:
- Nhấn n để tạo phân vùng mới.
- Sau đó chọn p cho phân vùng chính.
- Tiếp theo chọn số phân vùng là 1 .
- Nhập giá trị ban đầu, giá trị kết thúc và nhấn phím Enter.
- Tiếp theo nhấn p để in phân vùng đã được tạo.
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.
Các thao tác trên được thực hiện như sau:
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xb2985f24
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
Command (m for help): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xb2985f24
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
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:
[root@localhost ~]# mdadm -E /dev/sd[b-e]
/dev/sdb:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sdc:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sdd:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sde:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
[root@localhost ~]# mdadm -E /dev/sd[b-e]1
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdc1.
mdadm: No md superblock detected on /dev/sdd1.
mdadm: No md superblock detected on /dev/sde1.
Kết quả trên cho thấy không có bất kỳ RAID nào được xác định trên các phân vùng sdb1
, sdc1
, sdd1
và sde1
.
👉 Bước 4: Tạo RAID10
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:
[root@localhost ~]# mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sd[b-e]1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sde1[3] sdd1[2] sdc1[1] sdb1[0]
20951040 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
[==>..................] resync = 11.4% (2400128/20951040) finish=1.4min speed=218193K/sec
unused devices: <none>
Qua kết quả trên cho chúng ta thấy RAID10 đã được tạo với bốn phân vùng sdb1
, sdc1
, sdd1
và sde1
. Chúng ta có thể kiểm tra bằng lệnh bên dưới:
[root@localhost ~]# mdadm --examine /dev/sd[b-e]1
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 981e3a84:52808df0:5d26b18d:bea511d9
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:47:06 2019
Raid Level : raid10
Raid Devices : 4
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : active
Device UUID : 962b4dad:7554c2f1:6eb596fe:f5eef325
Update Time : Sun May 19 14:47:39 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 17a3b621 - correct
Events : 5
Layout : near=2
Chunk Size : 512K
Device Role : Active device 0
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 981e3a84:52808df0:5d26b18d:bea511d9
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:47:06 2019
Raid Level : raid10
Raid Devices : 4
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : active
Device UUID : ee730425:4d0c33ff:49513846:64ee626b
Update Time : Sun May 19 14:47:39 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 29dc519b - correct
Events : 5
Layout : near=2
Chunk Size : 512K
Device Role : Active device 1
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdd1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 981e3a84:52808df0:5d26b18d:bea511d9
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:47:06 2019
Raid Level : raid10
Raid Devices : 4
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : active
Device UUID : 268eaaee:9eca2565:5c49d81d:5618a9a0
Update Time : Sun May 19 14:47:39 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 665b4c2a - correct
Events : 5
Layout : near=2
Chunk Size : 512K
Device Role : Active device 2
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sde1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 981e3a84:52808df0:5d26b18d:bea511d9
Name : localhost.localdomain:0 (local to host localhost.localdomain)
Creation Time : Sun May 19 14:47:06 2019
Raid Level : raid10
Raid Devices : 4
Avail Dev Size : 20951040 (9.99 GiB 10.73 GB)
Array Size : 20951040 (19.98 GiB 21.45 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : active
Device UUID : 31e08df5:f216eca4:8b08157e:c24d91ad
Update Time : Sun May 19 14:47:39 2019
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 1a29df26 - correct
Events : 5
Layout : near=2
Chunk Size : 512K
Device Role : Active device 3
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
Hoặc có thể chạy lệnh sau để kiểm tra:
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun May 19 14:47:06 2019
Raid Level : raid10
Array Size : 20951040 (19.98 GiB 21.45 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sun May 19 14:48:05 2019
State : clean, resyncing
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Resync Status : 60% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 981e3a84:52808df0:5d26b18d:bea511d9
Events : 9
Number Major Minor RaidDevice State
0 8 17 0 active sync set-A /dev/sdb1
1 8 33 1 active sync set-B /dev/sdc1
2 8 49 2 active sync set-A /dev/sdd1
3 8 65 3 active sync set-B /dev/sde1
Từ 2 kết quả trên chúng ta có thể thấy RAID10 đã được tạo và sử dụng phân vùng /dev/sdb1
, /dev/sdc1
, /dev/sdd1
và /dev/sde1
.
👉 Bước 5: Tạo file system (ext4) cho thiết bị RAID10 /dev/md0
chạy lệnh sau:
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5237760 blocks
261888 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Sau khi tạo file system (ext4), gắn kết hệ thống tệp đã tạo trong raid10
và liệt kê nội dung của điểm gắn kết bằng lệnh ls -l
thực hiện như bên dưới:
[root@localhost ~]# mkdir raid10
[root@localhost ~]# mount /dev/md0 raid10
[root@localhost ~]# ls -l raid10
total 16
drwx------. 2 root root 16384 May 19 14:48 lost+found
Tiếp theo thêm một tệp dưới điểm gắn kết, tiến hành thêm nội dung vào tệp và xem nội dung:
[root@localhost ~]# touch raid10/test10.txt
[root@localhost ~]# ls -l raid10
total 16
drwx------. 2 root root 16384 May 19 14:48 lost+found
-rw-r--r--. 1 root root 0 May 19 14:49 test10.txt
[root@localhost ~]# echo "This is RAID10" > raid10/test10.txt
[root@localhost ~]# cat raid10/test10.txt
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:
/dev/md0 raid10 ext4 defaults 0 0
Thực hiện như bên dưới:
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue May 14 10:34:53 2019
#
# 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
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID=58253f4e-01e2-47c8-8f0c-49a1e5b0b7bf /boot xfs defaults 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
/dev/md0 raid10 ext4 defaults 0 0
Lưu lại file /etc/fstab
và chạy lệnh:
[root@localhost ~]# mount -a
[root@localhost ~]# mount -av
/ : ignored
/boot : already mounted
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.
👉 Bước 6: Lưu cấu hình RAID
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.
[root@localhost ~]# mdadm --detail --scan --verbose > /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 level=raid10 num-devices=4 metadata=1.2 name=localhost.localdomain:0 UUID=981e3a84:52808df0:5d26b18d:bea511d9
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.
👉 Bước 1: Cập nhật hệ thống và cài đặt mdadm
để quản lý RAID
Để 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.
👉 Bước 2: Kiểm tra thông tin ổ đĩa trên máy:
Đầu tiên, liệt kê các đĩa có sẵn để tạo RAID10.
[root@localhost ~]# fdisk -l | grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sde: 10.7 GB, 10737418240 bytes, 20971520 sectors
Qua lệnh kiểm tra trên chúng ta thấy có 4 đĩa cứng mới được phát hiện. Khi gói mdadm
đã được cài đặt chúng ta thực hiện kiểm tra xem các ổ cứng có sử dụng RAID nào chưa bằng lệnh mdadm
bên dưới.
[root@localhost ~]# mdadm -E /dev/sd[b-e]
mdadm: No md superblock detected on /dev/sdb.
mdadm: No md superblock detected on /dev/sdc.
mdadm: No md superblock detected on /dev/sdd.
mdadm: No md superblock detected on /dev/sde.
Như kết quả trên, chưa có bất kỳ đĩa nào được phát hiện, có nghĩa là không có RAID nào được xác định.
👉 Bước 3: [Tạo phân vùng đĩa cứng
Để 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
.
Tạo phân vùng trên ổ đĩa sdb.
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:
- Nhấn n để tạo phân vùng mới.
- Sau đó chọn p cho phân vùng chính.
- Tiếp theo chọn số phân vùng là 1 .
- Nhập giá trị ban đầu, giá trị kết thúc và nhấn phím Enter.
- Tiếp theo nhấn p để in phân vùng đã được tạo.
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.
Các thao tác trên được thực hiện như sau:
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x952f48f1.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x952f48f1
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
Command (m for help): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x952f48f1
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
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:
[root@localhost ~]# mdadm --examine /dev/sd[b-e]
/dev/sdb:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sdc:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sdd:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
/dev/sde:
MBR Magic : aa55
Partition[0] : 20969472 sectors at 2048 (type fd)
[root@localhost ~]# mdadm --examine /dev/sd[b-e]1
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdc1.
mdadm: No md superblock detected on /dev/sdd1.
mdadm: No md superblock detected on /dev/sde1.
Kết quả trên cho thấy không có bất kỳ RAID nào được xác định trên các phân vùng sdb1
, sdc1
, sdd1
và sde1
.
👉 Bước 4: Tạo RAID1
Tạo 2 bộ RAID1 có tên lần lượt là /dev/md1
và /dev/md2
bằng 4 đĩa sdb1
, sdc1
, sdd1
và sde1
. Mỗi bộ RAID1 sử dụng 2 đĩa thực hiện như sau:
[root@localhost ~]# mdadm --create /dev/md1 --metadata=1.2 --level=1 --raid-devices=2 /dev/sd[b-c]1
mdadm: array /dev/md1 started.
[root@localhost ~]# mdadm --create /dev/md2 --metadata=1.2 --level=1 --raid-devices=2 /dev/sd[d-e]1
mdadm: array /dev/md2 started.
Chạy lệnh bên dưới để kiểm tra các RAID được tạo:
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sde1[1] sdd1[0]
10475520 blocks super 1.2 [2/2] [UU]
[====>................] resync = 22.9% (2400128/10475520) finish=0.6min speed=200010K/sec
md1 : active raid1 sdc1[1] sdb1[0]
10475520 blocks super 1.2 [2/2] [UU]
[=========>...........] resync = 49.6% (5200128/10475520) finish=0.4min speed=208005K/sec
unused devices: <none>
👉 Bước 5: Tạo RAID0
Chúng ta thực hiện tạo RAID0 bằng thiết bị /dev/md1
và /dev/md2
.
[root@localhost ~]# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/md1 /dev/md2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Thực hiện lệnh bên dưới để kỉim tra xem các RAID đã được tạo chưa:
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] [raid0]
md0 : active raid0 md2[1] md1[0]
20932608 blocks super 1.2 512k chunks
md2 : active raid1 sde1[1] sdd1[0]
10475520 blocks super 1.2 [2/2] [UU]
[==================>..] resync = 91.2% (9558016/10475520) finish=0.0min speed=203812K/sec
md1 : active raid1 sdc1[1] sdb1[0]
10475520 blocks super 1.2 [2/2] [UU]
unused devices: <none>
👉 Bước 6: Tạo file system (ext4) cho thiết bị RAID10 /dev/md0
chạy lệnh sau:
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1310720 inodes, 5237760 blocks
261888 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Sau khi tạo file system (ext4), gắn kết hệ thống tệp đã tạo trong raid10
và liệt kê nội dung của điểm gắn kết bằng lệnh ls -l
thực hiện như bên dưới:
[root@localhost ~]# mkdir raid10
[root@localhost ~]# mount /dev/md0 raid10
[root@localhost ~]# ls -l raid10
total 16
drwx------. 2 root root 16384 May 19 14:48 lost+found
Tiếp theo thêm một tệp dưới điểm gắn kết, tiến hành thêm nội dung vào tệp và xem nội dung:
[root@localhost ~]# touch raid10/test10.txt
[root@localhost ~]# ls -l raid10
total 16
drwx------. 2 root root 16384 May 19 14:48 lost+found
-rw-r--r--. 1 root root 0 May 19 14:49 test10.txt
[root@localhost ~]# echo "This is RAID10" > raid10/test10.txt
[root@localhost ~]# cat raid10/test10.txt
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:
/dev/md0 raid10 ext4 defaults 0 0
Thực hiện như bên dưới:
[root@localhost ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue May 14 10:34:53 2019
#
# 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
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID=58253f4e-01e2-47c8-8f0c-49a1e5b0b7bf /boot xfs defaults 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
/dev/md0 raid10 ext4 defaults 0 0
Lưu lại file /etc/fstab
và chạy lệnh:
[root@localhost ~]# mount -a
[root@localhost ~]# mount -av
/ : ignored
/boot : already mounted
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.
👉 Bước 7: Lưu cấu hình RAID
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.
[root@localhost ~]# mdadm --detail --scan --verbose >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md1 level=raid1 num-devices=2 metadata=1.2 name=localhost.localdomain:1 UUID=b29f79fa:c450f0b0:e11129a4:3822ec99
devices=/dev/sdb1,/dev/sdc1
ARRAY /dev/md2 level=raid1 num-devices=2 metadata=1.2 name=localhost.localdomain:2 UUID=06f4ca55:57d38725:d1695bed:95b0cd9e
devices=/dev/sdd1,/dev/sde1
ARRAY /dev/md0 level=raid0 num-devices=2 metadata=1.2 name=localhost.localdomain:0 UUID=b02148a6:39dc970c:f59fb3a6:e6c89c8b
devices=/dev/md1,/dev/md2
7. Phát triển một mảng RAID và loại bỏ các đĩa lỗi trong RAID
Mảng chỉ là một bộ sưu tập các đĩa hay mảng là một tập hợp hoặc nhóm. Mảng (array) RAID chứa số lượng đĩa, nó có thể là 2, 4, 6, 8, 12, 16,...
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.
Các tính năng của tăng trưởng RAID:
- Có thể mở rộng kích thước của bất kỳ bộ RAID nào.
- Có thể loại bỏ đĩa bị lỗi sau khi thêm đĩa mới vào RAID.
- Phát triển mạng RAID mà không có thời gian chết.
Yêu cầu:
- Để 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.
7.1.Phát triển một mảng RAID hiện có
Bước 1: Trước khi phát triển một mảng, trước tiên hãy liệt kê mảng RAID hiện có bằng lệnh sau.
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu May 23 04:17:19 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu May 23 04:19:58 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : d5a64756:00be081e:3429ccfb:3300a5ac
Events : 19
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
Kết quả trên cho chúng ta thấy có hai đĩa trong mảng RAID với cấp RAID1. Sau đây chúng ta sẽ thêm một đĩa vào một mảng RAID hiện có.
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
.
Tạo phân vùng trên ổ đĩa sdb.
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:
- Nhấn n để tạo phân vùng mới.
- Sau đó chọn p cho phân vùng chính.
- Tiếp theo chọn số phân vùng là 1 .
- Nhập giá trị ban đầu, giá trị kết thúc và nhấn phím Enter.
- Tiếp theo nhấn p để in phân vùng đã được tạo.
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.
Các thao tác trên được thực hiện như sau:
[root@localhost ~]# fdisk /dev/sdd
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x9533c853.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-31457279, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279): 31457279
Partition 1 of type Linux and of size 15 GiB is set
Command (m for help): p
Disk /dev/sdd: 16.1 GB, 16106127360 bytes, 31457280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9533c853
Device Boot Start End Blocks Id System
/dev/sdd1 2048 31457279 15727616 83 Linux
Command (m for help): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
Command (m for help): p
Disk /dev/sdd: 16.1 GB, 16106127360 bytes, 31457280 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9533c853
Device Boot Start End Blocks Id System
/dev/sdd1 2048 31457279 15727616 fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Chạy lệnh sau để kiểm tra phân vùng đã được tạo chưa:
[root@localhost ~]# fdisk -l | grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdb1 2048 20971519 10484736 fd Linux raid autodetect
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdc1 2048 20971519 10484736 fd Linux raid autodetect
Disk /dev/sdd: 16.1 GB, 16106127360 bytes, 31457280 sectors
/dev/sdd1 2048 31457279 15727616 fd Linux raid autodetect
Qua đây chúng ta thấy phân vùng /dev/sdd1
đã được tạo thành công.
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:
[root@localhost ~]# mdadm --examine /dev/sdd1
mdadm: No md superblock detected on /dev/sdd1.
Kết quả trên cho thấy không có bất kỳ RAID nào được xác định trên các phân vùng sdd1
.
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.
[root@localhost ~]# mdadm --manage /dev/md0 --add /dev/sdd1
mdadm: added /dev/sdd1
Đĩa mới đã được thêm, kiểm tra đĩa đã thêm trong mảng của chúng ta chưa chạy lệnh bên dưới:
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu May 23 04:17:19 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu May 23 04:33:00 2019
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : d5a64756:00be081e:3429ccfb:3300a5ac
Events : 20
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
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:
[root@localhost ~]# mdadm --grow --raid-devices=3 /dev/md0
raid_disks for /dev/md0 set to 3
Chúng ta có thể thấy đĩa thứ ba (sdd1) đã được thêm vào mảng, sau khi thêm đĩa thứ ba, nó sẽ đồng bộ dữ liệu từ hai đĩa khác.
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu May 23 04:17:19 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu May 23 04:38:00 2019
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Rebuild Status : 85% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : d5a64756:00be081e:3429ccfb:3300a5ac
Events : 37
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 spare rebuilding /dev/sdd1
Như vậy chúng ta đã phát triển mảng RAID thành công.
7.2. Loại bỏ đĩa khỏi mảng
Sau khi dữ liệu được đồng bộ hóa với đĩa mới /dev/sdd1
từ hai đĩa khác và cả ba đĩa hiện có cùng một nội dung.
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
mdadm: set /dev/sdb1 faulty in /dev/md0
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu May 23 04:17:19 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu May 23 04:45:01 2019
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : d5a64756:00be081e:3429ccfb:3300a5ac
Events : 43
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
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ị.
[root@localhost ~]# mdadm --remove /dev/md0 /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0
Khi ổ đĩa bị lỗi được gỡ bỏ, chúng ta sẽ phát triển mảng RAID bằng 2 đĩa.
[root@localhost ~]# mdadm --grow --raid-devices=2 /dev/md0
raid_disks for /dev/md0 set to 2
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu May 23 04:17:19 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu May 23 04:48:57 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : d5a64756:00be081e:3429ccfb:3300a5ac
Events : 47
Number Major Minor RaidDevice State
1 8 33 0 active sync /dev/sdc1
2 8 49 1 active sync /dev/sdd1
Kết quả trên cho chúng ta rằng mảng RAID chỉ có 2 thiết bị.
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.
8. Cách khôi phục dữ liệu và xây dựng lại lỗi Software RAID
Trong hướng dẫn dưới đây, chúng ta sẽ thực hiện cách xây dựng lại một software RAID mà không mất dữ liệu khi xảy ra lỗi đĩa và được thực hiện trên RAID1. Nhưng các khái niệm và lệnh sau đây áp dụng được cho tất cả các RAID khác.
8.1. Thiết lập giám sát RAID
Có nhiều lý do khiến thiết bị lưu trữ có thể bị hỏng, vì thế chúng ta cần biết sự cố có thể xảy ra bất cứ lúc nào và cần chuẩn bị để thay thế và đảm bảo an toàn cho dữ liệu của bạn.
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:
MAILADDR user@<domain or localhost>
Bây giờ chúng ta thực hiện thêm như sau:
[root@localhost ~]# echo "MAILADDR root@localhost.localdomain" >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=localhost.localdomain:0 UUID=16e08f8b:2eaaf81e:87e6d213:4a3b6c37
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:
[root@localhost ~]# /sbin/mdadm --monitor --scan --oneshot
Theo mặc định thì mdadm
sẽ kiểm tra các mảng RAID sau 60 giây và gửi thông báo nếu phát hiện có vần đề. Bạn có thể sửa đổi khoảng thời gian này bằng cách thêm vào tùy chọn --delay
(Ví dụ: --delay 900
có nghĩa là 15 phút sẽ thực hiện một lần).
8.2. Mô phỏng và thay thế một đĩa lưu trữ RAID bị lỗi
Để mô phỏng cho việc hệ thống sẽ gửi mail thông báo sự cố của một trong các thiết bị lưu trữ trong mảng RAID, chúng ta sẽ sử dụng lệnh mdadm
cùng với các tùy chọn --manage
và --set-faulty
như sau:
[root@localhost ~]# mdadm --manage --set-faulty /dev/md0 /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1](F) sdb1[0]
10475520 blocks super 1.2 [2/1] [U_]
unused devices: <none>
Lệnh trên sẽ làm cho đĩa /dev/sdc1
đánh dấu là bị lỗi.
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 ~]#
You have mail in /var/spool/mail/root
[root@localhost ~]# cat /var/spool/mail/root
From root@localhost.localdomain Fri May 24 08:39:04 2019
Return-Path: <root@localhost.localdomain>
X-Original-To: root@localhost.localdomain
Delivered-To: root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)
id 6D6E63055398; Fri, 24 May 2019 08:39:04 -0400 (EDT)
From: mdadm monitoring <root@localhost.localdomain>
To: root@localhost.localdomain
Subject: DegradedArray event on /dev/md0:localhost.localdomain
Message-Id: <20190524123904.6D6E63055398@localhost.localdomain>
Date: Fri, 24 May 2019 08:39:04 -0400 (EDT)
This is an automatically generated mail message from mdadm
running on localhost.localdomain
A DegradedArray event had been detected on md device /dev/md0.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid1]
md0 : active raid1 sdc1[1](F) sdb1[0]
10475520 blocks super 1.2 [2/1] [U_]
unused devices: <none>
Tiếp theo chúng ta thực hiện lệnh sau để xóa đĩa bị lỗi trong RAID:
[root@localhost ~]# mdadm /dev/md0 --remove /dev/sdc1
mdadm: hot removed /dev/sdc1 from /dev/md0
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 24 08:32:19 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 1
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Fri May 24 08:55:30 2019
State : clean
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 16e08f8b:2eaaf81e:87e6d213:4a3b6c37
Events : 49
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
Sau chúng ta thực hiện xoá đĩa bị lỗi trong RAID chúng ta có thể gỡ bỏ nó khỏi máy và thay thế nó bằng một đĩa dự phòng /dev/sdd
.
Sau khi thêm đĩa dự phòng vào chúng ta thực hiện tạo phân vùng cho /dev/sdd
bằng lệnh fdisk
. Khi đã tạo thành công phân vùng chúng ta chạy lệnh bên dưới thêm đĩa vào RAID:
[root@localhost ~]# mdadm --manage /dev/md0 --add /dev/sdd1
mdadm: added /dev/sdd1
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 24 08:32:19 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri May 24 08:55:30 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 16e08f8b:2eaaf81e:87e6d213:4a3b6c37
Events : 49
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
2 8 49 1 active sync /dev/sdd1
Hệ thống sẽ tự động bắt đầu xây dựng lại phần dữ liệu của chúng ta vào đĩa mới thêm vào. Chúng ta có thể kiểm tra bằng cách đánh dấu /dev/sdb1
bị lỗi, xóa nó khỏi RAID và tệp test1.txt vẫn có thể truy cập được tại /raid1:
Trước khi đĩa /dev/sdb1
chưa lỗi:
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 24 08:32:19 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri May 24 08:55:30 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 16e08f8b:2eaaf81e:87e6d213:4a3b6c37
Events : 49
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
2 8 49 1 active sync /dev/sdd1
[root@localhost ~]# ls -l raid1
total 20
drwx------. 2 root root 16384 May 24 08:32 lost+found
-rw-r--r--. 1 root root 14 May 24 08:32 test1.txt
[root@localhost ~]# cat raid1/test1.txt
This is RAID1
Sau khi đĩa /dev/sdb1
lỗi:
[root@localhost ~]# mdadm --remove /dev/md0 /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 24 08:32:19 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Fri May 24 09:00:23 2019
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 16e08f8b:2eaaf81e:87e6d213:4a3b6c37
Events : 52
Number Major Minor RaidDevice State
- 0 0 0 removed
2 8 49 1 active sync /dev/sdd1
[root@localhost ~]# ls -l raid1
total 20
drwx------. 2 root root 16384 May 24 08:32 lost+found
-rw-r--r--. 1 root root 14 May 24 08:32 test1.txt
[root@localhost ~]# cat raid1/test1.txt
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.
8.3. Phục hồi dữ liệu mất mát
mdadm sẽ tự động xây dựng lại dữ liệu khi một đĩa bị lỗi. Nhưng nếu 2 đĩa /dev/sdb1
và /dev/sdd1
thì sẽ như thế nào . Ví dụ bên dưới sẽ hướng dẫn vấn đề này:
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:
[root@localhost ~]# ls -l raid1
total 20
drwx------. 2 root root 16384 May 24 08:32 lost+found
-rw-r--r--. 1 root root 14 May 24 08:32 test1.txt
[root@localhost ~]# cat raid1/test1.txt
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:
[root@localhost ~]# umount raid1
[root@localhost ~]# mdadm --manage --set-faulty /dev/md0 /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0
[root@localhost ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@localhost ~]# mdadm --manage --set-faulty /dev/md0 /dev/sdd1
Để khôi phục dữ liệu từ /dev/sdb1
vào một phân vùng đĩa /dev/sde1
mới bằng cách sử dụng lệnh ddrescue
:
[root@localhost ~]# ddrescue -r 2 --force /dev/sdb1 /dev/sde1
GNU ddrescue 1.17
Press Ctrl-C to interrupt
rescued: 10736 MB, errsize: 0 B, current rate: 339 MB/s
ipos: 10736 MB, errors: 0, average rate: 466 MB/s
opos: 10736 MB, time since last successful read: 0 s
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
:
[root@localhost ~]# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1
mdadm: /dev/sde1 appears to be part of a raid array:
level=raid1 devices=2 ctime=Fri May 24 09:42:31 2019
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Khi hoàn thành tạo RAID mới chúng ta thực hiện kiểm tra dử liệu của chúng ta xem có mất mát gì không:
[root@localhost ~]# mkdir raid1.1
[root@localhost ~]# mount /dev/md0 raid1.1
[root@localhost ~]# ls -l raid1.1
total 20
drwx------. 2 root root 16384 May 24 09:42 lost+found
-rw-r--r--. 1 root root 14 May 24 09:43 test1.txt
[root@localhost ~]# cat raid1.1/test1.txt
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.
9. Cách quản lý software RAID bằng công cụ mdadm
Trước đây cho dù bạn có tuân theo tất cả các hướng dẫn trong loạt RAID này, thì quản lý (manage)software RAID trong Linux là công cụ có thể hổ trợ bạn đắt lực.
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.
9.1. Hiểu các tùy chọn và cách sử dụng mdadm
mdadm cung cấp một tuỳ chọn built-in --help
giải thích chức năng mỗi tùy chọn chính khi sử dụng lệnh mdadm
.
[root@localhost ~]# mdadm built-in --help
mdadm is used for building, managing, and monitoring
Linux md devices (aka RAID arrays)
Usage: mdadm --create device options...
Create a new array from unused devices.
mdadm --assemble device options...
Assemble a previously created array.
mdadm --build device options...
Create or assemble an array without metadata.
mdadm --manage device options...
make changes to an existing array.
...
Để 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:
[root@localhost ~]# mdadm --manage --help
Usage: mdadm arraydevice options component devices...
This usage is for managing the component devices within an array.
The --manage option is not needed and is assumed if the first argument
is a device name or a management option.
The first device listed will be taken to be an md array device, any
subsequent devices are (potential) components of that array.
Options that are valid with management mode are:
--add -a : hotadd subsequent devices to the array
--re-add : subsequent devices are re-added if there were
: recent members of the array
--remove -r : remove subsequent devices, which must not be active
--fail -f : mark subsequent devices a faulty
--set-faulty : same as --fail
--replace : mark device(s) to be replaced by spares. Once
: replacement completes, device will be marked faulty
--with : Indicate which spare a previous '--replace' should
: prefer to use
--run -R : start a partially built array
--stop -S : deactivate array, releasing all resources
--readonly -o : mark array as readonly
--readwrite -w : mark array as readwrite
Một số thao tác thường xuyên sử dụng trong quản lý một RAID bao gồm:
--add
: Thêm một thiết bị vào RAID.--fail
:Đánh dấu một thiết bị là bị lỗi.--remove
: Loại bỏ một thiết bị bị lỗi khỏi RAID.--replace
: Thay thế thiết bị bị lỗi bằng một thiết bị phụ.--run
: Bắt đầu một RAID.--stop
: Dừng một RAID.--readonly
hoặc--readwrite
: Đánh dấu một mảng làro
(chỉ đọc) hoặcrw
(đọc-ghi).
9.2 Quản lý thiết bị RAID
Cú pháp cơ bản để quản lý RAID:
mdadm --manage RAID options devices
Một vài ví dụ về quản lí RAID:
Ví dụ 1: Thêm một thiết bị vào mảng RAID
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:
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 24 09:53:56 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri May 24 13:26:54 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : ab832548:73f97be5:49acca17:171a6890
Events : 18
Number Major Minor RaidDevice State
0 8 65 0 active sync /dev/sde1
1 8 81 1 active sync /dev/sdf1
[root@localhost ~]# mdadm --manage /dev/md0 --add /dev/sdc1
mdadm: added /dev/sdc1
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 24 09:53:56 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri May 24 13:26:54 2019
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : ab832548:73f97be5:49acca17:171a6890
Events : 18
Number Major Minor RaidDevice State
0 8 65 0 active sync /dev/sde1
1 8 81 1 active sync /dev/sdf1
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ế.
Ví dụ 2: Đánh dấu một thiết bị RAID bị lỗi và xóa nó khỏi RAID
Đâ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:
[root@localhost ~]# mdadm --manage /dev/md0 --fail /dev/sde1
mdadm: set /dev/sde1 faulty in /dev/md0
Khi một đĩa được chỉ định là một đĩa lỗi chúng ta chạy lệnh sau để xoá thiit bị khỏi RAID:
[root@localhost ~]# mdadm --manage /dev/md0 --remove /dev/sde1
mdadm: hot removed /dev/sde1 from /dev/md0
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri May 24 09:53:56 2019
Raid Level : raid1
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri May 24 13:31:19 2019
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Rebuild Status : 30% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : ab832548:73f97be5:49acca17:171a6890
Events : 25
Number Major Minor RaidDevice State
2 8 33 0 spare rebuilding /dev/sdc1
1 8 81 1 active sync /dev/sdf1
Ví dụ 3: Đánh dấu một RAID là ro
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
[root@localhost ~]# mdadm --manage /dev/md0 --readonly
[root@localhost ~]# mount /dev/md0 raid1
mount: /dev/md0 is write-protected, mounting read-only
[root@localhost ~]# touch raid1/test1.1.txt
touch: cannot touch ‘raid1/test1.1.txt’: Read-only file system
10. Lời kết
Qua bài trên, giúp cho chúng ta biết cách sử dụng tiện ích mdadm trên hệ điều hành Linux để quản lý RAID. Ngoài ra còn giúp chúng ta biết cách sử dụng các tính năng của mdadm như: cấu hình các RAID, rebuild RAID trên Linux, thay ổ đĩa RAID bị hỏng,... giúp chúng ta đảm bảo dữ liệu của chúng ta một cách an toàn.