Linux文件系統與日誌文件

Linux文件系統與日誌文件

inode和block概述

文件數據包括元信息與實際數據
文件存儲在硬盤上,硬盤最小存儲單位是“扇區”,每個扇區存儲512字節
block(塊)
連續的八個扇區組成一個block
是文件存儲的最小單位
inode(索引節點)
中文譯名爲“索引節點”,也叫i節點
用於存儲文件元信息

在這裏插入圖片描述

inode包含文件的元信息
文件的字節數
文件擁有者的User ID(不包含文件名)
文件的Group ID
文件的讀寫執行權限
文件的時間戳
……
用stat命令可以查看某個文件的inode信息

[root@localhost opt]# touch aa.txt
[root@localhost opt]# stat aa.txt
  文件:"aa.txt"
  大小:0         	塊:0          IO 塊:4096   普通空文件
設備:fd00h/64768d	Inode:33567187    硬鏈接:1
權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
環境:unconfined_u:object_r:usr_t:s0
最近訪問:2020-07-02 03:01:28.719405830 +0800
最近更改:2020-07-02 03:01:28.719405830 +0800
最近改動:2020-07-02 03:01:28.719405830 +0800
創建時間:-

##Linux系統文件三個主要的時間屬性
ctime(change time)
最後一次改變文件或目錄(屬性)的時間
atime(access time)
最後一次訪問文件或目錄的時間
mtime(modify time)
最後一次修改文件或目錄(內容)的時間

目錄文件的結構

目錄也是一種文件
目錄文件的結構
在這裏插入圖片描述
每個inode都有一個號碼,操作系統用inode號碼來識別不同的文件
Linux系統內部不適用文件名,而使用inode號碼來識別文件
對於用戶,文件名只是inode號碼便於識別的別稱

inode的號碼
用戶通過文件名打開文件時,系統內部的過程
1.系統找到這個文件名對應的inode號碼
2.通過inode號碼,獲取inode信息
3.根據inode信息,找到文件數據所在的block,讀出數據

查看inode號碼的方法

ls -i命令:查看文件名對應的inode號碼

[root@localhost opt]# ls -i aa.txt
33567187 aa.txt
[root@localhost opt]# stat aa.txt
  文件:"aa.txt"
  大小:0         	塊:0          IO 塊:4096   普通空文件
設備:fd00h/64768d	Inode:33567187    硬鏈接:1
權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
環境:unconfined_u:object_r:usr_t:s0
最近訪問:2020-07-02 03:01:28.719405830 +0800
最近更改:2020-07-02 03:01:28.719405830 +0800
最近改動:2020-07-02 03:01:28.719405830 +0800
創建時間:-

硬盤分區後的結構
在這裏插入圖片描述
在這裏插入圖片描述

inode的大小

inode也會消耗硬盤空間
每個inode的大小
一般是128字節或256字節

格式化文件系統時確定inode的總數
使用df -i命令可以查看每個硬盤分區的inode總數和已經使用的數量
在這裏插入圖片描述
inode的特殊作用
由於inode號碼與文件名分離,導致一些Unix/Linux系統具有以下的現象
當文件名包含特殊字符,可能無法正常刪除文件,直接刪除inode,也可以刪除文件
移動或重命名文件時,之改變文件名,不影響inode號碼
打開一個文件後,系統通過inode號碼來識別該文件,不再考慮文件名

鏈接文件

爲文件或目錄建立鏈接文件
鏈接文件分類

軟鏈接(又稱符號鏈接) 硬鏈接
刪除原始文件後 失效 仍舊可用
使用範圍 適用於文件或目錄 只可用於文件
保存位置 與原始文件可以位於不同的文件系統中 必須與原始文件在同一個文件系統(如一個Linux分區)內

硬鏈接

一般情況下,文件名和inode號碼是一一對應關係,每個inode號碼對應一個文件名。
但是Linux系統允許,多個文件名指向同一個inode號碼。這表示可以用不同的文件名來訪問同樣的內容
ln命令可以創建硬鏈接,命令基本格式
ln 源文件 目標
不能對目錄做硬鏈接
運行此命令後,源文件和目標文件的inode號碼相同,都指向同一個inode。
inode信息中的“鏈接數”此時就會增加1
當一個文件擁有多個硬鏈接時,對文件內容修改,會影響到所有文件名,但刪除一個文件名,不會影響另一個文件名的訪問,刪除一個文件名,就會使得inode信息中的“鏈接數”減少1

軟鏈接

軟鏈接就是再創建一個獨立的文件,而這個文件會讓數據的讀取指向它連接的那個文件的文件名
軟鏈接的創建命令的基本格式爲:
ln [-s] 源文件或目錄… 鏈接文件或目標位置

恢復誤刪除的文件

恢復XFS類型的文件

xfsdump命令格式
xfsdump -f 備份存放位置 要備份的路徑或者設備文件

xfsdump備份級別(默認爲0)
0:完全備份
1-9:增量備份

xfsdump常用選項:-f,-L,-M,-s

xfsrestore -f 恢復文件的位置 存放恢復後文件的位置

xfsdump使用限制
只能備份已掛載的文件系統
必須使用root的權限才能操作
只能備份XFS文件系統
備份後的數據只能讓xfsrestore解析
不能備份兩個具有相同UUID的文件系統

