有一些虚拟机使用 5TB 磁盘大小创建,但在虚拟机生成时仅为文件系统提供 2TB。
在 KVM 中运行的 VM 的最大文件系统大小是否有任何限制,或者这些环境中是否存在任何其他问题。
当前 2TB 的限制属于 MBR 分区表,它们无法处理超过 2TB 的数据。
由于我们不能对 5TB 磁盘使用 MBR 表,我们一直在检查通过 cloud-init 定义定义 GPT 分区表的选项,为此我们尝试使用以下用户数据文件
disk_setup:
/dev/vda:
table_type: 'gpt'
layout:
- 10
- 90
overwrite: true
fs_setup:
- label: root_fs
filesystem: 'ext4'
device: /dev/vda
partition: vda1
overwrite: true
- label: data_disk
filesystem: 'ext4'
device: /dev/vda
partition: vda2
overwrite: true
但是这个命令在实例创建时并没有被执行,我们发现在cloud init中并没有加载disk_setup模块,也就是在虚拟机文件”/etc/cloud/cloud.cfg”里面没有出现这个加载的模块,出现如下情况:
cloud_config_modules:
- mounts
- locale
- set-passwords
- rh_subscription
- yum-add-repo
- package-update-upgrade-install
- timezone
- puppet
- chef
- salt-minion
- mcollective
- disable-ec2-metadata
- runcmd
并且应该
cloud_config_modules:
- disk_setup
- mounts
- locale
- set-passwords
- rh_subscription
- yum-add-repo
- package-update-upgrade-install
- timezone
- puppet
- chef
- salt-minion
- mcollective
- disable-ec2-metadata
- runcmd
更改后,我们从 /var/lib/cloud/ 中删除了所有文件,并重新启动实例以强制执行 cloud-init,此时执行了 GPT 分区表修改,但未执行文件系统配置,我们手动进行了文件系统配置,并且能够使用 5TB 磁盘。但糟糕的是,由于此实例使用的是 BIOS(SeaBIOS)而不是 UEFI,将分区表修改为 GPT 后,VM 实例无法再次启动。
为此,我们需要您的支持,通过检查 cloud-init 的正确配置来执行 VM 实例创建中用户数据文件中定义的所有命令。
Ubuntu 14.04 上的 NAME=Mitaka