首页 > 代码库 > 文件系统分配空间 测试

文件系统分配空间 测试

磁盘 block size=1024


  1. 新建一个空目录

[root@wqj-pc a]# ll -d

drwxr-xr-x. 2 root root 4096 9月   8 21:12 .   <--目录文件占用4096B空间

[root@wqj-pc a]# ll

总用量 0        <--所列项目占用空间为0

[root@wqj-pc a]#

[root@wqj-pc a]# stat .

  File: "."

  Size: 4096            Blocks: 8          IO Block: 4096   目录

Device: 802h/2050d      Inode: 21          Links: 2

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2014-09-08 21:12:34.795998334 +0800

Modify: 2014-09-08 21:12:34.094994871 +0800

Change: 2014-09-08 21:12:34.094994871 +0800

[root@wqj-pc a]#

这里的blocks=8,应该是按照blockSize=512 来计算的


2.在a目录下新建一个文件file

[root@wqj-pc a]# ll

总用量 0

-rw-r--r--. 1 root root 0 9月   8 21:17 file   <--文件为空,没有分配空间

[root@wqj-pc a]# stat file

  File: "file"

  Size: 0               Blocks: 0          IO Block: 4096   普通空文件

Device: 802h/2050d      Inode: 487         Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2014-09-08 21:17:19.250004408 +0800

Modify: 2014-09-08 21:17:19.250004408 +0800

Change: 2014-09-08 21:17:19.250004408 +0800

[root@wqj-pc a]#




3向文件写入一个字母

[root@wqj-pc a]# dd if=/dev/zero of=./file bs=1 count=1

记录了1+0 的读入

记录了1+0 的写出

1字节(1 B)已复制,0.000194625 秒,5.1 kB/秒

[root@wqj-pc a]# ll

总用量 4    <--目录中文件占用磁盘文件空间为4k

-rw-r--r--. 1 root root 1 9月   8 21:34 file    



[root@wqj-pc a]# stat file

  File: "file"            

  Size: 1               Blocks: 8          IO Block: 4096   普通文件

Device: 802h/2050d      Inode: 487         Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2014-09-08 21:33:37.360998812 +0800

Modify: 2014-09-08 21:34:09.183999027 +0800

Change: 2014-09-08 21:34:09.183999027 +0800

[root@wqj-pc a]#

文件实际大小为1B,实际分配空间为8blocks(???)




4.向文件中写入4095个字符

[root@wqj-pc a]# dd if=/dev/zero of=./file bs=4095 count=1

记录了1+0 的读入

记录了1+0 的写出

4095字节(4.1 kB)已复制,0.00023078 秒,17.7 MB/秒

[root@wqj-pc a]# ll

总用量 4   <--目录中文件占用磁盘文件空间为4k

-rw-r--r--. 1 root root 4095 9月   8 21:22 file


[root@wqj-pc a]# stat file

  File: "file"

  Size: 4095            Blocks: 8          IO Block: 4096   普通文件

Device: 802h/2050d      Inode: 487         Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2014-09-08 21:19:00.327004441 +0800

Modify: 2014-09-08 21:22:44.025009619 +0800

Change: 2014-09-08 21:22:44.025009619 +0800

[root@wqj-pc a]#

文件实际大小为4095B,实际分配空间为8blocks(???)


5。向文件中写入4096个字符

[root@wqj-pc a]# dd if=/dev/zero of=./file bs=4096 count=1

记录了1+0 的读入

记录了1+0 的写出

4096字节(4.1 kB)已复制,0.000166902 秒,24.5 MB/秒

[root@wqj-pc a]# ll

总用量 4    <--目录中文件占用磁盘文件空间为4k

-rw-r--r--. 1 root root 4096 9月   8 21:23 file


[root@wqj-pc a]# stat file

  File: "file"

  Size: 4096            Blocks: 8          IO Block: 4096   普通文件

Device: 802h/2050d      Inode: 487         Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2014-09-08 21:19:00.327004441 +0800

Modify: 2014-09-08 21:23:46.621008028 +0800

Change: 2014-09-08 21:23:46.621008028 +0800

[root@wqj-pc a]#

文件实际大小为4096B,实际分配空间为8blocks(???)


