使用外部导入的私有镜像所创建的云服务器在启动过程中提示找不到分区,如何处理?
问题描述
将外部镜像文件制作为私有镜像后,使用该私有镜像所创建的云服务器在启动过程中提示找不到分区,通常是由于跨平台后,磁盘分区的ID发生变化,导致镜像无法按照原来磁盘分区ID查询对应的分区名,此时,需要将镜像中的磁盘分区修改为“UUID=磁盘分区的UUID”。
处理方法
以openSUSE 13.2操作系统的镜像为例,修改分区名的操作步骤如下:
- 执行以下命令,确认当前磁盘分区对应的ID。
回显类似如下所示。
total 0 lrwxrwxrwx 1 root root 10 Jul 22 01:35 ata-QEMU_HARDDISK_QM00001 -> ../../xvda lrwxrwxrwx 1 root root 11 Jul 22 01:35 ata-QEMU_HARDDISK_QM00001-part1 -> ../../xvda1 lrwxrwxrwx 1 root root 12 Jul 22 01:35 ata-QEMU_HARDDISK_QM00001-part10 -> ../../xvda10 lrwxrwxrwx 1 root root 11 Jul 22 01:35 ata-QEMU_HARDDISK_QM00001-part2 -> ../../xvda2 lrwxrwxrwx 1 root root 11 Jul 22 01:35 ata-QEMU_HARDDISK_QM00001-part5 -> ../../xvda5 lrwxrwxrwx 1 root root 11 Jul 22 01:35 ata-QEMU_HARDDISK_QM00001-part6 -> ../../xvda6 lrwxrwxrwx 1 root root 11 Jul 22 01:35 ata-QEMU_HARDDISK_QM00001-part7 -> ../../xvda7 lrwxrwxrwx 1 root root 11 Jul 22 01:35 ata-QEMU_HARDDISK_QM00001-part8 -> ../../xvda8 lrwxrwxrwx 1 root root 11 Jul 22 01:35 ata-QEMU_HARDDISK_QM00001-part9 -> ../../xvda9 lrwxrwxrwx 1 root root 10 Jul 22 01:35 ata-QEMU_HARDDISK_QM00005 -> ../../xvde lrwxrwxrwx 1 root root 10 Jul 22 01:35 scsi-SATA_QEMU_HARDDISK_QM00001 -> ../../xvda lrwxrwxrwx 1 root root 11 Jul 22 01:35 scsi-SATA_QEMU_HARDDISK_QM00001-part1 -> ../../xvda1 lrwxrwxrwx 1 root root 12 Jul 22 01:35 scsi-SATA_QEMU_HARDDISK_QM00001-part10 -> ../../xvda10 lrwxrwxrwx 1 root root 11 Jul 22 01:35 scsi-SATA_QEMU_HARDDISK_QM00001-part2 -> ../../xvda2 lrwxrwxrwx 1 root root 11 Jul 22 01:35 scsi-SATA_QEMU_HARDDISK_QM00001-part5 -> ../../xvda5 lrwxrwxrwx 1 root root 11 Jul 22 01:35 scsi-SATA_QEMU_HARDDISK_QM00001-part6 -> ../../xvda6 lrwxrwxrwx 1 root root 11 Jul 22 01:35 scsi-SATA_QEMU_HARDDISK_QM00001-part7 -> ../../xvda7 lrwxrwxrwx 1 root root 11 Jul 22 01:35 scsi-SATA_QEMU_HARDDISK_QM00001-part8 -> ../../xvda8 lrwxrwxrwx 1 root root 11 Jul 22 01:35 scsi-SATA_QEMU_HARDDISK_QM00001-part9 -> ../../xvda9 lrwxrwxrwx 1 root root 10 Jul 22 01:35 scsi-SATA_QEMU_HARDDISK_QM00005 -> ../../xvde
其中,“ata-QEMU_HARDDISK_xxx”和“scsi-SATA_QEMU_HARDDISK_xxx”表示该云服务器的磁盘为qemu模拟设备。磁盘分区ID为“->”左侧内容,对应的分区名为“->”右侧内容。
- 执行以下命令,确认当前磁盘分区对应的UUID。
回显类似如下所示。
total 0 lrwxrwxrwx 1 root root 11 Jul 22 01:35 45ecd7a0-29da-4402-a017-4564a62308b8 -> ../../xvda5 lrwxrwxrwx 1 root root 11 Jul 22 01:35 55386c6a-9e32-41d4-af7a-e79596221f51 -> ../../xvda9 lrwxrwxrwx 1 root root 11 Jul 22 01:35 55f36660-9bac-478c-a701-7ecc5347f789 -> ../../xvda8 lrwxrwxrwx 1 root root 11 Jul 22 01:35 780f36bc-0ada-4c98-9a8d-44570d65333d -> ../../xvda1 lrwxrwxrwx 1 root root 11 Jul 22 01:35 b3b7c47f-6a91-45ef-80d6-275b1cc16e19 -> ../../xvda6 lrwxrwxrwx 1 root root 11 Jul 22 01:35 ea63b55d-3b6e-4dcd-8986-956b72bac3e9 -> ../../xvda7 lrwxrwxrwx 1 root root 12 Jul 22 01:35 eb3cc645-925e-4bc5-bedf-c2a6f3b65809 -> ../../xvda10
其中,每条磁盘信息中,“->”左侧为磁盘的UUID,“->”右侧为对应的磁盘分区名。结合1结果,可以得到磁盘分区名,磁盘分区ID和磁盘分区UUID的对应关系。
- 执行以下命令,查看“/etc/fstab”文件中分区名称。
回显类似如下所示。
/dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part5 / ext3 defaults,errors=panic 1 1 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part1 /boot ext3 defaults,errors=panic 1 2 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part6 /home ext3 nosuid,errors=panic 1 2 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part10 /opt ext3 defaults,errors=panic 1 2 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part7 /tmp ext3 nodev,nosuid,errors=panic 1 2 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part9 /usr ext3 defaults,errors=panic 1 2 /dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part8 /var ext3 nodev,nosuid,errors=panic 1 2 sysfs /sys sysfs noauto 0 0 proc /proc proc defaults 0 0 usbfs /proc/bus/usb usbfs noauto 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0 /dev/cdrom /media/ udf,iso9660 noexec,noauto,nouser,nodev,nosuid 1 2 tmpfs /dev/shm tmpfs noexec,nodev,nosuid 0 0
回显中第一列为磁盘分区ID。
- 按“i”进入编辑模式,按照1和2的查询结果,将3“/etc/fstab”文件中“/dev/disk/xxx”所在行磁盘分区ID修改为“UUID=磁盘分区的UUID”的形式。
修改结果如下所示。
UUID=45ecd7a0-29da-4402-a017-4564a62308b8 / ext3 defaults,errors=panic 1 1 UUID=780f36bc-0ada-4c98-9a8d-44570d65333d /boot ext3 defaults,errors=panic 1 2 UUID=b3b7c47f-6a91-45ef-80d6-275b1cc16e19 /home ext3 nosuid,errors=panic 1 2 UUID=eb3cc645-925e-4bc5-bedf-c2a6f3b65809 /opt ext3 defaults,errors=panic 1 2 UUID=ea63b55d-3b6e-4dcd-8986-956b72bac3e9 /tmp ext3 nodev,nosuid,errors=panic 1 2 UUID=55386c6a-9e32-41d4-af7a-e79596221f51 /usr ext3 defaults,errors=panic 1 2 UUID=55f36660-9bac-478c-a701-7ecc5347f789 /var ext3 nodev,nosuid,errors=panic 1 2 sysfs /sys sysfs noauto 0 0 proc /proc proc defaults 0 0 usbfs /proc/bus/usb usbfs noauto 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0 /dev/cdrom /media/ udf,iso9660 noexec,noauto,nouser,nodev,nosuid 1 2 tmpfs /dev/shm tmpfs noexec,nodev,nosuid 0 0
请确保对应的UUID修改正确,否则会造成云服务器无法正常启动。
- 按“Esc”后,输入:wq,按“Enter”。保存设置并退出vi编辑器。
- 检查引导系统的配置文件中的分区名。
不同操作系统对应的系统引导配置文件,通常为如下几种。请确认当前操作系统使用系统引导配置文件的文件名。
- grub引导配置文件
- /boot/grub/grub.conf
- /boot/grub/menu.lst
- /boot/grub/grub.cfg
- /boot/grub2/grub.cfg
- syslinux引导配置文件
- /extlinux.conf
- /boot/syslinux/extlinux.conf
- /boot/extlinux/extlinux.conf
- /boot/syslinux/syslinux.cfg
- /syslinux/syslinux.cfg
- /syslinux.cfg
本例中引导文件为“/boot/grub/menu.lst”,请执行以下命令,查看引导文件。
vi /boot/grub/menu.lst
default 0 timeout 3 title xxx Server OS - xxxxxx kernel /boot/vmlinuz-3.0.101-0.47.52-default root=/dev/disk/by-id/scsi-SATA_QEMU_HARDDISK_QM00001-part5 resume= memmap=0x2000000$0x3E000000 nmi_watchdog=2 crashkernel=512M-:256M console=ttyS0,115200 console=tty0 xen_emul_unplug=all initrd /boot/initrd-3.0.101-0.47.52-default
- grub引导配置文件
- 按“i”进入编辑模式,修改引导系统的配置文件中的分区名。
按照1和2的查询结果,将6“/boot/grub/menu.lst”文件中的磁盘分区名修改为“UUID=磁盘分区的UUID”的形式。
default 0 timeout 3 title xxx Server OS - xxxxxx kernel /boot/vmlinuz-3.0.101-0.47.52-default root=UUID=45ecd7a0-29da-4402-a017-4564a62308b8 resume= memmap=0x2000000$0x3E000000 nmi_watchdog=2 crashkernel=512M-:256M console=ttyS0,115200 console=tty0 xen_emul_unplug=all initrd /boot/initrd-3.0.101-0.47.52-default
- 按“Esc”后,输入:wq,按“Enter”。 保存设置并退出vi编辑器。