Docker初級實戰
- 一、Linux檔案系統
-
二、恢復誤刪除的檔案(EXT型別)
- 三、日誌檔案
一、Linux檔案系統
1、 inode 與 block
-
檔案資料包括元資訊與實際資訊;
-
檔案儲存在硬碟上,硬碟最小儲存單位是“扇區”,每個扇區儲存512位元組。
-
一個檔案必須佔用一個inode, 並且至少佔用一個block
1.1 block:(塊)的概念
- 連續的八個扇區組成一個block(4k);
- 是檔案存取的最小單位
- 作業系統讀取硬碟的時候,是一次性連續讀取多個扇區,即一個塊一個塊的讀取
1.2 inode:(索引節點)的概念
- 儲存檔案元資訊( 比如檔案的建立者、建立日期、檔案大小、檔案許可權等)的區域就叫做inode
- 中文譯名為“索引節點”,也叫i節點;
- 用於儲存檔案元資訊
- inode不包含檔名。檔名是存放在目錄當中的
1.3 inode和block的關係
- Linux 系統中一切皆檔案,因此目錄也是一種檔案
- 每個inode都有一個號碼,作業系統用inode號碼來識別不同的檔案。Linux 系統內部不使用檔名,而使用inode號碼來識別檔案。對於系統來說,檔名只是inode號碼便於識別的別稱,檔名和inode號碼是一 一對應關係, 每個inode號碼對應一個檔名
- 當用戶在Linux系統中試圖訪問一個檔案時,系統會先根據檔名去查詢它對應的inode號碼;通過inode號碼, 獲取inode資訊;根據inode資訊,看該使用者是否具有訪問這個檔案的許可權; 如果有,就指向相對應的資料block,並讀取資料
1.4 檢視檔名對應的inode號碼的方式
檢視檔名對應的inode號碼: ls -i 檔名
檢視檔案資訊中的inode號碼: stat 檔名
1.4.1 例項操作
1.5 inode包含檔案的元資訊(見上圖中stat 123.txt展示的資訊)
- 檔案的位元組數
- 檔案擁有者的User ID
- 檔案的Group ID
- 檔案的讀、寫、執行許可權
- 檔案的時間戳等
1.6 Linux系統檔案三個主要的時間屬性
- ctime(change time):最後一次改變檔案或目錄(屬性)的時間
- atime(access time):最後一次訪問檔案或目錄的時間
- mtime(modify time):最後一次修改檔案或目錄(內容)的時間
1.7.使用者通過檔名開啟檔案時,系統內部的過程
- 系統找到這個檔名對應的inode號碼
- 通過inode號碼, 獲取inode資訊
- 根據inode資訊,找到檔案資料所在的block,讀出資料
1.8 硬碟分割槽後的結構
1.9 訪問檔案的簡單流程
1.10.inode的大小
- inode也會消耗硬碟空間:每個inode的大小一般是128位元組或者256位元組;
- 格式化檔案系統時確定inode的總數;
- 使用
df -i
命令可以檢視每個硬碟分割槽的inode總數和已經使用的數量
1.11 inode特點
由於inode 號碼與檔名分離,導致Linux系統具備以下幾種特有的現象:
- 檔名包含特殊字元,可能無法正常刪除。這時直接刪除inode,能夠起到刪除檔案的作用;
- 移動檔案或重新命名檔案,只是改變檔名,不影響inode 號,但是複製的話,會生成一個新的inode號
- 開啟一個檔案以後,系統就以inode號碼來識別這個檔案,不再考慮檔名。
- 檔案資料被修改儲存後,會生成一個新的inode 號碼
1.11.1 刪除inode號的方法:
find ./ -inum 68201002 -exec rm -i {} \;
find ./ inum 68201002 -delete
find . /-inum 68201002 | xargs rm -rf
find命令詳解
find pathname -option [-print ] [ -exec | -ok command ] {} ;
find命令的引數;
pathname: find命令所查詢的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
-print: find命令將匹配的檔案輸出到標準輸出。
-exec: find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為command { } ;,注意{ }和\;之間的空格。
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該引數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓使用者來確定是否執行。
xargs 命令
用途:
構造引數列表並執行命令,即將接收的引數傳遞給後面的command 命令執行
將多行輸入轉換為單行 (特殊功效)
優點:
將輸入引數整理後,去除
避免參數過長引發的問題,使用xargs -n 引數適當控制,對於經常產生大量輸出的命令如find、locate和grep來說非常有用
xargs 一般是和管道一起使用:
XXcomand | xargs -x comand initial-args
echo "/etc/inittab" | cat # 直接將標準輸入的內容傳遞給cat
echo "/etc/inittab" | xargs cat # 將標準輸入的內容經過xargs處理後傳遞給cat
find /etc -maxdepth 1 -name "*.conf" -print0 | xargs -0 -i grep "hostname" -l {} # 將搜尋的檔案傳遞給grep的引數位進行搜尋,若不使用xargs,則grep將報錯
1.11.2 例項操作
1.11.2.1 移動、複製或者重新命名檔案,看inode號是否有變化(只有複製檔案時inode號會發生改變)
1.11.2.2 修改檔案,看inode號是否會改變(修改之後inode號會改變)
2、硬連結和軟連結
- 為檔案或目錄建立連結檔案
2.1 連結檔案的分類和對比
操作和範圍 | 軟連結 | 硬連結 |
---|---|---|
刪除原始檔案後 | 失效 | 仍然可用 |
使用範圍 | 適用於檔案或目錄 | 只可用於檔案 |
儲存位置 | 與原始檔案可以位於不同的檔案系統中 | 必須與原始檔案在同一個檔案系統(如一個Linux分割槽)內 |
2.2 軟硬連結的格式
硬連結
ln 原始檔 目標位置
軟連結
ln [-s] 原始檔或者目錄... 連結檔案或者目標位置
3.inode節點耗盡故障處理
inode也會消耗硬碟空間,當inode的空間消耗完以後,即使硬碟還有空間,也無法使用
3.1 操作步驟格式
#使用fdisk建立分割槽/dev/sdb1,分割槽大小10M即可
fdisk /dev/ sdb .
mkfs.ext4 /dev/ sdb1 #也可以用xfs型別,但是在做實驗室建立inode號的時候要比inode總數多建立100多個,可能是統計問題,這裡建議用ext4或者ext3方便實驗
mkdir /data
mount /dev/sdb1 /data
df -i
#模擬inode節點耗盡故障
for ( (i=1; i<=2549; i++) )
>do
>touch /test/ file$i
>done<br><br>或者直接touch {1. . 2549} . txt
df -i
df -hT
#刪除檔案恢復
rm -rf /data/ *
df -i
df -hT
3.2 例項操作
3.2.1 新增磁碟並分割槽
3.2.2 格式化並掛載
3.2.3 利用for迴圈,建立檔案,將inode空間佔滿(模擬inode節點耗盡故障)
3.2.4 刪除檔案恢復
二、恢復誤刪除的檔案(EXT型別)
extundelete是一個 開源的Linux資料恢復工具, 支援ext3、 ext4檔案系統。 (ext4只能在centos6版 本恢復)
1、編譯安裝extundelete軟體包
✔ 安裝依賴包
◆e2fsprogs-libs-1. 41.12-18.el6.x86_ 64.rpm
◆e2fsprogs-devel-1 .41.12-18.el6.x86_ _64.rpm
✔ 配置、編譯及安裝
◆extundelete-0.2.4.tar.bz2
#使用fdisk建立分割槽/dev/sdc1,格式化ext3檔案系統
fdisk /dev/sdb
partprobe /dev/sdb
mkfs.ext3 /dev/ sdb1
mkdir /data
mount /dev/sdb1 /data
df -hT
#安裝依賴包
yum -y install e2fsprogs-devel e2 fsprogs-libs
#編譯安裝extundelete
cd /opt
wget http: //nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4/
./configure --prefix=/usr/ local/jz/ && make && make install
ln -s /usr/ local/jz/bin/* /usr/bin/
2、模擬刪除並執行恢復操作
cd /data
echo 111 > 123.txt
echo 222 > 234.txt
echo 333 > 456.txt
ls
extundelete /dev/sdb1 --inode 2
#檢視檔案系統/dev/sdc1下存在哪些檔案,i節點是從2開始的,2代表該檔案系統最開始的目錄
rm-rf 123.txt 234.txt 456.txt
extundelete /dev/sdd1 -- inode 2
cd ~
umount /data/
extundelete /dev/sdb1 --restore-all
#恢復/dev/sdc1檔案系統下的所有內容
#在當前目錄下會出現一-個RECOVERED_ FILES/目錄,裡面儲存了已經恢復的檔案
ls RECOVERED_FILES/</code>
3.例項操作
3.1 新增一塊20G的硬碟,並進行分割槽
3.2 對分割槽進行格式化並進行掛載
3.3 安裝兩個依賴包
3.4 extundelete的安裝包的傳輸以及解壓
3.5 編譯安裝
3.6 在掛載目錄下建立檔案以及內容,並檢視
3.7 刪除新建檔案,並進行檢視是否已刪除(模擬故障)
3.8 解除掛載並恢復檔案
三、日誌檔案
1、 日誌的功能
• 用於記錄系統、程式執行中發生的各種事件
• 通過閱讀日誌,有助於診斷和解決系統故障
2、 日誌檔案的分類
2.1 核心及系統日誌
◆由系統服務rsyslog統一進行管理 ,日誌格式基本相似
◆主配置檔案/etc/rsyslog.conf
2.2 使用者日誌.
◆記錄系統使用者登入及退出系統的相關資訊
2.3 程式日誌
◆由各種應用程式獨立管理的日誌檔案,記錄格式不統一
(由開發人員定義)
3、 日誌儲存位置
預設位於: /var/log目錄下
4、 主要日誌檔案介紹
4.1 核心及公共訊息日誌
✔ /var/log/messages
記錄Linux核心訊息及各種應用程式的公共日誌資訊,包括啟動、Io錯誤、網路錯誤、程式故障等
對於未使用獨立日誌檔案的應用程式或服務,一般都可以從該日誌檔案中獲得相關的事件記錄資訊
4.2 計劃任務日誌
✔ /var/log/cron
記錄crond計劃任務產生的事件資訊
4.3 系統引導日誌
✔ /var/log/dmesg
記錄Linux系統在引導過程中的各種事件資訊
4.4 郵件系統日誌
✔ /var/log/maillog
記錄進入或發出系統的電子郵件活動
4.5 使用者登入日誌
✔ /var /log/lastlog
記錄每個使用者最近的登入事件,二進位制格式
✔ /var/log/secure
記錄使用者認證相關的安全事件資訊
✔ /var/log/wtmp
記錄每個使用者登入、登出及系統啟動和停機事件,二進位制格式
✔ /var/run/btmp
記錄失敗的、錯誤的登入嘗試及驗證事件,二進位制格式
5、日誌配置檔案和日誌訊息等級
5.1 日誌配置檔案
vim /etc/rsyslog.conf #檢視rsyslog.conf配置檔案
* . info;mail.none;authpriv.none;cron.none /var/log/messages
*.info #表示info等級及以上的所有等級的資訊都寫到對應的日誌檔案裡
mail.none #表示某事件的資訊不寫到日誌檔案裡(這裡比如是郵件)
5.2 Linux系統核心日誌訊息的優先級別(數字等級越小,優先順序越高,訊息越重要):
級別 | 訊息 | 級別 | 具體描述 |
---|---|---|---|
0 | EMERG | 緊急 | 會導致主機系統不可用的情況 |
1 | ALERT | 警告 | 必須馬上採取措施解決的問題 |
2 | CRIT | 嚴重 | 比較嚴重的情況 |
3 | ERR | 錯誤 | 執行出現錯誤 |
4 | WARNING | 提醒 | 可能影響系統功能,需要提醒使用者的重要事件 |
5 | NOTICE | 注意 | 不會影響正常功能,但是需要注意的事件 |
6 | INFO | 資訊 | 一般資訊 |
7 | DEBUG | 除錯 | 程式或系統除錯資訊等 |
6.分析工具
- users、who、 W、last、 lastb
- last命令用於查詢成功登入到系統的使用者記錄
- lastb命令用於查詢登入失敗的使用者記錄
7 程式日誌分析:由相應的應用程式獨立進行管理
Web服務:/var/log/httpd/
- access_log ——記錄客戶訪問事件
- error_log ——記錄錯誤事件
代理服務:/var/log/squid/
- access.log、cache.log
分析工具
- 文字檢視、grep過來檢索、Webmin管理套件中檢視
- awk、sed等文字過濾、格式化編輯工具
- Webalizer、Awstats等專用日誌分析工具
8.日誌管理策略
及時做好備份和歸檔
延長日誌儲存期限
控制日誌訪問許可權
- 日誌中可能會包含各類敏感資訊,如賬戶和口令等
集中管理日誌
- 將伺服器的日誌檔案發到統一-的日誌檔案伺服器
- 便於日誌資訊的統- -收集、 整理和分析
- 杜絕日誌資訊的意外丟失、惡意篡改或刪除