2013-10-02 70 views
9

我想從我的cloudformation AutoScaling :: LaunchConfiguration增加我ebs支持的ec2實例上的硬盤空間。最初,根設備以8GB啓動。我想增加到40GB。我的印象是我可以根據documentation做到這一點。不幸的是,下面的配置似乎不起作用。在cloudformation自動調整組中增加根設備大小

"LaunchConfig" : { 
    "Type": "AWS::AutoScaling::LaunchConfiguration", 
    "Properties": { 
     "BlockDeviceMappings": [{ 
      "DeviceName": "/dev/sda1", 
      "Ebs" : {"VolumeSize": "40"} 
     }] 
    } 
} 

我正在使用基於ami-05355a6c的自定義ami。

回答

16

您的LaunchConfiguration設置EBS卷塊設備的大小。但是,文件系統仍然認爲它應該只使用8 GB。

您可以運行類似如下的命令來告訴它應該使用了整個塊設備的文件系統:

sudo resize2fs /dev/sda1 

您可以在您的自定義AMI啓動命令自動完成這一點,或者你可以通過在在LaunchConfiguration用戶數據腳本的效果:

#!/bin/bash 
resize2fs /dev/sda1 

用戶數據腳本在第一次啓動以root身份運行,所以須藤是沒有必要的。這裏就是我介紹的用戶數據腳本的概念的文章:http://alestic.com/2009/06/ec2-user-data-scripts

在CloudFormation模板,這可能看起來像:

"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ 
     "#!/bin/bash -ex\n", 
     "exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1\n", 
     "resize2fs /dev/sda1\n", 
     "" 
    ]]}} 

這裏有一個文章,我解釋了「執行」的用處用於調試用戶數據腳本的行:http://alestic.com/2010/12/ec2-user-data-output

+0

+1關於「exec」行的提示。這爲我節省了時間。如果我今年看到你在重塑,我欠你一杯啤酒:) – BillMan