歡迎您光臨本站 註冊首頁

Unix/Linux 系統自動化管理: 磁碟管理篇

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  
本文是 Unix/Linux 系統管理自動化系列中的一篇,主要講述如何實現自動化監控磁碟空間狀態並及時通知系統管理員採取相應措施。

在 Unix/Linux 系統的日常管理工作中,系統管理員可能會遇到因磁碟空間耗盡而導致丟失數據,或者系統崩潰等。這些嚴重的事故極大的影響了工作效率。因此,關注系統的磁碟使用情況,建立一個警告系統對磁碟空間的潛在問題發出警告,確保文件系統沒有被填滿或濫用是系統管理的一個重要的方面。

在本文中,作者介紹了一些查看磁碟使用情況的工具命令並結合這些工具實現了一個自動化監控磁碟空間的示範腳本。通過介紹,讀者將了解如何監視磁碟空間、如何發現究竟是哪些文件系統佔用了大部分的空間並以此為依據做出相應的調整。

Unix/Linux 磁碟管理相關命令介紹

獲取硬碟的屬性信息

在獲知磁碟使用狀態之前,你可能需要知道你當前的系統使用的是什麼類型的磁碟,它的屬性參數是什麼。目前大多數的 Linux/Unix 伺服器硬碟使用 SCSI 或 IDE 硬碟。在 Linux 和 AIX 中查看硬碟的屬性使用不同的命令,下面的例子給出了在不同系統上如何獲得硬碟屬性,其中包括製造商,機器型號,序列號等。

清單 1. 在 RHEL5.3 系統上查看 SCSI 硬碟的屬性

 # dmesg |grep scsi    vio_register_driver: driver ibmvscsi registering    ibmvscsi 30000002: SRP_VERSION: 16.a    scsi0 : IBM POWER Virtual SCSI Adapter 1.5.9    ibmvscsi 30000002: partner initialization complete    ibmvscsi 30000002: sent SRP login    ibmvscsi 30000002: SRP_LOGIN succeeded    ibmvscsi 30000002: host srp version: 16.a, host partition vios (1), OS 3, max io 1048576    sd 0:0:1:0: Attached scsi disk sda    sd 0:0:1:0: Attached scsi generic sg0 type 0   

清單 2. 在 AIX6.1 系統上顯示硬碟配置信息

 # lsdev -CHc disk    name   status    location     description    hdisk0 Available 01-08-00-1,0 SCSI Disk Drive     上面的命令給出了系統可用的硬碟信息,從上面的輸出可以看出,系統有一個可用的 SCSI 硬碟,如果要獲得硬碟的配置信息,可以使用 lscfg 來查看。   # lscfg -vl hdisk0     hdisk0           U788D.001.99DZG0B-P1-T10-L1-L0  SCSI Disk Drive (36400 MB)             Manufacturer................IBM-ESXS           Machine Type and Model......ST936701SS           FRU Number..................39R7368           ROS Level and ID............42353142           Serial Number...............3LC0BGY8           EC Level....................H17923E           Part Number.................26K5266           Device Specific.(Z0)........000005129F00100A           Device Specific.(Z1)........0106B51B           Device Specific.(Z2)........1000           Device Specific.(Z3)........06114           Device Specific.(Z4)........0001           Device Specific.(Z5)........22           Device Specific.(Z6)........H17923E           Brand.......................XS     

查看磁碟與分區以及分區與掛載點的對應關係

硬碟需要分區,格式化並掛載後方能使用,Linux 下硬碟上的每個分區表示為一個設備文件。AIX 系統對磁碟的管理和 Linux 系統不同,AIX 默認使用 LVM 對磁碟進行管理。傳統的磁碟管理方法使用類似 fdisk 的工具對物理磁碟進行分區的劃分和刪除,每個分區的大小是固定的,在此基礎上掛載文件系統。AIX 系統上將多個物理分區匯聚為一個卷組,然後再從中分割出一塊一塊的邏輯卷,在邏輯卷上可以創建文件系統。在較新的 Linux 版本中,也開始提供對 LVM 的支持,和 AIX 中的概念和使用方法非常相似。

通過在 Linux 系統上面使用 fdisk 命令可以獲得硬碟分區信息。而在 AIX 系統上,用戶可以使用 lspv 來獲得一個硬碟上的邏輯卷與文件系統對應信息。

顯示磁碟空間佔用情況

在 Linux 和 AIX 系統上,都提供了一個 df 命令。df 的功能是檢查文件系統的磁碟空間佔用情況以及可用性,通常還包掛載點。管理員能利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等信息。 df 的參數在 AIX 和 Linux 系統上略有不同。管理員可以通過查看用戶手冊來確定它的用法。

清單 3 .df 命令在 AIX6.1 系統上的預設輸出

 # df    Filesystem    512-blocks      Free %Used    Iused %Iused Mounted on    /dev/hd4          360448     84208   77%     9790    48% /    /dev/hd2         3309568    298576   91%    30742    47% /usr    /dev/hd9var       163840    124448   25%      514     4% /var    /dev/hd3          131072    122696    7%       70     1% /tmp    /dev/hd1           32768     32064    3%        5     1% /home    /dev/hd11admin     262144    261416    1%        5     1% /admin    /proc                  -         -    -         -     -     /proc/dev/hd10opt      294912    127536   57%     1661    11% /opt   

在上面 df 的輸出列表中,第一列是表示文件系統對應的設備文件的路徑名;第二列給出分區包含的數據塊的數目;第三列表示可用的數據塊數目,在預設的每個分區都留了少量空間供系統管理員使用,即使遇見普通用戶空間已滿的情況,管理員仍能登錄和留有解決問題所需的工作空間;清單中第四列 use% 列表示普通用戶空間使用的百分比;最後一列表示文件系統的安裝點。

需要注意的是上面顯示的大小是以 512 位元組塊為單位,而不是千位元組。預設情況下,幾乎所有傳統的 UNIX 操作系統都以 512 位元組塊為單位報告大小。要獲得以 1K 塊為單位的信息,可以使用 -k 命令行選項,要獲得以 MB 為單位的信息,需要使用 -m 命令,要獲得以 GB 為單位的信息,需要使用 -g 命令行選項。

df 工具在 Linux 上默認顯示是以 1K 位元組為單位的。在 Linux 系統上,-h 選項是比較常用的選項,它能使得顯示的內容簡單易讀。

清單 4. 帶 -h 選項的 df 命令在 SLES 上的輸出

 # df -h    Filesystem            Size  Used Avail Use% Mounted on    /dev/sda6              38G   16G   23G  41% /    udev                  1.5G   96K  1.5G   1% /dev   

顯示目錄或文件佔用磁碟空間大小

du 命令並不是顯示磁碟的空閑空間,而是顯示磁碟使用情況的信息,它將統計目錄或文件所佔磁碟空間的大小。du 命令用於確定文件和目錄的磁碟使用情況。

該命令可逐級進入指定目錄的每一個子目錄並顯示該目錄佔用文件系統數據塊的情況。若沒有給出目錄或文件的名字,則對當前目錄進行統計。

下面的 du 輸出清單中的第一列是以塊為單位計的磁碟空間容量,第二列列出目錄中使用這些空間的目錄和文件名稱。 帶 -a 選項的 du 命令將從當前目錄開始沿著目錄結構向下直到列出所有目錄和文件的容量為止。

 #du -a    0       ./lost+found    0       ./.oslevel.datafiles/.oslevel.hold    8       ./.oslevel.datafiles/.oslevel.mlinfo.cache    8       ./diagSEgenSnap/general/emgr.snap    2304    ./diagSEgenSnap/general/trcfmt    8       ./diagSEgenSnap/general/inittab    8       ./diagSEgenSnap/general/survdump.settings    4976    ./diagSEgenSnap/general    1448    ./diagSEgenSnap/snapH.pax.Z    6424    ./diagSEgenSnap    8       ./.ctinst.log    0       ./rc.net.serial.out    400     ./lvmt.log   …   7344   





UNIX/Linux 系統磁碟空間監控自動化腳本示例

在下面的內容中,我們給出了一個對磁碟分區剩餘空間大小進行自動化監控的示例,用戶可根據自身需求,對示例腳本進行修改以達到特定的管理目的。

我們的自動化磁碟分區空間監控系統分為三個部分,由三個文件 /root/disktab,checkdisk 腳本和 /root/diskresp 實現。/root/disktab 文件定義了需要監控的磁碟分區,報警閾值和達到閾值后的動作。checkdisk 則實現了整個對於磁碟空間的監控過程,而 /root/diskresp 文件為用戶自定義的磁碟空間達到閾值后的響應腳本。

監控腳本將被添加到 crontab 中,這樣就可以使監控循環進行。我們的腳本在 RedHatEL-Server 5.3(perl 版本 5.8.8)、SLES 11(perl 版本 5.10.0) 和 AIX 5.3(perl 版本 5.8.2) 上測試通過。

定義的 /root/disktab 文件擁有下面的格式

分區所 mount 的目錄 報警閾值 達到閾值后的動作

清單 6. 分區監控 /root/disktab 文件示例

 /       80%     /root/diskresp    /data   100G 	    /root/diskresp   

在這個文件中,第一行表示當"/"分區空間佔用超過 80% 時,則運行腳本 /root/diskresp 進行響應;第二行表示當"/data"分區的空間佔用超過 100G 時運行腳本 /root/diskresp 進行響應。我們的文件允許報警閾值以 KB,MB,GB 為單位,也可以以百分比表示。

腳本 checkdisk 主要完成的任務是分析 /root/disktab 文件並和當前查看磁碟空間的輸出進行比較,對於空間異常的分區採取相應的措施。腳本 checkdisk 的第一部分先進行了初始化,獲得了要使用的分區監控定義文件,默認的分區監控定義文件為 /root/disktab,也可以通過參數指定該文件的位置。


[火星人 ] Unix/Linux 系統自動化管理: 磁碟管理篇已經有1148次圍觀

http://coctec.com/docs/linux/show-post-68784.html