預熱Amazon EBS Volumes
最近在做AWS Cloud從CentOS6.9升級到CentOS7.4.1708,系統上跑著oracle數據庫,數據量大概1.5T,準備了一個全新的CentOS7.4.1708 instance,
Oracle數據也都rman還原好了,然後對新的instance做AMI,再用這個AMI重新launch一個instance,這個instance起來之後,要添加oracle redo文件組,命令如下:
ALTER DATABASE ADD LOGFILE GROUP 1 ('/redo1/redo0101.log','/redo3/redo0102.log') SIZE 5000M BLOCKSIZE 512 REUSE;
執行的大約30min還沒有結束(測試環境5min執行完成),於是查看系統的負載情況,發現CPU,memory都沒有瓶頸,然後又看了一下磁盤IO,如下:
[root@ec2-xxx-01 ~]# sar -d 1 5 Linux 3.10.0-693.17.1.el7.x86_64 (ec2-xxx-01) 05/13/2018 _x86_64_(8 CPU) 07:02:55 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 07:02:56 AM dev259-0 58.00 14336.00 0.00 247.17 30.06 514.72 17.24 100.00 07:02:56 AM dev259-1 72.00 17408.00 64.00 242.67 33.00 464.58 13.89 100.00 07:02:56 AM dev259-2 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:02:56 AM dev259-3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:02:56 AM dev259-4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:02:56 AM dev253-0 4.00 0.00 64.00 16.00 1.00 260.50 250.00 100.00 07:02:56 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 07:02:57 AM dev259-0 47.00 11264.00 0.00 239.66 30.15 559.83 21.28 100.00 07:02:57 AM dev259-1 86.00 20480.00 96.00 239.26 32.87 412.72 11.63 100.00 07:02:57 AM dev259-2 3.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:02:57 AM dev259-3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:02:57 AM dev259-4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:02:57 AM dev253-0 6.00 0.00 96.00 16.00 1.00 227.50 166.50 99.90 07:02:57 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 07:02:58 AM dev259-0 54.00 13312.00 0.00 246.52 30.31 681.20 18.52 100.00 07:02:58 AM dev259-1 63.00 15360.00 64.00 244.83 33.41 466.29 15.87 100.00 07:02:58 AM dev259-2 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:02:58 AM dev259-3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:02:58 AM dev259-4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 07:02:58 AM dev253-0 4.00 0.00 64.00 16.00 1.41 225.25 250.00 100.00
有兩塊盤磁盤的使用率%util是100%,await也高達681,tps即相當於iops還不到100,這可是AWS instance_type為m5.2xlarge的實例,AWS的EBS不可能這麽差吧,當時就比較疑惑,難道AWS也這麽水,
於是上AWS網站上面查找原因,最後發現,從snapshot還原的磁盤,需要initialization(即預熱pre-warming),新建的instance卻不需要initilization。
據AWS說,沒有initilizaion的磁盤性能會下降50%。那麽該如何預熱EBS呢?AWS也給出了處理方法,使用系統自帶的工具dd或者第三方磁盤IOPS測試工具fio.這裏不再詳細講述如何預熱磁盤,本文主要是想告訴大家 AWS snapshot還原的
EBS,需要提前預熱,否則性能會下降很多,如果讀者有興趣,可以參考如下AWS鏈接了解如何預熱.
參考鏈接:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-initialize.html
預熱Amazon EBS Volumes