深入理解linux文件系統與日志分析

深入理解linux文件系統與日志分析

linux文件系統:

文件是存儲在硬盤上的,硬盤上的最小存儲單位是扇區,每個扇區的大小是512字節。

inode:元信息(文件的屬性 權限,創建者,創建日期等等)

block:塊,連續的八個扇區組成一個塊,一個塊的大小是4k,創建一個文件,最小也要占4k。

操作系統讀取硬盤,是一次性讀取多個扇區,一個塊一個塊的讀取數據。

創建文件:第一個是實際空間大小的要占,第二個就是元信息。元信息和實際數據都保存在硬盤上。元信息(inode)占128字節或者256字節。

一個文件必須占用一個inode(只要創建文件必須有一個inode號)

至少占用一個block(空文件,也要一個塊。)

時間戳:

atime:只要讀取文件就會更新這個時間

mtime:修改文件數據,更改文件的屬性,都會更新這個時間

ctime:修改文件的權限也會更新這個時間。

inode的內容:

inode號:linux系統都是識別文件的inode號

元信息發生了變化,inode號也會隨之改變

inode號的總數?

磁盤大小 磁盤越大inode號越多,磁盤越小inode號越少。

inode號和文件名分離,二者只是映射關系,linux系統的特有現象:

1、文件名包含特殊字符,rm可能無法正常刪除,可以直接刪除inode號

2、移動文件,重命名,inode是不變的

3、一旦開始對文件操作,后續所有的認證和識別都是通過inode來的,不再考慮文件名

4、元信息發生變化,inode也會發生變化

實驗:

1、exit4

2、xfs 要有結論 20M 模擬把inode號耗盡,看看還能不能繼續寫入?能寫入的話,能寫入多少呢?

可以繼續寫入,第一次能多寫61個,第二次能行134個

如果inode號滿了,exit4和xfs之間有什么區別?

exit4不能繼續創建文件了,但xfs還可以繼續創建文件

xfs文件系統,如何能夠實現備份和恢復?

centos7默認使用的文件系統就是xfs。

xfsdump 備份

xfsrestore 恢復

xfsdump 命令的選項:

-f 指定需要備份的硬盤分區(硬件設備的掛載點也可以)

-L 指定標簽

-M 指定設備標簽

-s 備份單個文件,-s后面不能之間跟路徑

xfsdump使用限制:

1、只能備份xfs文件系統

2、只能備份已經掛載的文件系統

3、只有root權限才能進行操作

4、備份之后的數據要恢復,只能使用xfsrestore解析恢復

5、如果兩個設備的uuid相同,不能備份(這種情況幾乎不會有)

備份完之后,恢復文件,inode號是否會發生變化?

[root@localhost ~]# xfsdump -f /opt/backup /dev/sdb2 [-L backup -M sdb2]

-f 執行文件

/opt/backup 必須是個文件,必須是個不存在的文件。不能是目錄。如果已經存在,必須是個空文件。

/dev/sdb2 設備

[-L 文件標簽(備份文件的標簽)]

[-M 設備標簽(要備份的硬盤分區)]

備份的級別:全量備份和增量備份

0也是默認 也就是全量備份

1-9是增量備份,一般不用

xfsrestore -f /opt/backup /data1/

前一個是備份的問價

后一個是恢復到指定的目錄。

具體操作:

[root@localhost opt]# xfsdump -f /opt/backup /dev/sdb3 [-L backup -M sdb3]              #將data3目錄下的內容進行備份
[root@localhost opt]# cd /data3         #進入data3目錄下
[root@localhost data3]# ls              #查看現有的文件
123.txt  qwe.txt
[root@localhost data3]# ls -i           #查看現有文件的inode號
68 123.txt  69 qwe.txt
[root@localhost data3]# rm -rf *        #刪除現有文件
[root@localhost /]# xfsrestore -f /opt/backup /data3/       #將文件恢復
[root@localhost /]# cd /data3
[root@localhost data3]# ls              #被刪的文件恢復了
123.txt  qwe.txt
[root@localhost data3]# ls -i           #inode號改變了
74 123.txt  75 qwe.txt
?

