Amazon EBS 和 RAID 組態 - Amazon EBS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon EBS 和 RAID 組態

運用 Amazon EBS,您可以使用能夠搭配傳統裸機伺服器使用的任何標準 RAID 組態 (只要執行個體的作業系統支援這個特定 RAID 組態)。這是因為所有的 RAID 都在軟體層面實現。

Amazon EBS 磁碟區的資料會複製到可用區域中的多個伺服器上,以防止在任何單一元件故障時遺失資料。這項複寫功能讓 Amazon EBS 磁碟區的可靠性,比典型的商用磁碟機高出 10 倍。如需詳細資訊,請參閱 Amazon EBS 產品詳細資訊頁面中的 Amazon EBS 的可用性與耐用性

RAID 組態選項

建立 RAID 0 陣列可讓檔案系統的效能達到更高的水準,超越在單一 Amazon EBS 磁碟區上佈建所能實現的效能。當輸入/輸出效能極為重要時,請使用 RAID 0。使用 RAID 0,輸入/輸出等量分佈於各磁碟區。如果新增磁碟區,就會直接增加資料吞吐量和 IOPS。不過,請記住,等量磁碟區的效能受限於集合中效能最差的磁碟區,而集合中單個磁碟區的遺失會導致陣列的完全資料遺失。

RAID 0 陣列所產生的容量大小,是其中磁碟區大小的加總,頻寬是其中磁碟區可用頻寬的總和。例如:兩個各具備 4,000 個佈建 IOPS 的 500 GiB io1 磁碟區,將會建立 1000 GiB 的 RAID 0 陣列,其可用頻寬為 8,000 IOPS,輸送量為 1,000 MiB/s。

重要

Amazon EBS 不建議使用 RAID 5 和 RAID 6,因為這些 RAID 模式的奇偶校驗寫入作業,會耗用一些磁碟區可用的 IOPS。取決於 RAID 陣列的組態,這些 RAID 模式能夠提供的可用 IOPS,可能會比 RAID 0 組態少 20% 到 30%。增加的成本也是採用這些 RAID 模式的一個因素;使用相同的磁碟區大小和速度時,2 個磁碟區的 RAID 0 陣列,其效能高於成本為其兩倍的 4 磁碟區 RAID 6 陣列。

也不建議 RAID 1 與 Amazon EBS 搭配使用。相較於非 RAID 組態,RAID 1 需要更多的 Amazon EC2 至 Amazon EBS 頻寬,因為資料同時寫入多個磁碟區。此外,RAID 1 不會提供任何寫入效能改善。

建立陣列

請使用下列步驟來建立 RAID 0 陣列。

考量事項
  • 在執行此程序之前,您必須先決定 RAID 0 陣列的大小,以及要佈建的 IOPS 數量。

  • 為陣列建立磁碟區,並且讓這些磁碟區具有相同的容量大小和 IOPS 效能值。所建立的陣列,請務必不要超過 EC2 執行個體的可用頻寬。

  • 您應避免從 RAID 磁碟區開機。如果其中一個裝置發生故障,您可能無法啟動作業系統。

