我遇到的问题是,一些apache日志填写得如此之快,以至于根文件系统不够大。
我使用的是使用packer和centos 6创建的AMI。
如何在创建AMI期间调整根FS的大小以便以后使用?
答案 0 :(得分:1)
为了实现我的结果,我在packer配置中添加了一个user_data_file脚本,如下所示:
# resize root fs if the volume is bigger
echo "ROOT DISK RESIZING" > /tmp/root_disk_resize.log
# wait for facter
while ( ! /usr/bin/facter ); do sleep 15 ; done >> /tmp/root_disk_resize.log 2>&1
OS_RELEASE=$(facter operatingsystemmajrelease 2>&1 )
ROOT_DEVICE=$(facter ec2_block_device_mapping_root 2>&1 )
# Install epel
rpm -ivh https://ftp.fau.de/epel/epel-release-latest-${OS_RELEASE}.noarch.rpm >> /tmp/root_disk_resize.log 2>&1
yum install -y cloud-utils-growpart gdisk >> /tmp/root_disk_resize.log 2>&1
# resize partition
growpart -v ${ROOT_DEVICE} 1 >> /tmp/root_disk_resize.log 2>&1
# resize filesystem
resize2fs -p ${ROOT_DEVICE}1 >> /tmp/root_disk_resize.log 2>&1
# remove epel to avoid to interfere with the rest of the installation
rpm -e epel-release >> /tmp/root_disk_resize.log 2>&1
因此我在packer user_data_file中添加了以下代码;我使用了来自傀儡的facter来获取我需要的信息,但你可以使用你想要的任何东西,甚至可以使用它。
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* ProactiveSubject
*
* @ORM\Table(name="ProactiveSubject")
* @ORM\Entity
*/
class ProactiveSubject
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="ProactiveCheck", inversedBy="p_subjects")
* @ORM\JoinTable(name="subject_check_operator")
*/
private $checks;
public function __construct() {
$this->checks = new \Doctrine\Common\Collections\ArrayCollection();
}
}
分区将被扩展,并且在下次重新启动时,FS将被调整为完整的卷大小,尽管在创建AMI期间无法查看。
我发现了一些有趣的信息和项目:
答案 1 :(得分:0)
你可以直接添加一个块设备映射
<块引用>binary_str = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
print(binary_str.hex())
您必须检查您的 AMI 哪个设备名称使用它可以是 /dev/sda1 或 /dev/xvda
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html