恢復EXT類型的文件

安裝extundelete軟件包

[root@localhost ~]# yum -y install e2fsprogs*
[root@localhost ~]# yum -y install wget
[root@localhost ~]# cd /opt
[root@localhost opt]# wget http://nchc.dl.sourceforge.net/project/extundel/extundelete-0.2.4.tar.bz2
[root@localhost opt]# ls
data  extundelete-0.2.4.tar.bz2

把一塊磁盤格式化成ext4格式

[root@localhost ~]# mkfs.ext3  /dev/sdb1 
mke2fs 1.42.9 (28-Dec-2013)
文件系統標籤=
OS type: Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   

[root@localhost opt]# mkdir data   
[root@localhost opt]# mount /dev/sdb1 /opt/data

[root@localhost opt]# cd data/
[root@localhost data]# ls
lost+found
[root@localhost data]# touch aa bb cc dd 
[root@localhost data]# ls
aa  bb  cc  dd  lost+found

[root@localhost data]# rm -rf aa bb
[root@localhost data]# ls
cc  dd  lost+found

[root@localhost data]# cd ~
[root@localhost ~]# umount /opt/data/

[root@localhost ~]# extundelete /dev/sdb1 --restore-all	
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 160 groups loaded.
Loading journal descriptors ... 28 descriptors loaded.
Searching for recoverable inodes in directory / ... 
0 recoverable inodes found.		
Looking through the directory structure for deleted files ... 
0 recoverable inodes still lost.
No files were undeleted.
[root@localhost opt]# mount /dev/sdb1 /opt/data
[root@localhost ~]# cd RECOVERED_FILES/	
[root@localhost RECOVERED_FILES]# ls		
aa  cc
[root@localhost RECOVERED_FILES]# cp a /opt 		
[root@localhost RECOVERED_FILES]# ls /opt
aa  bb  cc  dd  lost+found

日誌文件

日誌的功能

用於記錄系統、程序運行中發生的各種事件
通過閱讀日誌,有助於診斷和解決系統故障
日誌文件的分類
內核及系統的分類

  • 內核及系統日誌
    由系統服務rsyslog統一進行管理,日誌格式基本相似
  • 用戶日誌
    記錄系統用戶登錄退出系統的相關信息
  • 程序日誌
    由各種應用程序獨立管理的日誌文件,記錄格式不統一

日誌文件保存位置
默認位於:/var/log目錄下

主要日誌文件介紹

內核及公共消息日誌 /var/log/messages
計劃任務日誌 /var/log/cron
系統引導日誌 /var/log/dmesg
郵件系統日誌 /var/log/maillog
用戶登錄日誌 /var/log/lastlog、/var/log/secure、/var/log/wtmp、/var/log/btmp

內核及系統日誌
由系統服務rsyslogd統一管理
軟件包:rsyslog-7.4.7-16.el7.x86_64
主要程序:/sbin/rsyslogd
配置文件:/etc/rsyslog.conf

在這裏插入圖片描述

日誌消息的級別

受rsyslogd服務管理的日誌文件都是Linux系統中最重要的日誌文件,它們記錄了Linux系統中內核,用戶認證,郵件,計劃任務等最基本的系統消息
在Linux內核中,根據日誌消息的重要程度不同,將其分爲不同的優先級(數字等級越小,優先級越高,消息越重要)

級別 解釋
0 EMERG(緊急) 會導致主機系統不可用的情況
1 ALERT(警告) 必須馬上採取措施解決的問題
2 CRIT(嚴重) 比較嚴重的情況(某些功能不可用)
3 ERR(錯誤) 運行出現錯誤
4 WARNING(提醒) 可能會影響系統功能的事件
5 NOTICE(注意) 不會影響系統但值得注意
6 INFO(信息) 一般信息
7 DEBUG(調試) 程序或系統調試信息等(做維護的時候可能會用到)

內核及大多數系統消息都被記錄到公共日誌文件/var/log/messages中,而其他一些程序消息被記錄到各自獨立的日誌文件中
日誌消息還可以記錄到特定的存儲設備中,或者直接發送給指定用戶

用戶日誌

保存目錄
保存了用戶登錄,退出系統等相關信息

/var/log/lastlog:最近的用戶登錄事件

/var/log/wtmp:用戶登錄,註銷及系統開,關機事件

/var/log/utmp:當前登錄的每個用戶的詳細信息

/var/log/secure:與用戶驗證相關的安全性事件

程序日誌分析

由相應的程序獨立進行管理
web服務:/var/log/httpd/

  • access_log、error_log
    代理服務:/var/log/squid/
  • access.log 、cache.log
    FTP服務:/var/log/xferlog

分析工具

  • 文本查看、grep過濾檢索、webmin管理套件中查看
  • awk、sed等文本過濾,格式化編輯工具
  • webalizer、awstats等專用日誌分析工具

日誌管理策略

及時做好備份和歸檔
延長日誌保存期限
控制日誌訪問權限

  • 日誌中可能會包含各類敏感信息,如賬戶、口令等
    集中管理日誌
  • 將服務器的日誌文件發到統一的日誌文件服務器
  • 便於日誌信息的統一收集,整理和分析
  • 杜絕日誌信息的意外丟失、惡意篡改或刪除
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章