linux学习--文件存储管理

文件的存储方式

控制区和存储区

磁盘分为,控制区和存储区,控制区域用来村文件的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
#!/bin/bash
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
依然有可用的空间,原因就是控制区域被占满,所以不能再创建文件

硬链接与软链接

(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

Contents
  1. 1. 文件的存储方式
    1. 1.1. 控制区和存储区
    2. 1.2. 验证的步骤
  2. 2. 硬链接与软链接
    1. 2.1. 硬链接(Hard Link)
    2. 2.2. 软链接
,