在 Linux 上建立 RAID 0 陣列
  1. 為陣列建立 Amazon EBS 磁碟區。如需詳細資訊,請參閱 建立 Amazon EBS 磁碟區

  2. 將 Amazon EBS 磁碟區連結到您想要用來在其上託管陣列的執行個體。如需詳細資訊,請參閱 將 Amazon EBS 磁碟區連接至執行個體

  3. 使用 mdadm 指令,從新連結的 Amazon EBS 磁碟區建立邏輯 RAID 裝置。請在 number_of_volumes 填入陣列中的磁碟區數量,在 device_name 填入陣列中各磁碟區的裝置名稱 (例如 /dev/xvdf)。您也可以將陣列的 MY_RAID 換成自己獨特的名稱。

    注意

    您可以利用 lsblk 命令列出執行個體上的裝置,來尋找裝置的名稱。

    若要建立 RAID 0 陣列,請執行下列命令 (請注意用來分割陣列的 --level=0 選項):

    [ec2-user ~]$ sudo mdadm --create --verbose /dev/md0 --level=0 --name=MY_RAID --raid-devices=number_of_volumes device_name1 device_name2
    提示

    如果發生 mdadm: command not found 錯誤,請使用下列命令來安裝 mdadm:sudo yum install mdadm

  4. 讓 RAID 陣列有充分的時間進行初始化與同步。您可以使用下列指令來追蹤這些作業的進度:

    [ec2-user ~]$ sudo cat /proc/mdstat

    下列為範例輸出:

    Personalities : [raid0] md0 : active raid0 xvdc[1] xvdb[0] 41910272 blocks super 1.2 512k chunks unused devices: <none>

    一般而言,您可以利用下列的指令,來顯示關於 RAID 陣列的詳細資訊:

    [ec2-user ~]$ sudo mdadm --detail /dev/md0

    下列為範例輸出:

    /dev/md0: Version : 1.2 Creation Time : Wed May 19 11:12:56 2021 Raid Level : raid0 Array Size : 41910272 (39.97 GiB 42.92 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Wed May 19 11:12:56 2021 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Chunk Size : 512K Consistency Policy : none Name : MY_RAID UUID : 646aa723:db31bbc7:13c43daf:d5c51e0c Events : 0 Number Major Minor RaidDevice State 0 202 16 0 active sync /dev/sdb 1 202 32 1 active sync /dev/sdc
  5. 在 RAID 陣列上建立檔案系統,並賦予該檔案系統標籤,以在之後掛載此系統時使用。例如,若要建立具備 MY_RAID 標籤的 ext4 檔案系統,請執行下列命令:

    [ec2-user ~]$ sudo mkfs.ext4 -L MY_RAID /dev/md0

    取決於應用程式的要求或作業系統的限制,您可以使用不同的檔案系統類型,例如 ext3 或 XFS (關於對應的檔案系統建立指令,請參閱檔案系統的文件)。

  6. 為確保 RAID 陣列會在開機時自動重組,請建立包含 RAID 資訊的組態檔案:

    [ec2-user ~]$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf
    注意

    如果您使用 Linux 發行版本而非 Amazon Linux,您可能需要修改此命令。例如,您可能需要將檔案置於不同的位置,或者您可能需要新增 --examine 參數。如需詳細資訊,請在您的 Linux 執行個體上執行 man mdadm.conf

  7. 建立新的 ramdisk 映像,以針對新的 RAID 組態,正確地預先載入區塊型儲存設備模組。

    [ec2-user ~]$ sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
  8. 為 RAID 陣列建立掛載點。

    [ec2-user ~]$ sudo mkdir -p /mnt/raid
  9. 最後,請在您所建立的掛載點上掛載 RAID 裝置:

    [ec2-user ~]$ sudo mount LABEL=MY_RAID /mnt/raid

    您的 RAID 裝置現在已可使用。

  10. (選用) 若要在每次系統開機時掛載此 Amazon EBS 磁碟區,請在 /etc/fstab 檔案中加入該裝置的資料。

    1. 建立 /etc/fstab 檔案的備份,如果在編輯檔案時不小心損毀或刪除了此檔案,即可使用檔案的備份。

      [ec2-user ~]$ sudo cp /etc/fstab /etc/fstab.orig
    2. 使用您喜愛的文字編輯器 (例如 /etc/fstabnano) 來開啟 vim 檔案。

    3. 將「UUID=」開頭的所有程式行暫時變成註解行,然後使用下列的格式,在檔案的結尾為 RAID 磁碟區加入新的一行:

      device_label mount_point file_system_type fs_mntops fs_freq fs_passno

      此行中最後三個欄位是檔案系統掛載點、檔案系統的傾印頻率,以及開機時檔案系統檢查完成的順序。如果您不知道這些值應當設為多少,請使用下例中的值 (defaults,nofail 0 2)。如需有關 /etc/fstab 項目的詳細資訊,請參閱 fstab 手冊頁 (透過在命令列中輸入 man fstab)。例如,若要在具有 MY_RAID 標籤的裝置上,於掛載點 /mnt/raid 掛載 ext4 檔案系統,請在 /etc/fstab 中加入下列項目。

      注意

      如果想要在不掛載此磁碟區的狀態下啟動執行個體 (例如,此磁碟區即可在不同的執行個體之間來回移動),應加入 nofail 掛載選項,以在掛載磁碟區的作業出現錯誤時,仍然讓執行個體繼續啟動。在 Debian 的衍生產品,例如 Ubuntu,也必須加入 nobootwait 掛載選項。

      LABEL=MY_RAID /mnt/raid ext4 defaults,nofail 0 2
    4. 在將新的項目加入 /etc/fstab 之後,您需要檢查項目是否能夠運作。執行 sudo mount -a 命令在 /etc/fstab 中掛載所有檔案系統。

      [ec2-user ~]$ sudo mount -a

      如果先前的指令並未發生錯誤,則 /etc/fstab 檔案沒有問題,檔案系統將會在下次啟動時自動掛載。如果指令發生了任何錯誤,請檢驗錯誤,並試著修正 /etc/fstab

      警告

      /etc/fstab 檔案中的錯誤可能會造成系統無法開機。如果是在 /etc/fstab 檔案中具有錯誤的系統,請勿將此系統關機。

    5. (選用) 如果您不確定要如何修正 /etc/fstab 錯誤,可以隨時使用下列的指令,來還原備份的 /etc/fstab 檔案。

      [ec2-user ~]$ sudo mv /etc/fstab.orig /etc/fstab
在 Windows 上建立 RAID 0 陣列
  1. 為陣列建立 Amazon EBS 磁碟區。如需詳細資訊,請參閱 建立 Amazon EBS 磁碟區

  2. 將 Amazon EBS 磁碟區連結到您想要用來在其上託管陣列的執行個體。如需詳細資訊,請參閱 將 Amazon EBS 磁碟區連接至執行個體

  3. 連接至 Windows 執行個體。如需詳細資訊,請參閱連線至您的 Windows 執行個體

  4. 開啓命令提示並輸入 diskpart 命令。

    diskpart Microsoft DiskPart version 6.1.7601 Copyright (C) 1999-2008 Microsoft Corporation. On computer: WIN-BM6QPPL51CO
  5. DISKPART 提示中,利用下列命令來列出可用的磁碟。

    DISKPART> list disk Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 30 GB 0 B Disk 1 Online 8 GB 0 B Disk 2 Online 8 GB 0 B

    找出您想要在陣列中使用的磁碟,並記下其磁碟編號。

  6. 想要在陣列中使用的每個磁碟,都必須是未包含任何現有磁碟區的線上動態磁碟。請利用下列的步驟,來將基本磁碟轉換為動態磁碟,和刪除任何現有的磁碟區。

    1. 利用下列指令來選取想要在陣列中使用的磁碟,將 n 換成磁碟的編號。

      DISKPART> select disk n Disk n is now the selected disk.
    2. 如果所選取的磁碟列為 Offline,請執行 online disk 命令來讓該磁碟上線。

    3. 如果在先前的 Dyn 命令輸出中,所選取的磁碟在 list disk 欄中未顯示星號,則需要將該磁碟轉換為動態磁碟。

      DISKPART> convert dynamic
      注意

      如果收到磁碟具有寫入保護的錯誤訊息,您可以使用 ATTRIBUTE DISK CLEAR READONLY 命令來清除唯讀旗標,然後再次嘗試進行動態磁碟轉換。

    4. 使用 detail disk 命令來查看選定磁碟上的現有磁碟區。

      DISKPART> detail disk XENSRC PVDISK SCSI Disk Device Disk ID: 2D8BF659 Type : SCSI Status : Online Path : 0 Target : 1 LUN ID : 0 Location Path : PCIROOT(0)#PCI(0300)#SCSI(P00T01L00) Current Read-only State : No Read-only : No Boot Disk : No Pagefile Disk : No Hibernation File Disk : No Crashdump Disk : No Clustered Disk : No Volume ### Ltr Label Fs Type Size Status Info ---------- --- ----------- ----- ---------- ------- --------- -------- Volume 2 D NEW VOLUME FAT32 Simple 8189 MB Healthy

      記下磁碟區上的任何磁碟區編號。在此範例中,磁碟區編號為 2。如果沒有磁碟區,您可以跳過下一個步驟。

    5. (只有在先前的步驟中有找到磁碟區時才需要) 在前一個步驟中所找到的磁碟上,選取並刪除所有現有的磁碟區。

      警告

      這項動作會刪除磁碟區上的所有現有資料。

      1. 選取磁碟區,將 n 換成磁碟區編號。

        DISKPART> select volume n Volume n is the selected volume.
      2. 刪除磁碟區。

        DISKPART> delete volume DiskPart successfully deleted the volume.
      3. 針對想要在所選取磁碟上刪除的每個磁碟區,重複這些子步驟。

    6. 針對想要在陣列中使用的每個磁碟,重複執行步驟 6

  7. 確認想要使用的磁碟現在已成為動態磁碟。在這種情況下,我們使用磁碟 1 和磁碟 2 作為 RAID 磁碟區。

    DISKPART> list disk Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 30 GB 0 B Disk 1 Online 8 GB 0 B * Disk 2 Online 8 GB 0 B *
  8. 建立 raid 陣列。在 Windows 上,RAID 0 磁碟區稱為等量磁碟區。

    若要在磁碟 1 和磁碟 2 上建立等量磁碟區陣列,請使用下列命令 (請注意用來分割陣列的 stripe 選項):

    DISKPART> create volume stripe disk=1,2 DiskPart successfully created the volume.
  9. 確認新的磁碟區。

    DISKPART> list volume DISKPART> list volume Volume ### Ltr Label Fs Type Size Status Info ---------- --- ----------- ----- ---------- ------- --------- -------- Volume 0 C NTFS Partition 29 GB Healthy System Volume 1 RAW Stripe 15 GB Healthy

    請注意,Type 欄位現在表示磁碟區 1 是 stripe 磁碟區。

  10. 請選取磁碟區並進行格式化,以開始使用。

    1. 選取想要進行格式化的磁碟區,將 n 換成磁碟區的編號。

      DISKPART> select volume n Volume n is the selected volume.
    2. 進行磁碟區的格式化。

      注意

      若要進行完整格式化,請略過 quick 選項。

      DISKPART> format quick recommended label="My new volume" 100 percent completed DiskPart successfully formatted the volume.
    3. 指派可用的磁碟代號給磁碟區。

      DISKPART> assign letter f DiskPart successfully assigned the drive letter or mount point.

    新的磁碟區現在已可使用。

建立 RAID 陣列磁碟區的快照

如果想要使用快照,來備份 RAID 陣列 EBS 磁碟區中的資料,則必須確保快照的一致性。因為這些磁碟區的快照是個別建立的。如果從未同步的快照還原 RAID 陣列中的 EBS 磁碟區,將會降低陣列的完整性。

若要針對您的 RAID 陣列建立一組一致的快照,請使用 EBS 多磁碟區快照。多磁碟區快照可讓您在連接 point-in-time至 EC2 執行個體的多個 EBS 磁碟區之間拍攝、協調資料和當機一致的快照。由於是跨多個 EBS 磁碟區自動建立快照,因此您不需要為了確保當機一致性,而停止執行個體或在磁碟區之間進行協調。如需詳細資訊,請參閱建立 Amazon EBS 快照下有關建立多磁碟區快照的步驟。