分析Linux磁盘管理与文件系统专题一

简介:

1.一张图


wKioL1OmijfDKooBAAFV3-7VOJw979.jpg说明:

A MBR

MBR,main boot record,即主引导记录【磁盘上的一段不属于任何OS的空间】。早期MBR有512字节,其中:

boot loader   446字节 (一段引导程序)

partition info 64字节  (每16字节标示一个partition)

【可见,磁盘上至多有4个主分区。实际上,我们可以在一个主分区里面设定指针,指向磁盘上的其他地方,那么这样的分区被称为扩展分区。】



B 当电脑加电后,内存一开始为空,接下来载入BIOS进行POST自检,自检完毕后,便根据Boot Sequence来寻找MBR,根据MBR中的分区表信息,载入操作系统。

可见,MBR对于我们能否启动OS,至关重要!


C 分区(Partition)

分区是磁盘的逻辑分界。通过分区,将磁盘划分为不同的逻辑结构,然后每个分区里面就可以创建不同的文件系统了。分区信息存在于MBR中。


D 到底文件是如何被标示和存储的?


第一,在磁盘上,我们不仅仅要存储文件的数据,还有文件本身的一些属性信息。于是,大体上,可以将磁盘划分为meta存储区和data存储区。在data存储区,从逻辑上看,是一个个block在存储数据。


第二,我们如何知道block是否空闲?

在meta存储区,存在block bit map来集中表示blocks的使用情况,比如0表示block空闲,1表示已经被占用。实际上block bit map会加速我们查找block。


第三,meta存储区存在inode bit map,类似于block bit map。inode bit map主要用于存放文件的index node number,owner,group,mode,timestamp,blocks信息,注意没有存放filename。


第四,想一想,一个目录在block中存储的是什么?实际上,目录只是一个路径映射表。一个目录的block中存储的就是目录的“儿子姓名”以及对应的index node number。


E 举例分析查找文件过程

比如,我们要查找/tmp/var/log文件。

首先通过自引用的方式找到/,然后找到block,由于block中存在dentry,找到儿子var的index node number【标记为varInode】;

然后根据varInode到meta存储区的inode bit map中寻找blocks信息,从而在data区域找到block,找到var的儿子log的对应的index node number【记为logInode】。

最后根据logInode在meta存储区的inode bit map中定位blocks,从而查找到文件。




2.关于硬链接和软链接

1
2
3
4
5
6
[root@localhost ~] # ls -l /etc
-rw-r--r--  1 root root    1360 Jun 18 23:03 group
-rw-------  1 root root    1370 Jun 18 23:03 group-
lrwxrwxrwx  1 root root      22 Aug 17  2011 grub.conf -> .. /boot/grub/grub .conf
-r--------  1 root root    1091 Jun 18 23:03 gshadow
-rw-------  1 root root    1097 Jun 18 23:03 gshadow-

在上面的第二列代表什么?什么是硬链接?什么是软链接?

可以这样理解:

硬链接,表示不同路径指向同一个inode

软链接,表示文件的inode节点中存放的是一个路径信息(不在是那些owner,group,..)

观察下面:

lrwxrwxrwx  1 root root      22 Aug 17  2011 grub.conf -> ../boot/grub/grub.conf

l表示它是一个链接文件,这里是符号链接(即软链接)。

1表示这个文件被硬链接的次数。

22表示的是路径../boot/grub/grub.conf的长度。


3.动手实验并得到一些结论

格式如下:

ln [-s|-v] src dest

说明:

如果使用-s选项,则表示创建的是软链接。


结论一:

对于硬链接而言,不可以给目录创建硬链接。

