AWS — EBS

Tinghuan Wang
summer's code life
Published in
7 min readMay 26, 2020

什麼是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

參考資料

Amazon EC2 Master Class

--

--