Linux 上的 RAID 組態
運用 Amazon EBS,您可以使用能夠搭配傳統裸機伺服器使用的任何標準 RAID 組態 (只要執行個體的作業系統支援這個特定 RAID 組態)。這是因為所有的 RAID 都在軟體層面實現。
Amazon EBS 磁碟區的資料會複製到可用區域中的多個伺服器上,以防止在任何單一元件故障時遺失資料。這項複寫功能讓 Amazon EBS 磁碟區的可靠性,比典型的商用磁碟機高出 10 倍。如需詳細資訊,請參閱 Amazon EBS 產品詳細資訊頁面中的 Amazon EBS 的可用性與耐用性
注意
您應避免從 RAID 磁碟區開機。Grub 通常指安裝在 RAID 陣列的一個裝置上,如果其中一個鏡射裝置故障,可能無法啟動作業系統。
如果需要在 Windows 執行個體上建立 RAID 陣列,請參閱 Windows 執行個體的 Amazon EC2 使用者指南 中的 Windows 上的 RAID 組態。
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 不會提供任何寫入效能改善。
在 Linux 上建立 RAID 0 陣列
本文件提供基本的 RAID 0 設定範例。
在執行此程序之前,需要先決定 RAID 0 陣列的大小和所要佈建的 IOPS 數量。
請使用下列步驟來建立 RAID 0 陣列。請注意,如需 Windows 執行個體的說明,您可以參閱 Windows 執行個體的 Amazon EC2 使用者指南中的在 Windows 上建立 RAID 0 陣列。
在 Linux 上建立 RAID 0 陣列
-
為陣列建立 Amazon EBS 磁碟區。如需詳細資訊,請參閱 建立 Amazon EBS 磁碟區。
重要
為陣列建立磁碟區,並且讓這些磁碟區具有相同的容量大小和 IOPS 效能值。所建立的陣列,請務必不要超過 EC2 執行個體的可用頻寬。如需詳細資訊,請參閱 Amazon EBS – 最佳化執行個體。
-
將 Amazon EBS 磁碟區連結到您想要用來在其上託管陣列的執行個體。如需詳細資訊,請參閱 將 Amazon EBS 磁碟區連接至執行個體。
-
使用 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
。 -
讓 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
-
在 RAID 陣列上建立檔案系統,並賦予該檔案系統標籤,以在之後掛載此系統時使用。例如,若要建立具備
MY_RAID
標籤的 ext4 檔案系統,請執行下列命令:[ec2-user ~]$
sudo mkfs.ext4 -L
MY_RAID
/dev/md0取決於應用程式的要求或作業系統的限制,您可以使用不同的檔案系統類型,例如 ext3 或 XFS (關於對應的檔案系統建立指令,請參閱檔案系統的文件)。
-
為確保 RAID 陣列會在開機時自動重組,請建立包含 RAID 資訊的組態檔案:
[ec2-user ~]$
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf
注意
如果您使用 Linux 發行版本而非 Amazon Linux,您可能需要修改此命令。例如,您可能需要將檔案置於不同的位置,或者您可能需要新增
--examine
參數。如需詳細資訊,請在您的 Linux 執行個體上執行 man mdadm.conf。 -
建立新的 ramdisk 映像,以針對新的 RAID 組態,正確地預先載入區塊型儲存設備模組。
[ec2-user ~]$
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
-
為 RAID 陣列建立掛載點。
[ec2-user ~]$
sudo mkdir -p /mnt/
raid
-
最後,請在您所建立的掛載點上掛載 RAID 裝置:
[ec2-user ~]$
sudo mount LABEL=
MY_RAID
/mnt/raid
您的 RAID 裝置現在已可使用。
-
(選用) 若要在每次系統開機時掛載此 Amazon EBS 磁碟區,請在
/etc/fstab
檔案中加入該裝置的資料。-
建立
/etc/fstab
檔案的備份,如果在編輯檔案時不小心損毀或刪除了此檔案,即可使用檔案的備份。[ec2-user ~]$
sudo cp /etc/fstab /etc/fstab.orig
-
使用您喜愛的文字編輯器 (例如
/etc/fstab
或 nano) 來開啟 vim 檔案。 -
將「
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
-
在將新的項目加入
/etc/fstab
之後,您需要檢查項目是否能夠運作。執行 sudo mount -a 命令在/etc/fstab
中掛載所有檔案系統。[ec2-user ~]$
sudo mount -a
如果先前的指令並未發生錯誤,則
/etc/fstab
檔案沒有問題,檔案系統將會在下次啟動時自動掛載。如果指令發生了任何錯誤,請檢驗錯誤,並試著修正/etc/fstab
。警告
/etc/fstab
檔案中的錯誤可能會造成系統無法開機。如果是在/etc/fstab
檔案中具有錯誤的系統,請勿將此系統關機。 -
(選用) 如果您不確定要如何修正
/etc/fstab
錯誤,可以隨時使用下列的指令,來還原備份的/etc/fstab
檔案。[ec2-user ~]$
sudo mv /etc/fstab.orig /etc/fstab
-
建立 RAID 陣列磁碟區的快照
如果想要使用快照,來備份 RAID 陣列 EBS 磁碟區中的資料,則必須確保快照的一致性。因為這些磁碟區的快照是個別建立的。如果從未同步的快照還原 RAID 陣列中的 EBS 磁碟區,將會降低陣列的完整性。
若要針對您的 RAID 陣列建立一組一致的快照,請使用 EBS 多磁碟區快照。多磁碟區快照可讓您跨多個連接到 EC2 執行個體的 EBS 磁碟區,擷取時間點、資料協調性和當機一致性快照。由於是跨多個 EBS 磁碟區自動建立快照,因此您不需要為了確保當機一致性,而停止執行個體或在磁碟區之間進行協調。如需詳細資訊,請參閱建立 Amazon EBS 快照下有關建立多磁碟區快照的步驟。