Linux文件系统及管理

一、Linux系统的文件系统与目录结构

  Linux系统的文件目录结构为一个单根倒置的树结构,具体表现如下图:

从CentOS7开始,以下目录与之前的版本发生变化

◆/bin 软链接指向 /usr/bin

◆/sbin 软链接指向 /usr/sbin

◆/lib 软链接指向 /usr/lib

◆/lib64 软链接指向 /usr/lib64

文件系统从根目录下开始,用“/”表示

◆boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)都存放于此目录

◆/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序

◆/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序

◆/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)

◆/lib64:专用于x86_64系统上的辅助共享库文件存放位置

◆/etc:配置文件目录

◆/home/USERNAME:普通用户家目录

◆/root:管理员的家目录

◆/media:便携式移动设备挂载点

◆/mnt:临时文件系统挂载点

◆/dev:设备文件及特殊文件存储位置

b: block device,随机访问

c: character device,线性访问

◆/opt:第三方应用程序的安装位置

◆/srv:系统上运行的服务用到的数据

◆/tmp:临时文件存储位置

◆/usr: universal shared, read-only data

bin: 保证系统拥有完整功能而提供的应用程序

sbin:

lib:32位使用

lib64:只存在64位系统

include: C程序的头文件(header files)

share:结构化独立的数据,例如doc, man等

local:第三方应用程序的安装位置

bin, sbin, lib, lib64, etc, share

◆/proc: 用于输出内核与进程信息相关的虚拟文件系统

◆/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统

◆/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置

二、Linux下的文件类型

◆- 普通文件

◆d 目录文件

◆b 块设备

◆c 字符设备

◆l 符号链接文件

◆p 管道文件pipe

◆s 套接字文件socket

三、文件的3种时间atime mtime ctime

Linux系统中,文件存在3种时间状态属性

1、这3个time的含义:

atime:Access Time 最后一次访问文件(读取或执行)或目录的时间;

mtime:Modofy Time 最后一次修改文件内容(数据)或目录内容(目录内文件列表)的时间;

ctime:Change Time 最后一次改变文件属性(元数据)或目录属性(元数据)的时间;

2、如何查看文件或目录的atime/mtime/ctime

可通过stat命令查看全部3个时间

[root@centos7 data]#stat test.txt
File: ‘test.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 67 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2019-07-28 15:25:54.755150776 +0800
Modify: 2019-07-28 15:25:54.755150776 +0800
Change: 2019-07-28 15:25:54.755150776 +0800
Birth: -
[root@centos7 data]#

或可以通过以下命令分别查看:

查看atime: ls -lu filename

[root@centos7 data]#ls -lu test.txt
-rw-r--r--. 1 root root 0 Jul 28 15:25 test.txt
[root@centos7 data]#

查看mcime: ls -l filename

[root@centos7 data]#ls -l test.txt
-rw-r--r--. 1 root root 12 Jul 28 15:29 test.txt
[root@centos7 data]#

查看ctime: ls -lc filename

[root@centos7 data]#ls -lc test.txt
-rw-r--r--. 1 root root 12 Jul 28 15:29 test.txt
[root@centos7 data]#

四、Linux文件系统的inode

1、inode是什么?

  理解inode,要从文件储存说起。

  文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

  操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个block。

  文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为索引节点

  每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。系统是根据inode号来识别文件。

2、inode包含的信息

  inode包含文件的属性信息(元数据),具体来说有以下内容:

    * 文件的字节数

  * 文件拥有者的User ID

  * 文件的Group ID

  * 文件的读、写、执行权限

  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  * 链接数,即有多少文件名指向这个inode

  * 文件数据block的位置

3、inode的特性

  • inode也会消耗磁盘空间,所以在硬盘格式化的时候,操作系统会自动将硬盘分为2个区域,一部分用来存放inode信息,一部分存放文件数据。

  • 每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。

  • 磁盘的每一个独立分区的inode号是相互独立的。

查看每个硬盘分区的inode总数和已经使用的数量,可以使用df -i命令。

[root@centos7 ~]#df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 26214400 131432 26082968 1% /
devtmpfs 228956 391 228565 1% /dev
tmpfs 232906 1 232905 1% /dev/shm
tmpfs 232906 872 232034 1% /run
tmpfs 232906 16 232890 1% /sys/fs/cgroup
/dev/sda3 26214400 4 26214396 1% /data
/dev/sda1 524288 342 523946 1% /boot
tmpfs 232906 9 232897 1% /run/user/42
tmpfs 232906 1 232905 1% /run/user/0
[root@centos7 ~]#

五、硬链接、软链接文件特性及区别

  • 硬链接:同一文件系统上(同一磁盘分区)相同inode编号的不同文件名的文件,对应同一文件系统上相同的block磁盘位置。

  • 软链接:一个符号链接文件指向另外一个文件或者目录,与被指向的文件inode号不相同。

硬链接和软连接的区别:

(1)本质:硬链接:同一个文件多个名字,软连接不同的文件。

(2)硬链接不可以跨分区,软链接可以。

(3)硬链接不支持对目录创建,软链接支持。

(4)相互关系:硬链接相互是独立的关系,软链接相互是依赖的关系。

(5)inode号,硬链接相同,软连接不同。

(6)链接数。硬链接会增长或减少,软链接不变。

(7)路径问题:原始文件的路径。硬链接的相对路径是当前工作目录,软连接是相对路径是根据后面软链接的路径决定。

最新文章

  1. 2000条你应知的WPF小姿势 基础篇<63-68 Triggers和WPF类逻辑结构>
  2. window go protobuf
  3. Kafka单机环境部署
  4. 原生javascript加载运行
  5. linux查看访问windows共享目录NT_STATUS_DUPLICATE_NAME问题解决
  6. 20145215《Java程序设计》第4周学习总结
  7. 浅析String、StringBuffer、StringBuilder的区别以及性能区别
  8. unp.h
  9. 将通过find命令找到的文件拷贝到一个新的目录中
  10. Django用户认证系统(二)Web请求中的认证
  11. Android Socket 相关
  12. Qt入门(16)——组装窗口部件
  13. Ueditor文本编辑器(新浪SAE平台版本) - 下载频道 - CSDN.NET
  14. session校验是否登录
  15. Educational Codeforces Round 15_C. Cellular Network
  16. C++对象模型的那些事儿之三:默认构造函数
  17. 实现自适应位置--footer紧贴浏览器底部
  18. MySQL 报错 1093
  19. JDK安装教程(Windows7 x64)
  20. 华中农业大学第五届程序设计大赛网络同步赛-A

热门文章

  1. Qt开发经验小技巧61-70
  2. sqlserver2012 用户指定数据库访问权限
  3. error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
  4. python + selenium + unittest实现简单的UI自动化
  5. Nginx+Keepalived实现web服务器高可用
  6. python学习-32 zip函数
  7. GoLang的概述
  8. 安装Nexus时报Error occurred shutting down framework: java.lang.NumberFormatException: null
  9. (转)为什么ssh一关闭,程序就不再运行了?
  10. 【leetcode-97 动态规划】 交错字符串