我们都知道,在Windows中,右键单击一个文件或文件夹,选属性(Properties)可以看到这个文件或文件夹的大小。而这个大小是文件的原始大小,即逻辑大小(logical size)。即一个1KB的文本文件,通过这种方式,看到的大小就是1KB, 我们这里说的是“size”。

严格上来说,Windows上显示出来的是两个size,一个叫做“size”,另一个叫做“size on disk”. 此二者的区别,大致如下:Windows在格式化磁盘的时候,会选择使用什么文件系统来format,并且,同样的文件系统在格式化的时候也可以指定allocation unit (即cluster)的大小。 这个allocation unit的大小就是文件系统上寻址的最小单位。即假设我们format一块磁盘的时候,选择了NTFS,并且选择了allocation unit的大小是64KB,那么如果我们往这块盘上放一个1KB的文件,那么同时就会有63KB的空间被浪费掉。这时, 在文件上点右键,看属性,就会发现size是1KB,而size on disk是64KB。

如何查看Windows的某一块盘的allocation unit是多大呢?

假设我们想看C盘,那么可以使用命令:

fsutil fsinfo ntfsinfo c:

Linux下也可以查看同样的概念,这个概念在Linux下叫做Sector。

查看所有分区,可以使用命令:

fdisk –l

然而,在有保护的文件系统上,比如Isilon的OneFS,那么文件的大小就有了变化。而且当OneFS上启用了压缩功能,那么这个文件的大小如何查看就更是个值得仔细琢磨一下的问题了。

OneFS默认的文件保护等级是2d:1n, 即可以容忍任意两块磁盘同时坏掉或者一个节点的丢失。要达到这个保护等级,对于小文件来说就是需要3份拷贝,对于大文件来说就是要增加FEC的数据块,从而可以计算对丢失的数据进行恢复。那么2d:1n的保护等级会对一个比较大的文件增加多少数据块呢?说来有点复杂,这取决于Isilon cluster包含多少个节点。具体请看下图:

看2d:1n的一列,可以看到,集群小的时候每4个数据块就添加两个FEC数据块,集群大的时候可以每16个数据块添加两个FEC块。

说了这么多,现在回到正题,假设我有一个logical size(即原始文件大小)为48MB的文件,假如把它存储在一个4个节点的2d:1n的Isilon cluster上,那么OneFS会以8*6+8*2= 64MB的空间来存储这个文件。那么我该使用什么命令来查看从而得到文件的原始大小48MB和实际存储这个文件所消耗的磁盘空间64MB呢?

在FreeBSD操作系统上,可以通过如下命令来得到:

du –sh

使用这个命令来得到文件或文件夹实际占用的磁盘空间,如果是上文的例子,那么这个命令会得到64MB。(实际上,如果使用du –sk命令的话,得到的会是“文件的数据的大小”,与“inode的三份mirror大小24KB”的和)。

du –Ash

使用这个命令来得到文件或文件夹的logical size,这个命令会得到48MB。

在一台普通的H500上,查看文件大小的命令结果如下:

在开启了压缩的环境里,这个差距可能会更大,如下:

===============

Why is There a Big Difference Between ‘Size’ and ‘Size on Disk’?

https://www.howtogeek.com/180369/why-is-there-a-big-difference-between-size-and-size-on-disk/

How can I view the allocation unit size of a NTFS partition in Vista?

https://stackoverflow.com/questions/81236/how-can-i-view-the-allocation-unit-size-of-a-ntfs-partition-in-vista

HOW TO FIND BLOCK SIZE IN LINUX AND UNIX

https://www.linuxnix.com/find-block-size-linux/

Finding the sector size of a partition

https://unix.stackexchange.com/questions/2668/finding-the-sector-size-of-a-partition

