khái niệm RAID, các loại RAID, stripping (RAID 0) và monitoring (RAID 1), giải pháp sử dụng khả năng tính toán (RAID 56), khi nào nên sử dụng RAID và nên chọn loại RAID nào, khôi phục ổ đĩa hỏng, phân vùng logic, mở rộng và giảm kích thước phân vùng logic
Trang 1NGHIÊN CỨU VÀ THỰC HÀNH THIẾT LẬP RAID LINUX
1 RAID 1
2 Các loại RAID 1
3 Stripping (RAID 0) và Mirroring (RAID 1) 2
4 Giải pháp sử dụng khả năng tính toán (RAID 5/6) 3
5 RAID 10 (Mirroring + Stripping) 4
6 Khi nào nên sử dụng RAID 4
7 Nên chọn loại RAID nào? 4
8 Tạo một mảng (Thiết lập với RAID 1) 4
9 Thiết lập với RAID 5 9
10 Khôi phục ổ đĩa hỏng 13
11 Quản lý phân vùng logic (Logical Volume Manager LVM) 13
12 Tạo các nhóm và các phân vùng 15
13 Mở rộng một phân vùng logic 17
14 Giảm kích thước phân vùng logic 18
Trang 2
RAID
RAID
Lưu trữ dữ liệu trên hard disk là việc cần thiết để hỗ trợ việc truy cập dữ liệu trên máy chủ, nhưng khi ổ đĩa bị hỏng, dữ liệu có thể bị mất Có một vài cách để giải quyết vấn đề này Một là sử dụng LVM để nhóm nhiều ổ đĩa và thể hiện chúng như một thiết bị Hai là có thể sử dụng BtrFS để làm thực hiện chiến lược như LVM Và cách cuối cùng là sử dụng RAID
RAID cho phép sử dụng nhiều ổ đĩa như thể là một ổ đĩa lớn, cùng với các tùy chọn built-in khác
Có 3 loại RAID phổ biến như sau:
Hardware RAID
Fake RAID
Software RAID
Hardware RAID sử dụng các bộ điều khiển phần cứng thường được gọi là RAID controllers, giúp quản lý RAID một cách trong suốt với hệ điều hành Các máy chủ mức độ doanh nghiệp thường sử dụng các bộ điều khiển phần cứng Ở các hệ thống, việc thiết lập RAID thường được thao tác qua BIOS (basic input/output system) hoặc UEFI(Unified extensible firmware interface)
Fake RAID là dạng nhỏ hơn của hardware RAID được sử dụng trên các hệ thống nhỏ hơn hoặc các máy tiín để bàn Các nhà sản xuất có thể thêm chức năng RAID vào mainboard thông qua chip Loại cài đặt RAID thứ 3 là thông qua phần mềm ở trong nhân Linux Hệ thống này được là md
hoặc đa ổ đĩa hệ thống md thuờng thể hiện tốt hơn fake RAID, và các mảng md RAID có thể di chuyển giữa các máy Báo cáo này tập trung việc sử dụng md RAID
Các loại RAID
Có vài loại - hoặc vài mức độ của RAID Mức dộ sử dụng phụ thuộc vào điều gi quan trọng nhất Các mức độ khác nhau đưa ra các đánh đổi giữa không gian ổ đĩa sẵn có, độ tin cậy và tốc độ
Trang 3Các mức độ RAID thường được sử dụng
Sức chứa lưu trữ được tính bởi N(tổng số lượng ổ đĩa) trong mảng RAID (trừ các ổ đĩa lẻ) sau đó nhân với kích thước của ổ đĩa
Thông thường 1 ổ đĩa cứng được sử dụng như là 1 ổ đĩa dự trữ Khi có 1 ổ đĩa trong mảng lỗi, ổ đĩa dự trữ được thay thế ngay lập tức
Striping (RAID 0) và Morroring (RAID 1)
Cách cơ bản nhất để sử dụng RAID là với 2 ổ đĩa, có thể thiết lập RAID mức 0 hoặc RAID mức độ
1 RAID 0, còn được gọi là striping, coi 2 ổ đĩa như là 1 ổ đĩa kết hợp với kích thước nhân đôi Khi
ghi dữ liệu vào 1 mảng RAID, các phần của dữ liệu sẽ nằm trên mỗi ổ đĩa Vì việc ghi dữ liệu Linux
có thể thực thi đồng thời trên các ổ đĩa, nên ghi dữ liệu vào RAID 0 nhanh hơn việc ghi dữ liệu vào 1
ổ đĩa đơn Tuy nhiên, bất lợi là khi một trong các ổ đĩa hỏng, bất kì phần nào của các files mà đã được lan truyền trên các ổ đĩa sẽ biến mất Vì vậy tất cả dữ liệu bị mất
RAID 1, còn được gọi là mirroring, cho phép chỉ lưu trữ dữ liệu trên mảng như là 1 ổ đĩa đơn Nó luu trữ các bản sao chép giống nhau của các files trên các ổ đĩa, vì vậy nêu một ổ đĩa hỏng, dữ liệu vẫn có thể nhận từ các ổ đĩa còn lại Vì tất cả dữ liệu cần được ghi lên mỗi ổ đĩa, RAID 1 không cung cấp bất kì khả năng cải thiện hiệu năng ghi dữ liệu,
Lưu trữ file RAID 0 và RAID 1
Giải pháp sử dụng khả năng tính toán (RAID 5/6)
Để tối ưu lựa chọn tốt nhất - redunancy(dư thừa), storage size (kích thước lưu trữ) và speed (tốc độ)
có thể gọi sự hỗ trợ của khả năng của vi xử lý RAID mức độ 5 sử dụng tối thiểu 3 ổ đĩa và cung cấp khả năng sử dụng hiệu quả không gian lưu trữ có sẵn và gia tăng tốc độ đọc và ghi Điều này có thể đạt đươc bằng cách striping dữ liệu trên nhiều ổ đĩa và ghi checksum của mỗi stripe vào một ổ đĩa
khác(còn được biết đến là block parity (tính chẵn lẻ khối) Nếu một ổ đĩa lỗi, checksum có thể được
sử dụng xây dựng lại dữ liệu trong các stripe bị thiếu
Trang 4Đánh đổi ở đây là cách tiếp cận này sử dụng sức mạnh của khả năng tính toán để tính checksum Khi dữ liệu được ghi ra mảng, checksum cần được tính và lưu trữ trên một trong các ổ đĩa Nếu 1 ổ đĩa lỗi, checksum sau đó có thể được sử dụng bằng cách kết hợp với dữ liệu còn lại trên các ổ đĩa
để tính lại các phần thiếu của dữ liệu
Ảnh dưới đây mô tả cách dữ liệu và checksum được tách giữa các ổ đĩa B1, B2 và B3 là các phần của file B Bp là 1 checksum hoặc parity (chẵn lẻ) Nếu đĩa 1 hỏng, B2 có thể được tính từ B1, B3 và
Bp, vì vậy khi ổ đĩa thay thế được thêm vào, nội dung của nó sẽ được khôi phục
Bố cục RAID 5 stripe giữa các ổ đĩa
RAID 5 và RAID 6 thường là lựa chọn tốt cho các máy chủ web, máy chủ file và các hệ thống mục đích chung khác nơi mà hầu hết các giao dịch là đọc
RAID 5 và RAID 6 không phải là lựa chọn tốt nhất cho môi trường cần ghi nhiều dữ liệu, cụ thể là máy chủ cơ sở dữ liệu, vì nó sẽ có thể làm hại tới hiệu năng tổng thể
Trong trường hợp 1 ổ đĩa hỏng, cần phải hy sinh hiệu năng để giữ hệ thống hoạt động Một khi ổ đĩa hỏng được thay, dữ liệu sẽ cần được xây dựng lại dựa trên thông tin chẵn lẻ Điều này sẽ mất một khoảng đáng kể của toàn bộ hiệu năng của mảng Thời gian cho những lần xây dựng lại này tiếp tục tăng lên sau mỗi năm, vì các ổ đĩa ngày càng lớn hơn
Lưu ý rằng, sử dụng RAID không phải là giải pháp thay thế cho việc tạo backup thông thường Sử dụng RAID sẽ phòng ngừa trường hợp phần cứng hỏng nhưng không phải cho việc xóa dữ liệu có chủ đích
RAID 10 (Morroring + Stripping)
RAID 10 yêu cầu ít nhất 4 ổ đĩa và là sự kết hợp của RAID 1 và RAID 0 Điều này sẽ giúp tăng cả tốc độ và sự dự trữ RAID 10 thường được khuyến nghị sử dụng nếu có nhu cầu về tốc độ nhưng
Trang 5vẫn cần sự dư thừa Trong trường hợp dùng 4 ổ đĩa cứng, hai ổ đĩa cứng được tạo bản sao
(mirroring) giữ một nửa dữ liệu được cắt (strip) và hai bản sao còn lại giữ nửa dữ liệu còn lại Điều này có nghĩa là nếu một ổ đĩa bất kỳ nào hỏng, họăc thậm chí có thêm ổ đĩa thứ 2 bị hỏng (ổ đĩa ở trong nhóm 2 ổ được sao chép còn lại) thì dữ liệu vẫn không bị mất
Khi nào nên sử dụng RAID
RAID cực kì hữu dụng nếu thời gian vận hành và tính sẵn có là quan trọng Backup sẽ đảm bảo việc mất mát dữ liệu Nhưng, việc phục hồi lượng lớn dữ liệu, khi gặp sự cố ổ đĩa hỏng, có thể mấy hàng tiếng đồng hồ để thực hiện Các bản backup có thể từ hàng giờ hoặc hàng ngày trước, các phần dữ liệu được lưu và được thay đổi sẽ không có trong bản backup gần đây nhất RAID cho phép dù có một hoặc nhiều ổ đĩa hỏng thì vẫn không có dữ liệu bị mất và trong nhiều trường hợp, không phải chịu thời gian ngưng chạy của hệ thống
RAID cũng hữu dụng nếu có vấn đề liên quan đến đọc ghi (IO), trường hợp mà các ứng dụng đang đợi trên ổ đĩa để thực hiện các công việc RAID cung cấp nhiều thông lượng hơn bằng việc cho phép đọc và ghi dữ liệu từ nhiều ổ cứng thay vì một
Nên chọn loại RAID nào?
Không sử dụng RAID: nếu hệ thống có thể chịu đựng vài tiếng đồng hồ bị down và/ họă mất dữ liệu trong khi khôi phục hệ thống từ các bản backup
RAID 0: Nếu dữ liệu không quan trọng và có thể để mất, nhưng hiệu năng lại quan trọng (cụ thể
là cache)
RAID 1: Nêu cần ưu tiên việc dư dữ liệu để đảm bảo thời gian chạy hệ thống (uptime) một cách không tốn kém
RAID 5/6: Nêu có máy chủ web, môi trường đọc dữ liệu cao họăc có các mảng lưu trữ rất lớn như
là một đối tượng
RAID 10: Cân bằng giữa tốc độ đọc ghi cũng như việc dự trữ dữ liệu
Tạo một mảng (Thiết lập với RAID 1)
Để bảo vệ dữ liệu trên máy khỏi trường hợp ô đĩa bị hỏng, vì vậy việc sử dụng RAID là cần thiết Việc sử dụng mức độ RAID nào phụ thuộc số lượng ổ đĩa cứng có sẵn Đầu tiên cần bảo đảm rằng
có ít nhất 3 ổ đĩa và tạo các partition có kích thước giống nhau trên chúng
Nếu không có đủ ổ đĩa để sử dụng RAID, có thể sử dụng nhiều partitions có kích thước
giống nhau trên một ổ đĩa và sử dụng chúng như là các thành phần trong mảng RAID Cách này cho phép thử cài đặt và quản lý RAID Hiệu năng theo cách thiết lập này sẽ khá chậm,
vì dữ liệu sẽ cần được ghi vào các phần khác nhau của cùng một ổ đĩa nhiều lần Nó cũng
không cung cấp khả năng phục hồi chống lại ổ đĩa lỗi Nếu ổ đĩa này hỏng, thì mảng RAID
cũng sẽ lỗi
Trang 6Ví dụ đầu tiên khởi tạo RAID 1, cần sử dụng 3 partition (ở ví dụ này là /dev/sda2 /dev/sda3 và /dev/sda4) với kích thước giống nhau thì RAID mới hoạt động được Thiết lập tạo 3 partition 1 G và thiết lập loại partition là fd00 - Linux RAID
$ sudo gdisk /dev/sda3
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-16777182, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-16777182, default = 16777182) or {+-}size{KMGTP}: 2G Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): fd00
Changed type of partition to 'Linux RAID'
Command (? for help): w
Final checks complete About to write GPT data THIS WILL OVERWRITE
EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdc
The operation has completed successfully
Trang 7Xóa bảng phân vùng và tạo 1 phân vùng RAID Lặp lại tiến trình này cho 2 partition /dev/sda2 và /dev/sda4 Tuy nhiên nếu các ổ đĩa có cùng kích thước (lựa chọn tốt nhất là các ổ đĩa cùng nhà sản xuất), việc phân chia các ổ đĩa là không cần thiết
Sử dụng package mdadm để thao tác và quản lý RAID Để tạo một mảng, cần chỉ định chế độ
create , mức độ RAID và các partition thành phần của mảng
$ sudo mdadm create /dev/md0 level=raid1 raid-devices=2 /dev/sda2 /dev/sda3
spare-devices=1 /dev/sda4
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
Câu lệnh trên tạo 1 thiết bị có thể gắn (mount) là /dev/md0 và đây cũng là thiết bị RAID 1 được tạo bởi 2 partitions /dev/sda2 và /dev/sda3 , /dev/sda4 là partition dự trữ
Tạo hoặc chạy một mảng RAID sẽ khiến module nhân md được tải lên và hiển thị thông tin trạng thái Kiểm tra log nhân qua lệnh dmesg
Trang 8$ sudo dmesg
[ 9508.794689] md: bind<sdc>
[ 9508.795609] md: bind<sdd>
[ 9508.795996] md: bind<sde>
[ 9508.806492] md: raid1 personality registered for level 1
[ 9508.807304] md/raid1:md0: not clean starting
background reconstruction
[ 9508.807306] md/raid1:md0: active with 2 out of 2 mirrors
[ 9508.807318] md0: detected capacity change from 0 to 8584626176 [ 9508.809302] RAID1 conf printout:
[ 9508.809305] - wd:2 rd:2
[ 9508.809306] disk 0, wo:0, o:1, dev:sdc
[ 9508.809307] disk 1, wo:0, o:1, dev:sdd
[ 9508.812318] md: resync of RAID array md0
[ 9508.812320] md: minimum _guaranteed_ speed: 1000 KB/sec/disk
[ 9508.812321] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for resync
[ 9508.812323] md: using 128k window, over a total of 8383424k
[ 9508.821845] md0: unknown partition table
[ 9550.509411] md: md0: resync done
[ 9550.516479] RAID1 conf printout:
[ 9550.516481] - wd:2 rd:2
[ 9550.516483] disk 0, wo:0, o:1, dev:sdc
[ 9550.516484] disk 1, wo:0, o:1, dev:sdd
[ 9550.517712] RAID1 conf printout:
[ 9550.517715] - wd:2 rd:2
[ 9550.517716] disk 0, wo:0, o:1, dev:sdc
[ 9550.517717] disk 1, wo:0, o:1, dev:sdd
Để kiểm tra trạng thái của thiết bị RAID, sử dụng lệnh mdadm với chế độ truy vấn detail
$ sudo mdadm query detail /dev/md0 /dev/md0:
Version : 1.2
Creation Time : Mon Jun 20 09:41:18 2016
Raid Level : raid1
Array Size : 8383424 (8.00 GiB 8.58 GB)
Used Dev Size : 8383424 (8.00 GiB 8.58 GB)
Raid Devices : 2
Trang 9Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Jun 20 09:42:00 2016
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1 Name : au-mel-centos-1.example.com:0 (local to host gateway.example.com)
UUID : ca66c4e2:49e8c87e:94d311de:01ca4f55
Events : 17
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sda2
1 8 49 1 active sync /dev/sda3
2 8 65 - spare /dev/sda4
Hiển thị thông tin về mảng, cũng như là trang thái chi tiết của mỗi thành phần Trong ví dụ
đang sử dụng mảng RAID 1, có thể thấy /dev/sda2` /dev/sda3 đang ở trạng
hỏng, partition dự trữ (/dev/sda4) sẽ tự động được kích hoạt và đồng bộ
Có thể kiểm tra nhanh thiết bị RAID bằng cách truy vấn file hệ thống /proc :
$ sudo cat /proc/mdstat Personalities :
[raid1] md0 : active raid1 sda4[2](S)
sda3[1] sda2[0]
2045952 blocks super 1.2 [2/2] [UU]
unused
devices: <none>
Kí hiệu [UU] thể hiện [2/2] thiết bị đang hoạt động Nêu một thiết bị gỡ hoặc hỏng, kết quả có thể
là [U_] (S) sau thiết bị thể hiện nó đang được sử dụng như là vùng dự trữ
Vào lúc khởi động, máy Linux sẽ gọi mdadm Phụ thuộc vào thiết lập của nó, công cụ sẽ quét tất cả các partition hoặc các ổ đĩa được định nghĩa cho siêu khối RAID Nếu tìm được bất cứ cái nào, nó
sẽ phân tích chúng và cố gắng lắp ghép và bắt đầu tất cả mảng RAID Có thể định nghĩa rõ ràng các mảng RAID trong file thiết lập của mdadm , để đảm bảo các tên node thiết bị không thay đổi File thiết lập định nghĩa các mảng trong /etc/mdadm/mdadm.conf trên Ubuntu
# mdadm.conf
# # Please refer to mdadm.conf(5) for information about this file.
#
Trang 10# by default (built-in), scan all partitions (/proc/partitions) and
all # containers for MD superblocks alternatively, specify devices to scan, using # wildcards if desired.
#DEVICE partitions containers
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# automatically tag new arrays as belonging to the local system
HOMEHOST <system>
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
# This file was auto-generated on Tue, 10 May 2016 21:55:12 +1000
# by mkconf $Id$
File config madadm.conf mặc định
Để thêm định nghĩa cho mảng RAID 1, thêm vào mdadm.conf dòng sau:
ARRAY /dev/md0 level=raid1 num-devices=2 spares=1
UUID=b2847c74:af06ebb0:9a1f19f6:132aed7f
devices=/dev/sda2,/dev/sda3,/dev/sda4
Thiết lập với RAID 5
Nêu có ít nhất 4 ổ đĩa cứng, có thể tạo được RAID 5 Để tạo mảng RAID 5, cần tháo mảng RAID 1 đầu tiên Để dừng mảng RAID 1, giải phóng tất cả thiết bị nó sử dụng:
$ sudo mdadm manage /dev/md0 stop
mdadm: stopped /dev/md0
Có thể sử dụng những thiết bị đã tháo rời (/dev/sda2 , ) cho mảng RAID 5 mới Xóa thiết lập đã thêm ở file mdadm.conf Thiết lập các partition dưới dạng "Linux RAID" bằng lệnh sudo gdisk /dev/sdax