RAID 0 軟件實現(Linux 系統)


實現raid有2種方式:

軟件 RAID 的性能較低,因為其使用主機的資源。 需要加載 RAID 軟件以從軟件 RAID 卷中讀取數據。在加載 RAID 軟件前,操作系統需要引導起來才能加載 RAID 軟件。在軟件 RAID 中無需物理硬件。零成本投資。

硬件 RAID 的性能較高。他們采用 PCI Express 卡物理地提供有專用的 RAID 控制器。它不會使用主機資源。他們有 NVRAM 用於緩存的讀取和寫入。緩存用於 RAID 重建時,即使出現電源故障,它會使用后備的電池電源保持緩存。對於大規模使用是非常昂貴的投資。

RAID有不同的級別。在這里,我們僅列出在真實環境下的使用最多的 RAID 級別。

    • RAID0 = 條帶化
    • RAID1 = 鏡像
    • RAID5 = 單磁盤分布式奇偶校驗
    • RAID6 = 雙磁盤分布式奇偶校驗
    • RAID10 = 鏡像 + 條帶。(嵌套RAID)

RAID 0是最早出現的RAID模式,即Data Stripping數據分條技術。RAID 0是組建磁盤陣列中最簡單的一種形式,只需要2塊以上的硬盤即可,成本低,可以提高整個磁盤的性能和吞吐量。

RAID 0沒有提供冗余或錯誤修復能力,但實現成本是最低的。

RAID 0最簡單的實現方式就是把N塊同樣的硬盤用硬件的形式通過智能磁盤控制器或用操作系統中的磁盤驅動程序以軟件的方式串聯在一起創建一個大的卷集。在使用中電腦數據依次寫入到各塊硬盤中,它的最大優點就是可以整倍的提高硬盤的容量。如使用了三塊80GB的硬盤組建成RAID 0模式,那么磁盤容量就會是240GB。其速度方面,和單獨一塊硬盤的速度完全相同。最大的缺點在於任何一塊硬盤出現故障,整個系統將會受到破壞,可靠性僅為單獨一塊硬盤的1/N。

為了解決這一問題,便出現了RAID 0的另一種模式。即在N塊硬盤上選擇合理的帶區來創建帶區集。其原理就是將原先順序寫入的數據被分散到所有的四塊硬盤中同時進行讀寫。四塊硬盤的並行操作使同一時間內磁盤讀寫的速度提升了4倍。

在創建帶區集時,合理的選擇帶區的大小非常重要。如果帶區過大,可能一塊磁盤上的帶區空間就可以滿足大部分的I/O操作,使數據的讀寫仍然只局限在少數的一、兩塊硬盤上,不能充分的發揮出並行操作的優勢。另一方面,如果帶區過小,任何I/O指令都可能引發大量的讀寫操作,占用過多的控制器總線帶寬。因此,在創建帶區集時,我們應當根據實際應用的需要,慎重的選擇帶區的大小。

帶區集雖然可以把數據均勻的分配到所有的磁盤上進行讀寫。但如果我們把所有的硬盤都連接到一個控制器上的話,可能會帶來潛在的危害。這是因為當我們頻繁進行讀寫操作時,很容易使控制器或總線的負荷 超載。為了避免出現上述問題,建議用戶可以使用多個磁盤控制器。最好解決方法還是為每一塊硬盤都配備一個專門的磁盤控制器。

雖然RAID 0可以提供更多的空間和更好的性能,但是整個系統是非常不可靠的,如果出現故障,無法進行任何補救。所以,RAID 0一般只是在那些對數據安全性要求不高的情況下才被人們使用。

1、准備工作

安裝系統后,主板上連接2塊硬盤,這里我用虛擬機做實驗。

試驗系統:Centos 8.1.1911

2、創建邏輯卷RAID 0

查看本地磁盤及分區

[root@192 ~]# lsblk
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda           8:0    0  10G  0 disk
├─sda1        8:1    0   1G  0 part /boot
└─sda2        8:2    0   9G  0 part
  ├─cl-root 253:0    0   8G  0 lvm  /
  └─cl-swap 253:1    0   1G  0 lvm  [SWAP]
sdb 8:16 0 1G 0 disk sdc 8:32 0 1G 0 disk
sr0          11:0    1   7G  0 rom

使用sdb和sdc做raid0

mdadm -C /dev/md0 -l raid0 -n 2 /dev/sdb /dev/sdc

mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc

[root@192 ~]# mdadm -C /dev/md0 -l raid0 -n 2 /dev/sdb /dev/sdc
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
  • -C – 創建
  • -l – 級別
  • -n – RAID 設備數

