You are on page 1of 134

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ặc rw (đọ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.

You might also like