AWS — EBS
什麼是EBS(Elastic Block Store):
Amazon Elastic Block Store (Amazon EBS) 提供區塊層級儲存體磁碟區,可搭配使用 EC2 執行個體。
EBS特性
- network drive (not a physical drive),讓你可以經由EBS連到你的instance
- it’s locked to an Availability Zone(AZ)
- 有配置容量
EBS Volume Types
- GP2(SSD)
- IO1(SSD):貴
- ST1(HDD)
- SC1(HDD):最便宜
ELASTIC BLOCK STORE > Volumes
從圖可以看到EBS的規格和Type。
GP2
- 適用於大部分的server
- system boot volumes,aws 分兩種device, root device / block device ,而GP2可以使用於這兩種。
- 虛擬桌面(Virtual Desktop)
- low-latency interactive apps
- 通常用於開發環境
- 硬碟大小 1GiB ~ 16TiB
- IOPS 10x baseline performance — MAX 10,000
- Max throughput of 160 MiB/s
IO1
- 如果機器performance想要高於10,000 IOPS或是 160 MiB/s throughput可以使用IO1
- 通常用在資料庫機器(MongoDB, Cassandra, Microsoft SQL Server, MySQL, PostgreSQL, Oracle)
- 硬碟大小 1GiB ~ 46TiB
- IOPS is provisioned(PIOPS) — MAX 32,000
- Max throughput of 500 MiB/s
ST1
- 適用於stream server,算是低價位又高輸出的選擇。
- 通常用在Big Data, Data warehouse, Log processing, Apache, Kafka
- can’t be a boot volumes
- 硬碟大小 500GiB ~ 16TiB
- Max IOPS is 500
- Max throughput of 500 MiB/s
SC1
- 適用於存取大量資料卻又很少取得資料的server。
- 最便宜
- can’t be a boot volumes
- 硬碟大小 500GiB ~ 16TiB
- Max IOPS is 250
- Max throughput of 250 MiB/s
Create Volume
這個範例先建立一台instance,之後建立Volume選擇跟instance 同一個Availability Zone。
EC2 > Volume > Create Volume
建立好了之後可以看到狀態是available
之後將這個EBS attach to instance
選擇之前建立的instance
狀態會變為in-use
instances > Description 可以看到剛剛建立的EBS
接著我們連到instance 機器。
ssh -i ./yourKeyName.pem ec2-user@yourIntanceIp
進入機器後先看目前有哪些儲存裝置。指令:lsblk
。 可以看成『 list block device 』的縮寫。
之後看EBS裡面是否為空的。指令:sudo file -s /dev/xvdf
。如果是以下畫面就代表是空的。
接著開始format EBS。指令:sudo mkfs -t ext4 /dev/xvdf
。將硬碟/dev/xvdf format 為ext4格式。
之後再執行sudo file -s /dev/xvdf
會發現已經format了
建立一個資料夾,並且將/dev/xvdf mount到這個資料夾。
$ sudo mkdir /myexternalvolume
$sudo mount /dev/xvdf /myexternalvolume
執行完之後可以看到/dev/xvdf已經mount 到/myexternalvolume
到/myexternalvolume 並且看資料夾的資訊
$ cd /myexternalvolume/
$ df -h .
在此資料夾建立一個檔案
sudo touch hello.txt
將資料夾掛載到/etc/fstab 。/etc/fstab為當系統開機時會掛載上的檔案,根目錄 / 是必須掛載的﹐而且一定要先於其它 mount point 被掛載進來。
掛載前的內容
備份fstab。指令:sudo cp /etc/fstab /etc/fstab.bak
使用nano 來編輯。安裝指令:sudo yum install -y nano
。編輯指令:sudo nano /etc/fstab
。
最後一行加上
/dev/xvdf /myexternalvolume ext4 defaults,nofail 0 0
編輯完了之後按下ctrl + x 。按Y。
重新開機:sudo reboot -h
重新連線後看儲存裝置。
可以看到剛剛建立的xvdf 已經自動掛載上了。
Resize your EBS
從2017/02 開始 EBS 可以調整磁碟的大小(只限定增加)。接著使用剛剛的EBS做範例將2GB改成4GB。
EC2 > Volumes >Modify Volume
當我們將硬碟改成比2GB還小的時候會有錯誤。
現在我們將他改成4GB。
剛改完的時候狀態會變成 in-use — optimizing (56%)
接著我們在進到機器resize 硬碟大小。觀看目前的硬碟使用df -h
。可以看到/dev/xvdf 只有2G可以使用。
重新resize 硬碟大小。指令:sudo resize2fs /dev/xvdf
接著看目前硬碟使用量已經改為3.9G
EBS Snapshots
- 用來備份EBS
- 如果你的硬碟設定為100G但資料只有5G,你的Snapshots只有5GB。
- EBS Snapshots存放在S3
- Snapshot用來備份資料和轉移資料。
EC2 > Volumes >Create Snapshot