← Back to team overview

cloud-init-dev team mailing list archive

Re: [Merge] ~paul-meyer/cloud-init:fix-raw-ephemeral-disk into cloud-init:master

 

I was testing (on the Azure 16.04 image) if we can leave the disk raw instead of partitioning and formatting it NTFS. It would shave some seconds off of the deployment time of VM's. I noticed that gfdisk has an extra line at the top when the disk is completely uninitialized, throwing off the get_gpt_hdd_size function.

There's no open bug, but I thought I'd send a patch anyway, because this is a generic potential issue.
I pasted the relevant log snippet below. As you can see, the hdd size is returned as 'GPT', which is the third word on the first line, instead of the number of sectors, which is supposed to be returned.

Aug 26 17:49:39 ubuntu [CLOUDINIT] stages.py[DEBUG]: Running module disk_setup (<module 'cloudinit.config.cc_disk_setup' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py'>) with frequency once-per-instance
Aug 26 17:49:39 ubuntu [CLOUDINIT] handlers.py[DEBUG]: start: modules-config/config-disk_setup: running config-disk_setup with frequency once-per-instance
Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Writing to /var/lib/cloud/instances/2EE1991E-DADF-6D47-9683-E393AD393624/sem/config_disk_setup - wb: [420] 24 bytes
Aug 26 17:49:39 ubuntu [CLOUDINIT] helpers.py[DEBUG]: Running config-disk_setup using lock (<FileLock using file '/var/lib/cloud/instances/2EE1991E-DADF-6D47-9683-E393AD393624/sem/config_disk_setup'>)
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: updated disk_setup device entry 'ephemeral0' to '/dev/sdb'
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Partitioning disks: {'/dev/sdb': {'overwrite': True, 'layout': [100], 'table_type': 'gpt', '_origname': 'ephemeral0'}}
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Creating new partition table/disk
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking values for /dev/sdb definition
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking against default devices
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking if device /dev/sdb is a valid device
Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Running command ['/bin/lsblk', '--pairs', '--output', 'NAME,TYPE,FSTYPE,LABEL', '/dev/sdb', '--nodeps'] with allowed return codes [0] (shell=False, capture=True)
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking if device layout matches
Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Running command ['/sbin/sgdisk', '-p', '/dev/sdb'] with allowed return codes [0] (shell=False, capture=True)
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking if device is safe to partition
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking for device size
Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Running command ['/sbin/sgdisk', '-p', '/dev/sdb'] with allowed return codes [0] (shell=False, capture=True)
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Calculating partition layout
Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Creating partition on /dev/sdb took 0.083 seconds
Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[WARNING]: Failed partitioning operation#012could not convert string to float: 'GPT'
Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Failed partitioning operation#012could not convert string to float: 'GPT'#012Traceback (most recent call last):#012  File "/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py", line 57, in handle#012    func=mkpart, args=(disk, definition))#012  File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 2060, in log_time#012    ret = func(*args, **kwargs)#012  File "/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py", line 692, in mkpart#012    part_definition = get_partition_layout(table_type, device_size, layout)#012  File "/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py", line 576, in get_partition_layout#012    return get_dyn_func("get_partition_%s_layout", table_type, size, layout)#012  File "/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py", line 338, in get_dyn_func#012    return globals()[func_name](*func_args)#012  File "/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py", line 526, in get_partition_gpt_layout#012    part_size = int(float(size) * (float(percent) / 100))#012ValueError: could not convert string to float: 'GPT'
Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: setting up filesystems: [{'device': 'ephemeral0.1', 'replace_fs': 'ntfs', 'filesystem': 'ext4'}]

-- 
https://code.launchpad.net/~paul-meyer/cloud-init/+git/cloud-init/+merge/304033
Your team cloud init development team is requested to review the proposed merge of ~paul-meyer/cloud-init:fix-raw-ephemeral-disk into cloud-init:master.


References