1.一张图
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.关于硬链接和软链接
[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选项,则表示创建的是软链接。 |
结论一:
对于硬链接而言,不可以给目录创建硬链接。 |
[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 |
[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下面都有一个隐藏文件.指向他们。 |
结论三:
创建硬链接会增加文件被链接的次数 |
[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时,会删除文件 |
[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]# |
关于软链接的,大家可以仿照上面的进行实验,可以得到下面的一些结论:
第一,可应用与目录 第二,可以跨文件系统 第三,不会增加被链接文件的链接次数 第四,其大小为指定的路径所包含的字符个数 |
转载于:https://blog.51cto.com/zhangfengzhe/1429590