linux中硬盘sda和Vda的区别,KVM中给Linux虚拟机增加磁盘空间的方法

当虚拟机磁盘空间不足时,可以通过两种方法扩展:1) 添加新硬盘并挂载,适用于需要额外存储空间的情况;2) 使用virt-resize工具直接扩展分区,适合快速拓展且能对特定分区操作,但需要关机。对于支持LVM的系统,可以在线扩容,效率高。拓展过程中需要注意磁盘格式、挂载点设置及权限问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近虚拟机中运行的东西比较多,很多。而刚启动的时候虚拟机分配的磁盘比较少,随着日志还有平时的上传文件的积累,磁盘空间报警了。网上查了下资料,自己也做了下实验。总结下给虚拟机增加磁盘的硬盘空间的方法。

对于sda/vda等格式的硬盘

环境:centos 6.1

虚拟机的属性:domainname   test

Disk path       /var/lib/libvirt/p_w_picpaths/test.img

硬盘分区:

[root@localhost ~]# df -hT  Filesystem    Type    Size Used Avail Use% Mounted on  /dev/vda1     ext4    6.8G 3.2G 3.3G 50% /  tmpfs        tmpfs    499M     0 499M   0% /dev/shm

需要添加硬盘空间。

方法1

思路,既然是少一块硬盘,那么我们就直接给虚拟机加一块硬盘就好了,然后直接挂载到根分区的一个目录下面。这样我根分区的硬盘空间就扩展了。

解决方法1

A,生成一块新的硬盘

使用virt-manager很容易,直接在虚拟的属性中点击“添加硬件”----“storage”选择多大的空间,驱动类型,缓存模式。然后点击完成。注意,有些硬盘是支持热插拔的,有些不支持。除了IDE格式的硬盘外,其他的都支持热插拔,这就意味着,如果添加的是IDE的硬盘的话,需要对虚拟机进行重启,使他识别新添加的硬盘。

如果采用virsh命令添加的话。采用命令

#qemu-img create -f raw test_add.img 10G

//说明,生成一块新的raw格式的空盘

#virsh attach-disk test /var/lib/libvirtd/p_w_picpaths/test_add.img vdb —cache none

或者#virsh edit test 在xml中的disk后面添加如下几行。

B,在虚拟机中对硬盘进行格式化

登录到虚拟机中,首先查看是否能新识别硬盘

#fdisk -l         查看是否回显示新添加的硬盘/dev/vdb

然后,对vdb进行格式化,

#mkfs.ext4 /dev/vdb

接下来,新建一个目录用来挂载新的硬盘

#mkdir   /test  #mount /dev/vdb /test

最后,将该挂载添加到开机启动中

#blkid /dev/vdb           //获取硬盘的UUID  /dev/vdb: UUID="19fc1d1d-7891-4e22-99ef-ea3e08a61840" TYPE="ext4"  #vim /etc/fstab             //添加开机加载,在最后一行加入  UUID=19fc1d1d-7891-4e22-99ef-ea3e08a61840 /test ext4 defaults        1 2

到此方法一,添加完毕

方法2,直接拉升分区

思 路,采用挂载的方法是而外添加了一块盘,有没有一种方法可以直接对硬盘进行拉伸。qemu-img中提供了一个resize的命令,但是该命令只是单纯的 简单了拉升或者缩小了一个raw的img镜像大小,对于其中的分区却不能进行修改。我需要对其中的的分区进行拓展。很碰巧红帽子提供这种插件可以时间。此方法是采用红帽子自带的插件virt-resize进行拓展。该命令首先是获取原来的分区信息,还 有其他文件信息。然后对新的镜像进行重新分区、格式化。最后拷贝原镜像中的文件到新文件系统中,再用新拓展的镜像替换原有镜像。因为实际采用copy的方 式,所以他花的时间比较长,如果是一个大镜像不建议使用此方法

具体解决方案。

前提安装libguestfs-tools工具包。关闭虚拟机

#yum -y install libguestfs-tools

A,新建一个大镜像

#qemu-img create -f raw test_extend.img 15G

