文件的存储方式
控制区和存储区
磁盘分为,控制区和存储区,控制区域用来村文件的inode号码,而存储区用来实际
存放文件。
验证的步骤
1 首先使用dd
创建一个空镜像文件dd if=/dev/zero of=/mnt/test.img bs=512k count=10
2 格式化该镜像文件mkfs.ext4 test.img
3 挂载mount test.img /mnt
4 利用脚本创建小文件占满控制区vim create_file.sh
1
2
3
4
5
6
7
8
9
10
11
for((i = 1;; ++i))
do
{
if [ $? -eq 0 ];then
echo "this is file_${1}"> /mnt/file_${i}
else
exit 1
fi
}
done
执行脚本1
2[root@localhost yum]# sh creat_file.sh
creat_file.sh: line 6: /mnt/file_1294: No space left on device
6 进入/mnt目录,创建文件#cd /mnt
#touch test123
同样会提示No space left on device
但是使用df -h
可以发现/dev/loop0 4.0M 1.4M 2.3M 38% /mnt
依然有可用的空间,原因就是控制区域被占满,所以不能再创建文件
硬链接与软链接
硬链接(Hard Link)
(1)每个文件都会占用一个inode,文件内容由inode的记录来指向:
(2)若要读取该文件的内容,必须通过目录所记录的文件名来找到正确的inode号即兴读取
创建文件的硬链接使用ln
1
2
3
4
5
6
7
8[root@localhost test]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 24 17:19 a
[root@localhost test]# ln -s a b
[root@localhost test]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 24 17:19 a
lrwxrwxrwx. 1 root root 1 Jul 24 17:19 b -> a
注意
(1) 不能跨越文件系统
(2) 不能对目录进行硬链接
解释:
跨越文件系统会造成链接上的错乱,而如果使用 hard link 链接到目录时, 链接的
数据需要连同被链接目录底下的所有数据都要建立链接,举例来说,如果你要将/etc 使用
硬链接建立一个 /etc_hd 的目录时,那在 /etc_hd 底下的所有文件同时都与/etc 底下的
文件要建立 hard link ,而不仅是两个目录名之间建立硬链接而已。
软链接
通过软链接建立的文件是一个独立的文件,它相当于是一个“指针”。这个文件会让数据
的读取指向它 link 的文件。因为只是一种指向动作,如果软链接的源文件被修改,它进行读取也会发生改变,如果源文件被删除,则链接文件无法进行读取了。
1软链接是可以链接不存的文件ln -s aabbccddee slink
即使aabbccddee这个文件不存在,都是可以创建成功的
当aabbccddee这个文件被创建之后,这个软链接也是有效的
2 软链接可以链接目录
当使用当同时使用vsftpd和httpd来共享文件时,只要把ftp共享的文件夹,创建软链接到httpd的目录就可以同时分享ln -s /var/ftp/pub /var/www/html