如何增加虚拟机ubuntu的硬盘 (转)

本文提供了一种在Ubuntu虚拟机中增加硬盘空间的方法,无需重新安装系统。通过在VMware中添加新硬盘并将其格式化及挂载到Ubuntu中,最后配置自动挂载。

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

一前言:我们刚开始在虚拟机上安装ubuntu的时候,总是舍不得分配太多的硬盘空间。但用着用着时间久了硬盘就不够了。一种最笨的方法就是重装系统,但却费时费神。如果能够在不重装系统的情况下增加硬盘就好了。下面就来实现它。

  二.

  1.首先把ubuntu shutdown.

  2.在VMware里点击菜单VM——>Settings

  3.在Hardware里面单击底下的Add按钮,然后选择Hard Disk——>Next——>Next——>Disk size(GB)是新增硬盘的大小——>Next——>Finish——>Ok. 这样在VMware的Devices里就多了一个Hard Disk 2。

  三,接下来就是进入ubuntu,把新的硬盘mount进去了。

  1.

  root@sparkle-desktop:~# fdisk -l

  Disk /dev/sda: 17.1 GB, 17179869184 bytes

  255 heads, 63 sectors/track, 2088 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Disk identifier: 0x000af2a2

  Device Boot      Start         End      Blocks   Id System

  /dev/sda1   *           1         993     7976241   83 Linux

  /dev/sda2             994        1044      409657+   5 Extended

  /dev/sda5             994        1044      409626   82 Linux swap / Solaris

  Disk /dev/sdb: 8589 MB, 8589934592 bytes

  255 heads, 63 sectors/track, 1044 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Disk identifier: 0x00000000

  Disk /dev/sdb doesn't contain a valid partition table

  可以看到多了一个 /dev/sdb

  2.

  下面是格式化成ext3文件系统

  root@sparkle-desktop:~# mkfs -t ext3 /dev/sdb

  mke2fs 1.40.8 (13-Mar-2008)

  /dev/sdb is entire device, not just one partition!

  Proceed anyway? (y,n) y //把整个新硬件格式化,不分区。

  Filesystem label=

  OS type: Linux

  Block size=4096 (log=2)

  Fragment size=4096 (log=2)

  524288 inodes, 2097152 blocks

  104857 blocks (5.00%) reserved for the super user

  First data block=0

  Maximum filesystem blocks=2147483648

  64 block groups

  32768 blocks per group, 32768 fragments per group

  8192 inodes per group

  Superblock backups stored on blocks:

  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

  Writing inode tables: done

  Creating journal (32768 blocks): done

  Writing superblocks and filesystem accounting information: done

  This filesystem will be automatically checked every 26 mounts or

  180 days, whichever comes first. Use tune2fs -c or -i to override.

  root@sparkle-desktop:~#

  3.

  root@sparkle-desktop:~# cd /home

  root@sparkle-desktop:/home# mkdir work

  root@sparkle-desktop:/home# mount /dev/sdb work //把硬盘mount到work目录。

  root@sparkle-desktop:/home# cd work

  root@sparkle-desktop:/home/work# ls

  lost+found

  4.

  用df命令查看一下挂载情况

  root@sparkle-desktop:~# df

  Filesystem           1K-blocks      Used Available Use% Mounted on

  /dev/sda1              7913216   7803524         0 100% /

  varrun                  257788       240    257548   1% /var/run

  varlock                 257788         0    257788   0% /var/lock

  udev                    257788        48    257740   1% /dev

  devshm                  257788        44    257744   1% /dev/shm

  lrm                     257788     39760    218028 16% /lib/modules/2.6.24-19-generic/volatile

  /dev/sdb               8322488    149632   7753428   2% /home/work

  gvfs-fuse-daemon       7913216   7803524         0 100% /root/.gvfs

  看到/dev/sdb               8322488    149632   7753428   2% /home/work

  一项,   可见成功了。

  5.实现启动自动挂载。

  root@sparkle-desktop:~# gedit /etc/fstab

  根据下面的格式

  # <file system> <mount point>   <type> <options>       <dump> <pass>

  我们自己添加:

  /dev/sdb /home/work    ext3 defaults 0 0

  重启,这样就完成了增加硬盘的全部步骤了。

 

