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)路徑問題:原始文件的路徑。硬鏈接的相對路徑是當前工作目錄,軟連接是相對路徑是根據后面軟鏈接的路徑決定。