由于年少无知,在安装ubuntu系统的时候,以为/temp是软件包安装时解压的缓冲,所以给/temp留了10G,而以为/var只是记录一些log而已,因此把仅存的1G分配给了它。随后在安装软件时出现“设备空间不够”的报错,看了log才知道解压的路径是在/var里。进入/var目录,发现/var目录里也有/temp和/cache。
https://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/var.html
http://blog.leanote.com/post/jesse/Linux%EF%BC%9A%E5%88%86%E5%8C%BA%E6%8C%87%E5%8D%97
因此需要扩大/var的分区大小,df -h命令可知/var挂载在/dev/sda8下,我当时也是把sda剩下的区域分配给它,所以是最后这一块分区sda8。在网上查询的话,大部分推荐的是一个工具Gparted(https://gparted.org/)。该工具可以在电脑运行时打开,也可以像启动盘、winPE那样从光盘或者u盘进入。电脑运行时打开的缺点在于一些磁盘正在被使用,因此可能某些分区存在数据读写的过程,尤其像/var这样的目录。因此我决定制作一个U盘版的。
1、首先是下载镜像文件(https://gparted.org/download.php)
2、然后使用一个工具Tuxboot,来将镜像文件烧录进U盘中。因为Tuxboot不支持win10,因此我是在ubuntu中操作的。(https://gparted.org/liveusb.php#linux-setup)
在ubuntu中安装Tuxboot很简单(https://tuxboot.org/download/)。安装完后打开的界面大致如下。因为已经下载了镜像文件,所以选择下面的diskimage,然后选择iso文件,接着选择要写入的已格式化的U盘,然后点击ok即可。但是值得注意的是,u盘必须被格式化为FAT32格式,否则即使写入了镜像文件也没用。
最后将镜像文件写入U盘中成功的界面如下。
3、制作好U盘后,像平时装系统那样,U盘插入电脑,开机进入Gparted Live。前面是一些键盘映射和语言设置等等,我都使用默认的,即英语。(https://gparted.org/display-doc.php?name=gparted-live-manual)
界面如下图所示,显示了各个分区。
4、接下来开始对分区进行操作,已知最后一块分区/dev/sda8被我挂载了/var,计划将/dev/sda3(90+G)保留50G,剩下的45G左右给/var。
接下来的操作主要是参考:https://gparted.org/display-doc.php?name=help-manual
①首先是选择/dev/sda3,然后点击Resize/Move。preceding是释放前面的空间,而following是释放后面的空间。
确定之后即可看到出现了一个45G的未分配分区,并且操作队列多了Shrink(收缩)这个操作。
②接着选择/var所在的分区/dev/sda8,点击Copy,然后再选择这个未分配的分区,选择Paste。/sda8中的内容主要就是/var目录。
复制到未分配分区后,再点击Resize/Move,得到如下。现在Copy of /dev/sda8中的内容与/dev/sda8的内容是相同的,只是空间变为了45G。并且可以看到操作队列多了Copy和Grow两个操作。点击Apply后操作队列才会执行,上述操作才会生效,并且可以看到Copy of /dev/sda8会被命名为/dev/sda9。
(注:以Gparted Live形式进入,所有的分区都是not mounted状态的,方便操作)
③由于/dev/sda8和它的复制副本内容相同,因此可以预见到进入系统会出现/var,会起冲突,因此应该需要将/dev/sda8的内容删除。
删除/var原来所在的/dev/sda8分区,然后得到一个未分配的分区(unallocated),在那里创建(create)一个分区,如下图所示,在这里,分区的名字和label我都没有输入,然后创建出来。点击上方的Apply(应用后),操作队列中(如图中红框处)的操作便会执行。新分区(New Partition #1)便会变成/dev/sda8。
因为涉及到删除分区,因此会弹出下图提示,即删除会使该分区的数据丢失。因此实际上最好是先做备份,可能会安全一些。但是我当时是没有备份/var的。
④ 上述执行完后,关闭该窗口,然后双击桌面的Exit,关机(Shutdown)。
⑤Gparted分区后重启,命令行输入df -h,可看到/var的分区已经变为45G。
因此基本成功了,但是后面我发现了一个小缺陷,就是新创建的1.3G分区(也即原来的/var删除后的那个分区)没有挂载在哪个目录下,因此像一个驱动器插在电脑上那样,应该是还没有mount上来,后面再去弄一下吧。