Ubuntu 20.04上的安裝軟件RAID

在本教程中,您將學習如何在Ubuntu 20.04上設置軟件RAID。 RAID是獨立磁盤冗餘陣列的首字母縮寫。術語 inexpensive 有時可以代替 independent。 RAID是將多個設備/廉價磁盤驅動器組合成一個陣列,其性能要優於一個大型且昂貴的驅動器。

使用RAID的一些主要原因包括:

•更快的傳輸速度•每秒增加的事務數量•增加了單個塊設備的容量•從單個磁盤故障中恢復的效率更高

RAID有三種可能的類型:固件RAID,硬件RAID和軟件RAID。本指南重點介紹在Ubuntu 20.04上設置軟件RAID。

Ubuntu 20.04上的安裝軟件RAID

軟件RAID用於在內核塊設備代碼中實現各種RAID級別。 Linux內核包含一個 multiple device (MD) 允許RAID解決方案完全獨立於硬件的驅動程序。

RAID級別

可以實現的各種RAID級別包括:

突襲等級0(剝離)

  • 在RAID級別0下,數據在陣列的成員磁盤上進行條帶化/寫入。
  • 條帶化意味着數據被分解成小塊。
  • 數據在陣列的成員驅動器上進行條帶化。
  • 陣列的存儲容量等於成員磁盤/分區的容量之和
  • RAID級別0提供了很高的I / O性能
  • 不提供容錯能力,因此,如果陣列中的一台設備發生故障,則整個陣列都會發生故障。
  • 至少需要兩個存儲設備。

RAID級別1(鏡像)

  • 在RAID級別1中,數據的鏡像副本(相同)被寫入陣列的每個成員驅動器。
  • 提供冗餘,因此具有高數據可用性。如果陣列的一個驅動器成員發生故障,則可以使用其他驅動器中的數據。
  • 1級陣列的存儲容量等於硬件RAID中最小的鏡像硬盤或軟件RAID中最小的鏡像分區的容量,因此空間效率較低。
  • 至少需要兩個存儲設備。

突襲等級5(帶奇偶校驗條帶化)

  • 這是最常用的RAID級別。
  • 至少需要三個存儲驅動器/設備。
  • 在此級別,數據與奇偶校驗信息一起在陣列中的成員驅動器上剝離。奇偶校驗是原始二進制數據,其值是經過計算的,因此,如果陣列中的一個驅動器發生故障,它可用於從其他驅動器重建條帶化數據。
  • 提供容錯能力。
  • 存儲容量等於最小成員分區的容量乘以分區數減一。

RAID級別6(帶雙奇偶校驗的條帶化)

  • 與RAID 5類似,不同之處在於它支持雙重奇偶校驗。
  • 它可以承受陣列中的2個磁盤故障。
  • 至少需要4台設備

RAID級別10(鏡像+剝離)

  • RAID級別10結合了級別0的性能優勢和級別1的冗餘。
  • 通常表示為RAID 1 + 0(鏡像條帶)。
  • 至少需要4台設備。
  • 一半的存儲設備用於數據鏡像,因此空間效率較低。
  • RAID級別中最昂貴的磁盤,具有較低的可用容量和較高的系統成本。

Ubuntu 20.04上的安裝軟件RAID

那麼,如何在Ubuntu 20.04上設置軟件RAID?在本教程中,我們將演示如何在Ubuntu 20.04上設置RAID 1。

創建RAID分區

要設置RAID 1,至少需要兩個驅動器/分區。在演示服務器中,我們已經連接了兩個磁盤, /dev/sdb/dev/sdc 每個4GB,如下所示;

lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0    1M  0 part 
└─sda2   8:2    0   20G  0 part /
sdb      8:16   0    4G  0 disk 
sdc      8:32   0    4G  0 disk 

為了將磁盤用作RAID磁盤,您需要在每個磁盤上創建RAID分區類型。在本演示中,我們使用 parted 為此目的的命令。

  • 設置磁盤上的分區類型。我們用 msdos 在此設置中。