EXT類型備份和恢復:

ext4只能在centos6

ext3格式:需要extundelete進行恢復

日志分析:

系統的日志類型以及日志如何分析

linux系統本身的日志和大部分的服務器程序的日志都在/var/log/

/var/log/massages 記錄了linux的內核消息,各種應用程序的公共日志消息。

應用程序公共日志:開、關、重啟、網絡錯誤、程序故障這些都屬于公共日志。

訪問日志和一些自由業務日志不包含其中。

/var/log/cron: 記錄的是定時任務的日志

/var/log/dmesg: 引導過程中的日志信息

/var/log/maillog: 記錄進入或者發出的系統電子郵件信息

/var/log/secure: 用戶認證的相關消息

linux的日志級別:

日志消息的級別:數字越小,優先級越高,消息越重要。

級號消息級別說明
0EMERG緊急會導致主機系統不可用,系統崩潰。磁盤滿了(EMERG)
1ALERT警告必須要馬上采取措施解決的問題,密碼到期,數據庫崩潰。
2CRIT嚴重比較嚴重的情況,磁盤讀寫出了故障,有些程序的功能無法啟動。
3ERR error錯誤運行出現錯誤,程序啟動失敗,端口被占用等等,見的最多的情況,出現了也是要盡快解決的。
4WARNING提醒可能會影響功能,需要提醒用戶的重要事件,但是不是報錯。磁盤使用率到了85%。
5NOTICE注意也是需要用戶注意的,無需處理。
6INFO信息一般信息,系統或者應用程序在工作中產生的正常消息
7DEBUG調試程序在開發階段,調試程序時的信息。
NONE沒有優先級,不記錄任何日志信息

日志級別怎么定義:

*.info *:表示所有,表示系統當中的設備,或者程序。

info:包含info以及info級別以上的日志。

auth 用戶認證產生的體制

authpriv: SSh,FTP登錄驗證的信息

news: 網絡傳輸產生的消息

syslog:系統的相關日志

kern:系統的內核日志

user:用戶進程日志

local-local7:自定義程序的日志

uucp:unix-to-unix copy 兩個linux系統之間的通信

mail.info /var/log/mail.log:記錄郵件的信息,包含info和info以上的,記錄到/var/log/mail.log

mail.=info /var/log/mail.log: 只記錄日志級別是info的

mail.!info /var/log/mail.log: 除了info的不記錄,其他的都記

May 31 13:46:02 test1 systemd: Starting The Apache HTTp Server...

May 31 13:46:02:表示當前日志發生的時間

test1:表示發生的主機名

systemd:哪個系統產生了這個日志

Starting The Apache HTTp Server...:日志的具體內容

第一個實驗:

ssh的日志單獨的列出來,作為一個獨立的日志文件。

1、關閉防火墻和安全機制

[root@test2 opt]# systemctl stop firewalld
[root@test2 opt]# setenforce 0

2、打開系統管理日志

[root@test2 opt]# vim /etc/rsyslog.conf 
73 local7.* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  /var/log/boot.log
74 local6.* ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  /var/log/ssh.log     #在74行加一個自定義的日志

3、配置sshd_config文件

[root@test2 etc]# vim /etc/ssh/sshd_config          #進入sshd_config文件內32 #SyslogFacility AUTHPRIV                            #將32行注釋掉33 SyslogFacility LOCAL6                               #將ssh日志保存到我們之前自定義的日志中去

4、將兩個服務重啟一下

[root@test2 etc]# systemctl restart rsyslog.service 
[root@test2 etc]# systemctl restart sshd

5、打開ssh.log的日志

[root@test2 log]# tail -f ssh.log 
May 31 16:11:03 localhost sshd[15025]: Server listening on 0.0.0.0 port 22.
May 31 16:11:03 localhost sshd[15025]: Server listening on :: port 22.
May 31 16:11:47 localhost sshd[15037]: Accepted password for root from 192.168.60.1 port 49991 ssh2