1
2
3
4
5
6
7
8
9
[root@localhost backup] # pwd
/backup
[root@localhost backup] # ls -l
total 16
drwxr-xr-x 2 root root 4096 Jun 21 18:34 a1
-rw-r--r-- 1 root root 1666 Jun 21 18:33 inittab
[root@localhost backup] # ln /etc a1
ln : ` /etc ': hard link not allowed  for  directory
[root@localhost backup] #


结论二:

目录的硬链接数就是2

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost backup] # pwd
/backup
[root@localhost backup] # ls -l
total 16
drwxr-xr-x 2 root root 4096 Jun 21 18:34 a1
-rw-r--r-- 1 root root 1666 Jun 21 18:33 inittab
[root@localhost backup] # mkdir a2
[root@localhost backup] # ls -l
total 24
drwxr-xr-x 2 root root 4096 Jun 21 18:34 a1
drwxr-xr-x 2 root root 4096 Jun 21 18:39 a2
-rw-r--r-- 1 root root 1666 Jun 21 18:33 inittab

原因如下:

注意目录a1,a2下面都有一个隐藏文件.指向他们。


结论三:

创建硬链接会增加文件被链接的次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@localhost backup] # pwd
/backup
[root@localhost backup] # ls -l
total 24
drwxr-xr-x 2 root root 4096 Jun 21 18:34 a1
drwxr-xr-x 2 root root 4096 Jun 21 18:39 a2
-rw-r--r-- 1 root root 1666 Jun 21 18:33 inittab
[root@localhost backup] # ln inittab a1/inittab_link_1
[root@localhost backup] # ls -l
total 24
drwxr-xr-x 2 root root 4096 Jun 21 18:45 a1
drwxr-xr-x 2 root root 4096 Jun 21 18:39 a2
-rw-r--r-- 2 root root 1666 Jun 21 18:33 inittab
[root@localhost backup] # ls -l a1
total 8
-rw-r--r-- 2 root root 1666 Jun 21 18:33 inittab_link_1
[root@localhost backup] # ln inittab a2/inittab_link_2
[root@localhost backup] # ls -l
total 24
drwxr-xr-x 2 root root 4096 Jun 21 18:45 a1
drwxr-xr-x 2 root root 4096 Jun 21 18:46 a2
-rw-r--r-- 3 root root 1666 Jun 21 18:33 inittab
[root@localhost backup] # ls -l a1 a2
a1:
total 8
-rw-r--r-- 3 root root 1666 Jun 21 18:33 inittab_link_1
a2:
total 8
-rw-r--r-- 3 root root 1666 Jun 21 18:33 inittab_link_2
[root@localhost backup] #


结论四:

删除硬链接文件,会减少硬链接次数,当硬链接次数为1时,会删除文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[root@localhost backup] # pwd
/backup
[root@localhost backup] # ls -l . a1 a2
.:
total 24
drwxr-xr-x 2 root root 4096 Jun 21 18:45 a1
drwxr-xr-x 2 root root 4096 Jun 21 18:46 a2
-rw-r--r-- 3 root root 1666 Jun 21 18:33 inittab
a1:
total 8
-rw-r--r-- 3 root root 1666 Jun 21 18:33 inittab_link_1
a2:
total 8
-rw-r--r-- 3 root root 1666 Jun 21 18:33 inittab_link_2
[root@localhost backup] # rm inittab 
rm : remove regular  file  `inittab'? y
[root@localhost backup] # ls -l . a1 a2
.:
total 16
drwxr-xr-x 2 root root 4096 Jun 21 18:45 a1
drwxr-xr-x 2 root root 4096 Jun 21 18:46 a2
a1:
total 8
-rw-r--r-- 2 root root 1666 Jun 21 18:33 inittab_link_1
a2:
total 8
-rw-r--r-- 2 root root 1666 Jun 21 18:33 inittab_link_2
[root@localhost backup] # tail -1 a1/inittab_link_1 
x:5:respawn: /etc/X11/prefdm  -nodaemon
[root@localhost backup] # tail -1 a2/inittab_link_2 
x:5:respawn: /etc/X11/prefdm  -nodaemon
[root@localhost backup] # rm a1/inittab_link_1 
rm : remove regular  file  `a1 /inittab_link_1 '? y
[root@localhost backup] # tail -1 a2/inittab_link_2 
x:5:respawn: /etc/X11/prefdm  -nodaemon
[root@localhost backup] # ls -l . a1 a2
.:
total 16
drwxr-xr-x 2 root root 4096 Jun 21 18:55 a1
drwxr-xr-x 2 root root 4096 Jun 21 18:46 a2
a1:
total 0
a2:
total 8
-rw-r--r-- 1 root root 1666 Jun 21 18:33 inittab_link_2
[root@localhost backup] #


关于软链接的,大家可以仿照上面的进行实验,可以得到下面的一些结论:

第一,可应用与目录

第二,可以跨文件系统

第三,不会增加被链接文件的链接次数

第四,其大小为指定的路径所包含的字符个数

本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1429590,如需转载请自行联系原作者



相关文章
|
1月前
|
存储 监控 Shell
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
37 0
|
1月前
|
监控 Shell Linux
【Shell 命令集合 网络通讯 】Linux 分析串口的状态 statserial命令 使用指南
【Shell 命令集合 网络通讯 】Linux 分析串口的状态 statserial命令 使用指南
33 0
|
4天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
15天前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
21 0
|
30天前
|
存储 算法 Linux
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
45 0
|
3天前
|
Ubuntu Linux 芯片
Linux(2)ubuntu rootfs根文件系统制作
Linux(2)ubuntu rootfs根文件系统制作
19 0
|
11天前
|
存储 运维 监控
深入理解 Linux 文件系统的层次结构
【4月更文挑战第14天】本文将探讨 Linux 操作系统的文件系统层次结构,这是每个系统管理员和开发人员必须掌握的核心知识。我们将从文件系统的顶层目录开始,逐步深入到每个目录的特定用途和重要性,以及它们如何协同工作以支持 Linux 系统的正常运行。
|
22天前
|
Prometheus 监控 数据可视化
linux分析方法与技巧
【4月更文挑战第3天】在Linux环境中,进行日志分析和系统性能分析的关键方法包括:使用`cat`, `less`, `tail`查看和过滤日志,`logrotate`管理日志文件,`rsyslog`或`syslog-ng`聚合日志,以及通过`top`, `mpstat`, `pidstat`, `free`, `iostat`, `netstat`, `strace`, `sar`, `dstat`等工具监控CPU、内存、磁盘I/O和网络。对于高级分析,可利用Brendan Gregg的性能工具,以及Grafana、Prometheus等可视化工具。
17 2
linux分析方法与技巧
|
24天前
|
存储 固态存储 Unix
Linux中磁盘分区和文件系统管理
在Linux系统中,磁盘是存储数据的物理设备,如HDD或SSD,以文件形式存在于`/dev`目录下,如`sda`、`sdb`等。文件系统定义了如何在磁盘上组织和访问数据,常见的Linux文件系统有ext2、ext3、ext4、xfs等。通过虚拟机软件如VMware,用户可以向Linux虚拟机添加新的硬盘。
|
29天前
|
监控 Linux Shell
Linux 进程问题调查探秘:分析和排查频繁创建进程问题
Linux 进程问题调查探秘:分析和排查频繁创建进程问题
39 0