一、 Linux文件系统
在《Linux硬盘格式化》中,将新添加的磁盘b设置成了GPT分区,同时创建了两个分区sdb1和sdb2,并为两个分区分别构建了文件系统,然后进行了分区挂载,下面主要观察sdb1分区中的文件信息
1.1 树型目录结构
在sdb1分区创建几个文件和几个目录,以及它们的子目录,查看Linux中目录结构
root@Dog-li:/mnt/linux# tree
.
├── lizhi
│ ├── Go
│ ├── JAVA
│ └── main.c
├── lost+found
├── test
└── zhuyzhu
├── main.py
├── Python
└── Rust
1.2 文件占用空间大小
#通过ll命令可以看到test文件占用了12个字节
root@Dog-li:/mnt/linux# ll
total 36
drwxr-xr-x 4 root root 4096 9月 7 18:58 lizhi/
drwx------ 2 root root 16384 9月 6 18:22 lost+found/
-rw-r--r-- 1 root root 12 9月 7 18:56 test
drwxr-xr-x 4 root root 4096 9月 7 18:59 zhuyzhu/
#查看文件内容,两个字符分别占用5个字节,中间空格占用一个字节以及结尾的换行符有占用一个字节,共12个字节
root@Dog-li:/mnt/linux# cat test
Hello World
#通过du命令查看实际占用的磁盘空间大小
root@Dog-li:/mnt/linux# du -h test
4.0K test
文件本身大小只有12字节,为什么占用的磁盘空间却是4K字节(8个扇区)呢?
在文件系统中,这4K字节的空间称为一个簇,文件系统是以簇为单位发分配磁盘空间的,簇的大小是可以调节的,在初始化文件系统的时候调节
1.3 查看文件目录项
root@Dog-li:/mnt/linux# stat test
File: test #文件名
# 文件大小 占用扇区数量 簇大小
Size: 12 Blocks: 8 IO Block: 4096 regular file
# 设备编号 Inode编号 链接数
Device: 811h/2065d Inode: 12 Links: 1
#ACL (644是8进制) 用户编号 用户组编号
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
# 2进制 110 100 100
# 8进制 6 4 4
Access: 2021-09-07 18:56:59.408209474 +0800
Modify: 2021-09-07 18:56:55.304219828 +0800
Change: 2021-09-07 18:56:55.304219828 +0800
Birth: -
上述信息记录了一个文件大小、权限等所有基本信息,但文件存在磁盘的什么位置,由什么参数表示呢?
如上图所示,每个磁盘中,除了存放分区表以及目录项只有,还有一个INode记录项,每个文件或文件夹都有一个INode编号,对应于INode表中的一条记录项,记录项中最关键的信息是记录了该文件的内容存放在哪些扇区上,用一个列表记录了扇区号,列表中扇区号的顺序就是文件内容的顺序
1.4 给文件授权
test文件现有的权限为rw-r–r–,现在通过chmod命令修改文件的权限
#授予所有用户对这个文件的权限
root@Dog-li:/mnt/linux# chmod 777 test
root@Dog-li:/mnt/linux# ll
total 36
drwxr-xr-x 4 root root 4096 9月 7 18:58 lizhi/
drwx------ 2 root root 16384 9月 6 18:22 lost+found/
-rwxrwxrwx 1 root root 12 9月 7 18:56 test*
drwxr-xr-x 4 root root 4096 9月 7 18:59 zhuyzhu/
root@Dog-li:/mnt/linux# stat test
File: test
Size: 12 Blocks: 8 IO Block: 4096 regular file
Device: 811h/2065d Inode: 12 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-09-07 18:56:59.408209474 +0800
Modify: 2021-09-07 18:56:55.304219828 +0800
Change: 2021-09-07 19:43:56.094356958 +0800
1.5 观察文件扇区的内容
#使用debugfs命令进入到命令行,然后通过blocks命令查看文件对应的扇区号
root@Dog-li:/mnt/linux# debugfs /dev/sdb1
debugfs 1.44.1 (24-Mar-2018)
debugfs: blocks test
33025
#通过bdump(block_dump)查看扇区内容
debugfs: bdump 33025
0000 4865 6c6c 6f20 576f 726c 640a 0000 0000 Hello World.....
0020 0000 0000 0000 0000 0000 0000 0000 0000 ................
#退出命令行,删除该文件
root@Dog-li:/mnt/linux# rm test
root@Dog-li:/mnt/linux# ll
total 32
drwxr-xr-x 5 root root 4096 9月 7 20:04 ./
drwxr-xr-x 6 root root 4096 9月 6 18:36 ../
drwxr-xr-x 4 root root 4096 9月 7 18:58 lizhi/
drwx------ 2 root root 16384 9月 6 18:22 lost+found/
drwxr-xr-x 4 root root 4096 9月 7 18:59 zhuyzhu/
#再次查看扇区内容,文件内容依然存在于扇区上
debugfs: bdump 33025
0000 4865 6c6c 6f20 576f 726c 640a 0000 0000 Hello World.....
0020 0000 0000 0000 0000 0000 0000 0000 0000 ................
删除文件,只是从磁盘的目录项中将该文件的目录给删除掉了,文件的内容依然存在于磁盘上,这也是文件被删除后能够恢复的原因
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153678.html