6、用另一個主機test3訪問主機test2

[root@test3 ~]# ssh root@192.168.60.20
The authenticity of host '192.168.60.20 (192.168.60.20)' can't be established.
ECDSA key fingerprint is SHA256:exDKRdJYt8I/epk5vy8tx4NIWpdeTgKktVBWDTq1jmU.
ECDSA key fingerprint is MD5:ae:80:df:32:41:cb:64:3b:6c:ad:1d:92:e1:77:40:04.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.60.20' (ECDSA) to the list of known hosts.
root@192.168.60.20's password: 
Last login: Fri May 31 16:18:20 2024

7、主機test2顯示test3訪問test2的ssh日志

[root@test2 log]# tail -f ssh.log
May 31 16:11:03 localhost sshd[15025]: Server listening on 0.0.0.0 port 22.
May 31 16:11:03 localhost sshd[15025]: Server listening on :: port 22.
May 31 16:11:47 localhost sshd[15037]: Accepted password for root from 192.168.60.1 port 49991 ssh2
May 31 16:15:54 localhost sshd[15130]: Accepted password for root from 192.168.60.30 port 44106 ssh2

第二個實驗:

配置一個日志服務器,來進行日志收集。

test2 192.168.60.20 日志收集服務器

test3 192.168.60.30 20上面產生的日志,都會發到20上,30自己不再記錄日志

操作:

1、在主機test3里更改rsyslog.conf文件

[root@test3 ~]# vim /etc/rsyslog.conf 19 $ModLoad imtcp                  #將19行和20行的注釋去掉20 $InputTCPServerRun 51454 #*.info;mail.none;authpriv.none;cron.none ? ? ? ? ? ? ?  /var/log/messages          #將54行注釋55 *.info;mail.none;authpriv.none;cron.none ? ? ? ? ? ? ? @@192.168.60.20          #加一個55行,將test3的系統日志放到test2內的系統日志

2、在主機test2里更改rsyslog.conf文件

[root@test3 ~]# vim /etc/rsyslog.conf 19 $ModLoad imtcp                  #將19行和20行的注釋去掉20 $InputTCPServerRun 514

3、在test3里重啟一下rsyslog.service文件

[root@test3 ~]# systemctl restart rsyslog.service           #重啟rsyslog.service文件
[root@test3 ~]# netstat -antp | grep 514
tcp ? ? ?  0 ? ?  0 0.0.0.0:514 ? ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ? LISTEN ? ?  16771/rsyslogd ? ? ?
tcp6 ? ? ? 0 ? ?  0 :::514 ? ? ? ? ? ? ? ?  :::* ? ? ? ? ? ? ? ? ?  LISTEN ? ?  16771/rsyslogd ? ? ?

4、在test2里重啟一下rsyslog.service文件

[root@test2 log]# systemctl restart rsyslog.service             #重啟rsyslog.service文件

5、在test2里打開系統日志

[root@test2 log]# tail -f /var/log/messages
May 31 16:50:01 localhost systemd: Started Session 60 of user root.
May 31 17:00:01 localhost systemd: Started Session 61 of user root.
May 31 17:01:01 localhost systemd: Started Session 62 of user root.
May 31 17:10:01 localhost systemd: Started Session 63 of user root.
May 31 17:10:54 test2 systemd: Stopping System Logging Service...
May 31 17:10:54 test2 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="14958" x-info="http://www.rsyslog.com"] exiting on signal 15.
May 31 17:10:54 test2 systemd: Stopped System Logging Service.
May 31 17:10:54 test2 systemd: Starting System Logging Service...
May 31 17:10:54 test2 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="16198" x-info="http://www.rsyslog.com"] start
May 31 17:10:54 test2 systemd: Started System Logging Service.

6、在test3里模擬一下

[root@test3 ~]# logger "this is xy102"

7、在test2的系統日志里顯示