注意,这里的img大小是你需要拓展的总大小

B,使用virt-resize进行拉升分区

#virt-resize —expand   /dev/vda1 /var/lib/libvirt/p_w_picpaths/test.img /var/lib/libvirt/p_w_picpaths/test_new.img

注意,此时间很长,请耐心等待

C.使用新扩展的镜像代替原镜像

#mv /var/lib/libvirt/p_w_picpaths/test_new.img /var/lib/libvirt/p_w_picpaths/test.img

D,启动虚拟机

#virsh start test

拓展完成,

virt-resize的优势:能对虚拟机中的特定的分区进行拓展。并且能够拓展windows镜像。不需要登录到虚拟机里面进行任何操作。

缺点:拓展的时候需要关机。对于大的镜像,拓展的时间比较长。

对于LVM格式的虚拟机

如果你的硬盘格式支持LVM。那么你的硬盘拓展将容易许多,LVM支持硬盘的在线扩容。相当方便。

方法步骤:

#lvcreate -L 40G -n lv_vm_test1 VolGroup  #virsh attach-disk test /dev/mapper/VolGroup/lv_vm_test vdb

注意,有可能碰到权限问题。请先修改/dev/mapper/VolGroup/lv_vm_test的权限,是虚拟机可以挂载。

进入虚拟机的操作:

#pvcreate /dev/vdb  #vgextend VolGroup /dev/vdb  #vgs  #lvextend -l +100%FREE /dev/VolGroup/lv_root  #resize2fs -p /dev/VolGroup/lv_root

优势:拓展时间很快,支持动态扩展。

缺点,不适合window的拓展。

