ARM SERVER 虚拟机挂载多块磁盘问题的解决方法
2015-09-28 09:56
465 查看
今天在ARM-SERVER上启动虚拟机发现总是mount不上根目录,报告错误为
Begin: Loading essential drivers ... done.Begin: Running /scripts/init-premount ... done.Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.Begin: Loading essential drivers ... done.Begin: Running /scripts/init-premount ... done.Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.Begin: Running /scripts/local-premount ... done.mount: mounting /dev/vda on /root failed: Invalid argumentBegin: Running /scripts/local-bottom ... done.done.Begin: Running /scripts/init-bottom ... mount: mounting /dev on /root/dev failed: No such file or directorydone.mount: mounting /sys on /root/sys failed: No such file or directorymount: mounting /proc on /root/proc failed: No such file or directoryTarget filesystem doesn't have requested /sbin/init.No init found. Try passing init= bootarg.
虚拟机配置如下.... <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/home/liufeng/vm/disk/ubuntu-core-14.04.1-core-arm64.img'/> <target dev='vda' bus='virtio'/> <alias name='virtio-disk0'/> <address type='virtio-mmio'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/mnt/data.qcow2'/> <target dev='vdb' bus='virtio'/> <alias name='virtio-disk1'/> <address type='virtio-mmio'/> </disk>....
其实是虚拟机的一个问题,将加入的空闲磁盘识别为vda了,本来应该将ubuntu-core-14.04.1-core-arm64.img识别为vda,结果被识别为vdb了(可以在(initramfs)下面mount /dev/vdb 看到)
解决问题思路如下
1. 找到vdb的UUID
(initramfs) blkid /dev/vdb/dev/vdb: UUID="004802c8-b09c-4bf6-b2d9-6722bfcd851b" TYPE="ext4"
2. 修改虚拟机启动参数,用UUID就和识别的盘符没有关系了,使用UUID永远是唯一的,vda也好,vdb也罢,都没有关系 <os> <type arch='aarch64' machine='virt'>hvm</type> <kernel>/home/liufeng/vm/disk/vmlinuz-3.13.0-57-generic</kernel> <initrd>/home/liufeng/vm/disk/initrd.img-3.13.0-57-generic</initrd> <cmdline>console=ttyAMA0 root=UUID=004802c8-b09c-4bf6-b2d9-6722bfcd851b</cmdline> <boot dev='hd'/> </os>
3. 启动虚拟机,OK,注意这里新的磁盘变成了/dev/vda,后面别mount错了
虚拟机里面执行:root@localhost:~# mkfs.ext2 /dev/vdaroot@localhost:~# mount /dev/vda /mnt/
Begin: Loading essential drivers ... done.Begin: Running /scripts/init-premount ... done.Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.Begin: Loading essential drivers ... done.Begin: Running /scripts/init-premount ... done.Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.Begin: Running /scripts/local-premount ... done.mount: mounting /dev/vda on /root failed: Invalid argumentBegin: Running /scripts/local-bottom ... done.done.Begin: Running /scripts/init-bottom ... mount: mounting /dev on /root/dev failed: No such file or directorydone.mount: mounting /sys on /root/sys failed: No such file or directorymount: mounting /proc on /root/proc failed: No such file or directoryTarget filesystem doesn't have requested /sbin/init.No init found. Try passing init= bootarg.
虚拟机配置如下.... <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/home/liufeng/vm/disk/ubuntu-core-14.04.1-core-arm64.img'/> <target dev='vda' bus='virtio'/> <alias name='virtio-disk0'/> <address type='virtio-mmio'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/mnt/data.qcow2'/> <target dev='vdb' bus='virtio'/> <alias name='virtio-disk1'/> <address type='virtio-mmio'/> </disk>....
其实是虚拟机的一个问题,将加入的空闲磁盘识别为vda了,本来应该将ubuntu-core-14.04.1-core-arm64.img识别为vda,结果被识别为vdb了(可以在(initramfs)下面mount /dev/vdb 看到)
解决问题思路如下
1. 找到vdb的UUID
(initramfs) blkid /dev/vdb/dev/vdb: UUID="004802c8-b09c-4bf6-b2d9-6722bfcd851b" TYPE="ext4"
2. 修改虚拟机启动参数,用UUID就和识别的盘符没有关系了,使用UUID永远是唯一的,vda也好,vdb也罢,都没有关系 <os> <type arch='aarch64' machine='virt'>hvm</type> <kernel>/home/liufeng/vm/disk/vmlinuz-3.13.0-57-generic</kernel> <initrd>/home/liufeng/vm/disk/initrd.img-3.13.0-57-generic</initrd> <cmdline>console=ttyAMA0 root=UUID=004802c8-b09c-4bf6-b2d9-6722bfcd851b</cmdline> <boot dev='hd'/> </os>
3. 启动虚拟机,OK,注意这里新的磁盘变成了/dev/vda,后面别mount错了
虚拟机里面执行:root@localhost:~# mkfs.ext2 /dev/vdaroot@localhost:~# mount /dev/vda /mnt/
相关文章推荐
- eclipse 如何将maven target目录排除在搜索结果之外?
- QEMU VCPU线程同步机制之QemuCond(基于QEMU2.0.0)
- Linux 新api eventfd
- KVM源代码分析1:基本工作原理
- select(poll)实现代码实现分析(基于kernel 3.10.0)
- select(poll)实现代码实现分析(基于kernel 3.10.0)
- 安卓优化
- Vhost Architecture(基于kernel3.10.0 & qemu2.0.0)
- [个人推荐]理解poll_wait
- linux内核的等待队列使用方法,wait_queue_head_t,进程休眠
- [个人推荐] Linux poll机制分析(基于内核3.10.0)
- linux poll 和 等待队列休眠的关系(基于kernel 3.10.0)
- VI VIM 在行首行尾添加文字字符串
- 新手对Bash环境变量解析漏洞的理解 http://www.linuxidc.com/Linux/2014-10/107984.htm
- Android sendevent/getevent 用法
- vmware workstation11安装redhat5
- JDK、J2EE、J2SE、J2ME的区别
- STL系列十一 随机三趣题——随机重排,文件中随机取一行,生成N个随机数。
- ViewPager实现无线循环滚动
- 令狐冲的SDL(安全开发周期)引进手记