[root@test2 log]# tail -f /var/log/messages
May 31 17:14:07 test2 systemd-logind: Removed session 56.
May 31 17:15:02 test3 root: this is xy102

8、在test3的系統日志里不顯示

[root@test3 ~]# tail -f /var/log/messages
May 31 17:07:05 localhost systemd: [/usr/lib/systemd/system/firstboot-graphical.service:14] Support for option SysVStartPriority= has been removed and it is ignored

@@192.168.233.10

@@表示tcp協議進行數據傳輸

@表示使用UDP協議進行傳輸

LISTEN:監聽,端口是否開啟。端口是否正常傳輸數據

ESTABLISHED:表示端口之間已經建立連接而且正在傳輸數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19948.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19948.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19948.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【AVL Design Explorer DOE】

AVL Design Explorer DOE 1、關于DOE的個人理解2、DOE參考資料-知乎2.1 DOE發展及基本類型2.2 DOE應用場景2.3 Mintab 中的 DOE工具3、AVL Design Explorer DOE示例 1、關于DOE的個人理解 仿真和試驗一樣,就像盲人摸象,在不知道大象的全景之前&#xff…

Java 垃圾回收

一、概述 GC GC(Garbage Collection),在程序運行過程中內存空間是有限的,為了更好的的使用有限的內存空間,GC會將不再使用的對象清除然后將其所占用的內存釋放出來。 java的垃圾回收機制 Java的垃圾收集(Garbage Collection, …

嵌入式Linux復制剪切刪除指令詳解

指令操作 1. cp 復制指令 a. 用法:cp [ 選項 ] [ 源文件或目錄 ] [ 目標文件或目錄 ]; b. 用途:用于復制文件或目錄; c. 通常情況下,復制的都不是空文件夾,所以直接使用 cp 復制空文件會失敗&#xff0…

創建Django項目及應用

1 創建Project 1個Project可以對應多個app django-admin startproject myproject 2 創建App python manage.py startapp app01 INSTALLED_APPS [# ...app01,app02,# ... ] 如果要讓這個應用在項目中起作用,需要在項目的 settings.py 文件的 INSTALLED_APPS 配置…

java中成員內部類、局部內部類、匿名內部類各自的特點

成員內部類:定義在類的內部,方法的外部,成員內部類作為外部類的成員,可以直接訪問外部類的私有屬性。 局部內部類:定義在方法的內部,對于局部內部類我們常常使用一個方法,得到一個接口實現類的…

臭氧濃度傳感器在食品廠與制藥廠中的應用

在食品廠和制藥廠的生產過程中,消毒是一個至關重要的環節。有效的消毒可以確保產品免受微生物污染,從而保障消費者的健康。近年來,臭氧作為一種廣譜殺菌劑,因其強效的消毒能力和低污染性,在食品廠和制藥廠的消毒過程中…

SpringMVC:創建一個簡單的SpringMVC框架

目錄 一、框架介紹 兩個重要的xml文件 SpringMVC執行流程 二、Vscode搭建SpringMVC框架 1、maven創建webapp原型項目 2、pom.xml下添加springmvc的相關依賴 3、在web.xml配置 4、springmvc.xml的配置 5、編寫Controller控制器類 6、 編寫JSP界面 7、項目結構圖 一…

VS2017中使用qt翻譯家,除ui界面外其他用tr包裹的字符串在翻譯家中顯示為亂碼

1、ui界面中的中文,可以正常顯示 2、其他用tr包裹的字符串,顯示為亂碼 3、解決 改為utf8保存。 然后更新翻譯文件,重新打開發現已經ok了。 參考博客: https://blog.csdn.net/zhou714534957/article/details/124948822 https://blog.csdn.net/weixin_52689816/article/d…

【Linux】期末復習

《Linux程序設計》各章知識點梳理 第1章 軟件包的管理方式方面,Ubuntu、CentOS的差異 Ubantu使用APT,CentOS使用YUM 如何添加一個新用戶? Useradd new_user_name 什么是Shell? Shell 是一個用 C 語言編寫的程序,這個…

Milvus向量數據庫:高效處理海量非結構化數據的利器

一、引言 隨著數據量的爆炸式增長,如何高效地存儲、管理和查詢海量非結構化數據成為數據科學和人工智能領域的一個重大挑戰。傳統的關系型數據庫在處理這種類型的數據時顯得力不從心,而向量數據庫作為一種新型的數據庫解決方案,提供了極大的…

PAT-1004 成績排名(java實現)

這一關感覺還沒第三關難,思路很清晰 題目 1004 成績排名 讀入 n(>0)名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。 輸入格式: 每個測試輸入包含 1 個測試用例,格式為 第 1 行…

【算法】宵暗的妖怪

?題目鏈接: 宵暗的妖怪 ?題目描述 露米婭作為宵暗的妖怪,非常喜歡吞噬黑暗。這天,她來到了一條路上,準備吞噬這條路上的黑暗。這條道路一共被分為n 部分,每個部分上的黑暗數量為ai 。露米婭每次可以任取 連續的 未被…

賺錢其實沒有秘密,多琢磨一下不丟人

為什么學了很多知識還是掙不到錢? 掙不到錢,是因為你不夠稀缺;掙錢太少,是因為你不懂杠桿,用杠桿撬動稀缺,個人價值自然水漲船高。 學富五車,為何財庫依舊空空?怎樣才能提高掙錢的…

在全志H616核桃派開發板上配置SSH遠程終端方法詳解

熟悉指令用戶可以對已經聯網的核桃派進行局域網SSH遠程終端控制,方便使用自己的PC對核桃派遠程進行各種指令操作。 普通用戶(默認) 賬號:pi ; 密碼:pi管理員賬戶 賬號:root ; 密碼:root 在這之…

在Android Studio中使用谷歌Gemini代碼助手

今天在做android開發的時候,一個項目使用到了gradle8.0,但是我的Android Studuio根本不支持,無可奈何只能從小蜜蜂版本升級了水母 | 2023.3.1版本,但突然發現AS已經集成了Gemini助手。 首先我們需要下載這個版本的: h…

2.5Bump Mapping 凹凸映射

一、Bump Mapping 介紹 我們想要在屏幕上繪制物體的細節,從尺度上講,一個物體的細節分為:宏觀、中觀、微觀宏觀尺度中其特征會覆蓋多個像素,中觀尺度只覆蓋幾個像素,微觀尺度的特征就會小于一個像素宏觀尺度是由頂點或…

JDBC常見異常(10)—預編譯模式下占位符動態排序字段失效

場景需求 需要根據不同的列進行對應的排序操作,實現動態列名排序 類似🐟動態查詢或更新 但是JDBC預編譯模式下占位符的排序字段失效 SQL語句 分頁查詢 select * from (select t.*, rownum rn from(select * from emp order by empno desc) t where …

《java數據結構》--一篇解決二叉搜索樹!!

😸二叉搜索樹的概念 二叉搜索樹又名二叉排序樹,一般具有以下性質: 若它的左子樹不為空,則左子樹上所有節點的值都小于根節點的值若它的右子樹不為空,則右子樹上所有節點的值都大于根節點的值它的左右子樹也分別為二叉…

C語言高級編程及實例剖析.pdf

C語言高級編程及實例剖析.pdf C語言,作為一種經典且強大的編程語言,已經在多個領域得到廣泛應用。然而,要想真正掌握C語言的高級編程技巧,卻并非易事。本文將深入探討C語言的高級編程技巧,并結合實例進行詳細剖析&…

61. UE5 RPG 實現敵人近戰攻擊技能和轉向攻擊

在前面,我們實現了敵人的AI系統,敵人可以根據自身的職業進行匹配對應的攻擊方式。比如近戰戰士會靠近目標后進行攻擊然后躲避目標的攻擊接著進行攻擊。我們實現了敵人的AI行為,但是現在還沒有實現需要釋放的技能,接下來&#xff0…