查看活動的raid級別

[root@192 ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdc[1] sdb[0]
      2093056 blocks super 1.2 512k chunks

unused devices: <none>

查看RAID陣列

[root@192 ~]# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Jun  5 07:59:35 2020
        Raid Level : raid0
        Array Size : 2093056 (2044.00 MiB 2143.29 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Fri Jun  5 07:59:35 2020
             State : clean
 Active Devices : 2 Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : 192.168.94.130:0  (local to host 192.168.94.130)
              UUID : f36becb8:6f8a4377:5973e533:79b43a1d
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

查看當前磁盤狀態

[root@192 ~]# lsblk
NAME        MAJ:MIN RM SIZE RO TYPE  MOUNTPOINT
sda           8:0    0  10G  0 disk
├─sda1        8:1    0   1G  0 part  /boot
└─sda2        8:2    0   9G  0 part
  ├─cl-root 253:0    0   8G  0 lvm   /
  └─cl-swap 253:1    0   1G  0 lvm   [SWAP]
sdb           8:16   0   1G  0 disk
└─md0         9:0    0   2G  0 raid0
sdc           8:32   0   1G  0 disk
└─md0         9:0    0   2G  0 raid0
sr0          11:0    1   7G  0 rom
[root@192 ~]#

3、RAID陣列掛載使用

將 RAID 設備 /dev/md0 創建為 ext4 文件系統,並掛載到 /mnt/raid0 下

創建一個文件,測試。

[root@192 ~]# mkfs.ext4 /dev/md0
mke2fs 1.44.6 (5-Mar-2019)
Creating filesystem with 523264 4k blocks and 130816 inodes
Filesystem UUID: 00e96452-49b7-46d9-bc06-7f13c0abb56b
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912

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

[root@192 ~]# mkdir /mnt/raid0
[root@192 ~]# mount /dev/md0 /mnt/raid0
[root@192 ~]# echo "this is raid 0, ext4 filesystem" > /mnt/raid0/readme.txt
[root@192 ~]# ll /mnt/raid0/
total 20
drwx------. 2 root root 16384 Jun  5 08:11 lost+found
-rw-r--r--. 1 root root    32 Jun  5 08:14 readme.txt
[root@192 ~]#

4、配置fstab自動掛載

使用UUID和路徑掛載都可以。

[root@192 ~]# umount /mnt/raid0
[root@192 ~]#
[root@192 ~]# blkid /dev/md0
/dev/md0: UUID="00e96452-49b7-46d9-bc06-7f13c0abb56b" TYPE="ext4"
[root@192 ~]# vim /etc/fstab
[root@192 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Jun  4 02:28:07 2020
#
# 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.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=10be244e-bd87-44d2-8531-e736343939b8 /boot                   ext4    defaults        1 2
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
UUID="00e96452-49b7-46d9-bc06-7f13c0abb56b" /mnt/raid0 ext4 defaults 0 0 #/dev/md0 /mnt/raid0 ext4 defaults 0 0
[root@192 ~]# mount -a
[root@192 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             382M     0  382M   0% /dev
tmpfs                399M     0  399M   0% /dev/shm
tmpfs                399M   11M  388M   3% /run
tmpfs                399M     0  399M   0% /sys/fs/cgroup
/dev/mapper/cl-root  8.0G  1.8G  6.2G  23% /
/dev/sda1            976M  139M  771M  16% /boot
tmpfs                 80M     0   80M   0% /run/user/0
/dev/md0             2.0G  6.1M  1.9G   1% /mnt/raid0
[root@192 ~]# ll /mnt/raid0/
total 20
drwx------. 2 root root 16384 Jun  5 08:11 lost+found
-rw-r--r--. 1 root root    32 Jun  5 08:14 readme.txt
[root@192 ~]# cat /mnt/raid0/readme.txt
this is raid 0, ext4 filesystem
[root@192 ~]#

5、保存raid配置文件

mdadm --detail --scan --verbose >> /etc/mdadm.conf

mdadm -E -s -v >> /etc/mdadm.conf

[root@192 ~]# mdadm -E -s -v >> /etc/mdadm.conf
[root@192 ~]# cat /etc/mdadm.conf
ARRAY /dev/md/0  level=raid0 metadata=1.2 num-devices=2 UUID=f36becb8:6f8a4377:5973e533:79b43a1d name=192.168.94.130:0
   devices=/dev/sdc,/dev/sdb
[root@192 ~]#

以后可以查看參考。


讀書和健身總有一個在路上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM