1. 程式人生 > 其它 >Docker初級實戰

Docker初級實戰

目錄

一、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.日誌管理策略

及時做好備份和歸檔

延長日誌儲存期限

控制日誌訪問許可權

  • 日誌中可能會包含各類敏感資訊,如賬戶和口令等

集中管理日誌

  • 將伺服器的日誌檔案發到統一-的日誌檔案伺服器
  • 便於日誌資訊的統- -收集、 整理和分析
  • 杜絕日誌資訊的意外丟失、惡意篡改或刪除