天天看點

linux檔案系統和日志引言一、inode和block詳解二、可能出現的inode故障三、硬連結和軟連結(符号連結)四、恢複删除的檔案五、分析日志檔案總結

目錄

引言

一、inode和block詳解

1、概述

2、inode的内容

 inode包含檔案的元資訊(不包含檔案名)

系統檔案三個時間屬性

目錄檔案的結構,目錄也是一種檔案 

3、使用者通過檔案名打開檔案時,系統内部的過程

4、檢視inode号碼的方法

5、inode大小

6、inode的特殊作用

由于inode号碼與檔案名分離,導緻Linux系統具備以下幾種特有的現象

二、可能出現的inode故障

三、硬連結和軟連結(符号連結)

連結檔案分類

四、恢複删除的檔案

1、恢複誤删除的檔案ext3

2、恢複誤删除的檔案XFS

xfsdump的指令格式

xfsdump 的備份級别

xfsdump指令常用的選項

xfsrestore 指令格式

xfsdump使用限制

操作步驟

五、分析日志檔案

1、日志的功能

2、日志檔案的分類

3、日志儲存位置

4、常見的一些日志檔案

核心及公共消息日志

計劃任務日志

系統引導日志

郵件系統日志

使用者登入日志

5、核心及系統日志由系統服務rsyslog 統一管理

主配置檔案:/etc/rsyslog.conf

主要程式:/sbin/rsyslogd

6、Linux系統核心日志消息的優先級别(數字等級越小,優先級越高,消息越重要) 

7、公共日志/var/log/messages檔案的記錄格式

8、詳細日志分析指令

 9、日志管理政策

及時作好備份和歸檔

延長日志儲存期限

控制日志通路權限

集中管理日志

10、程式日志分析

由相應的應用程式獨立進行管理

分析工具

總結

引言

之前給大家分享了很多的linux系統管理的知識,相信持續關注我的人也知道,關于系統管理的知識基本上我都有給大家分享了,今天最後給大家分享關于系統檔案和日志的内容,分享完今天的内容,相信如果是新手小夥伴,已經成為初級的linux工程師了,廢話不多說下面開始我今天的分享

一、inode和block詳解

1、概述

檔案資料包括元資訊與實際資料

檔案存儲在硬碟上,硬碟最小存儲機關是"扇區”,每個扇區存儲512位元組

block(塊):連續的八個(4個)扇區組成一個block,是檔案存取的最小機關(資料)

inode(索引節點):中文譯名為“索引節點”,也叫i節點,用于存儲檔案元資訊

注:一個檔案必須占用一個inode,但是至少占用一個block

2、inode的内容

 inode包含檔案的元資訊(不包含檔案名)

檔案的位元組數——檔案擁有者的User ID——檔案的Group lD

檔案的讀、寫、執行權限——檔案的時間戳

系統檔案三個時間屬性

ctime:最後一次改變檔案或目錄(屬性)的時間

atime:最後一次通路檔案或目錄的時間

mtime:最後一次修改檔案或目錄(内容)的時間

目錄檔案的結構,目錄也是一種檔案 

linux檔案系統和日志引言一、inode和block詳解二、可能出現的inode故障三、硬連結和軟連結(符号連結)四、恢複删除的檔案五、分析日志檔案總結

每個inode都有一個号碼,作業系統用inode号碼來識别不同的檔案

Linux系統内部不使用檔案名,而使用inode号碼來識别檔案

對于使用者,檔案名隻是inode号碼便于識别的别稱

3、使用者通過檔案名打開檔案時,系統内部的過程

系統找到這個檔案名對應的inode号碼

通過inode号碼,擷取inode資訊

根據inode資訊,找到檔案資料所在的block,讀出資料

linux檔案系統和日志引言一、inode和block詳解二、可能出現的inode故障三、硬連結和軟連結(符号連結)四、恢複删除的檔案五、分析日志檔案總結

4、檢視inode号碼的方法

ls -i  指令: 檢視檔案名對應的inode号碼

stat   指令: 檢視檔案inode資訊中的inode号碼

5、inode大小

inode也會消耗硬碟空間,是以格式化的時候,作業系統自動将硬碟分成兩個區域。一個是資料區,存放檔案資料:另一個是inode區,存放inode所包含的資訊。每個inode的大小,一般是128位元組或256位元組

通常情況下不需要關注單個inode的大小,而是需要重點關注inode.總數

inode的總數在格式化時就給定了,執行"df-i"指令即可檢視每個硬碟分區對應的的inode總數和已經使用的inode數量

6、inode的特殊作用

由于inode号碼與檔案名分離,導緻Linux系統具備以下幾種特有的現象

檔案名包含特殊字元,可能無法正常删除。這時直接删除inode,能夠起到删除檔案的作用

移動檔案或重命名檔案,隻是改變檔案名,不影響inode 号碼

打開一個檔案以後,系統就以inode 号碼來識别這個檔案,不再考慮檔案名

檔案資料被修改儲存後,會生成一個新的inode号碼

find ./ -inum 52305140 -exec rm -i {} \;

find ./ -inum 50464299 -delete

[[email protected] home]# ls
??fd.txt  l  l0  l8  l80  l800  l9  l90  li  li1  liu3  ly  ly1  ly2  ly3
[[email protected] home]# rm -rf ??fd.txt
[[email protected] home]# ls
??fd.txt  l  l0  l8  l80  l800  l9  l90  li  li1  liu3  ly  ly1  ly2  ly3
[[email protected] home]# ls -i
101029976 ??fd.txt   67144280 l80    67332567 li     67332553 ly1
 67332581 l          67144265 l800   67332571 li1    67332557 ly2
 67142740 l0         67142744 l9     67332575 liu3   67332561 ly3
 67332589 l8         67142753 l90   101990779 ly
[[email protected] home]# rm -rf 101029976
[[email protected] home]# ls -i
101029976 ??fd.txt   67144280 l80    67332567 li     67332553 ly1
 67332581 l          67144265 l800   67332571 li1    67332557 ly2
 67142740 l0         67142744 l9     67332575 liu3   67332561 ly3
 67332589 l8         67142753 l90   101990779 ly
[[email protected] home]# find /home/ -inum 101029976 -exec rm -i {} \;
rm:是否删除普通空檔案 "/home/\243\244fd.txt"?y
[[email protected] home]# ls
l  l0  l8  l80  l800  l9  l90  li  li1  liu3  ly  ly1  ly2  ly3
           

二、可能出現的inode故障

[[email protected] ~]# fdisk /dev/sdb                   #fdisk分區
[[email protected] ~]# mkfs.ext3 /dev/sdb1
[[email protected] ~]# mkdir /1
[[email protected] ~]# mount /dev/sdb1 /1
[[email protected] ~]# df -i                                #/1下可以有22518個inode
檔案系統          Inode 已用(I)  可用(I) 已用(I)% 挂載點
/dev/sda3      17300992  147260 17153732       1% /
devtmpfs         229708     422   229286       1% /dev
tmpfs            233381       1   233380       1% /dev/shm
tmpfs            233381     607   232774       1% /run
tmpfs            233381      16   233365       1% /sys/fs/cgroup
/dev/sda1       1048576     329  1048247       1% /boot
tmpfs            233381      17   233364       1% /run/user/0
/dev/sr0              0       0        0        - /run/media/root/CentOS 7 x86
_64/dev/sdb1         22528      10    22518       1% /1

[[email protected] ~]# for ((i=1;i<=22518;i=i+1));         #建立22518個檔案
> do touch /1/file${i}
> done

[[email protected] ~]# df -i                                  #inode耗盡
檔案系統          Inode 已用(I)  可用(I) 已用(I)% 挂載點
/dev/sda3      17300992  147260 17153732       1% /
devtmpfs         229708     422   229286       1% /dev
tmpfs            233381       1   233380       1% /dev/shm
tmpfs            233381     607   232774       1% /run
tmpfs            233381      16   233365       1% /sys/fs/cgroup
/dev/sda1       1048576     329  1048247       1% /boot
tmpfs            233381      17   233364       1% /run/user/0
/dev/sr0              0       0        0        - /run/media/root/CentOS 7 x86
_64/dev/sdb1         22528   22528        0     100% /1
[[email protected] ~]# df -h                                  #容量還有75M
檔案系統        容量  已用  可用 已用% 挂載點
/dev/sda3        33G  4.7G   29G   15% /
devtmpfs        898M     0  898M    0% /dev
tmpfs           912M     0  912M    0% /dev/shm
tmpfs           912M  9.1M  903M    1% /run
tmpfs           912M     0  912M    0% /sys/fs/cgroup
/dev/sda1       2.0G  174M  1.9G    9% /boot
tmpfs           183M   24K  183M    1% /run/user/0
/dev/sr0        4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb1        82M  2.2M   75M    3% /1
[[email protected] ~]# touch /1/1.txt                        #無法建立檔案
touch: 無法建立"1.txt": 裝置上沒有空間
           

三、硬連結和軟連結(符号連結)

連結檔案分類

軟連結又稱符号連結——删除原始檔案後連結失效,适用于檔案或目錄,儲存位置與原始檔案可以位于不同的檔案系統中

格式:ln -s 源檔案或目錄   目标位置

硬連結——删除原始檔案後連結可以使用,隻可用于檔案,儲存位置必須與原始檔案在同一個檔案系統

格式:ln  源檔案  目标位置

