Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

This probably seems like a simple question, but hear me out. Here's the scenario that caused me to ask this question, as this is not so much a "how to" question but a "why" question:

I was trying to kickstart a CentOS box. The box has 8 drives: 6 are 1TB to be used for data, and 2 are 200GB to be used for mirroring the OS and some other directories.The kickstart failed because of the bootloader portion of the config file which specified drive order of sda, sdb, etc. I decided to install from DVD (GUI, not text) and use the resulting Anaconda file to create a new kickstart file. The storage devices were listed in the order of sda,sdb,sdc, etc., but sda and sdc were the 200GB drives, not sda and sdb as I'd expected.

I set up software RAID 1 for sda1 and sdc1, joining them under md0. At the screen for installing the bootloader it asked it saw the mbr as being on sdd. I changed the drive order in the dialogue box there to use sda and sdc as the boot devices, and chose sda as the location to put the bootloader. Reboot, and no joy. Just a blinking cursor. I tried this several times, including on a different box (same hardware), and at times sda was automatically recognized as having the mbr, but it never booted.

I was advised eventually to go into the BIOS and change the boot order there. Indeed I saw that my two 200GB drives were listed as number 5 and 6 in boot order, which is why even though I was specifying sda it wasn't working. sda wasn't the first drive the BIOS was booting up. I now have a working system, but it seems I can't kickstart the remaining systems without first going into the BIOS on each one and manually changing this order.

What is it that determines drive boot order as per the BIOS? In old-school IDE desktops it's the order on the ribbon; what controls it with SAS? I had expected that the drive order/boot order would follow the numbering of the drive slots on the chassis (i.e. slot 0 would be sda, slot 1 would be sdb, and so on).

Then, once the boot process has booted drives in a specific order, how do the drives get labeled (the sd* portion)? I'm confused as to how my 2x200GB drives were numbers 5 and 6 respectively in the BIOS, but labeled as sda and sdc during the CentOS setup process.

Is the only way to work around an issue like this really to manually edit the BIOS on each machine?

Thanks in advance for your thoughts/explanations.

share|improve this question
    
Just don't expect your drives to have any predictable names based on assignment at boot time. It will be dependent on your BIOS, and its varions SATA chipsets, and random interactions of boot order, onboard-RAID status, etc. Set the boot drive, and forget about trying to order anything else. Use /dev/disk/by-id/* , e.g. the serial numbers of the drives. Or UUID of the filesystems themselves. –  Jeff Warnica Jun 21 '13 at 16:18
    
@JeffWarnica, does that mean that if you care about what drives you want the OS to be on, you can't really use Kickstart? Because if you have to go in to each server and note the IDs of the drives, which will differ from server to server, then you can't really create a base configuration file to use to deploy servers. Does this mean kickstart is only useful if you have all drives of the same size and therefore don't care which ones get the OS or not? -Thanks –  S.C. Jun 26 '13 at 1:14
    
There is also the option of /dev/disk/by-path, which on a given make/model/configuration "should" be the same. For relatively well designed "enterprise" hardware, this should map to physical drive slots. Though, since you are asking the question at all, it doesn't sound like you have consistent (or "good") hardware, in which case you might be SOL. –  Jeff Warnica Jun 26 '13 at 15:35

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.