6.想文件中写入4097个字符

[root@wqj-pc a]# dd if=/dev/zero of=./file bs=4097 count=1

记录了1+0 的读入

记录了1+0 的写出

4097字节(4.1 kB)已复制,0.000319839 秒,12.8 MB/秒

[root@wqj-pc a]# ll

总用量 8    <--目录中文件占用磁盘文件空间为8k

-rw-r--r--. 1 root root 4097 9月   8 21:24 file

[root@wqj-pc a]# stat file

  File: "file"

  Size: 4097            Blocks: 16         IO Block: 4096   普通文件

Device: 802h/2050d      Inode: 487         Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2014-09-08 21:19:00.327004441 +0800

Modify: 2014-09-08 21:24:33.548004283 +0800

Change: 2014-09-08 21:24:33.548004283 +0800

[root@wqj-pc a]#

文件实际大小为4097B,实际分配空间为16blocks(???)


7.向文件中写入1024*4*2-1=8191个字符

[root@wqj-pc a]# dd if=/dev/zero of=./file bs=8191 count=1

记录了1+0 的读入

记录了1+0 的写出

8191字节(8.2 kB)已复制,0.00019196 秒,42.7 MB/秒

[root@wqj-pc a]# ll

总用量 <--目录中文件占用磁盘文件空间为8k

-rw-r--r--. 1 root root 8191 9月   8 21:54 file

[root@wqj-pc a]# stat file

  File: "file"

  Size: 8191            Blocks: 16         IO Block: 4096   普通文件

Device: 802h/2050d      Inode: 487         Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2014-09-08 21:33:37.360998812 +0800

Modify: 2014-09-08 21:54:23.152997510 +0800

Change: 2014-09-08 21:54:23.152997510 +0800

[root@wqj-pc a]#

文件实际大小为8191B,实际分配空间为16blocks(???)



8.向文件中写入1024*4*2=8192个字符

[root@wqj-pc a]# dd if=/dev/zero of=./file bs=8192 count=1

记录了1+0 的读入

记录了1+0 的写出

8192字节(8.2 kB)已复制,0.000289364 秒,28.3 MB/秒

[root@wqj-pc a]# ll

总用量 <--目录中文件占用磁盘文件空间为8k

-rw-r--r--. 1 root root 8192 9月   8 21:55 file

[root@wqj-pc a]# stat file

  File: "file"

  Size: 8192            Blocks: 16         IO Block: 4096   普通文件

Device: 802h/2050d      Inode: 487         Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2014-09-08 21:33:37.360998812 +0800

Modify: 2014-09-08 21:55:07.207994349 +0800

Change: 2014-09-08 21:55:07.207994349 +0800

[root@wqj-pc a]#

文件实际大小为8192B,实际分配空间为16blocks(???)


9.向文件写入1024*4*2+1=8193个字符

[root@wqj-pc a]# dd if=/dev/zero of=./file bs=8193 count=1

记录了1+0 的读入

记录了1+0 的写出

8193字节(8.2 kB)已复制,0.000344005 秒,23.8 MB/秒

[root@wqj-pc a]# ll

总用量 12 <--目录中文件占用磁盘文件空间为8k

-rw-r--r--. 1 root root 8193 9月   8 21:56 file

[root@wqj-pc a]# stat file

  File: "file"

  Size: 8193            Blocks: 24         IO Block: 4096   普通文件

Device: 802h/2050d      Inode: 487         Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2014-09-08 21:33:37.360998812 +0800

Modify: 2014-09-08 21:56:24.473997824 +0800

Change: 2014-09-08 21:56:24.473997824 +0800

[root@wqj-pc a]#

文件实际大小为8193B,实际分配空间为24blocks(???)



总结:

1.空文件不占用磁盘的数据block,应该占用目录文件的一些空间(保持该空文件的元数据)和inode记录

2.系统分配磁盘空间,每次分配4k=1024*4。

3.ll中total显示的是文件所占用的数据block空间,并不是文件实际大小。

4.stat中blocks列出的数量是按照blockSize=512来计算的,即文件所占用的扇区数量。


每次分配的空间数量 是什么决定的,是否可改?和IO-block有关吗?

文件系统分配空间 测试