ubuntu系统中Error:No space left on device,解决办法:挂载大容量sda分区
其中每个参数的说明:第一列:设备名或者设备卷标名,(UUID或者/dev/sda4)第二列:设备挂载目录 (例如上面的“/”或者“/home”)第三列:设备文件系统 (例如上面的“ext4”或者“vfat”)第四列:挂载参数defaults 大多数系统使用defaults就可以满足需要。noexec(不允许可执行文件可执行,但千万不要把根分区挂为noexec,那就无法使用系统了,连mount 命令
目录
一、报错信息Error:No space left on device
5、取消挂载硬盘【5-7步骤是为了重新挂载硬盘到home目录下】
8、查看/dev/sda4的UUID【8-10步骤是为了设置开机自动挂载】
10、文件最后添加要挂载的UUID及操作选项,“:wq”保存修改并退出。
12、此时上述所有操作完成后,就可以直接把原来的/home_old文件夹删掉了。
一、报错信息Error:No space left on device
今天在编译的过程中出现了“磁盘空间不足而无法完成编译”的问题,正常来说主机中一共有500G,但是目前通过df -h提示只有100G。
由于我的所有代码都下载在/home目录中,所以空间占用比较多。
报错信息详情:
💡 Traceback (most recent call last):
File "/usr/lib/scons/SCons/dblite.py", line 143, in **del**
File "/usr/lib/scons/SCons/dblite.py", line 140, in close
File "/usr/lib/scons/SCons/dblite.py", line 148, in sync
OSError: [Errno 28] No space left on device
使用df -h提示仅仅使用了100G。
命令行sudo fdisk -l显示还有将近400G空间未使用。
我现在要做的就是把其余几个sda空间给home目录中。所以用的是最大的sda4。
二、使用繁琐的挂载步骤
之所以说使用繁琐的挂载步骤,是因为查了帖子看到大家有推荐用gparted图形化工具的,但是我目前比较常用的就是命令行格式,gparted主要用来调整sda分区的大小。
1、将新硬盘格式化为ext4格式
mkfs -t ext4 /dev/sda4
2、将新硬盘临时挂载在一个目录下(比如/mnt/home)
mkdir /mnt/home
mount /dev/sdb /mnt/home
3、把home下的文件拷贝到新硬盘的临时目录下
cp -a /home/* /mnt/home/
此时就可以看出来,这个mnt目录中已经有需要的文件了。
4、将原来的home目录命名为home_old
也可以在这一步直接删掉原来的home目录,但是不推荐,可能会造成文件丢失。建议在完成第11步后再删除。
sudo mv /home /home_old
5、取消挂载硬盘【5-7步骤是为了重新挂载硬盘到home目录下】
sudo umount /dev/sda4
6、新建/home文件夹
sudo mkdir /home
7、重新挂载新硬盘到/home
sudo mount /dev/sda4 /home
这个时候就能看出根目录中已经存在了两个和home相关的目录里,其中一个home_old是原始的,home是新挂载在sda4上的。
8、查看/dev/sda4的UUID【8-10步骤是为了设置开机自动挂载】
UUID(硬盘通用唯一识别码)是为了指定分区可以确保唯一性。
sudo blkid
9、修改/etc/fstab文件,实现开机自动挂载。
【如果之前存在自动挂载/home的内容,需要先删除这行内容】
sudo vi /etc/fstab
10、文件最后添加要挂载的UUID及操作选项,“:wq”保存修改并退出。
UUID=650f9fa8-a83b-4258-9829-8ff53f05a349 /home ext4 defaults 0 2
其中每个参数的说明:
-
第一列:设备名或者设备卷标名,(UUID或者/dev/sda4)
-
第二列:设备挂载目录 (例如上面的“/”或者“/home”)
-
第三列:设备文件系统 (例如上面的“ext4”或者“vfat”)
-
第四列:挂载参数
defaults 大多数系统使用defaults就可以满足需要。 为了安全起见,也可以指明其他挂载参数,例如:
- noexec(不允许可执行文件可执行,但千万不要把根分区挂为noexec,那就无法使用系统了,连mount 命令都无法使用了,这时只有重新做系统了!
- nodev(不允许挂载设备文件)
- nosuid,nosgid(不允许有suid和sgid属性)
- nouser(不允许普通用户挂载)
-
第五列:指定分区是否被dump备份 (0代表不备份,1代表每天备份,2代表不定期备份,一般根分区要备份)
-
第六列:指明自检顺序。 (0为不自检,1或者2为要自检,如果是根分区要设为1,其他分区只能是2)
11、重启,df -h查看是否挂载成功
reboot
12、此时上述所有操作完成后,就可以直接把原来的/home_old文件夹删掉了。
rm -rf /home/*
三、gparted调整分区大小【不必需】
之所以想调整分区大小是为了留出来一个最大的空间给home,这样就省去了以后可能存在的空间不足等问题。gparted的图形化界面如下。
1、安装gparted
sudo apt-get install gparted
2、终端中启动图形化界面
sudo gparted
3、移动磁盘顺序
如果使用gparted对空间进行重分配的话,如果unallocation的空间和需要扩容的磁盘不在一起的话,就需要使用“右键—resize”,Free Space Preceding设为0,而 Free Space following设为空闲区的大小,就可以完成后移动。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)