Sunday, January 19, 2025

RAID md (Multiple Devices) trong hệ điều hành Linux

-

1. Tổng quan.

RAID md (Multiple Devices) là một công nghệ trong Linux cho phép bạn kết hợp nhiều ổ đĩa cứng vật lý thành một hệ thống lưu trữ duy nhất. RAID md cung cấp các cấp độ RAID khác nhau, bao gồm RAID 0, RAID 1, RAID 5, RAID 6 và RAID 10, mỗi cấp độ có các đặc điểm và lợi ích riêng.

  • RAID 0 (Striping): Dữ liệu được chia thành các phần nhỏ và ghi trên tất cả các ổ đĩa. Tốc độ đọc/ghi tăng lên nhưng không có sự dự phòng nên nếu một ổ đĩa hỏng, dữ liệu sẽ mất hết.
  • RAID 1 (Mirroring): Dữ liệu được ghi đồng thời trên tất cả các ổ đĩa. Nếu một ổ đĩa hỏng, dữ liệu vẫn còn trên các ổ đĩa khác.
  • RAID 5 (Striping with Parity): Dữ liệu và thông tin parity (dùng để phục hồi dữ liệu) được phân tán trên tất cả các ổ đĩa. Nếu một ổ đĩa hỏng, dữ liệu có thể được phục hồi từ các ổ đĩa còn lại.
  • RAID 6 (Striping with Double Parity): Tương tự như RAID 5 nhưng có thêm một bit parity nữa, cho phép hệ thống chịu được việc hỏng của hai ổ đĩa cùng lúc.
  • RAID 10 (Striped Mirrors): Kết hợp của RAID 0 và RAID 1, cung cấp cả tốc độ và sự dự phòng.

2. Cài đặt.

mdadm không phải lúc nào cũng được cài đặt sẵn trên tất cả các bản phân phối Linux. Tuy nhiên, bạn có thể cài đặt nó dễ dàng thông qua trình quản lý gói của hệ điều hành.

Ví dụ, nếu bạn đang sử dụng Ubuntu hoặc một bản phân phối Linux khác dựa trên Debian, bạn có thể cài đặt mdadm bằng cách sử dụng lệnh sau trong terminal:

sudo apt-get update
sudo apt-get install mdadm

Đối với CentOS, Fedora hoặc các bản phân phối Linux khác dựa trên Red Hat, bạn có thể sử dụng lệnh sau:

sudo yum install mdadm

Sau khi cài đặt, bạn có thể kiểm tra phiên bản mdadm bằng cách sử dụng lệnh sau:

shell> mdadm --version
mdadm - v4.1 - 2018-10-01

3. Hướng dẫn sử dụng.

Dưới đây là một số cách cơ bản để sử dụng mdadm để quản lý RAID:

Tạo một mảng RAID mới:

Để tạo một mảng RAID mới, bạn sẽ cần sử dụng lệnh mdadm --create. Ví dụ, để tạo một mảng RAID 1 với hai ổ đĩa /dev/sdb và /dev/sdc, bạn có thể sử dụng lệnh sau:

sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

Kiểm tra trạng thái của mảng RAID:

Bạn có thể kiểm tra trạng thái của mảng RAID bằng cách sử dụng lệnh mdadm --detail. Ví dụ:

sudo mdadm --detail /dev/md0

Thêm ổ đĩa vào mảng RAID:

Để thêm một ổ đĩa vào mảng RAID, bạn có thể sử dụng lệnh mdadm --add. Ví dụ, để thêm ổ đĩa /dev/sdd vào mảng /dev/md0, bạn có thể sử dụng lệnh sau:

sudo mdadm --add /dev/md0 /dev/sdd

Loại bỏ ổ đĩa khỏi mảng RAID:

Để loại bỏ một ổ đĩa khỏi mảng RAID, bạn có thể sử dụng lệnh mdadm --remove. Ví dụ, để loại bỏ ổ đĩa /dev/sdd khỏi mảng /dev/md0, bạn có thể sử dụng lệnh sau:

sudo mdadm --remove /dev/md0 /dev/sdd

Dừng mảng RAID:

Để dừng một mảng RAID, bạn có thể sử dụng lệnh mdadm --stop. Ví dụ:

sudo mdadm --stop /dev/md0

Khởi động lại mảng RAID:

Để khởi động lại một mảng RAID, bạn có thể sử dụng lệnh mdadm --assemble. Ví dụ:

sudo mdadm --assemble /dev/md0

Lưu ý rằng bạn cần thay thế /dev/md0/dev/sdb/dev/sdc và /dev/sdd với các tên thiết bị phù hợp trong hệ thống của bạn.

4. Ví dụ thực hành.

Mình sử dụng lệnh lsblk kiểm tra danh sách ổ đĩa và mình có danh sách các ổ đĩa và phân vùng như dưới. Mình sử dụng 3 ổ đĩa nvme0n2, nvme0n3 và nvme0n4 và tạo Raid5 cho nó.

shell> lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0 91.9M  1 loop /snap/lxd/24065
loop1                       7:1    0   34M  1 loop /snap/snapd/21185
loop2                       7:2    0 57.9M  1 loop /snap/core20/1614
loop3                       7:3    0   61M  1 loop /snap/lxd/22761
sr0                        11:0    1 1024M  0 rom
nvme0n1                   259:0    0   50G  0 disk
├─nvme0n1p1               259:1    0  1.1G  0 part /boot/efi
├─nvme0n1p2               259:2    0    2G  0 part /boot
└─nvme0n1p3               259:3    0   47G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0   47G  0 lvm  /
nvme0n2                   259:4    0   30G  0 disk
nvme0n3                   259:5    0   30G  0 disk
nvme0n4                   259:6    0   30G  0 disk

