Use any disk for /boot regardless of its size
Apparently, the disks which're bigger than 2T were excluded from list of bootable disks if possible. Just because in the past, those disks were unrecognized by BIOS (or UEFI under CSM). In fact, it was just misconfiguration of RAID controller or BIOS itself. GRUB uses BIOS INT13h in order to find all available disks. Therefore, unless particular disk is not configured as 'bootable', there's no change for GRUB to find it. One should configure hardware in the following way assuming that the first disk (hd0) is bootable and is used for operating system purposes. In case of hardware RAID, FC multipath or any other HBA, the disk (or lun, or whatever) which was configured as 'bootable' will be reported as hd0 via INT13h. So, GRUB will be able to boot from it. DocImpact Closes-Bug: #1588260 Change-Id: I7bc729ffafa3b9d6bfe8521fa38599d36d02f7e1 (cherry picked from commite2a20044b2
) (cherry picked from commit7ffbf39caf
)
This commit is contained in:
parent
8cfa48bbca
commit
8c118a4776
@ -138,11 +138,7 @@ class Nailgun(BaseDataDriver):
|
||||
# by fuel-agent (it always installs BIOS variant of
|
||||
# grub)
|
||||
# * grub bug (http://savannah.gnu.org/bugs/?41883)
|
||||
# NOTE(kozhukalov): On some hardware GRUB is not able
|
||||
# to see disks larger than 2T due to firmware bugs,
|
||||
# so we'd better avoid placing /boot on such
|
||||
# huge disks if it is possible.
|
||||
disks = self.small_ks_disks or self.ks_disks
|
||||
disks = self.ks_disks
|
||||
suitable_disks = [
|
||||
disk for disk in disks
|
||||
if ('nvme' not in disk['name'] and self._is_boot_disk(disk))
|
||||
@ -186,11 +182,6 @@ class Nailgun(BaseDataDriver):
|
||||
return [d for d in self.ks_disks
|
||||
if d['name'].startswith('md') and self._is_os_disk(d)]
|
||||
|
||||
@property
|
||||
def small_ks_disks(self):
|
||||
"""Get those disks which are smaller than 2T"""
|
||||
return [d for d in self.ks_disks if d['size'] <= 2097152]
|
||||
|
||||
@property
|
||||
def ks_vgs(self):
|
||||
return filter(
|
||||
|
@ -1247,13 +1247,6 @@ class TestNailgunBootDisks(unittest2.TestCase):
|
||||
self._check_boot_disks(ks_disks_return_value, not_expected_disk,
|
||||
expected_disks)
|
||||
|
||||
def test_only_small_boot_disks(self):
|
||||
ks_disks_return_value = self.disks + [self.big_disk]
|
||||
not_expected_disk = self.big_disk
|
||||
expected_disks = self.disks
|
||||
self._check_boot_disks(ks_disks_return_value, not_expected_disk,
|
||||
expected_disks)
|
||||
|
||||
def test_boot_disks_no_nvme(self):
|
||||
ks_disks_return_value = self.disks + [self.nvme_disk]
|
||||
not_expected_disk = self.nvme_disk
|
||||
@ -1581,13 +1574,14 @@ class TestNailgunMockedMeta(unittest2.TestCase):
|
||||
|
||||
def test_boot_partition_ok_first_disk_huge(self, mock_lbd,
|
||||
mock_image_meta):
|
||||
# /boot should be on first disk even if it's huge
|
||||
data = copy.deepcopy(PROVISION_SAMPLE_DATA)
|
||||
data['ks_meta']['pm_data']['ks_spaces'] = FIRST_DISK_HUGE_KS_SPACES
|
||||
mock_lbd.return_value = LIST_BLOCK_DEVICES_SAMPLE
|
||||
drv = nailgun.Nailgun(data)
|
||||
self.assertEqual(
|
||||
drv.partition_scheme.fs_by_mount('/boot').device,
|
||||
'/dev/sdb3')
|
||||
'/dev/sda3')
|
||||
|
||||
def test_boot_partition_ok_many_huge_disks(self, mock_lbd,
|
||||
mock_image_meta):
|
||||
|
Loading…
Reference in New Issue
Block a user