Ubuntu-设备上没有剩余空间(NTFS)


11

我有一台存储大量数据的服务器,我保留了许多嵌套目录,其中包含数百万个文件。

尝试将一个大目录(约700GB)从一个磁盘移动到另一个磁盘时,出现错误:

mv /media/storage3/dir /media/storage4/

"No space left on device"

另外,尝试在磁盘上创建一个小的txt文件不起作用:

Error opening file '/media/storage4/Untitled Document': No space left on device

我在线检查了许多选项,但没有一个起作用。

df -h输出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdg7        77G  9.2G   64G  13% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             32G  4.0K   32G   1% /dev
tmpfs           6.3G  1.4M  6.3G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             32G   76K   32G   1% /run/shm
none            100M   48K  100M   1% /run/user
/dev/sdg6        19G  6.7G   11G  39% /home
/dev/sdb1       440G  278G  140G  67% /var
/dev/sda1       2.8T  2.0T  764G  73% /media/storage1
/dev/sdh1       2.8T  1.6T  1.3T  56% /media/storage2
/dev/sdi1       2.8T  1.7T  1.2T  60% /media/storage3
/dev/sdf1       2.8T  876G  1.9T  32% /media/storage4

df -i输出:

Filesystem         Inodes    IUsed      IFree IUse% Mounted on
/dev/sdg7         5079040   514215    4564825   11% /
none              8242449        2    8242447    1% /sys/fs/cgroup
udev              8239750      611    8239139    1% /dev
tmpfs             8242449      696    8241753    1% /run
none              8242449        5    8242444    1% /run/lock
none              8242449        4    8242445    1% /run/shm
none              8242449       28    8242421    1% /run/user
/dev/sdg6         1220608   218613    1001995   18% /home
/dev/sdb1        29310976 12863877   16447099   44% /var
/dev/sda1       858436804 41630853  816805951    5% /media/storage1
/dev/sdh1      1356948436 38728057 1318220379    3% /media/storage2
/dev/sdi1      1217505624 34748869 1182756755    3% /media/storage3
/dev/sdf1      2048962648 36308921 2012653727    2% /media/storage4

人们在网上阅读时说,类似的问题是由于访问大量文件而发生的,并且将fs.inotify.max_user_watches设置为较高的值可能会解决该问题,我将其从8192增加到1000000,但没有帮助。


你试过了lsof +L1吗?man lsof:格式为+ L1的规范将选择未链接的打开文件。
AB

没有理由mv使用该inotify机制。在这里看看:某些进程可能仍在使用目标文件系统中的未链接文件。
约翰·史密斯

删除的文件仍会显示在df... 给出的用法中
Stephen Kitt 2015年

@StephenKitt编号。由于inode引用,由文件子系统保存的未链接文件将被保存。那些得到完全未使用和未连接(“删除”)显示不出来。看这里
约翰·史密斯

1
检查ntfsinfo -m /dev/DEV线索。它是ntfs-3g的一部分。另请注意,单个NTFS卷上最多只能有2 ^ 32个文件。我不会相信任何本机linux / unix工具来准确报告NTFS索引节点数。
mikky 2015年

Answers:


1

运行以下命令:

lsof -s | sort -nrk 7 | head

您将看到如下输出:

firefox    2997                     j   52rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j   50rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j    3rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j   39rr     REG              252,0 10485760    5505182 /some/path
firefox    2997                     j   31ur     REG              252,0 10485760    5505182 /some/path

注意; 以上只是一个示例,您需要使用判断力来确定空间使用情况。

关于输出:

  • 第7列是使用空间的大小。
  • 第4列是文件描述符。

您可以删除文件描述符中的内容以获取该空间:

cat /dev/null > /proc/2997/fd/50

显然,这将破坏该文件描述符上的所有数据。


如果问题再次发生,我会尝试一下
PeterN

0

您可以尝试tar复制所有数据,然后再将其删除:

cd /media/storage3/; tar cfp - ./dir | ( cd /media/storage4; tar xfp - )

这将保留所有所有权,权限和链接


没有复制工作。不仅如此,创建一个简单的空文件没有返回任何剩余空间
PeterN 15'Apr 23'15:

0

我本来会使用rsync -avrz storage3 storage4这些文件,然后再删除它们,但是还有另一个问题,如果使用Linux(Ubuntu),为什么为什么要使用NTFS文件系统共享这些文件,所以我会选择ext4或ReiserFS,ButterFS。如果这些共享位于Windows框中,请尝试使用robocopy将这些文件从Windows移到Windows,这在这方面非常有用。Robocopy的工作原理与rsync类似。

rsync的手册页:http : //linux.die.net/man/1/rsync

robocopy帮助页面:https : //technet.microsoft.com/zh-cn/library/cc733145.aspx

适用于Linux的3g-ntfs驱动程序支持页面:www.tuxera.com/community/open-source-ntfs-3g/

3g-ntfs的常见问题解答:www.tuxera.com/community/ntfs-3g-faq/

我怀疑应该在Ubuntu安装中使用的NTFS文件系统驱动程序中修复某些问题,使用的是NTFS的发行版,如何安装磁盘,它们是否在本地连接到您坐在的ubuntu盒上,还是已安装从SAN使用iSCSI?

除了“我无法移动它们位于NTFS上的文件,而且我正在运行ubuntu来移动它们”之外,此疑难解答还有更多内容。


如前所述,没有任何副本有效,我尝试了各种rsync命令。但是,即使在storage4上创建一个空文件也返回了异常。\ n使用NTFS的原因是因为我们还有其他运行Windows的服务器,并且我们希望允许将磁盘从一台服务器轻松转移到另一台服务器。回想起来,由于它带来的所有问题,我不会使用NTFS,Ubuntu在安装NTFS时非常不稳定。\ n磁盘通过SATA电缆直接连接到计算机的主板上,没有SAN或其他任何东西。它是直接安装在linux系统上。
PeterN

我建议您两件事,当使用MS技术使用纯MS时,如果需要NTFS则使用Microsoft Windows Fileserver,否则使用ext4或其他Linux文件系统并与Smb共享磁盘。
OMG-1

为自己节省一些问题,不要尝试将Windows和Linux结合起来。从长远来看,没有什么帮助可以挽救您,最终,这总是会流泪。看来inode或文件句柄似乎是一个问题,但是当您将NTFS放入混合时…定时炸弹。如果您的环境需要linux和NTFS的交互,请将NTFS放在Windows服务器上,然后以这种方式进行交互。不尝试合并到同一系统上。
Baazigar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.