如何以编程方式在Amazon Windows 2008 AMI上启用实例存储

时间:2012-04-29 06:54:01

标签: php windows amazon-ec2 amazon-web-services storage

我正在使用PHP脚本以编程方式创建一个新的Windows实例&对它进行测试。

一切正常,直到我升级为使用小实例(而非微观)。最初我认为Windows 2008的 C:\驱动器大小将是160 GB ,但不是,似乎此空间必须启用

我搜索了很多内容,发现可以使用command line或使用this PHP function modify_instance_attribute

以编程方式启用此存储空间

然而,目前尚不清楚如何做到这一点。 我的问题是:是否可以将此实例存储设置为 D:\ (例如)。 如果是这样,我该如何在PHP中执行此操作?

$ec2->modify_instance_attribute($instance_id, 
       array('BlockDeviceMapping' => array(
            'DeviceName' => '/dev/sdc=ephemeral0'
       )
));

PS。我不关心关于数据完整性,我只需要那些160 GB,以便我自动生成随机数据以进行自动化测试。

2 个答案:

答案 0 :(得分:2)

试试这个:

  1. 创建您的m1.small实例
  2. 通过RDP& amp;转到“开始”菜单 - >计算机 - >管理
  3. 在服务器管理器窗口中,GoTo 存储,您应该会在底部面板中找到列为未分配空间的实例存储(149GB)
  4. 右键单击它并选择在线
  5. 再次右键单击并将其作为新硬盘安装
  6. 格式化此新驱动器&在资源管理器中仔细检查它是否存在
  7. 现在注销,转到亚马逊控制面板并将此正在运行的实例保存为新图像
  8. 这就是全部。从现在开始,每当您从PHP启动一个新的小型实例时,您的160GB驱动器应已经安装并可用。

    PS。不需要modify_instance_attribute()函数,可以使用run_instances()来实现,即。

    <?php
    $ec2 = new AmazonEC2();
    $ec2->set_region(AmazonEC2::REGION_EU_W1);
    $ec2->run_instances($ami_image_id, 1, 1, array(
                        'KeyName'       => 'my-Key',
                        'Placement'     => array('AvailabilityZone' => 'eu-west-1a'),
                        'BlockDeviceMapping' => array(
                                  'VirtualName'    => 'ephemeral0',
                                  'DeviceName'     => '/dev/xvdb'
                         ),
                         'InstanceType'  => 'm1.small',
                         'SecurityGroup' => 'my-RDP-group'
     ));
    ?>
    

答案 1 :(得分:0)

Instance Storage实例启动后,无法以编程方式为Amazon EC2实例启用/映射Amazon EC2 Instance Storage Usage Scenarios,请参阅{{>在您的实例上设置实例商店部分{{ 3}}:

  

默认情况下,使用Amazon EBS作为根设备的实例不会   实例存储在启动时可用。如果你想使用   实例存储与您的EBS支持的实例,您必须明确   在启动实例时将实例存储与设备映射 [强调我的]

实现这一目标所需的高级步骤也在该页面上列出,cyberx86对missing ephemeral disks on an m1.xlarge instance的回答提供了两种可用方法的精彩摘要。