<think>好的,用户现在的问题是询问如何在Ubuntu虚拟机中退出initramfs模式。首先,我需要回顾一下initramfs是什么。initramfs是一个临时的根文件系统,用于在启动过程中加载必要的驱动模块,以便挂载真正的根文件系统。当系统无法找到根文件系统或遇到其他启动问题时,可能会进入initramfs的紧急shell。 接下来,用户提到的是在虚拟机环境中遇到这个问题。虚拟机可能有不同的存储配置,比如使用虚拟磁盘或特定的控制器(如SCSI或SATA)。需要考虑到虚拟机特有的因素,比如磁盘驱动是否正确加载,或者虚拟磁盘文件是否损坏。 用户之前的问题是关于退出GRUB模式,现在转向initramfs,说明他们可能在启动过程中遇到了不同阶段的问题。需要明确两者的区别:GRUB是引导加载程序,而initramfs是在内核启动后初始化的临时文件系统。退出方法也不同,GRUB通常通过选择启动项或等待,而initramfs则需要解决启动错误才能退出。 接下来,分析可能的原因。用户进入initramfs shell通常是因为系统无法挂载根分区。可能的原因包括文件系统错误、磁盘UUID变化、/etc/fstab配置错误,或者虚拟机磁盘文件损坏。例如,虚拟机突然关闭可能导致文件系统损坏,或者用户调整了虚拟磁盘设置但没有更新配置。 然后,思考解决步骤。首先,用户需要在initramfs shell中检查文件系统。常用的命令包括fsck来修复文件系统。需要指导用户如何运行fsck,指定正确的分区。例如,使用fsck /dev/sda1 -y,但需要确认分区是否正确。这里需要注意,虚拟机中的磁盘设备可能不是sda,可能是vda或其他,这取决于虚拟化平台(如KVM通常使用vda,而VirtualBox可能使用sda)。 另外,可能需要检查/etc/fstab中的条目是否正确,特别是如果用户最近修改过磁盘配置或添加了新挂载点。如果UUID不匹配,会导致挂载失败。此时,用户需要确认根分区的UUID是否与/etc/fstab中的一致,可以使用blkid命令查看。 如果fsck修复后问题依旧,可能需要进一步检查其他配置或考虑恢复备份。对于虚拟机,还可以考虑从快照恢复,或者重新挂载虚拟磁盘到另一个实例进行修复。 用户可能不太熟悉命令行操作,特别是initramfs环境下的命令。需要以简明清晰的步骤指导,避免使用复杂术语。同时,要提醒用户在操作前备份数据,以防万一。另外,如果用户是新手,可能会因为误操作导致问题加剧,所以步骤需要详细且准确。 还要考虑到用户是在虚拟机中操作,可能更容易进行快照恢复或重新配置虚拟机设置。例如,如果虚拟磁盘损坏,可以替换磁盘文件或调整虚拟硬件设置。不过,用户的问题是如何退出initramfs,因此重点应放在修复启动问题,而不是虚拟机管理。 最后,总结解决步骤:检查文件系统错误,修复配置,重新启动。如果无法解决,可能需要更深入的故障排除或恢复备份。同时,提醒用户预防措施,如定期备份、安全关闭系统等,避免未来再次遇到此类问题。</think>在Ubuntu虚拟机中退出`initramfs`模式(即系统启动失败后进入的紧急救援Shell),需**先修复导致系统无法挂载根分区的错误**,再重启系统。以下是分步骤解决方案: --- ### 一、理解`initramfs`模式 `initramfs`是Linux内核启动时加载的临时根文件系统,用于挂载真正的根分区。若系统**无法识别根分区**或**文件系统损坏**,会进入此模式。常见错误提示: ```bash /dev/mapper/ubuntu--vg-root: clean, ... blocks (或提示 "Cannot mount root filesystem") ``` --- ### 二、修复文件系统错误(关键步骤) #### 1. **检查根分区设备名** - 输入以下命令查看可用磁盘分区: ```bash lsblk # 或使用 `blkid` ``` - 确认根分区设备名(如`/dev/sda1`、`/dev/vda1`,虚拟机中可能为`vda`系列)。 #### 2. **修复文件系统** - 运行`fsck`修复工具(替换`/dev/sda1`为你的根分区): ```bash fsck /dev/sda1 -y ``` - 若提示`/dev/sda1 is mounted`,需先卸载: ```bash umount /dev/sda1 ``` 再重新运行`fsck`。 #### 3. **检查`/etc/fstab`配置** - 如果错误与挂载配置相关,检查`/etc/fstab`文件: ```bash cat /etc/fstab ``` - 验证分区UUID是否匹配(通过`blkid`查看实际UUID)。 --- ### 三、尝试重新启动 1. **退出`initramfs`并重启** - 输入以下命令: ```bash exit ``` - 系统会尝试继续启动或重新触发`fsck`。 2. **若仍失败** - 在`initramfs`中手动挂载根分区并修复: ```bash mount /dev/sda1 /root # 挂载到临时目录 chroot /root # 切换到真实根环境 apt install --fix-broken # 修复依赖问题(若软件损坏) update-initramfs -u # 更新initramfs reboot ``` --- ### 四、虚拟机特殊场景处理 1. **检查虚拟磁盘文件** - 若虚拟机磁盘文件(如`.vdi`或`.qcow2`)损坏,尝试: - 从备份恢复虚拟机磁盘。 - 新建虚拟机并挂载原有磁盘文件。 2. **调整虚拟机设置** - 确保虚拟磁盘控制器类型(如SCSI/SATA)与Ubuntu驱动兼容。 - 尝试禁用`EFI安全启动`(某些情况可能导致驱动冲突)。 --- ### 五、预防措施 1. **定期备份** - 对虚拟机磁盘文件或关键数据做快照/备份。 2. **安全关闭系统** ```bash sudo shutdown -h now # 避免强制断电导致文件系统损坏 ``` --- ### 流程图总结 $$ \text{initramfs修复流程} \begin{cases} 1.\ \text{检查根分区} \xrightarrow{\text{lsblk/blkid}} \text{确认设备名} \\ 2.\ \text{修复文件系统} \xrightarrow{\text{fsck}} \text{修复错误} \\ 3.\ \text{检查配置} \xrightarrow{\text{/etc/fstab}} \text{验证UUID或挂载点} \\ 4.\ \text{重启系统} \xrightarrow{\text{exit或reboot}} \text{退出initramfs} \end{cases} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值