通过命令“du–sk”, “du–Ask” 的区别,谈谈如何在有保护的文件系统中查看文件或文件夹的大小的更多相关文章

  1. Linux下用ls和du命令查看文件以及文件夹大小

    ls的用法 ls -l |grep "^-"|wc -l或find ./company -type f | wc -l  查看某文件夹下文件的个数,包括子文件夹里的. ls -lR ...

  2. Linux下查看文件或文件夹大小的命令df 、du、ls

    转自:http://www.cnblogs.com/benio/archive/2010/10/13/1849946.html 当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的 ...

  3. Linux文件系统管理 常见命令df、du、fsck、dumpe2fs

    概述 Linux文件系统管理 常见命令df.du.fsck.dumpe2fs. 文件系统查看命令:df 通过 df 命令可以査看已经挂载的文件系统的信息包括设备文件名.文件系统总大小.已经使用的大小. ...

  4. Linux下用ls和du命令查看文件以及文件夹大小(转)

    转自:https://www.cnblogs.com/xueqiuqiu/p/7635722.html ls的用法 ls -l |grep "^-"|wc -l或find ./co ...

  5. linux如何查看目录或文件夹的总大小--du命令

    记录一下如何查看一个目录或文件夹的总大小. 使用du命令的选项-s,可以统计整个目录或文件夹的大小. 例如 du -sk ./ 156k -k表示以KB为单位计算.

  6. Linux下查看文件和文件夹大小的df和du命令

        转自:http://www.yayu.org/look.php?id=162 当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比 ...

  7. Linux命令(二十三) 磁盘管理命令(一) df,du,tune2fs

    一. 查看磁盘占用空间情况 df df 命令用于查看硬盘空间的使用情况,还可以查看硬盘分区的类型或 inode 节点的使用情况等. df 命令常用参数如下: -a 显示所有文件系统的磁盘使用情况,包括 ...

  8. 每天一个linux命令(3):du命令

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是查看当前指定文件或目录(会递归显示子目录)占用磁盘空间大小,还是和df命令有一些区别的. 1.命令格式: du [选 ...

  9. Linux命令-文件系统常用命令:df,du,fsck,dumpe2fs

    df -h 人性化显示文件系统的分区信息 注意:在linux中目录也是文件,不要混淆下面的目录文件说法. 传统方式查看文件大小可以使用:ll -h /目录/文件名,就可以看到文件的大小,但是如果你想看 ...

随机推荐

  1. YII框架增删改查常用语句

    //实例化db $db = new \yii\db\Query(); //插入 $db->createCommand()->insert('user', [ 'name' => 't ...

  2. xml方式将dataset导出excel

    using System;using System.Collections;using System.Collections.Generic;using System.Data;using Syste ...

  3. iis url rewrite http->https non-www->www

    <system.webServer> <rewrite> <rules> <rule name="Redirect abc.com to www&q ...

  4. JAXB在Java 9/10并且使用Tomcat 9的问题

    Implementation of JAXB-API has not been found on module path or classpath. JAXB API是java EE 的API,jav ...

  5. 爬虫2 urllib3 爬取30张百度图片

    import urllib3 import re # 下载百度首页页面的所有图片 # 1. 找到目标数据 # page_url = 'http://image.baidu.com/search/ind ...

  6. Codeforces 998D. Roman Digits 【打表找规律】

    <题目链接> 题目大意: 现在有无限个 1,5,10,50这四个数字,从中恰好挑选n个数字,问你这些数字的和总共有多少种不同的情况. 解题分析: 由于此题 n 的范围特别大,达到了1e9, ...

  7. hdu 2181 哈密顿绕行世界问题【DFS】

    题目链接 题目大意: Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市.    Input ...

  8. Django之Models(二)

    Django之Models(二) 创建一对多的关系 一个出版商可以有多本出版的书 一本书只有一个出版商 创建一对多的语法: 字段名= models.ForeignKey(关联表(类名),on_dele ...

  9. UML图快速入门

    UML(Unified Modeling Language)统一建模语言的概念已经出现了近20年,虽然并不是所有的概念都非常有实践意义,但常见的用例图.类图.序列图和状态图却实实在在非常有效,是项目中 ...

  10. ISP PIPLINE(零) 知识综述预热

    本文为camera isp pipline概述 ISP,即image signal processing.为图像成型做的处理工作.适应不同光学环境下图像的还原. pipline流程如下: 光通过LEN ...