全部產品
Search
文件中心

Elastic Compute Service:建立RAID陣列(Linux)

更新時間:Jul 16, 2026

獨立冗餘磁碟陣列RAID(Redundant Array of Independent Disks)是將多塊雲端硬碟按一定的方式組成一個磁碟陣列組。相比單塊雲端硬碟,RAID能夠有效地提高磁碟的容量、讀寫頻寬、可靠性和可用性。

前提條件

已按需建立並掛載多塊具有相同容量和類型的資料盤。具體操作,請參見建立空資料盤掛載資料盤

RAID使用建議

RAID層級

下表對比了RAID常見的幾種層級優缺點以及適用情境。

層級

優勢

劣勢

適用情境

RAID 0(條帶)

提供了資料條帶化和並行讀/寫操作,從而提高了效能。

說明

RAID條帶化是指將資料分成固定大小的塊(條帶),然後將這些塊依次分配到不同的磁碟機上。

沒有冗餘功能,如果其中一塊雲端硬碟出現故障,所有資料都將丟失。

適用於需要高效能但無需資料冗餘的情境,如臨時資料存放區、緩衝等。

RAID 1(鏡像)

通過資料鏡像提供了高可靠性。所有資料都會被複製到多塊雲端硬碟上,當一塊雲端硬碟故障時,資料仍然可用。

成本較高,因為至少需要兩倍的雲端硬碟容量來儲存鏡像資料。

適用於對資料保護和可靠性要求較高的應用,如資料庫、檔案伺服器等。

RAID 10

結合了RAID 1和RAID 0,提供了資料冗餘和高效能。RAID 10的優點是具有較高的可靠性和較好的讀/寫效能。

成本較高,因為需要兩倍的雲端硬碟容量來儲存鏡像資料。至少需要四塊雲端硬碟。

適用於對效能和冗餘性要求較高的應用。

在選擇適當的RAID層級時,需要綜合考慮資料保護需求、效能需求、可用的磁碟容量和成本等因素。最好評估不同RAID層級的優缺點,並根據具體的應用需求作出選擇。

假如要按序儲存A、B、C、D、E、F等資料區塊,不同RAID模式的表現情況如下圖所示。

說明

在您使用多塊雲端硬碟做RAID來提高磁碟的容量、讀寫頻寬的同時,請同時考慮執行個體整體對雲端硬碟頻寬的限制。不同執行個體規格的雲端硬碟頻寬節流設定,請參見執行個體規格類型系列

RAID條帶大小

通過使用合適的條帶大小,可以獲得最佳的應用實踐。最適合的條帶大小可能因不同的環境和應用而異。因此,建議在實際使用之前進行測試和效能評估,以確定最佳的條帶大小設定。

根據應用的工作負載類型、I/O模式和系統的特定需求,推薦以下條帶大小:

  • 對於大多數通用用途的工作負載,推薦的條帶大小是64 KB或128 KB。這個範圍在大多數情況下可以提供良好的效能和均衡的讀/寫效能。

  • 如果工作負載主要是順序讀取(例如大型檔案傳輸、視頻編輯等),則更大的條帶大小(例如256 KB或512 KB)可能會提供更好的效能。

  • 如果您的工作負載主要是隨機讀取(例如資料庫應用等),則較小的條帶大小(例如32 KB)可能會提供更好的效能。

重要

在使用過程中,條帶不宜太小。如果條帶太小:

  • 可能會導致檔案在磁碟上的片段化,從而浪費了磁碟空間。

  • 可能會導致磁碟IOPS(每秒讀寫次數)能力先於吞吐頻寬被打滿。較大的條帶大小可以在順序讀取工作負載中提供更高的資料輸送量。

雲端硬碟快照使用限制

如果要使用快照備份RAID陣列中雲端硬碟上的資料,必須保證快照的一致性。預設各雲端硬碟的快照是相互獨立建立的,如果從多個不同步的快照恢複RAID陣列,會影響陣列的完整性。

