软链接
作用就类似windows的快捷方式;
可以快捷的指向另一个文件的特殊文件。
源文件如果删除,快捷方式也就失效了!
ln命令
语法
1 | ln [options] [目标文件] [快捷方式] |
参数
1 | -s 创建符号链接,软链接、快捷方式 |
查询软链接文件本身
我们执行软链接文件时,其实就是执行软链接文件所指的文件,那么软链接文件本身又有什么内容呢?
readlink命令
1 | readlink <软链接文件> |
使用这条命令我们发现,软链接文件内容就是源文件的路径。
硬链接
先复习一下,什么是块?
1个块是8个连续扇区,大小4kb,块是读写最小单位。
创建硬链接
硬链接
一般情况下,文件名和inode号是一一对应的。
软链接的inode号码,是不一样的,代表软链接文件,是两个单个的文件,硬链接的inode号是一样的。
创建命令
1 | ln 目标文件 硬链接文件路径 |
使用此命令创建的硬链接,inode号相同!
inode
操作系统中专门用于管理和存储文件的信息软件,称之为文件系统。
文件是以文件数据+文件元信息组成的,文件的inode号+文件的数据内容,代表一个单个文件。
信息系统又称文件元信息(源信息,存放文件的创建信息,修改信息,文件大小,等等)。
文件系统将文件的源信息等等存储在了一个称之为inode区域的地方,中文叫做“索引节点”。
inode大小关系
磁盘在格式化的时候,系统自动的分为两部分,一部分是元数据区域,存放文件的inode信息,另一个是文件数据的内容区域。
每个inode的大小,都是在格式化分区的时候决定的,默认是128字节或者256字节。
如何验证大小?
1 | dumpe2fs -h /dev/vda1|grep -i 'inode size' |
命令
使用ls -l <任意文件>查看文件详细内容
1 | -rw-r--r--. 1 root root 6788 7月 24 19:10 access.log |
第二列的数字1
代表该文件为硬链接
查看inode号
使用ls -li <任意文件>在详细内容前再加上inode号
1 | 33574991 -rw-r--r--. 1 root root 6788 7月 24 19:10 access.log |
通过ls -l 查看到的数据,只有文件名不属于inode存储的元信息。
inode元数据区保存:
- 文件大小
- 属主信息
- 文件权限数字
- 文件修改时间
- 文件的实体指针(指向block位置)
文件系统
1 | df -hT |
1 | [root@localhost ~]# df -hT |
工作原理
- 用户通过查询文件名,打开文件;
- 系统找到文件inode号;
- 根据inode号找到文件所在磁盘block,然后读取。
软链接与硬链接
软链接特点
- inode号码不同
- 软链接可以针对文件夹
硬链接特点
- 一般情况,文件名和inode一一对应
- 目录文件夹不支持硬链接
- 硬链接数量增加,会增加inode号的计数
综合比较
- 删除软链接对源文件和硬链接无影响;
- 删除硬链接,对软链接、源文件也是无影响;
- 删除源文件,对硬链接是无影响的,但是影响软链接(我的理解是:当我们删文件时,只是把指针干掉,磁盘上的数据还是在的,而硬链接inode指向了数据所在位置,所以硬链接还是可以读取);
- 只有删除所有的原文件和硬链接,文件的连接数就为0了,此时文件数据丢失;
- 源文件和硬链接具有相同的inode号;
- 软链接和源文件的inode号码不同,因此是两个单独的文件!
文件系统格式化
vfs文件系统
virtualenv File System
虚拟文件系统
Linux系统的文件系统格式有ext2、ext3、ext4等,vfs处于应用程序与具体文件系统之间,能够实现对多种不同类型的文件进行统一管理。
不同平台的文件系统
windows 98平台
FAT FAT16 FAT32
windows 2000
NTFS
Linux
ext2 ext3(centos5) ext4(centos6) xfs(centos7)
网络共享文件系统
nfs,network file system
smb,server message block 服务消息块
集群文件系统
gfs,google file system #谷歌公司为了存储海量数据而开发的文件系统
ocfs,oracle cluster file system #甲骨文公司为了数据库研发平台而定制的文件系统
分布式文件系统
ceph 为了存储的可靠性和拓展性的分布式文件系统
交换文件系统
swap
区别在于
是否日志型文件系统
日志型文件系统原理:
磁盘是有个区域用于保存日志
- 数据写入日志区域
- 再应用到文件系统
- 能通过读取日志进行数据恢复
文件系统创建工具
创建文件系统
mkfs命令
1 | [root@localhost ~]# mkfs |
使用特定的命令,可以创建不同的文件系统。
fsck命令
修复文件系统的命令
开机时,默认读取/etc/fstab
即开机挂载文件
查看文件系统属性
dumpe2f命令
用于centos7之前的系统
打印系统文件的块组信息,使用与ext2~4
tune2fs命令
centos7以后的系统
设置linux是否开机自启检查文件系统正常与否
lsblk命令
列出所有设备以及文件系统信息
1 | lsblk -f #列出分区的文件系统类型 |
1 | [root@localhost ~]# lsblk -f |
实践格式化文件系统
我们从上面可以看到sdb的两个分区并没有文件系统
为sdb1设置ext4文件系统
1 | mkfs.ext4 /dev/sdb1 |
提示
1 | [root@localhost ~]# mkfs.ext4 /dev/sdb1 |
为sdb2设置xfs文件系统
1 | mkfs.xfs /dev/sdb2 |
提示
1 | [root@localhost ~]# mkfs.xfs /dev/sdb2 |
查看一下结果
1 | [root@localhost ~]# lsblk -f |
关闭文件系统自检
开机自检一般会占用很多时间,我们一般会把它关闭。
1 | [root@localhost ~]# tune2fs -c -1 /dev/sdb1 |
禁止文件系统开机修复错误
修改
/etc/fstab
文件
1 | /dev/mapper/centos-root / xfs defaults 0 0 |
结尾数字为0表示不检查,1表示检查错误
针对磁盘进行修复检查
1 | fsck -t 文件系统类型 设备名 |
修复sdb2
1 | fsck -t xfs /dev/sdb2 |
我们输入以上内容后,报错:
1 | [root@localhost ~]# fsck -t xfs /dev/sdb2 |
意思是fsck 对于xfs系统来说已经不支持了,需要换成xfs_repair
1 | [root@localhost ~]# xfs_repair /dev/sdb2 |
修复sdb1
1 | fsck -t ext4 /dev/sdb1 |
1 | [root@localhost ~]# fsck -t ext4 /dev/sdb1 |