Để tạo một mảng RAID 5 với ba ổ đĩa nvme0n2, nvme0n3 và nvme0n4, bạn có thể sử dụng lệnh sau:

shell> sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 31439872K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Lệnh trên sẽ tạo một mảng RAID 5 mới tên là /dev/md0 với ba ổ đĩa nvme0n2, nvme0n3 và nvme0n4. Kết quả khi bạn sử dụng lại lệnh lsblk sẽ có khác đôi chút về 3 ổ đĩa vừa Raid5 như dưới.

shell> lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0                       7:0    0 91.9M  1 loop  /snap/lxd/24065
loop1                       7:1    0   34M  1 loop  /snap/snapd/21185
loop2                       7:2    0 57.9M  1 loop  /snap/core20/1614
loop3                       7:3    0   61M  1 loop  /snap/lxd/22761
sr0                        11:0    1 1024M  0 rom
nvme0n1                   259:0    0   50G  0 disk
├─nvme0n1p1               259:1    0  1.1G  0 part  /boot/efi
├─nvme0n1p2               259:2    0    2G  0 part  /boot
└─nvme0n1p3               259:3    0   47G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0   47G  0 lvm   /
nvme0n2                   259:4    0   30G  0 disk
└─md0                       9:0    0   60G  0 raid5
nvme0n3                   259:5    0   30G  0 disk
└─md0                       9:0    0   60G  0 raid5
nvme0n4                   259:6    0   30G  0 disk
└─md0                       9:0    0   60G  0 raid5

Bạn có thể kiểm tra trạng thái của mảng RAID bằng cách sử dụng lệnh mdadm --detail.

shell> sudo mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Wed May  1 05:46:17 2024
        Raid Level : raid5
        Array Size : 62879744 (59.97 GiB 64.39 GB)
     Used Dev Size : 31439872 (29.98 GiB 32.19 GB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Wed May  1 05:48:56 2024
             State : clean
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : ubuntu2004:0  (local to host ubuntu2004)
              UUID : dca0024e:090ddbd3:e0bdbf63:fff3c058
            Events : 18

    Number   Major   Minor   RaidDevice State
       0     259        4        0      active sync   /dev/nvme0n2
       1     259        5        1      active sync   /dev/nvme0n3
       3     259        6        2      active sync   /dev/nvme0n4

Sau khi tạo mảng RAID, để sử dụng bạn cần định dạng lại md0. Bạn có thể sử dụng mkfs để định dạng, ví dụ:

shell> sudo mkfs.ext4 /dev/md0
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 15719936 4k blocks and 3932160 inodes
Filesystem UUID: 6f9c98ad-b058-40d4-b407-aeb5b319d324
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624, 11239424

Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done

Cuối cùng, bạn cần mount mảng mdo vào một thư mục để sử dụng. Đầu tiên, tạo một thư mục mount.

sudo mkdir /mnt/myraid

Sau đó, mount mảng RAID vào thư mục mới:

sudo mount /dev/md0 /mnt/myraid

Kết quả khi sử dụng lệnh df.

shell> df -hT
Filesystem                        Type      Size  Used Avail Use% Mounted on
udev                              devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                             tmpfs     392M  1.2M  391M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4       46G  6.3G   38G  15% /
tmpfs                             tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs                             tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs                             tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/nvme0n1p2                    ext4      2.0G  107M  1.7G   6% /boot
/dev/nvme0n1p1                    vfat      1.1G  5.1M  1.1G   1% /boot/efi
/dev/loop1                        squashfs   35M   35M     0 100% /snap/snapd/21185
/dev/loop0                        squashfs   92M   92M     0 100% /snap/lxd/24065
/dev/loop2                        squashfs   58M   58M     0 100% /snap/core20/1614
/dev/loop3                        squashfs   62M   62M     0 100% /snap/lxd/22761
tmpfs                             tmpfs     392M     0  392M   0% /run/user/1000
/dev/md0                          ext4       59G   24K   56G   1% /mnt/myraid

Để đảm bảo mảng RAID được mount tự động sau khi khởi động, bạn cần thêm nó vào file /etc/fstab.

Để thêm mảng RAID vào file /etc/fstab để nó tự động mount khi khởi động, bạn cần biết UUID (Universal Unique Identifier) của mảng RAID.

Bạn có thể lấy UUID bằng cách sử dụng lệnh blkid:

shell> sudo blkid /dev/md0
/dev/md0: UUID="6f9c98ad-b058-40d4-b407-aeb5b319d324" TYPE="ext4"

Sau đó, bạn mở file /etc/fstab và thêm một dòng mới với thông tin sau:

UUID=6f9c98ad-b058-40d4-b407-aeb5b319d324 /mnt/myraid ext4 defaults 0 0

Trong đó, 6f9c98ad-b058-40d4-b407-aeb5b319d324 là UUID của mảng RAID, /mnt/myraid là thư mục mount, ext4 là định dạng phân vùng và defaults 0 0 là các tùy chọn mount.

Sau khi thêm dòng mới, lưu và đóng file. Mảng RAID sẽ tự động mount khi bạn khởi động lại hệ thống.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories