linux文件系统和日志分析!
linux文件系統和日志分析
- 一.inode和block
- block(塊)
- inode(索引節點)
- inode的元信息
- 簡述文件的讀取過程
- inode的特殊作用
- stat命令
- 二.硬鏈接與軟鏈接
- 硬鏈接
- 軟鏈接
- 三.恢復誤刪除的文件
- 1.xfsdump備份選項說明
- 2.備份的級別
- 3.xfsdump備份,刪除,還原操作演示
- ①格式化硬盤,掛載,創建新文件
- ②備份文件到/bak
- ③ 查看備份文件信息xfsdump -I
- ④ 刪除文件
- ⑤從備份/bak中還原文件到/opt/bak
- ⑥查看文件是否還原
- 4.xfsdump使用限制
- 四.分析文件日志
- 1.日志的功能:
- 2.日志保存位置:
- 3.日志文件的分類:
- (1)內核及系統日志
- (2)用戶日志
- (3)程序日志
- 4.日志注意事項
一.inode和block
概述
文件數據包括元信息和實際數據。
文件存儲在硬盤上,硬盤最小存儲單位是扇區,每個扇區存儲512字節。
block(塊)
是文件存儲的最小單位,一個block大小為512*8=4k,連續8個扇區組成一個block。
inode(索引節點)
也叫i節點,用于存儲文件元信息。
inode的元信息
包括文件的字節數,UID,GID,讀寫執行權限,時間戳,
每一個文件都有一個inode,一般大小是128/256字節。格式化文件系統時就會確定inode的總數。
元信息,外在屬性信息,有個指向指向block,內容不在inode里面,內容存在block里。
所有inode 一起形成inode table
簡述文件的讀取過程
/etc/1.txt文件讀取過程
先通過inodetable信息先對比目錄的inode找到目錄,再到目錄下通過inode table找文件對應inode,然后指引到文件對應的block讀取相對應的內容。
inode的特殊作用
由于inode號碼與文件名分離,導致一些Unix/Linux系統具有以下的現象
①當文件名包含特殊字符,可能無法正常刪除文件,直接刪除inode,也可以刪除文件
②移動或重命名文件時,只改變文件名,不影響inode號碼
③打開一個文件后,系統通過inode號碼來識別該文件,不再考慮文件名
stat命令
stat 文件名
查看文件的inode信息
atime 訪問文件時間
mtime 修改文件內容時間
ctime 修改文件屬性元信息時間
ll -i 321 可以查看到inode號
[root@localhost ~]# ll -i 321 540601712 -rw-r--r--. 1 root root 0 5月 17 17:04 321查看目錄下所有文件的inode號
ll -i
查看文件系統inode號
df -i
查看指定文件對應的文件系統的統計信息
stat -f 文件名
看xfs文件系統的inode節點大小
ext4文件系統用dumpe2fs
xfs_info /dev/sda1
[root@localhost ~]# xfs_info /dev/sda1 meta-data=/dev/sda1 isize=512 agcount=4, agsize=12800 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=51200, imaxpct=25= sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=855, version=2= sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0isize表示為inode大小;agcount為存儲區群組(allocation group)的個數
sectsz指邏輯扇區(sector)的容量大小
bsize指block容量大小
sunit與swidth與stripe相關
internal指登錄區(log p)在文件系統內部,而不在外部
bsize指占用區塊大小,blocks為數量
dumpe2fs /dev/sda1 | grep -i “inode size”
// An highlighted block var foo = 'bar';二.硬鏈接與軟鏈接
為文件或者目錄建立鏈接文件
鏈接文件有兩種,一種類似于Windows系統的快捷方式,可以快速連接到目標文件或目錄,另一種則是通過文件系統的inode鏈接來產生的新文件名,而不產生新文件,這種就是硬鏈接
硬鏈接
文件名和inode號碼是對應關系,每個inode號碼對應一個文件名,
用ln 源文件 目標文件 來創建硬鏈接
總結:
硬鏈接不能對目錄創建,也不能跨文件系統創建。
創建硬鏈接的inode號是一樣的。
硬鏈接,相當于是源文件的備份,硬鏈接的內容隨著源文件的內容而改變備份,但是刪除源文件不影響硬鏈接的文件,硬鏈接的文件內容還在。
軟鏈接
軟鏈接就是在創建一個新文件,inode不再相同,而這個文件會讓數據的讀取指向它鏈接的那個文件的文件名,并且軟鏈接文件依賴源文件存在,如果刪除源文件的話軟鏈接就會失效
用ln -s 源文件 目標文件 來創建軟鏈接
總結
軟鏈接相當于是快捷方式
查看軟鏈接的inode 號和源文件是不同的。
軟連接可以跨文件系統
創建軟鏈接會發現軟鏈接文件會閃爍
刪除源文件,會發現軟鏈接文件還在,但是無法訪問查看
三.恢復誤刪除的文件
xfsdump備份
xfsrestore還原
恢復的前提要做備份
1.xfsdump備份選項說明
xfsdump -f 備份文件位置 備份的路徑或者設備文件
-L 卷標
-M 媒體標準
-l 級別
-I 備份后查看狀態具體信息
2.備份的級別
0 完全備份 默認為0,第一次備份都是需要完全備份
1-9 增量備份 只備份增加的
差異備份 只備份不一樣的
3.xfsdump備份,刪除,還原操作演示
①格式化硬盤,掛載,創建新文件
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 30G 0 disk ├─sdb1 8:17 0 2G 0 part └─sdb2 8:18 0 5G 0 part sr0 11:0 1 1024M 0 rom [root@localhost ~]# mkdir /opt/bak[root@localhost ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=524288, imaxpct=25= sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0[root@localhost ~]# mount /dev/sdb1 /opt/bak[root@localhost /]# df -Th 文件系統 類型 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root xfs 17G 4.2G 13G 25% / devtmpfs devtmpfs 894M 0 894M 0% /dev tmpfs tmpfs 910M 0 910M 0% /dev/shm tmpfs tmpfs 910M 11M 900M 2% /run tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 179M 836M 18% /boot tmpfs tmpfs 182M 8.0K 182M 1% /run/user/42 tmpfs tmpfs 182M 24K 182M 1% /run/user/0 /dev/sdb1 xfs 2.0G 33M 2.0G 2% /opt/bak[root@localhost ~]# cd /opt/bak [root@localhost bak]# ls[root@localhost bak]# touch 3 4 5 6 [root@localhost bak]# ls 3 4 5 6②備份文件到/bak
xfsdump -f /bak /dev/sdb1 -L sdb1 -M sdb1
[root@localhost bak]# xfsdump -f /bak /dev/sdb1 -L sdb1 -M sdb1 xfsdump: using file dump (drive_simple) strategy xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control xfsdump: level 0 dump of localhost.localdomain:/opt/bak xfsdump: dump date: Sun May 23 16:03:43 2021 xfsdump: session id: 467360d1-f29b-4086-8e9e-1fde7d1353c8 xfsdump: session label: "sdb1" xfsdump: ino map phase 1: constructing initial dump list xfsdump: ino map phase 2: skipping (no pruning necessary) xfsdump: ino map phase 3: skipping (only one dump stream) xfsdump: ino map construction complete xfsdump: estimated dump size: 22080 bytes xfsdump: /var/lib/xfsdump/inventory created xfsdump: creating dump session media file 0 (media 0, file 0) xfsdump: dumping ino map xfsdump: dumping directories xfsdump: dumping non-directory files xfsdump: ending media file xfsdump: media file size 23608 bytes xfsdump: dump size (non-dir files) : 0 bytes xfsdump: dump complete: 0 seconds elapsed xfsdump: Dump Summary: xfsdump: stream 0 /bak OK (success) xfsdump: Dump Status: SUCCESS③ 查看備份文件信息xfsdump -I
[root@localhost bak]# xfsdump -I file system 0:fs id: e40cb524-d1cd-4548-81ce-edeec5c807b3session 0:mount point: localhost.localdomain:/opt/bakdevice: localhost.localdomain:/dev/sdb1time: Sun May 23 16:03:43 2021session label: "sdb1"session id: 467360d1-f29b-4086-8e9e-1fde7d1353c8level: 0resumed: NOsubtree: NOstreams: 1stream 0:pathname: /bakstart: ino 67 offset 0end: ino 71 offset 0interrupted: NOmedia files: 1media file 0:mfile index: 0mfile type: datamfile size: 23608mfile start: ino 67 offset 0mfile end: ino 71 offset 0media label: "sdb1"media id: dfb3423d-200e-4f6d-9299-e5489e290e8b xfsdump: Dump Status: SUCCESS④ 刪除文件
[root@localhost bak]# rm -rf * [root@localhost bak]# ls⑤從備份/bak中還原文件到/opt/bak
[root@localhost bak]# cd / [root@localhost /]# ls bak boot etc lib media opt root sbin sys usr bin dev home lib64 mnt proc run srv tmp var [root@localhost /]# xfsrestore -f /bak /opt/bak/ xfsrestore: using file dump (drive_simple) strategy xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control xfsrestore: searching media for dump xfsrestore: examining media file 0 xfsrestore: dump description: xfsrestore: hostname: localhost.localdomain xfsrestore: mount point: /opt/bak xfsrestore: volume: /dev/sdb1 xfsrestore: session time: Sun May 23 16:03:43 2021 xfsrestore: level: 0 xfsrestore: session label: "sdb1" xfsrestore: media label: "sdb1" xfsrestore: file system id: e40cb524-d1cd-4548-81ce-edeec5c807b3 xfsrestore: session id: 467360d1-f29b-4086-8e9e-1fde7d1353c8 xfsrestore: media id: dfb3423d-200e-4f6d-9299-e5489e290e8b xfsrestore: using online session inventory xfsrestore: searching media for directory dump xfsrestore: reading directories xfsrestore: 1 directories and 4 entries processed xfsrestore: directory post-processing xfsrestore: restoring non-directory files xfsrestore: restore complete: 0 seconds elapsed xfsrestore: Restore Summary: xfsrestore: stream 0 /bak OK (success) xfsrestore: Restore Status: SUCCESS⑥查看文件是否還原
[root@localhost /]# ls /opt/bak/ 3 4 5 6 [root@localhost /]#4.xfsdump使用限制
只能備份以掛載的文件系統
必須使用root權限才能操作
只能備份xfs文件系統
備份后的數據只能讓xfsrestore解析
不能備份兩個具有相同UUID的文件系統
四.分析文件日志
1.日志的功能:
用于記錄系統、程序運行中發生的各種事件
通過閱讀日志,有助于診斷和解決系統故障
2.日志保存位置:
默認位于: war/log目錄下
可以看出大部分存放到公共日志文件/var/log/message中,其他的日志文件直接發送給用戶或者放到自己獨立的日志文件中
3.日志文件的分類:
(1)內核及系統日志
由系統服務rsyslog統-進行管理,日志格式基本相似
由系統服務rsyslog統一管理
軟件包: rsyslog-7.4.7-16.el7.x86_ 64
●主要程序: /sbin/rsyslogd
配置文件: /etc/rsyslog.conf
日志消息的級別:
1.等級由低到高:debug<info<warn<Error<Fatal;
2.區別:
debug 級別最低,可以隨意的使用于任何覺得有利于在調試時更詳細的了解系統運行狀態的東東;
info 重要,輸出信息:用來反饋系統的當前狀態給最終用戶的;
后三個,警告、錯誤、嚴重錯誤,這三者應該都在系統運行時檢測到了一個不正常的狀態。
warn, 可修復,系統可繼續運行下去;
Error, 可修復性,但無法確定系統會正常的工作下去;
Fatal, 相當嚴重,可以肯定這種錯誤已經無法修復,并且如果系統繼續運行下去的話后果嚴重。
級別 對應內核日志級別 說明
0 KERN_EMERG 緊急消息。系統崩潰之前提示,表示系統已不可用。
1 KERN_ALERT 報告消息。表示必須立即采取措施。
2 KERN_CRIT 臨界消息。通常涉及嚴重的硬件或軟件操作失敗。
3 KERN_ERR 錯誤消息。串口日志的默認級別。驅動程序常用 KERN_ERR 來報告硬件的錯誤。
4 KERN_WARNING 警告消息。對可能出現問題的情況進行警告。
5 KERN_NOTICE 正常但又重要的消息。用于提醒,常用于與安全相關的消息。
6 KERN_INFO 提示消息。如驅動程序啟動時,打印硬件消息。
7 KERN_DEBUG 調試消息。設置此級別會打印所有日志消息。
日志記錄的一般格式:
[root@localhost /]# cd /var/log [root@localhost log]# tail -f messages May 23 22:09:47 localhost dbus[6391]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprintd.service' May 23 22:09:47 localhost systemd: Starting Fingerprint Authentication Daemon... May 23 22:09:47 localhost dbus[6391]: [system] Successfully activated service 'net.reactivated.Fprint' May 23 22:09:47 localhost systemd: Started Fingerprint Authentication Daemon. May 23 22:09:51 localhost gnome-keyring-daemon[8916]: couldn't initialize slot with master password: The password or PIN is incorrect May 23 22:09:51 localhost dbus[6391]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' May 23 22:09:51 localhost systemd: Starting Hostname Service... May 23 22:09:51 localhost dbus[6391]: [system] Successfully activated service 'org.freedesktop.hostname1' May 23 22:09:51 localhost systemd: Started Hostname Service. May 23 22:10:01 localhost systemd: Started Session 44 of user root. May 23 22:10:47 localhost journal: g_simple_action_set_enabled: assertion 'G_IS_SIMPLE_ACTION (simple)' failed May 23 22:10:47 localhost journal: g_simple_action_set_enabled: assertion 'G_IS_SIMPLE_ACTION (simple)' failed時間標簽
主機名
子系統名
消息字段
(2)用戶日志
記錄系統用戶登錄及退出系統的相關信息
分析工具:users、 who、 W、last、 lastb
保存了用戶登錄、退出系統等相關信息
●/varl/log/lastlog:最近的用戶登錄事件
●/var/log/wtmp:用戶登錄、注銷及系統開、關機事件
●/var/run/utmp:當前登錄的每個用戶的詳細信息
●/var/log/secure:與用戶驗證相關的安全性事件
一般本人查日志配合應用的其他命令
history // 所有的歷史記錄
history | grep XXX // 歷史記錄中包含某些指令的記錄
history | more // 分頁查看記錄
history -c // 清空所有的歷史記錄
!! 重復執行上一個命令
查詢出來記錄后選中 : !323
linux日志文件說明
/var/log/message 系統啟動后的信息和錯誤日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 與安全相關的日志信息
/var/log/maillog 與郵件相關的日志信息
/var/log/cron 與定時任務相關的日志信息
/var/log/spooler 與UUCP和news設備相關的日志信息
/var/log/boot.log 守護進程啟動和停止相關的日志消息
/var/log/wtmp 該日志文件永久記錄每個用戶登錄、注銷及系統的啟動、停機的事件
(3)程序日志
由各種應用程序獨立管理的日志文件,記錄格式不統一
由相應的應用程序獨立進行管理
●Web服務: Ivar/log/httpd/
◆access_ log、error_ log
代理服務: /var/log/squid/
◆access.log、cache.log.
●FTP服務: /var/log/xferlog
分析工具
●文本查看、grep過濾檢索、Webmin管理套件中查看
●awk、sed等文本過濾、格式化編輯工具
●Webalizer、Awstats等專用日志分析工具
看日志文件
centos 7 才有的 管理服務進程的
journalctl
-k 看內核
-b 看系統啟動
-u 看某個服務
-e 從尾部開始看 看最新的
-xe 提供知識的,有網頁可以參考
4.日志注意事項
1.定期備份,刪除
2.定期切割
3.對日志文件設置權限
4.定期檢查
總結
以上是生活随笔為你收集整理的linux文件系统和日志分析!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 启锐 打印机相关配件报价 售后
- 下一篇: Proxy代理isExtensible方