在虚拟机中用一段时间后就觉得自己的磁盘容量不够用了,那么如何在不用重装的方式来拓展自己的磁盘呢???
先来看一下目前我机器的磁盘分区和硬盘情况
可以看到/dev/sda1已经用了97%了,该加点空间了,就算你不加,系统也是会提示你的
这时就通过虚拟机侧面的拓展磁盘分区来增加存储空间,但是拓展完后进入系统还是老样子,这是因为我们还没有对磁盘进行分区和挂载,新增的容量还不能被使用。
原本我的磁盘是20g,现在想要拓展为30g,不过新增的空间还没有办法使用。
接下来的步骤可能威胁到虚拟机系统内部数据,建议做个备份,找到系统的文件(.vmx),拷一份出来就好了。万一出了问题,就用拷出来的这份。
或者创建虚拟机快照也可以
接下来的分区解释来自这位博主
理论部分:在开始操作之前,要对系统及空间做一个规划:要做几个分区,分区的挂载点放在哪儿?
别懵!我简单解释一下!
分区,学名叫partition。就是你的硬盘空间的划分,额外一般来说需要一个swap空间还,也就是分的时候记得事先割一小块下来,剩下的自由分!例如说我,原本是20G(19g+1g swap),现在新增40g,那我就按照19g(不用动)+39g+2g swap。
挂载,先看目录,/ 是根目录,这个目录下一般分成/usr,/etc,/home……如图所示:
把目录与分区联系起来的过程,就是挂载,mount!如图所示:
(来自鸟哥的linux私房菜)
这里跟windows的理解不太一样,同一个目录下面的东西可以被放到不同分区
故事是这样的,那天我去吃自助,拿了个20g的小盘子(扩展前的硬盘),盘子里有牛肉鸡肉、菜(根目录下面的目录及文件),诶装了太多再也装不下。可是我还想吃鱼肉(另一些文件),于是把施展技术把20g小盘子换成60g大盘子(扩展后的硬盘),我要去吃东西了,这样合理吗?不合理吧,小盘里放好东西(目录及文件)了,那要吃别的东西,再去另外拿盘子呗,将60g大盘子换成几个小盘子的过程,就是分区;好,我再拿了40g的盘子,还没完事,我得规定一下,这个盘子是用来放鱼肉的,这个规定的过程就是挂载咯!这样,我才能顺利的把鱼肉放到盘子里吃,好辛苦呀哈哈。一个目录下面的东西可以被放到不同分区,即理解为,肉类我可以放在两个盘子里,开心就好。
在分区的时候,需要做一个计算,因为在文字界面下我们直面磁盘,跟他说19g他听不懂,一般磁盘用sector来做单位,一个sector是512byte,即0.5kb,故sectors=GBs*1024*1024*2 。那么19g我们命名为分区1,是从sector 0到sector 39845887,计算公式39845887=19*1024*1024*2-1;以此类推39g命名为分区2,是从sector 39845888到sector 121634815,最后分区3是swap的2g,从sector 121634816到sector 125829119。
在挂载的时候呢,就需要考虑那个分区要挂载在那个目录下的问题,要注意一个点,被挂载到新分区的目录最好是空目录,如果含有文件及子目录,被挂载到新分区上的时候,这些文件和子目录会被隐藏起来,以上图的目录树为例,如果将/home/bird挂到新增了的比如分区5上面,那test就会不见,所以最好先建一个空目录!例如,原先我的很多个人文件都放在主目录/home/joy下,新增的空间也想放到这里,于是新建了一个/home/joy/0_slam(搞slam用)空的子目录,现在就要将分区2挂载到/home/joy/0_slam上头。
理论部分全舒展开了,接下来是操作!
1.新建一个文件 touch \guazai 以供挂载
2.查看磁盘现状:fdisk -l 如图,一个原始19g,一个扩展的,一个swap,没毛病
3.分区:进入磁盘管理吧! fdisk /dev/sda
然后看见command后面还有个小光标闪呀闪 —— 输入 p(磁盘现状,跟fdisk -l差不多),d(delete删除分区),n(new增加新分区),m(查看帮助)
Help: DOS (MBR) a toggle a bootable flag b edit nested BSD disklabel c toggle the dos compatibility flag Generic d delete a partition F list free unpartitioned space l list known partition types n add a new partition p print the partition table t change a partition type v verify the partition table i print information about a partition Misc m print this menu u change display/entry units x extra functionality (experts only) Script I load disk layout from sfdisk script file O dump disk layout to sfdisk script file Save & Exit w write table to disk and exit q quit without saving changes Create a new label g create a new empty GPT partition table G create a new empty SGI (IRIX) partition table o create a new empty DOS partition table s create a new empty Sun partition table
对虚拟磁盘进行挂载:
选择新建一个(n)
选择主分区(p),默认有四个主分区,这里还有两个可以使用
选择新建磁盘开始的位置
如果直接回车会有默认的分区起始位置,我这里的默认起始位置是分区1后剩下的一小块位置,位于分区1和分区2之间,不是我所需要的
所以我选择了交换分区后的位置:419400992
如果你不知道的具体Section的位置话,可以通过之前的 fdisk -l 显示磁盘当前状况
结束位置我是直接回车,选择默认的
最后输入“w”,将分区保存并退出
5.接下来就是格式化,我选择格式化为和分区1一样的格式
mkfs -t ext4 /dev/sda3(格式化为ext4格式)
6.格式化之后,将硬盘挂载到想要挂载的位置下(假设挂载到/guazai 下)
mount /dev/sdb1 /guazai
unmount /guazai (取消挂载,如果你想取消的话)
7.如果想要在一开机的时候就自动挂载的话就需要再次编辑
vim /etc/fstab
需要模仿之前的形式进行编辑,这里自动分区挂载的详细说明


开机自动挂载只需要设置/etc/fstab这个配置文件即可,这个文件是有特定格式的:挂载一个分区是一行,一行共有6个字段,每个字段用空格分割。一般第一行是根目录的挂载设置,因为根目录是要优先于所有其他的挂载点先挂载的。解释一下6个字段的含义: 第一个字段:是Label name或者是设备文件名,例如LABEL=/home或者/dev/hdc3 第二个字段:是挂载点,这个一定得是目录的,比如/home 第三个字段:是文件系统格式,比如ext3 第四个字段:是文件系统参数,一般填默认设置值default 第五个字段:是指定这个文件系统是否要进行dump备份,0代表不做备份,1代表要每天备份 第六个字段:是否开机用fsck检查文件系统,0表示不检查,如果想设置成检查,根目录是1,其他文件系统是2 设置完这个文件后,最好测试一下是否有错误: mount -a df 如果用df命令看到刚刚修改的那一行的分区成功挂载了,就说明没有错误了