四、恢複删除的檔案

1、恢複誤删除的檔案ext3

[[email protected] ~]# fdisk /dev/sdb
[[email protected] ~]# mkfs.ext3 /dev/sdc1    #使用fdisk建立分區/dev/sdc1, 格式化ext3檔案系統
[[email protected] ~]# mkdir /1
[[email protected] ~]# mount /dev/sdb1 /1

[[email protected] ~]# yum -y install e2fsprogs-devel e2fsprogs-libs gcc gcc-c++ #安裝依賴包

[[email protected] ~]# cd /1               #編譯安裝extundelete
[[email protected] 1]# wgethttp://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
[[email protected] 1]# tar jxvf extundelete-0.2.4.tar.bz2
[[email protected] 1]# cd extundelete-0.2.4/
[[email protected] extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install
[[email protected] extundelete-0.2.4]# ln -s /usr/local/extundelete/bin/*  /usr/bin/

[[email protected] extundelete-0.2.4]# cd /1                                                             
[[email protected] 1]# echo 1>a
[[email protected] 1]# echo 1>b
[[email protected] 1]# echo 1>c
[[email protected] 1]# echo 1>d

[[email protected] 1]# rm -rf a b                                 #模拟删除并執行恢複操作
[[email protected] 1]# extundelete /dev/sdc1 --inode 2  
#檢視檔案系統/dev/sdc1下存在哪些檔案,i節點是從2開始的,2代表該檔案系統最開始的目錄。
[[email protected] 1]# cd ~
[[email protected] ~]# umount /test
[[email protected] ~]# extundelete /dev/sdc1 --restore-all 
                                                      #恢複/dev/sdb1 檔案系統下的所有内容
[[email protected] ~]# ls RECOVERED_FILES/
c  d
#在目前目錄下會出現一個RECOVERED_FILES/目錄,裡面儲存了已經恢複的檔案
           

2、恢複誤删除的檔案XFS

xfsdump的指令格式

xfsdump -f  備份存放位置      要備份的路徑或裝置檔案

xfsdump 的備份級别

0表示完全備份,1-9表示增量備份

xfsdump指令常用的選項

-f: 指定備份檔案目錄

-L: 指定标簽session label

-M: 指定裝置标簽media labe........ 

-s:備份單個檔案,-s後面不能直接跟路徑

xfsrestore 指令格式

xfsrestore -f  恢複檔案位置   存放恢複後檔案位置

xfsdump使用限制

隻能備份已挂載的檔案系統

必須使用root的權限才能操作

隻能備份XFS檔案系統

備份後的資料隻能讓xfsrestore解析

不能備份兩個具有相同UUID的檔案系統(可用blkid指令檢視)

操作步驟

[[email protected] ~]# fdisk /dev/sdc
[[email protected] ~]# mkfs.xfs /dev/sdc1
[[email protected] ~]# mkdir /2
[[email protected] ~]# mount /dev/sdc1 /2
[[email protected] ~]# cd /2
[[email protected] 2]# cp /etc/passwd /2
[[email protected] 2]# ls
passwd
[[email protected] 2]# ls /opt
rh
[[email protected] 2]# rpm -qa | grep xfsdump               
xfsdump-3.1.4-1.el7.x86_64
[[email protected] 2]# yum install -y xfsdump
[[email protected] 2]# xfsdump -f /opt/dump_sdc1 /dev/sdc1      #使用xfsdump指令備份整個分區
                    please enter label for this dump session (timeout in 300 sec)
                    -> dump_sdc1
                    please enter label for media in drive 0 (timeout in 300 sec)
                    -> sdc1
[[email protected] 2]# rm -rf /2/*            #模拟資料丢失并使用xfsrestore 指令恢複檔案
[[email protected]alhost 2]# ls
[[email protected] 2]# xfsrestore -f /opt/dump_sdc1 /2
[[email protected] 2]# ls
passwd
           

五、分析日志檔案

1、日志的功能

用于記錄系統、程式運作中發生的各種事件

通過閱讀日志,有助于診斷和解決系統故障

2、日志檔案的分類

核心及系統日志——由系統服務rsyslog統一進行管理,日志格式基本相似

使用者日志——記錄系統使用者登入及退出系統的相關資訊

程式日志——由各種應用程式獨立管理的日志檔案,記錄格式不統一

3、日志儲存位置

預設位于: /var/log目錄下

4、常見的一些日志檔案

核心及公共消息日志

/var/log/messages: 記錄Linux核心消息及各種應用程式的公共日志資訊,包括啟動、IO錯誤、網絡錯誤、程式故障等

對于未使用獨立日志檔案的應用程式或服務,一般都可以從該日志檔案中獲得相關的事件記錄資訊。

計劃任務日志

/var/log/cron: 記錄crond計劃任務産生的事件資訊

系統引導日志

/var/log/dmesg: 記錄Linux系統在引導過程中的各種事件資訊

郵件系統日志

/var/log/maillog: 記錄進入或發出系統的電子郵件活動

使用者登入日志

/var/log/secure: 記錄使用者認證相關的安全事件資訊

/var/log/lastlog: 記錄每個使用者最近的登入事件,二進制格式

/var/1og/wtmp: 記錄每個使用者登入、登出及系統啟動和停機事件,二進制格式

/var/run/btmp: 記錄失敗的、錯誤的登入嘗試及驗證事件,二進制格式

也并不是所有安裝的程式的日志都會在/var/log下,隻有rpm包安裝的才會,源碼裝的在自己指定的目錄中

例如httpd,源碼安裝的日志目錄在/usr/local/httpd/logs/

5、核心及系統日志由系統服務rsyslog 統一管理

主配置檔案:/etc/rsyslog.conf

*.info;mail.none;authpriv.none;cron.none                  /var/1og/messages

*.info    #表示info等級及以,上的所有等級的資訊都寫到對應的日志檔案裡
mail.none #表示某事件的資訊不寫到日志檔案裡( 這裡比如是郵件)
           

主要程式:/sbin/rsyslogd

6、Linux系統核心日志消息的優先級别(數字等級越小,優先級越高,消息越重要) 

0  EMERG(緊急):會導緻主機系統不可用的情況

1  ALERT(警告):必須馬上采取措施解決的問題

2  CRIT(嚴重):比較嚴重的情況

3  ERR (錯誤) :運作出現錯誤

4  WARNING(提醒):可能影響系統功能,需要提醒使用者的重要事件

5  NOTICE (注意) :不會影響正常功能,但是需要注意的事件

6  INFO(資訊):一般資訊

7  DEBUG(調試):程式或系統調試資訊等

7、公共日志/var/log/messages檔案的記錄格式

時間标簽:消息發出的日期和時間

主機名:生成消息的計算機的名稱

子系統名稱:發出消息的應用程式的名稱

消息:消息的具體内容

linux檔案系統和日志引言一、inode和block詳解二、可能出現的inode故障三、硬連結和軟連結(符号連結)四、恢複删除的檔案五、分析日志檔案總結

程式自己維護日志記錄,httpd 網站服務程式使用兩個日志檔案

access_log :  #記錄客戶通路事件

error_log  #記錄錯誤事件

8、詳細日志分析指令

users:指令隻是簡單地輸出目前登入的使用者名稱,每個顯示的使用者名對應一個登入會話。如果一個使用者有不止一個登入會話,那他的使用者名将顯示與其相同的次數

who:指令用于報告目前登入到系統中的每個使用者的資訊。使用該指令,系統管理者可以檢視目前系統存在哪些不合法使用者,進而對其進行審計和處理。who 的預設輸出包括使用者名、終端類型、登入日期及遠端主機

w:指令用于顯示目前系統中的每個使用者及其所運作的程序資訊,比 users、who 指令的輸出内容要豐富一些

last:指令用于查詢成功登入到系統的使用者記錄,最近的登入情況将顯示在最前面。通過last 指令可以及時掌握 Linux 主機的登入情況,若發現未經授權的使用者登入過,則表示目前主機可能已被入侵

lastb:指令用于查詢登入失敗的使用者記錄,如登入的使用者名錯誤、密碼不正确等情況都将記錄在案。登入失敗的情況屬于安全事件,因為這表示可能有人在嘗試猜解你的密碼。除了使用 lastb 指令檢視以外,也可以直接從安全日志檔案/var/log/secure 中獲得相關資訊

 9、日志管理政策

及時作好備份和歸檔

延長日志儲存期限

控制日志通路權限

日志中可能會包含各類敏感資訊,如賬戶、密碼等

集中管理日志

将伺服器的日志檔案發到統一的日志檔案伺服器

便于日志資訊的統一收集、整理和分析

杜絕日志資訊的意外丢失、惡意篡改或删除

10、程式日志分析

由相應的應用程式獨立進行管理

Web服務:/arlog/httpd/      access_log、error_log

代理服務:lvar/log/squid/     access.log、cache.log

FTP服務:var/log/xferlog

分析工具

文本檢視、grep過濾檢索、Webmin管理套件中檢視

awk、sed等文本過濾、格式化編輯工具

Webalizer、Awstats等專用日志分析工具

總結

今天分享的内容其實不是特别多,簡單總結就是block和inode,還有軟硬連結,再到如何恢複我們誤删的檔案,最多的就是關于認識和管理日志檔案的,這也是我們日常工作中非常重要的一部分,最後共享新手小夥伴成功入門linux工程師

繼續閱讀