1、问题描述
Ubuntu系统复制文件到共享文件夹时,出现拼接文件时出错:输入/输出错误。
使用cp命令:
cp -Rf XXX YYY
也是出错:
cp: 写入 'xxx' 出错: 输入/输出错误
2、查看磁盘空间
查看磁盘空间,显示空间还有剩余。
root@ubuntu:/mnt/hgfs/WINshare# df -h /mnt
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda5 59G 38G 18G 69% /
这种情况下,很可能是小文件过多,导致 inode 急剧增加,消耗完 inode 区域的空间。
如果真是如此,那么即使磁盘空间有剩余,但由于无法创建新的 inode 来存储文件的元信息,也就无法创建新文件。
用df -ih命令查看
root@ubuntu:/mnt/hgfs/WINshare# df -ih
文件系统 Inodes 已用(I) 可用(I) 已用(I)% 挂载点
udev 603K 484 603K 1% /dev
tmpfs 612K 1018 611K 1% /run
/dev/sda5 3.8M 1.4M 2.4M 37% /
/dev/sda1 0 0 0 - /boot/efi
vmhgfs-fuse 0 0 0 - /mnt/hgfs
磁盘节点为0,但文件夹是可以创还能新文件的。应该不是这个原因。
3、安装磁盘管理工具
使用下列命令安装磁盘管理工具:
apt-get install gparted
安装后打开:
gparted
看到空间还是有的:
4、权限问题
看到文件夹上带了一个锁的图标。
查看文件权限:
root@ubuntu:/mnt# ls -la
总用量 13
drwxr-xr-x 3 root root 4096 4月 8 2022 .
drwxr-xr-x 20 root root 4096 7月 5 13:52 ..
dr-xr-xr-x 1 root root 4192 7月 5 2024 hgfs
可以看到,hgfs的文件权限不全。
先查看用户uid 和gid:
root@ubuntu:/mnt# id
用户id=0(root) 组id=0(root) 组=0(root)
查看挂载情况:
root@ubuntu:/mnt# vmware-hgfsclient
WINshare
先取消挂载:
root@ubuntu:/mnt# umount /mnt/hgfs
然后用以下命令挂载即可下面命令中的uid和gid需要根据你的ubuntu用户uid来决定,输入id命令即可查询:
root@ubuntu:/mnt# /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=0 -o gid=0 -o umask=022
再查看权限:
root@ubuntu:/mnt# ls -la
总用量 13
drwxr-xr-x 3 root root 4096 4月 8 2022 .
drwxr-xr-x 20 root root 4096 7月 5 13:52 ..
drwxr-xr-x 1 root root 4192 7月 5 2024 hgfs
显示已获得hgfs所有权限。修改配置文件,以防重启后权限改回去。
gedit /etc/fstab //打开配置文件
在最后一行,添加代码,设置开机自动挂载
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid=0,gid=0,umask=022 0 0
重启后,文件夹上没有带锁图标了。
但是,某些文件还是不能复制到该文件夹,但可以复制到其它文件夹!
比如拷贝压缩包文件时,还是会出现文章开头出现的问题。