Amazon EBS和RAID組態 - Amazon EBS

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

Amazon EBS和RAID組態

使用 Amazon 時EBS,只要作業系統支援執行個體的特定RAID組態,您就可以使用可與傳統裸機伺服器搭配使用的任何標準RAID組態。這是因為所有 RAID 都是在軟體層級完成的。

Amazon EBS磁碟區資料會複寫至可用區域中的多個伺服器,以防止任何單一元件故障造成資料遺失。此複寫使 Amazon EBS磁碟區比一般商品磁碟機更可靠十倍。如需詳細資訊,請參閱 Amazon 產品詳細資訊頁面中的 Amazon EBS可用性和耐用性。 EBS

RAID 組態選項

建立 RAID 0 陣列可讓您為檔案系統達到比在單一 Amazon EBS磁碟區上佈建更高的效能層級。當 I/O RAID 效能至關重要時,請使用 0。使用 RAID 0,I/O 會分佈在條紋中的磁碟區。如果您新增磁碟區,則會直接新增輸送量 和 IOPS。不過,請記住,等量磁碟區的效能受限於集合中效能最差的磁碟區,而集合中單個磁碟區的遺失會導致陣列的完全資料遺失。

產生的 0 RAID 陣列大小是其中磁碟區大小的總和,而頻寬是其中磁碟區可用頻寬的總和。例如,兩個 500 GiB io1磁碟區,IOPS每個 4,000 個佈建,會建立 1000 GiB RAID 0 陣列,可用頻寬為每秒 8,000 IOPS和 1,000 MiB 的輸送量。

重要

RAID Amazon 不建議使用 5 RAID 和 6,EBS因為這些RAID模式的同位寫入操作會耗用磁碟區IOPS可用的部分 。根據您RAID陣列的組態,這些RAID模式比 0 組態的可用率少 IOPS RAID 20-30%。使用這些RAID模式時,成本增加也是一個因素;在使用相同的磁碟區大小和速度時,2 磁碟區 RAID 0 陣列的效能可能會超過 4 磁碟區 6 RAID 陣列,而成本是兩倍。

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

建立 RAID 0 陣列

使用下列程序建立 0 RAID 陣列。

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

  • 為您的陣列建立具有相同大小和IOPS效能值的磁碟區。請確定您不會建立超過EC2執行個體可用頻寬的陣列。

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

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

  2. 將 Amazon EBS磁碟區連接至您要託管陣列的執行個體。如需詳細資訊,請參閱將 Amazon EBS磁碟區連接至 Amazon EC2執行個體

  3. 使用 mdadm命令從新連接的 Amazon EBS磁碟區建立邏輯RAID裝置。將陣列中的磁碟區數目替換為 number_of_volumes 和 陣列中每個磁碟區的裝置名稱 (例如 /dev/xvdfdevice_name。 您也可以替換 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陣列上建立檔案系統,並為該檔案系統提供標籤,以供稍後掛載時使用。例如,使用標籤建立 ext4 檔案系統 MY_RAID,請執行下列命令:

    [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)。例如,若要將 ext4 檔案系統掛載到裝置上,並將標籤 MY_RAID 掛載點 /mnt/raid,請將下列項目新增至 /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磁碟區連接至 Amazon EC2執行個體

  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 上,0 RAID 磁碟區稱為分割磁碟區。

    若要在磁碟 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多磁碟區快照 。多磁碟區快照可讓您跨連接至EC2執行個體的多個EBS磁碟區,擷取 、 point-in-time資料協調和損毀一致性快照。您不需要停止執行個體在磁碟區之間進行協調,以確保一致性,因為快照會自動跨多個EBS磁碟區擷取。如需詳細資訊,請參閱建立 Amazon 快照 下建立多磁碟區EBS快照的步驟。