Linux基礎系列 - 磁碟相關操作命令總結
Linux 系統中磁碟資訊的檢視是比較常用的操作,例如,檢視磁碟使用情況、檢視磁碟分割槽等待操作。這裡總結一些運維中常用到的命令,以備使用查詢。
磁碟的介面
現在磁碟最常用的可簡單分為普通的機械盤和SSD(Solid-state drive或Solid-state disk)兩種,他們都已不同的介面協議和主機板連結,在瞭解命令之前,我們先來看下,現在伺服器磁碟的介面協議。這樣可以更好的瞭解磁碟。
現階段磁碟的介面主要有以下幾種:
ATA,全稱Advanced Technology Attachment,是用傳統的40-pin並口資料線連線主機板與硬碟的,介面速度最大為133MB/s,因為並口線的抗干擾性太差,且排線佔用空間較大,不利計算機內部散熱,已逐漸被SATA所取代。
SATA,全稱Serial ATA,也就是使用串列埠的ATA介面,因抗干擾性強,且對資料線的長度要求比ATA低很多,支援熱插拔等功能,SATA-II的介面速度為300MiB/s,而新的SATA-III標準可達到600MiB/s的傳輸速度。SATA的資料線也比ATA的細得多,有利於機箱內的空氣流通,整理線材也比較方便。
SCSI,全稱是Small Computer System Interface(小型機系統介面),經歷多代的發展,從早期的SCSI-II,到目前的Ultra320 SCSI以及Fiber-Channel(光纖通道),介面型式也多種多樣。SCSI硬碟廣為工作站級個人計算機以及伺服器所使用,因此會使用較為先進的技術,如碟片轉速15000rpm的高轉速,且資料傳輸時CPU佔用率較低,但是單價也比相同容量的ATA及SATA硬碟更加昂貴。
SAS(Serial Attached SCSI)是新一代的SCSI技術,和SATA硬碟相同,都是採取序列式技術以獲得更高的傳輸速度,可達到6Gb/s。此外也透過縮小連線線改善系統內部空間等。
此外,由於SAS硬碟可以與SATA硬碟共享同樣的背板,因此在同一個SAS儲存系統中,可以用SATA硬碟來取代部分昂貴的SAS硬碟,節省整體的儲存成本。但SATA儲存系統並不能連線SAS硬碟。
FC(Fibre Channel,光纖通道介面),擁有此介面的硬碟在使用光纖聯接時具有熱插拔性、高速頻寬(4Gb/s或10Gb/s)、遠端連線等特點;內部傳輸速率也比普通硬碟更高。限制於其高昂的售價,通常用於高階伺服器領域。
現在,普通機械盤介面多為SATA,固態盤介面多為SAS。更多磁碟知識可參考ofollow,noindex">Wiki百科 。
磁碟資訊檢視相關命令
lsscsi
該命令只支援 SCSI介面的磁碟。
-s 顯示容量大小。 -c 用全稱顯示預設的資訊。 -d 顯示裝置主,次裝置號。 -g 顯示對應的sg裝置名。 -H 顯示主機控制器列表,-Hl,-Hlv。 -l 顯示相關屬性,-ll,-lll=-L。 -v 顯示裝置屬性所在目錄。 -x 以16進位制顯示lun號。 -p 輸出DIF,DIX 保護型別。 -P 輸出有效的保護模式資訊。 -i 顯示udev相關的屬性 -w 顯示WWN
例項
[root@localhost]# lsscsi [0:0:0:0]diskATAST500DM002-1BD14 KC47/dev/sda [5:0:0:0]cd/dvdHL-DT-ST DVD+-RW GHB0NA100/dev/sr0
smartctl
smartctl
是磁碟工具包smartmontools
中的命令。該工具包有自我監控(Self-Monitoring)、分析(Analysis)和報告(Reporting)三個模組組成,所以縮寫為S.M.A.R.T或SMART。可使用系統包管理工具yum
安裝,我們這裡只說smartctl
這個命令的使用,其他更多使用大家可參考官方文件
。
smartctl
常用語法如下:
語法: smartctl[options]device device: "/dev/hd[a-t]"IDE/ATA 磁碟 "/dev/sd[a-z]"SCSI devices磁碟。注意,對於SATA磁碟,由於是通過libata 顯示資訊 引數引數: -h幫助資訊 -V版本資訊 -i列印基本資訊(磁碟裝置號、序列號、韌體版本…) -a列印磁碟所有的SMART資訊 -x列印所有裝置資訊 -g Name 獲取磁碟執行資訊: name 取值 all, aam, apm, lookahead, security, wcache, rcache, wcreorder 執行時行為 引數: -qTYPE指定輸出的安靜模式。 TYPE可以有3種選擇: eorsonly只打印錯誤日誌。 slent有任何列印。 nserial不列印序列號 -dTYPE指定磁碟的型別。如果沒有指定,smartctl會根據磁碟的名字來猜測磁碟型別。 磁碟型別包括: ata, scsi, sat[,auto][,N][+TYPE], usbcypress[,X], usbjmicron[,p][,x][,N], usbsunplus, marvell, areca,N/E, 3ware,N, hpt,L/M/N, megaraid,N, cciss,N, auto, test -TTYPE指定當發生錯誤時,smartctl的容忍程度,是否繼續執行。 TYPE可以有4種選擇: conservative一有錯就會退出 normal如果必須支援的SMART命令失敗,則退出 permissive忽略一次必須支援的SMART命令失敗 verypermissive忽略所有必須支援的SMART命令失敗 -bTYPE指定當發生校驗錯誤時,smartctl的動作。 TYPE有3種選擇: warn發出警告,繼續執行 exit退出smartctl ignore不發出告警,繼續執行 -rTYPEsmartmontools開發人員相關。 -nPOWERMODE指定當磁碟處於節能模式時,smartctl是否繼續檢查,預設是不檢查。 POWERMODE有4種選擇: never檢查 sleep除了sleep模式,檢查。 standby除了sleep或standby模式,檢查。 idle除了sleep或standby或idle模式,見車。 SMART功能開關 引數: -son/off開啟或關閉磁碟的SMART功能 -oon/off開啟或關閉SMART自動離線檢測,該功能每4小時就會自動掃描磁碟是否有缺陷。 -Son/off開啟或關閉“自動儲存廠商指定屬性”功能。 SMART 讀和顯示資料 引數 -H報告磁碟的是否健康。如果報告不健康,則說明磁碟已經損壞或會在24小時內損壞。 -c顯示磁碟支援的普通SMART功能,以及這些功能當前的狀態。 -A顯示磁碟支援的廠商指定SMART特性。這些特性的編號從1-253,並且有指定的名字。 -f設定輸出格式:old, brief, hex[,id|val] -lTYPE指定顯示的log型別。 TYPE有4種選擇: error只顯示errorlog。 selftest只顯示selftestlog selective 只顯示selectiveself-testlog directory 只顯示LogDirectory -vN,OPTION顯示廠商指定SMART特性N時,使用廠商相關的顯示方式。 -FTYPE設定smartctl的行為,當出現一些已知但還沒有解決的硬體或軟體bug時,smartctl應該怎麼做。 -PTYPE設定smartctl是否對磁碟使用資料庫中已有的引數。 SMART 離線測試、自測試 引數 -tTEST立刻執行測試,可以和-C引數一起使用。 TEST可以有以下幾個選擇: offline離線測試。可以在掛載檔案系統的磁碟上使用 short短時間測試。可以在掛載檔案系統的磁碟上使用。 long長時間測試。可以在掛載檔案系統的磁碟上使用。 conveyance[ATA only]傳輸zi測試。可以在掛載檔案系統的磁碟上使用。 select, N-M select, N+SIZE[ATA only]有選擇性測試,測試磁碟的部分LBA。N表示LBA編號,M表示結束LBA編號,SIZE表示測試的LBA範圍。 -C在captive模式下執行測試。 注意:(1)-C必須配合-t一起使用,但如果是-t offline,則-C不生效。 (2)-C會使得磁碟很忙,所以最好是在沒有掛載檔案系統的磁碟上使用。 -X中斷no-captive模式下執行的測試。
例項
smartctl --all /dev/hda# 列印所有hda裝置資訊 smartctl --smart=on --offlineauto=on --saveauto=on /dev/hda# 開啟hda SMART 支援 smartctl --test=long /dev/hda# 執行擴充套件磁碟自檢 smartctl --attributes --log=selftest --quietmode=errorsonly /dev/hda# 列印自檢和屬性錯誤 # 在3ware RAID控制器上列印第3個ATA磁碟的所有SMART資訊 smartctl --all --device=3ware,2 /dev/sda smartctl --all --device=3ware,2 /dev/twe0 smartctl --all --device=3ware,2 /dev/twa0 smartctl --all --device=3ware,2 /dev/twl0 # 列印連線到第3個PMPort的SATA磁碟的所有SMART資訊第一個HighPoint RAID控制器上的第一個通道 smartctl --all --device=hpt,1/1/3 /dev/sda # 列印Areca RAID控制器上第一個機箱的第3個ATA磁碟的所有SMART資訊 smartctl --all --device=areca,3/1 /dev/sg2 # 列印raid 中,第4塊盤的基本資訊 smartctl -a -d megaraid,3 /dev/sda
MegaCli
MegaCli是一款管理維護硬體RAID軟體,可以通過它來了解當前raid卡的所有信息,包括 raid卡的型號,raid的陣列型別,raid 上各磁碟狀態,等等。該工具可從以下連結下載:
http://www.lsi.com/downloads/Public/RAID%20Controllers/RAID%20Controllers%20Common%20Files/8.07.10_MegaCLI_Linux.zip
常用命令
#/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL 查raid級別 #/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL 查raid卡資訊 #/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL 檢視硬碟資訊 #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aAll 檢視電池資訊 #/opt/MegaRAID/MegaCli/MegaCli64 -FwTermLog -Dsply -aALL 檢視raid卡日誌 #/opt/MegaRAID/MegaCli/MegaCli64 -adpCount 【顯示介面卡個數】 #/opt/MegaRAID/MegaCli/MegaCli64 -AdpGetTime –aALL 【顯示介面卡時間】 #/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aAll 【顯示所有介面卡資訊】 #/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LALL -aAll 【顯示所有邏輯磁碟組資訊】 #/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll 【顯示所有的物理資訊】 #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Charger Status’ 【檢視充電狀態】 #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL【顯示BBU狀態資訊】 #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -aALL【顯示BBU容量資訊】 #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuDesignInfo -aALL 【顯示BBU設計引數】 #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL 【顯示當前BBU屬性】 #/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL 【顯示Raid卡型號,Raid設定,Disk相關資訊】
磁碟分割槽檢視相關命令
什麼是分割槽
分割槽就是將一個物理的磁碟,按照一定的容量劃分為多個邏輯的磁碟,每個邏輯磁碟可以叫做一個分割槽。
分割槽的好處
-
有效防止資料丟失,分割槽損壞不影響其他分割槽的資料。
-
增加磁碟空間使用效率:可以用不同的區塊大小來格式化分割槽,如果有很多1K的檔案,而硬碟分割槽區塊大小為4K,那麼每儲存一個檔案將會浪費3K空間。這時我們需要取這些檔案大小的平均值進行區塊大小的劃分。
-
將資料分割槽和系統分割槽分開,可防止應分割槽滿而導致系統掛起問題;
df
可獲取硬碟分割槽佔用空間情況。
常用引數
用法:df [options] 引數: -a或--all:包含全部的檔案系統; --block-size=<區塊大小>:以指定的區塊大小來顯示區塊數目; -h或--human-readable:以可讀性較高的方式來顯示資訊; -H或--si:與-h引數相同,但在計算時是以1000 Bytes為換算單位而非1024 Bytes; -i或--inodes:顯示inode的資訊; -k或--kilobytes:指定區塊大小為1024位元組; -l或--local:僅顯示本地端的檔案系統; -m或--megabytes:指定區塊大小為1048576位元組; --no-sync:在取得磁碟使用資訊前,不要執行sync指令,此為預設值; -P或--portability:使用POSIX的輸出格式; --sync:在取得磁碟使用資訊前,先執行sync指令; -t<檔案系統型別>或--type=<檔案系統型別>:僅顯示指定檔案系統型別的磁碟資訊; -T或--print-type:顯示檔案系統的型別; -x<檔案系統型別>或--exclude-type=<檔案系統型別>:不要顯示指定檔案系統型別的磁碟資訊; --help:顯示幫助; --version:顯示版本資訊。
du
du 也是檢視使用空間的命令,但是他更多是關注目錄和檔案使用的空間檢視。注意一點,當檔案控制代碼被程序佔用時,即使我們把檔案刪除了,雖然磁碟空間釋放了,但是使用du
檢視任然佔用,需要重啟程序來釋放檔案控制代碼,du
檢視才會準確。
用法: du [選項][檔案] 常用引數: -a或-all 顯示目錄中個別檔案的大小。 -b或-bytes 顯示目錄或檔案大小時,以byte為單位。 -c或--total 除了顯示個別目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和。 -k或--kilobytes 以KB(1024bytes)為單位輸出。 -m或--megabytes 以MB為單位輸出。 -s或--summarize 僅顯示總計,只列出最後加總的值。 -h或--human-readable 以K,M,G為單位,提高資訊的可讀性。 -x或--one-file-xystem 以一開始處理時的檔案系統為準,若遇上其它不同的檔案系統目錄則略過。 -L<符號連結>或--dereference<符號連結> 顯示選項中所指定符號連結的原始檔大小。 -S或--separate-dirs 顯示個別目錄的大小時,並不含其子目錄的大小。 -X<檔案>或--exclude-from=<檔案> 在<檔案>指定目錄或檔案。 --exclude=<目錄或檔案> 略過指定的目錄或檔案。 -D或--dereference-args 顯示指定符號連結的原始檔大小。 -H或--si 與-h引數相同,但是K,M,G是以1000為換算單位。 -l或--count-links 重複計算硬體連結的檔案。
fdisk
fdisk
可以檢視物理磁碟分割槽情況,也可以用來做分割槽操作。
用法: fdisk [選項][裝置檔案] 引數: -b<分割槽大小>:指定每個分割槽的大小; -l:列出指定的外圍裝置的分割槽表狀況; -s<分割槽編號>:將指定的分割槽大小輸出到標準輸出上,單位為區塊; -u:搭配"-l"引數列表,會用分割槽數目取代柱面數目,來表示每個分割槽的起始地址; -v:顯示版本資訊。
系統維護中,常使用fdisk -l
命令來檢視分割槽情況。fdisk的分割槽功能的使用,是採用問答式的命令列互動,因為它涉及到系統分割槽情況,操作時一定要認真仔細。fdisk分割槽例項
是一個簡單的分割槽過程,可作為參考。
mount
磁碟分割槽後,需要使用該命令掛載分割槽才能使用。除此之外,也常用來掛載CDROM。
用法: mount(選項)(裝置檔名/載入點) 常用引數: -V:顯示程式版本; -l:顯示已載入的檔案系統列表; -h:顯示幫助資訊並退出; -v:冗長模式,輸出指令執行的詳細資訊; -n:載入沒有寫入檔案“/etc/mtab”中的檔案系統; -r:將檔案系統載入為只讀模式; -a:載入檔案“/etc/fstab”中描述的所有檔案系統。
例項
# 掛載分割槽 /dev/sdb1 到 /data1掛載點 mount /dev/sdb1 /data1 # 掛載cdrom mount -t auto /dev/cdrom /mnt/cdrom
umount
類似mount,是解除安裝掛載點。
用法: umount (選項)(檔案系統) 引數: -a:卸除/etc/mtab中記錄的所有檔案系統; -h:顯示幫助; -n:卸除時不要將資訊存入/etc/mtab檔案中; -r:若無法成功卸除,則嘗試以只讀的方式重新掛入檔案系統; -t<檔案系統型別>:僅卸除選項中所指定的檔案系統; -v:執行時顯示詳細的資訊; -V:顯示版本資訊。
例項
# 解除安裝分割槽 /dev/sda1 umount -v /dev/sda1# 通過裝置名 umount -v /data1# 通過掛載點 # 執行延遲解除安裝,有時候磁碟被佔用,解除安裝失敗時,可使用此方式 umount -vl /data1/