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所处位置
顾翔老师与云测学院联合推出:软件测试分析与设计,请点击https://v.youku.com/v_show/id_XNDQ3MzkyNjk3Ng==.html?spm=a2hzp.8244740.0.0,收看。有不同观念欢迎与顾翔老师交流!
投票已过期
1.以下你用过哪些集中配置管理系统?(多选)
- puppet
- Chef
- ansible
- saltstack
- Cfengine
- Capistrano
- Resque
- Rundeck
- Rundeck
- 其他
2.以下你用哪些过虚拟机或容器?(多选)
- VMware
- Vagrant
- Amazon EC2
- AMI(亚马逊云机器镜像)
- Vagrant
- Docker
- Rkt
- 裸金属服务器
- 其他
3.以下你用哪些操作系统自动化配置工具?(多选)
- Solaris10 JumpStart
- Kickstart
- Debian-Preseed
- 其他
4.以下你用哪些云平台?(多选)
- Amazon Web Services
- Google App Engine
- Windows Azure
- OpenShift
- Cloud Foundry
- AWS CloudFormation
- Microsoft Azure Stack
- OpenStack Heat
- 百度云
- 阿里云
- 腾讯云
- 其他
5.以下你用哪些CI/CD工具?(多选)
- Jenkins
- ThoughtWorks GoCD
- Atlassian Bamboo
- Microsoft Team Foundation Server
- TeamCity
- GitLab CI
- Travis CI
- SNAP CI
- Pivotal的Concourse
- Etsy的Morgue
- 其他
6.以下你用哪些管理工具?(多选)
- JIRA
- LeanKit
- Mingle
- 禅道
- 其他
7.以下你用哪些安全工具?(多选)
- Vault
- Keywhiz
- credstash
- Red October
- Metasploit
- OSSEC
- Tripwire
- Unhide
- OWASP ZAP Zed Attack Proxy Project
- Lynis
- The Browser Exploitation Framework
- OWASP Xenotix XSS Exploit Framework
- OWASP Offensive Testing Framework
- Brakeman
- WPScan
- nmap
- Burp Suite
- AWVS
- AppScan
- CSRFTester
- SQL Map
- Pangolin
- DirBuster
- 其他
8.以下你用哪些静态扫描工具?(多选)
- Sonar
- Brakeman
- Codeclimate
- CheckStyle
- 其他