RAID情境下,建議使用快照一致性組,以確保多塊雲端硬碟資料能夠恢複到同一個時間點,以提供資料的一致性和可靠性。更多資訊,請參見使用快照一致性組

操作步驟

本操作以Ubuntu 22.04版本的ECS執行個體為例,介紹如何使用Linux系統內建的mdadm命令為資料盤建立一個名稱為/dev/md0的RAID陣列。

  1. 遠端連線ECS執行個體。

    關於串連方式的介紹,請參見選擇ECS遠端連線方式

  2. 運行以下命令,查看ECS執行個體上所有雲端硬碟資訊。

    lsblk

    結果如下所示。

    $ lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
    loop0    7:0    0 79.9M  1 loop /snap/lxd/22923
    loop1    7:1    0 61.9M  1 loop /snap/core20/1405
    loop2    7:2    0 44.7M  1 loop /snap/snapd/15534
    loop3    7:3    0  111.9M  1 loop /snap/lxd/24322
    vda    252:0    0   40G  0 disk
    ├─vda1 252:1    0    1M  0 part
    ├─vda2 252:2    0  200M  0 part /boot/efi
    └─vda3 252:3    0 39.8G  0 part /
    vdb    252:16   0   40G  0 disk
    vdc    252:32   0   40G  0 disk
    vdd    252:48   0   40G  0 disk
    vde    252:64   0   40G  0 disk
    vdf    252:80   0   40G  0 disk
  3. 使用mdadm命令建立RAID陣列/dev/md0。

    請根據您的實際情況,建立RAID 0、RAID 1或者RAID 10層級。

    說明

    如果提示未安裝mdadm,請先運行sudo apt-get install mdadm命令安裝mdadm工具。

    RAID 0層級

    sudo mdadm --create /dev/md0 --level=0 --raid-devices=5 --chunk=512 /dev/vd[bcdef]
    • --level=0:表示使用陣列條帶化的RAID 0層級。

    • --raid-devices=5:表示RAID陣列由五塊雲端硬碟組成。

    • --chunk=512:表示設定RAID陣列的條帶大小為512 KB,請您根據實際需求進行設定。

    • /dev/vd[bcdef]:表示使用/dev/vdb、/dev/vdc、/dev/vdd、/dev/vde和/dev/vdf五塊雲端硬碟組成一個RAID陣列。

    結果如下所示。

    $ sudo mdadm --create /dev/md0 --level=0 --raid-devices=5 --chunk=512 /dev/vd[bcdef]
    mdadm: /dev/vdb appears to be part of a raid array:
           level=raid0 devices=5 ctime=Thu Oct 19 14:29:32 2023
    mdadm: /dev/vdc appears to be part of a raid array:
           level=raid0 devices=5 ctime=Thu Oct 19 14:29:32 2023
    mdadm: /dev/vdd appears to be part of a raid array:
           level=raid0 devices=5 ctime=Thu Oct 19 14:29:32 2023
    mdadm: /dev/vde appears to be part of a raid array:
           level=raid0 devices=5 ctime=Thu Oct 19 14:29:32 2023
    mdadm: /dev/vdf appears to be part of a raid array:
           level=raid0 devices=5 ctime=Thu Oct 19 14:29:32 2023
    Continue creating array?
    Continue creating array? (y/n) y
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md0 started.

    RAID 1層級

    sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/vd[bc]
    • --level=1:表示使用陣列鏡像化的RAID 1層級。

    • --raid-devices=2:表示RAID陣列由兩塊雲端硬碟組成。

    • /dev/vd[bc]:表示使用/dev/vdb和/dev/vdc兩塊雲端硬碟組成一個RAID陣列。

    RAID 10層級

    sudo mdadm --create /dev/md0 --level=10 --raid-devices=4 --chunk=512 /dev/vd[bcde]
    • --level=10:表示使用RAID 10層級。

    • --raid-devices=4:表示RAID陣列由四塊雲端硬碟組成。

    • --chunk=512:表示設定RAID陣列的條帶大小為512 KB,請您根據實際需求進行設定。

    • /dev/vd[bcde]:表示使用/dev/vdb、/dev/vdc、/dev/vdd和/dev/vde四塊雲端硬碟組成一個RAID陣列。

  4. 運行以下命令,查看建立的RAID陣列/dev/md0資訊。

    sudo mdadm --detail /dev/md0

    結果如下所示。

    $ sudo mdadm --detail /dev/md0
    /dev/md0:
               Version : 1.2
         Creation Time : Thu Oct 19 14:31:31 2023
            Raid Level : raid0
            Array Size : 209546240 (199.84 GiB 214.58 GB)
          Raid Devices : 5
         Total Devices : 5
           Persistence : Superblock is persistent
    
           Update Time : Thu Oct 19 14:31:31 2023
                 State : clean
        Active Devices : 5
       Working Devices : 5
        Failed Devices : 0
         Spare Devices : 0
    
                Layout : -unknown-
            Chunk Size : 512K
    
    Consistency Policy : none
    
                  Name : iZ2zeihn2xxx  (local to host iZ2zeihn2xxx)
                  UUID : 3e1ba29b:d55xxx
                Events : 0
    
        Number   Major   Minor   RaidDevice State
           0      252      16        0      active sync   /dev/vdb
           1      252      32        1      active sync   /dev/vdc
           2      252      48        2      active sync   /dev/vdd
           3      252      64        3      active sync   /dev/vde
           4      252      80        4      active sync   /dev/vdf
  5. 運行以下命令,在RAID陣列上建立一個檔案系統,例如ext4檔案系統。

    您也可以建立其他類型的檔案系統。

    sudo mkfs.ext4 /dev/md0

    結果如下所示。

    $ sudo mkfs.ext4 /dev/md0
    mke2fs 1.46.5 (30-Dec-2021)
    Creating filesystem with 52386560 4k blocks and 13099008 inodes
    Filesystem UUID: 4f76b923-73ac-4a9b-838d-ef9be692b0b4
    Superblock backups stored on blocks:
    	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    	4096000, 7962624, 11239424, 20480000, 23887872
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (262144 blocks): done
    Writing superblocks and filesystem accounting information: done
  6. 運行以下命令,建立一份包含RAID資訊的設定檔,設定RAID陣列在啟動ECS執行個體時自動重組。

    sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
  7. 掛載RAID陣列的檔案系統。

    1. (可選)運行以下命令,建立掛載點,例如/media/raid0

      sudo mkdir /media/raid0
      說明

      您也可以將雲端硬碟掛載到已有目錄下,例如/mnt

    2. 運行以下命令掛載檔案系統,例如將/dev/md0掛載至/media/rad0。

      使用如下mount命令掛載檔案系統時,請根據實際需求選擇對應的掛載參數,以滿足您對檔案系統的資料安全性以及效能的要求。更多資訊,請參見ext4檔案系統掛載參數說明

      • (推薦)對檔案系統的資料安全性和效能都有一定要求(資料安全性和效能適中)

        sudo mount /dev/md0 /media/raid0
      • 對檔案系統的資料安全性要求較高(資料安全性較高、效能偏低)

        sudo mount -o rw,atime,sync,barrier,data=journal /dev/md0 /media/raid0
      • 對檔案系統的效能要求較高(效能較高、資料安全性偏低)

        sudo mount -o defaults,noatime,nodiratime,nobarrier,nodelalloc,data=writeback /dev/md0 /media/raid0
    3. 運行以下命令,查看RAID陣列的掛載資訊。

      df -h

      結果如下所示,返回資訊中,檔案系統已經掛載到指定的掛載點。

      $ df -h
      Filesystem      Size  Used Avail Use% Mounted on
      tmpfs           170M  1.1M  169M   1% /run
      /dev/vda3        40G  2.7G   35G   8% /
      tmpfs           846M     0  846M   0% /dev/shm
      tmpfs           5.0M     0  5.0M   0% /run/lock
      /dev/vda2       197M  6.1M  191M   4% /boot/efi
      tmpfs            50M     0   50M   0% /usr/local/aegis/cgroup
      tmpfs           170M  4.0K  170M   1% /run/user/1000
      /dev/md0        196G   28K  186G   1% /media/raid0
  8. 配置開機自動掛載。

    如果您需要設定開機自動掛載RAID陣列,需要在/etc/fstab中添加RAID陣列的掛載資訊。

    1. 運行以下命令,向/etc/fstab設定檔寫入RAID陣列資訊。

      sudo sh -c "echo `blkid /dev/md0 | awk '{print $2}' | sed 's/\"//g'` /media/raid0 ext4 defaults 0 0 >> /etc/fstab"
      • /dev/md0:磁碟陣列名稱。

      • /media/raid0:掛載點資訊,您需要根據實際環境進行替換。如果需要掛載到其他路徑,您需要修改成對應路徑。

      • ext4:RAID陣列的檔案系統類型,您需要根據已建立的檔案系統類型進行修改。

      • defaults:檔案系統的掛載參數。請您根據實際需求選擇對應的掛載參數,以滿足您對檔案系統的資料安全性以及效能的要求。更多資訊,請參見ext4檔案系統掛載參數說明

      說明

      如果您需要在未掛載RAID陣列的情況下啟動ECS執行個體,可以添加nofail配置。即使在安裝雲端硬碟時出現錯誤,nofail配置也允許啟動ECS執行個體。如果您使用的是Ubuntu系統,還需要額外添加nobootwait配置。

    2. 運行以下命令,查詢RAID陣列的掛載資訊是否添加成功。

      cat /etc/fstab

      結果如下所示,返回結果裡出現了/media/raid0的資訊,說明已添加掛載資訊至/etc/fstab檔案。

      ecs-user@iz2xxx:~$ cat /etc/fstab
      # /etc/fstab: static file system information.
      #
      # Use 'blkid' to print the universally unique identifier for a
      # device; this may be used with UUID= as a more robust way to name devices
      # that works even if disks are added and removed. See fstab(5).
      #
      # <file system> <mount point>   <type>  <options>       <dump> <pass>
      # / was on /dev/vda3 during curtin installation
      UUID=8b4ea6af-xxx               / ext4 defaults 0 1
      # /boot/efi was on /dev/vda2 during curtin installation
      UUID=41xx   /boot/efi vfat errors=remount-ro 0 1
      UUID=4f76b923-73ac-4a9b-xxx               /media/raid0 ext4 defaults 0 0
    3. 運行以下命令,掛載/etc/fstab設定檔中的所有檔案系統。如果無報錯輸出,表示您的/etc/fstab配置無誤。

      sudo mount -a
    4. 運行以下命令,檢查掛載結果是否符合您的預期。

      df -Th

      結果如下所示,出現建立檔案系統的資訊,表示檔案系統掛載成功。

      ecs-user@iZ2xxx pZ:~$ df -Th
      Filesystem      Type   Size  Used Avail Use% Mounted on
      tmpfs           tmpfs  170M  1.1M  169M   1% /run
      /dev/vda3       ext4    40G  2.7G   35G   8% /
      tmpfs           tmpfs  846M     0  846M   0% /dev/shm
      tmpfs           tmpfs  5.0M     0  5.0M   0% /run/lock
      /dev/vda2       vfat   197M  6.1M  191M   4% /boot/efi
      tmpfs           tmpfs   50M     0   50M   0% /usr/local/aegis/cgroup
      tmpfs           tmpfs  170M  4.0K  170M   1% /run/user/1000
      /dev/md0        ext4   196G   28K  186G   1% /media/raid0