parted -a optimal /dev/sdb mklabel msdos
  • 創建分區並設置文件系統類型。
parted -a optimal /dev/sdb mkpart primary ext4 0% 100%
  • 將該分區設置為軟件RAID分區。
parted -a optimal /dev/sdb set 1 raid on
  • 顯示分區表。
parted -a optimal /dev/sdb print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdb: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4295MB  4294MB  primary               raid

對其他磁盤重複相同的操作。

parted -a optimal /dev/sdc print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4295MB  4294MB  primary               raid

Ubuntu 20.04上的安裝軟件RAID

現在我們已經設置了兩個磁盤,現在您可以繼續在Ubuntu 20.04上設置軟件RAID。

在繼續之前,請確保您已經 mdadm 軟件包已安裝。 mdadm 是可用於管理MD設備(即Linux軟件RAID)的實用程序。

檢查軟件包是否已安裝。

apt list -a mdadm
Listing... Done
mdadm/focal,now 4.1-5ubuntu1 amd64 [installed,automatic]

如果未安裝,則可以通過運行以下命令進行安裝;否則,請執行以下步驟。

apt install mdadm

的基本命令行語法 mdadm 逗號是

mdadm [mode] <raiddevice> [options] <component-devices>

[mode] 指定任何主要的mdadm操作模式,可以是以下其中一種;

  • Assemble (-A, --assemble):將先前創建的數組的組件組裝到活動數組中。
  • Build (-B, --build):構建一個不包含每個設備元數據(超級塊)的數組。
  • Create (-C, --create):使用每個設備的元數據(超級塊)創建一個新的數組。
  • Follow/Monitor (-F, --follow, --monitor):監視一個或多個md設備並根據狀態變化採取行動。這僅對RAID1、4、5、6、10或多路徑陣列有意義。
  • Grow (-G, --grow):增大(或縮小)數組,或以其他方式對其進行整形。
  • Incremental Assembly (-I, --incremental):將單個設備添加到適當的陣列。
  • Manage:這用於處理陣列的特定組件,例如添加新的備用組件和刪除有故障的設備。
  • Misc:這是一種“其他所有”模式,支持對活動陣列的操作,對組件設備的操作(如擦除舊的超級塊)以及信息收集操作。
  • 自動檢測(–自動檢測)注意:此模式不適用於特定的設備或陣列,而是請求Linux內核激活任何自動檢測到的陣列。

因此,以一個示例為例,讓我們看看如何使用上面設置的兩個磁盤來創建RAID 1級。

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[bc]1

選項;

  • -l,–level = 設置RAID級別,可以是以下級別之一: 線性,raid0、0,條帶,raid1、1,鏡像,raid4、4,raid5、5,raid6、6,raid10、10,多路徑
  • -n,–raid-devices = 指定陣列中活動設備的數量。

使用簡短的命令行選項;

mdadm -C /dev/md0 -l raid1 -n=2 /dev/sd[bc]1

有關其他命令行選項,請諮詢, man mdadm

上面的命令創建一個/ dev / md0作為RAID1陣列,該陣列由/ dev / sdb1和/ dev / sdc1驅動器組成。

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.

檢查RAID的狀態;

mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Apr 13 19:55:07 2021
        Raid Level : raid1
        Array Size : 4190208 (4.00 GiB 4.29 GB)
     Used Dev Size : 4190208 (4.00 GiB 4.29 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Tue Apr 13 19:55:27 2021
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : ubuntu20:0  (local to host ubuntu20)
              UUID : 244a7fd9:d6fcc210:9b559249:df999270
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1

列出有關每個RAID設備的詳細信息;

mdadm --examine /dev/sd[bc]1
/dev/sdb1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 244a7fd9:d6fcc210:9b559249:df999270
           Name : ubuntu20:0  (local to host ubuntu20)
  Creation Time : Tue Apr 13 19:55:07 2021
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 8380416 (4.00 GiB 4.29 GB)
     Array Size : 4190208 (4.00 GiB 4.29 GB)
    Data Offset : 6144 sectors
   Super Offset : 8 sectors
   Unused Space : before=6064 sectors, after=0 sectors
          State : clean
    Device UUID : 22f6feda:9f7fbafc:a35dc2d5:441cd0b5

    Update Time : Tue Apr 13 19:55:27 2021
  Bad Block Log : 512 entries available at offset 16 sectors
       Checksum : 117b4439 - correct
         Events : 17


   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 : 244a7fd9:d6fcc210:9b559249:df999270
           Name : ubuntu20:0  (local to host ubuntu20)
  Creation Time : Tue Apr 13 19:55:07 2021
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 8380416 (4.00 GiB 4.29 GB)
     Array Size : 4190208 (4.00 GiB 4.29 GB)
    Data Offset : 6144 sectors
   Super Offset : 8 sectors
   Unused Space : before=6064 sectors, after=0 sectors
          State : clean
    Device UUID : 082b5c2f:c9ebaa8a:90e23cf0:d12db68d

    Update Time : Tue Apr 13 19:55:27 2021
  Bad Block Log : 512 entries available at offset 16 sectors
       Checksum : e6297bc2 - correct
         Events : 17


   Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)

您也可以通過運行以下命令檢查狀態;

cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdc1[1] sdb1[0]
      4190208 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

從上面的輸出;

  • Personalities 一行顯示了內核當前支持的RAID級別。
  • md設備行顯示了陣列的狀態,該設備上設置的當前RAID級別以及該陣列中使用的設備。
  • 另一行表示該數組的可用大小(以塊為單位)
  • [n/m] 例如 [2/2] 顯示該陣列將有n個設備,但是當前有m個設備在使用中。當m> = n時,情況就很好了。

閱讀更多內容 Mdstat頁面

在RAID設備上創建文件系統

創建RAID設備後,需要在其上創建一個文件系統以供掛載和使用。

請注意,如上所示,我們創建了RAID 1,它將兩個4G磁盤合併為一個4G磁盤。

因此,要在md0設備上創建文件系統,然後運行以下命令在RAID設備上創建ext4文件系統。

mkfs.ext4 /dev/md0
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 1047552 4k blocks and 262144 inodes
Filesystem UUID: 97240b9e-8286-49fe-a304-a98bd3f66c42
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

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

掛載軟件RAID設備

現在,您可以將RAID設備安裝在方便的位置。

mount /dev/md0 /mnt/

確認安裝;

df -hT -P /mnt/
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/md0       ext4  3.9G   16M  3.7G   1% /mnt

要在啟動時自動掛載設備,請更新 /etc/fstab 通過添加與以下內容相似的行來進行歸檔;

/dev/md0 /mnt ext4 defaults 0 0

另外,您需要更新 /etc/mdadm/mdadm.conf 通過創建一個原型配置文件來描述當前活動的陣列,這些陣列是已知的使用IDE或SCSI驅動器的分區製成的陣列 mdadm --detail --scan 命令

mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 name=ubuntu20:0 UUID=244a7fd9:d6fcc210:9b559249:df999270

將信息寫入 mdadm.conf,然後運行;

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

一旦您更新了 mdadm.conf,然後可以更新initramfs。

update-initramfs -u

完成後,更新initramfs,您可以重新引導系統以確認RAID設備是否可以自動安裝。

這標誌着我們關於如何在Ubuntu 20.04上設置軟件RAID的指南的結尾。

其他教程

在CentOS 8上安裝和設置GlusterFS存儲集群

在CentOS 8上設置GlusterFS分布式複製卷

在Ubuntu 18.04上安裝和配置Ceph塊設備

在Ubuntu 18.04上設置三節點Ceph存儲集群

Sidebar