前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件性能测试(连载11)

软件性能测试(连载11)

作者头像
顾翔
发布2020-03-04 13:30:31
4790
发布2020-03-04 13:30:31
举报
文章被收录于专栏:啄木鸟软件测试

3. 磁盘和文件

1)文件存储结构[29]

Linux的文件存储结构如图3-29所示。

图3-29 Linux的文件结构

索引节点(inode)是持久化存储到磁盘中的,而目录项(dentry)是由内核维护(目录项缓存)的。

在讨论文件存储结构之前需要了解一下扇区(Sector)和块(block),一个扇区为512B,操作系统读取硬盘的时候,不会一个个扇区地去读取,这样效率非常的低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。每8个扇区为一个块,块的大小为(512B×8=4098B,即4KB)。文件数据都存储在“块”中,必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件的元信息区域就叫做索引节点(inode)。

①inode的内容

inode包含文件的元信息,具体来说有以下内容。

•文件的字节数。

•文件拥有者的User ID。

•文件的Group ID。

•文件的读、写、执行权限。

•文件的时间戳。

时间戳共有三个。

Øctime指inode上一次变动的时间。

Ømtime指文件内容上一次变动的时间。

Øatime指文件上一次打开的时间。

•链接数,即有多少文件名指向当前inode。

•文件数据block的位置。

可以用stat命令,查看某个文件的inode信息。

# stat runserver.bat

File: runserver.bat

Size: 52 Blocks: 8 io Block:4096 regular file

Device: 801h/2049d Inode: 554863 Links: 1

Access: (0777/-rwxrwxrwx) stat runserver.bat

Access: 2019-12-06 01:38:13.895735646 -0800

Modify: 2019-01-30 01:40:25.009354932 -0800

Change: 2019-01-30 01:40:25.021354285 -0800

Birth: -

②inode的大小

由于inode也要消耗硬盘,所以硬盘格式化的时候,操作系统会自动把硬盘分成两个区域:数据区,用于存放文件数据inode区(inode table),用于存放inode信息。

作为一个单独的inode节点,一般是128个字节或者256个字节。inode节点的总数,在格式化的时就给定了,一般是每1KB或每2KB设置一个inode节点。假定2GB的硬盘中,每个inode节点的大小为128个字节,每1KB设置一个inode节点,这样inode table的大小就会达到256MB,占整块硬盘的12.8%。

可以通过df -i命令来查看每个硬盘分区的inode总数和已经使用的数量。

# df -i

Filesystem Inodes IUsed IFree IUse% Mounted on

udev 531381 493 530888 1% /dev

tmpfs 539081 1016 538065 1% /run

/dev/sda1 1310720 364285 946435 28% /

tmpfs 539081 1 539080 1% /dev/shm

tmpfs 539081 5 539076 1% /run/lock

tmpfs 539081 18 539063 1% /sys/fs/cgroup

/dev/loop0 354 354 0 100% /snap/gnome-logs/81

/dev/loop1 25385 25385 0 100% /snap/gtk-common-themes/1198

还可以利用df来查看某个Filesystem磁盘详细情况。

# df /dev/sda1

Filesystem 1K-blocks Used Available Use%Mounted on

udev 373728 124 373604 1% /dev

使用-h参数更便于阅读。

# df -h /dev/sda1

Filesystem Size Used Avail Use% Mounted on

udev 365M 124K 365M 1% /dev

df如果不加-i参数,不会统计inode大小的。有时候剩余空间很充足,但是系统提示磁盘空间不足,可以确定是否索引过大需要占的磁盘空间,需要通过df -i来查看。

③ 目录项

目录项(dentry)是用来记录文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项,就构成了文件系统的目录结构。

2)虚拟文件系统 VFS(Virtual File System)

在Windows95、Windows98中使用的是FAT格式的文件系统,到WindowNT以后Window改用NTFS文件格式。在Linux中文件格式就多了,包括。

•基于磁盘的文件系统。Ext4、XFS、OverlayFS等。

•基于内存的文件系统(虚拟文件系统)。不需要任何磁盘分配存储空间,但会占用内存。比如:/proc 、/sys。

•基于网络文件系统。NFS、SMB、iSCSI 等。

为了兼容以上各种不同的文件格式,Linux提出虚拟文件系统 VFS的概念,Viritual Filesystem给用户空间程序提供统一的文件和文件系统访问接口的内核子系统。借助VFS,即使文件系统的类型不同,也可以实现文件系统之间的交互,比如:移动、复制等。VFS所处位置如图3-30所示。

图3-30 Viritual File system所处位置

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1)文件存储结构[29]
    • ①inode的内容
      • ②inode的大小
        • ③ 目录项
        • 2)虚拟文件系统 VFS(Virtual File System)
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档