格式:mount [-参数] [设备名称] [挂载点]
其中常用的参数有:
-a 安装在/etc/fstab文件中类出的所有文件系统。
-f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。
-n 不把安装记录在/etc/mtab 文件中。
-r 讲文件系统安装为只读。
-v 详细显示安装信息。
-w 将文件系统安装为可写,为命令默认情况。
-t 指定设备的文件系统类型,常见的有:
ext2 linux目前常用的文件系统
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 网络文件系统
iso9660 CD-ROM光盘标准文件系统
ntfs windows NT/2000/XP的文件系统
auto 自动检测文件系统
-o 指定挂载文件系统时的选项,有些也可写到在/etc/fstab中。常用的有:
defaults 使用所有选项的默认值(auto、nouser、rw、suid)
auto/noauto 允许/不允许以 –a选项进行安装
dev/nodev 对/不对文件系统上的特殊设备进行解释
exec/noexec 允许/不允许执行二进制代码
suid/nosuid 确认/不确认suid和sgid位
user /nouser 允许/不允许一般用户挂载
codepage=XXX 代码页
iocharset=XXX 字符集
ro 以只读方式挂载
rw 以读写方式挂载
remount 重新安装已经安装了的文件系统
loop 挂载回旋设备
需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。使用多个-o参数的时候,-o 只用一次,参数之间用半角逗号隔开:
# mount –o remount,rw /
例如要挂载windows下文件系统为FAT32的D盘,一般而言在Linux下这个分区对应/dev/hda5,根据具体的分区情况会有不同,这里就以hda5来举例说明:
# mkdir /mnt/hda5 //创建hda5的目录作为挂载点,位置和目录名可自定义//
# mount -t vfat /dev/hda5 /mnt/hda5
一般而言,Linux会自动探测分区的文件系统,除非让你指定时,否则-t vfat 可以省掉。
# mount /dev/hda5 /mnt/hda5
这样就可以进入/mnt/hda5目录去访问分区中的资源了。
3. 为什么mount上分区后显示不了中文文件为问号/乱码?
显示问号表明你的系统中没有可识别使用的中文字体,请先安装中文字体。确保你的系统已经可以很好的显示中文。显示为乱码一般是mount默认使用的文件系统编码和文件系统中文件的实际编码不一致造成的。要想正常显示中文文件,mount时需要用到 -o 参数里的codepage和iocharset选项。codepage指定文件系统的代码页,简体中文中文代码是936;iocharset指定字符集,简体中文一般用cp936或gb2312。
# mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5
一般来说 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就可以解决问题了。
如果这样做了以后还有问题,请尝试UTF-8编码:
# mount –o iocharset=utf8 /dev/hda5 /mnt/hda5
4. 为什么mount上去以后分区普通用户不可写?
mount时加上 –o umask=000 即可:
# mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5
5. 为什么mount上去后的分区中的文件都变成短文件名了?
这是文件系统挂错的原因,将FAT32挂载成FAT16时就会出现这种情况,先umount,然后用 –t vfat 重新挂载即可解决问题。
# mount –t vat /dev/hda5 /mnt/hda5
7. 如何挂载U盘和mp3?
如果计算机没有其它SCSI设备和usb外设的情况下,插入的U盘的设备路径是 /dev/sda1,用命令:
# mkdir /mnt/u
# mount /dev/sda1 /mnt/u
挂载即可。
8. 可以直接使用iso文件吗?
可以,就是mount的这一选项使得Linux下有免费虚拟光驱的说法,具体用法是:
# mkdir /mnt/iso
# mount –o loop linux.iso /mnt/iso
当然,挂载以后挂载点/mnt/iso也是只读的。
12. 如何开机自动挂载分区?
每次挂载都要输入那么长的命令的确是繁琐了些,只要将分区信息写到/etc/fstab文件中即可实现系统启动的自动挂载,例如对于/dev/hda5的自动挂载添加如下的行即可:
/dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0
13. 如何挂载samba 分区?
# mkdir /mnt/share
# mount -t smbfs -o username=root,password=abc,codepage=936,iocharset=gb2312 //192.168.1.100/share /mnt/share
如果中文显示不正常请尝试UTF-8编码。当然可以写到fstab中实现自动挂载。
14. mount --bind是什么意思?
mount --bind 是将一个目录中的内容挂载到另一个目录上,用法是
# mount --bind olddir newdir
这个命令使得自己搭建的FTP要共享某个目录的时候变得特别方便。如果要取消mount用命令:
# mount --move olddir newdir 即可。
如果mount --bind 也想写入fstab中的话格式如下:
olddir newdir none bind 0 0
16. 为什么umount的时候老显示 device busy?
这是因为有程序正在访问这个设备,最简单的办法就是让访问该设备的程序退出以后再umount。可能有时候用户搞不清除究竟是什么程序在访问设备,如果用户不急着umount,则可以用:
# umount -l /mnt/hda5
来卸载设备。选项 –l 并不是马上umount,而是在该目录空闲后再umount。还可以先用命令 ps aux 来查看占用设备的程序PID,然后用命令kill来杀死占用设备的进程,这样就umount的非常放心了。
Linux SHELL if 命令参数说明
Penner @ 2007 三月 25th 星期日, at 20:05:33
俺反正是经常忘啊,用的时候总是翻箱倒柜的找也不是个事,把它们列在这里吧。
* –b 当file存在并且是块文件时返回真
* -c 当file存在并且是字符文件时返回真
* -d 当pathname存在并且是一个目录时返回真
* -e 当pathname指定的文件或目录存在时返回真
* -f 当file存在并且是正规文件时返回真
* -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
* -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
* -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
* -p 当file存在并且是命令管道时返回为真
* -r 当由pathname指定的文件或目录存在并且可读时返回为真
* -s 当file存在文件大小大于0时返回真
* -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
* -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
* -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
UNIX Shell 里面比较字符写法:
* -eq 等于
* -ne 不等于
* -gt 大于
* -lt 小于
* -le 小于等于
* -ge 大于等于
* -z 空串
* = 两个字符相等
* != 两个字符不等
* -n 非空串
更新文件的访问和修改时间。
语法
touch [ -a ] [ -c ] [ -m ] [ -f ] [ -r RefFile ] [ Time | -t Time ] { File ... | Directory ... }
描述
touch 命令更新由 Directory 参数指定的每个目录下的由 File 参数指定的每个文件的访问和修改时间。如果没有指定 Time 变量值,touch 命令就使用当前时间。如果指定了一个不存在的文件,touch 命令就创建此文件,除非指定了 -c 标志。
touch 命令的返回码是时间没有被成功修改的文件数目(包括不存在的文件和没有创建的文件)。
注:
任何超出 2038 年(包含2038年)的日期都是无效的。
标志
-a 更改由 File 变量指定的文件的访问时间。不要更改修改时间,除非也指定了 -m 标志。
-c 如果文件不存在,则不要进行创建。没有写任何有关此条件的诊断消息。
-f 尝试强制 touch 运行,而不管文件的读和写许可权。
-m 更改 File 的修改时间。不要更改访问时间,除非也指定了 -m 标志。
-r RefFile 使用由 RefFile 变量指定的文件的相应时间,而不用当前时间。
Time 以 MMDDhhmm[YY] 的格式指定新时间戳记的日期和时间,其中:
MM
指定一年的哪一月(从 01 到 12)。
DD
指定一月的哪一天(从 01 到 31)。
hh
指定一天中的哪一小时(从 00 到 23)。
mm
指定一小时的哪一分钟(从 00 到 59)。
YY
指定年份的后两位数字。如果 YY 变量没有被指定,缺省值为当前年份。
-t Time 使用指定时间而不是当前时间。Time 变量以十进制形式 [[CC]YY]MMDDhhmm[.SS] 指定,其中:
CC
指定年份的前两位数字。
YY
指定年份的后两位数字。
MM
指定一年的哪一月(从 01 到 12)。
DD
指定一月的哪一天(从 01 到 31)。
hh
指定一天中的哪一小时(从 00 到 23)。
mm
指定一小时的哪一分钟(从 00 到 59)。
SS
指定一分钟的哪一秒(从 00 到 59)。
注:
1. touch 命令调用 utime () 子例程来更改所涉及文件的修改和访问时间。当没有真正拥有该文件,即使对文件有写许可权,使用标志时也可能使 touch 命令失败。
2. 当使用 touch 命令时,如果接收到错误消息,不要指定完整路径名 /usr/bin/touch。
退出状态
命令返回以下出口值:
0 命令成功执行。所有请求的更改已完成。
>0 发生一个错误。
示例
1. 要更新文件的访问和修改时间,请输入:
touch program。c
这会将 program.c 文件的上次访问和修改时间设置为当前日期和时间。如果 program.c 文件不存在,touch 命令就创建一个同名的空文件。
2. 要避免创建新文件,请输入:
touch -c program.c
3. 要仅更新修改时间,请输入:
touch -m *.o
这会更新当前目录下的以 .o 扩展名结尾的文件的上次修改时间(不更新访问时间)。touch 命令经常以此方式使用,来改变 make 命令的结果。
4. 要明确设置访问和修改时间,请输入:
touch -c -t 02171425 program.c
这会将访问和修改时间设置为当前年份的 2 月 17 日的 14:25(2:25 p.m.)。
5. 要使用另一文件的时间戳记而不用当前时间,请输入:
touch -r file1 program.c
这会将 program.c 文件的时间戳记设置成与 file1 文件一样。
6. 要使用指定时间而不是当前时间处理文件,请输入:
touch -t 198503030303.55 program.c
这会将 program.c 文件的时间戳记设置为 1985 年 3 月 3 日上午 3:03:55。

