首页 技术 正文
技术 2022年11月11日
0 收藏 887 点赞 3,421 浏览 1855 个字

我们都知道,在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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,000
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,512
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,358
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,141
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,771
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,849