相关疑难解决方法(0)

du 为同一个文件给出了两个不同的结果

我是计算化学的研究生,可以访问 Linux 集群。该集群由一个非常大 (25 TB) 的文件服务器组成,其中连接了几十个计算节点。每个计算节点由 8 到 24 个英特尔至强内核组成。每个计算节点还包含一个大约 365 TB 的本地磁盘。

由于研究组的十几个用户经常访问文件服务器,文件服务器主要用于长期文件存储(每晚备份,而计算节点的本地磁盘从不备份)。因此,系统管理员指示我们在本地磁盘上运行模拟——它们的 I/O 速度比文件服务器快——以免其他用户的文件服务器变慢。

因此,我在本地磁盘上运行模拟,然后在完成后,将轨迹文件——我正在运行分子动力学 (MD) 模拟——复制到文件服务器进行存储。假设我有一个traj.trr在节点本地磁盘上的目录中调用的轨迹文件,/home/myusername/mysimulation1/traj.trr. 对于长期存储,我总是复制traj.trr到文件服务器中的一个目录,~/mysimulation1/traj.trr,其中~代表我在文件服务器中的目录,/export/home/myusername。复制之后,然后我习惯性地使用du -h验证它/home/myusername/mysimulation1/traj.trr~/mysimulation1/traj.trr. 这样,我至少可以合理地确定传输到文件服务器是成功的。例如:

cd /home/myusername/mysimulation1/
cp -v traj.trr ~/mysimulation1/
du /home/myusername/mysimulation1/traj.trr -h
du ~/mysimulation1/traj.trr -h
Run Code Online (Sandbox Code Playgroud)

如果这两个调用du -h给出相同的人类可读文件大小,那么我可以合理地确定传输/复制成功。(我的典型traj.trr文件大小从大约 15 GB 到 20 GB 不等,具体取决于我运行的确切模拟。)如果我在这两个文件上运行du(即,没有-h开关)traj.trr,它们的字节大小通常非常非常相似 - - 通常在几个字节内。过去一年半我一直在使用这种整体方法,没有任何问题。

但是,最近我遇到了以下问题:有时du -h报告两个traj.trr文件的大小相差几GB。下面是一个例子: …

disk-usage

27
推荐指数
3
解决办法
4万
查看次数

Linux上的详细稀疏文件信息

我有一个稀疏文件,其中只分配了一些块:

~% du -h --apparent-size example
100K    example
~% du -h example
52K     example
Run Code Online (Sandbox Code Playgroud)

我想知道实际分配了文件的哪些块。是否有系统调用或内核接口可用于获取分配列表或文件漏洞列表?

简单地检查足够长的零字符串(GNU cp、rsync 等使用的方法)无法正常工作:

~% cp example example1  
~% du -h example1 
32K     example1
Run Code Online (Sandbox Code Playgroud)

它检测到实际分配的其他零序列。

linux sparse-files

11
推荐指数
1
解决办法
3788
查看次数

标签 统计

disk-usage ×1

linux ×1

sparse-files ×1