### Ubuntu 虚拟机硬盘扩容方法 对于希望扩展Ubuntu虚拟机磁盘空间的用户来说,操作主要分为两个部分:一是调整虚拟硬件层面的磁盘容量;二是操作系统内部对新增加的空间进行识别并分配给现有文件系统。 #### 修改虚拟机配置中的磁盘大小 在 VMware 中执行此过程相对直观。当需要更改分配给Ubuntu系统的存储量时,在确保该虚拟设备处于关闭状态的前提下,访问“编辑虚拟机设置”,定位至“硬盘”选项卡,并通过点击“扩展”按钮来指定新的期望尺寸[^1]。值得注意的是,为了顺利完成这一变更,宿主机应当具备足够的可用磁盘资源以支持所请求的增长幅度[^3]。 #### 在Ubuntu内部分配新获得的空间 一旦外部设定完毕之后,接下来就要让Linux核心能够感知到额外加入的部分。一种方式是在图形界面上借助`gparted`这款可视化分区管理软件来进行操作。启动应用程序菜单找到名为“磁盘”的工具或是直接搜索`disk`关键字开启它,随后针对未使用的空白区域创建一个新的主分区或将已有分区扩大至覆盖全部可用范围[^2]。另外,考虑到某些情况下可能存在逻辑卷组(LVM),则需采用特定命令序列处理: ```bash sudo lvdisplay lvextend -l +100%FREE /dev/mapper/ubuntu--vg-root resize2fs /dev/mapper/ubuntu--vg-root ``` 上述脚本适用于基于LVM架构搭建起来的Ubuntu版本,其中涉及到了展示当前逻辑卷详情、按照百分比填充所有剩余自由块以及动态调整ext4文件系统边界三个环节[^4]。 最后可通过运行`df -h`指令检验最终效果,确认根目录下的总容量确实有所增长[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值