Linux 磁盤與硬件管理
2024-07-21 02:36:08
供稿:網友
熟悉硬盤:
讓我們再來復習一下 硬盤 里面有什么東西值得我們來討論的!
· 物理組成:
就物理組成來說,硬盤是由多個硬盤盤所組成的,而每一個硬盤盤上面都有個磁頭( Head )在進行該硬盤盤上面的讀寫工作,而當磁頭固定不動,硬盤盤轉一圈所畫出來的圓就是所謂的磁道( Track ),全部硬盤盤上面同一個磁道組成了磁柱( Cylinder ),這個磁柱也是磁盤分割( partition )時,最小的單位了!另外,由圓心向半徑方向劃直線,而每個 Track 上面細分成一個一個的扇區( Sector )那就是最小的磁盤儲存物理量了,一個 Sector 通常為 512 Bytes 。這就是整個硬盤的構造啰,那么假如以硬盤的 filesystem 來做為檢視呢?你可以簡單的這樣想啦,一個 Partition 當中就具有一個 filesystem ( 檔案系統 ) 啰!那么一個 partition 當中能不能具有兩個 filesystem 呢?理論上應該是不行的!因為每個檔案系統都有其獨特的支持方式,例如 linux 的 ext3 就無法被 Windows 系統所讀取!而你將一個 partition 格式化的時候,總不能格式化為 ext3 也同時格式化為 fat32 吧?!那是不可能的啊!底下來談一談關于檔案系統的相關功能吧!
· Filesystem
在進行磁盤格式化或者是分割的時候,都會需要知道磁盤的一些基本的名詞定義,主要有:
o 主要開機扇區( Master Boot Recorder, MBR ):主要開機扇區可以說是一顆硬盤里面最重要的地方了,怎么說呢?因為他記錄了所有硬盤的分割信息,以及開機的時候可以進行開機治理程序的寫入等等,假如一顆硬盤的 MBR 死掉了,那么這顆硬盤幾乎就可以說是壽終正寢了~那么 MBR 有什么限制呢?他最大的限制來自于他的大小不夠大到儲存所有的信息,因此,他僅提供最多四個 partition 的記憶,這就是所謂的 PRimary (P)與 Extended (E)扇區最多相加只能有四個的原因了。所以說,假如你預計分割超過 4 個 partition 的話,那么勢必需要使用 3P + 1E ,并且將所有的剩余空間都撥給 Extended 才行( 記得呦! Extended 最多只能有一個 ),否則只要 3P + E 之后還有剩下的空間,那么那些容量將成為廢物而浪費了?所以結論就是『假如您要分割硬盤時,并且已經預計規劃使用掉 MBR 所提供的 4 個 partition ( 3P + E 或 4P )那么磁盤的全部容量需要使用光,否則剩下的容量也不能再被使用』。不過,假如您僅是分割出 1P + 1E 的話,那么剩下的空間就還能再分割兩個 partition !
o 區塊( Block ):檔案在磁盤當中會被儲存在一個固定的大小區塊中,那就是 Block ,而 Block 的大小通常為 2 的次方,其中,由于磁盤的扇區物理量通常為 0.5K ( 512 Bytes ),所以 Block 通常規劃為 0.5 K 的倍數,例如 EXT2 預設 Block 為 4K 即是一例!其中需要非凡留意的地方是,一個 Block 最多僅能容納一個檔案,所以當一個檔案不足 4K 時,例如大小僅為 1K ,那么剩下的 3 K 容量將會被浪費掉,這與 inode 也有一定的相關性!因此,在規劃您的磁盤時,需要留意到您主機的用途來進行規劃較佳!與此同時,若 Block 規劃的太小,則磁盤的 Block 數目會大增,而造成 inode 在指向 block 時候的一些搜尋時間的增加,又會造成大檔案讀寫方面的效率較差,這也與 inode 有一定程度的相關性呢!需要非凡留意的是:『當系統讀取了某一個檔案,則該檔案所在的區塊資料會被加載到內存當中,所以該磁盤區塊就會被放置在主存儲器的緩沖快取區中,若這些區塊的資料被改變時,剛開始資料僅有主存儲器的區塊資料會被改變,而且在緩沖區當中的區塊資料會被標記為” Dirty “,這個時候磁盤實體區塊尚未被修正!所以亦即表示,這些” Dirty “區塊的數據必需寫到磁盤當中,以維持磁盤實體區塊上的數據與主存儲器中的區塊資料的一致性。』這也是為什么當 Linux 系統不正常關機,或者是突發性的跳電時,總是會造成系統在磁盤檢驗上面大花時間的原因了!
o Superblock:當我們在進行磁盤分割( partition )時,每個磁盤分割槽( partition )就是一個檔案系統( filesystem ),而每個檔案系統開始的位置的那個 block 就稱為 superblock ,superblock的作用是儲存像是檔案系統的大小、空的和填滿的區塊,以及他各自的總數和其它諸如此類的信息等等,這也就是說,當您要使用這一個磁盤分割槽( 或者說是檔案系統 )來進行資料存取的時候,第一個要經過的就是 superblock 這個區塊了,所以啰, superblock 壞了,您的這個磁盤槽大概也就回天乏術了!
o Inode: 在 Linux 檔案與目錄治理 當中,我們提到了很多的 inode 概念,這里在加重補強一下說明:對于檔案系統而言一個inode是在inode tables 中的一個項目。Inode包含了所有檔案有關的信息例如名稱、大小、連接的數量、資料建立之日期,修改及存取的時間。它也包含了磁盤區塊的檔案指向(pointer)。pointer是用來記錄檔案被儲存在何處。對于 inode 的規劃方面,我們可以使用 mke2fs 來進行。
大致上硬盤就有這些東西,您還得了解每一個 filesystem 就是一個磁盤分割槽,免得到時候底下講的東西太混亂時,造成您的困擾,那就不好意思啦!
查看硬盤或目錄的容量
好了!那么在文字接口底下有什么方法可以查看目前的磁盤最大容許容量、已經使用掉的容量、目前所在目錄的已使用容量?還有還有,怎么知道目前目錄底下使用掉的硬盤容量呢?以及如何查詢目前的 inodes 數目?呵呵!底下我們就來談一談主要的兩個指令:
df 查看以掛載磁盤的總容量、使用容量與 inode 等等
du 查看檔案使用掉的容量有多少?
· df
語法:
[root @tsai /root ]# df -[ikm] 參數說明: -i: 使用 i-nodes 顯示結果 -k: 使用 KBytes 顯示結果 -m: 使用 MBytes 顯示結果 范例: [root @test /root ]# df -k <==以 KB 顯示磁盤空間 Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda1 2118832 904600 1106600 45% / /dev/hda3 497861 37525 434632 8% /disk1 none 31220 0 31220 0% /dev/shm /dev/hda5 101089 4127 91743 5% /proxy1 /dev/hda6 101089 4127 91743 5% /proxy2 /dev/hda2 1004052 38360 914688 5% /var /dev/fd0 1423 1405 19 99% /mnt/floppy
說明:
這是用來顯示目前磁盤空間的指令!需要注重的是,由于我們的檔案或者是外掛的磁盤都是加在『 / 』底下,所以當根目錄沒有空間的時后,嘿嘿!你的 Linux 系統大概就是掛了吧~(說個笑話!當初我們系上有個研究生在治理 Sun 的工作站,是別研究室的,他的硬盤明明有好幾 GB ,但是就是沒有辦法將幾 MB 的資料 copy 進去,他就去跟老板講說機器壞了!嘿!明明才來維護過幾天而已為何會壞了!結果老板將維護商叫來罵了 2 小時左右吧!后來,維護商發現原來硬盤的『總空間』還有很多,只是某個扇區填滿了,偏偏該研究生就是要將資料 copy 去那個扇區!呵呵!后來那個研究生就被命令『再也不許碰 Sun 主機』了~~)當然啰!你可以將你的資料放置在加掛的硬盤中,那么如何知道目前哪一個磁盤還有多少空間呢?!
這里要請大家再復習一下,我們的硬盤扇區規劃中, primary 扇區每一顆硬盤只答應 4 個,其它的就放置在 Extended 扇區中了!而,硬盤的代號與 IDE 的插槽是有關系的!假如忘記了,那就回去安裝 Linux 那一章復習一下吧!好了!假設我只有一棵硬盤,且放在 IDE 的 mater ,那么我的硬盤就是 /dev/hda 啰!而在這顆硬盤中的分割扇區就可以由 /dev/hda1 開始向上加!
OK,那么使用 df -k 之后,出現的上面的資料中,可以知道我的硬盤更分為 /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda5 與 /dev/hda6 ,咦! /dev/hda4 跑去哪里了!呵呵!其實 /dev/hda4 通常就是 Extended 扇區啦!而后面的 /dev/hda5, /dev/hda6 等扇區就是由 /dev/hda4 所切出來的!所以 /dev/hda5 + /dev/hda6 = /dev/hda4 !當然,假如還有沒有顯示出來的,例如 Swap ,則 /dev/hda4 還有可能更大呦!
那么來解釋一下上面的資料吧!
· Filesystem:說的是扇區啦!另外,假如你有加掛軟盤的話,那么就會出現如上表中最后一行啰!
· 1k-blocks:說明底下的數字單位是 1KB 呦!假如你使用 df -m 則這一欄會出現 1M-blocks 啰!
· Used :顧名思義,就是使用掉的硬盤空間啦!
· Available :也就是剩下的磁盤空間大小;
· Use% :就是磁盤的使用率啦!假如使用率高達 90% 以上時,最好需要注重一下了,免得容量不足造成系統問題(例如最輕易被灌爆的 /var/spool/mail 這個放置郵件的磁盤!)。
· Mounted on :就是磁盤掛載的目錄所在啦!例如 /dev/hda5 是掛載在 /proxy1 底下,而 /var 是 /dev/hda2 這個扇區啰!
另外,需要注重的是,有的時后某些系統會出現 /proc 這個扇區,但是里面的東西都是 0 ,不要緊張! /proc 的東西都是 Linux 系統所需要加載的系統資料,而且是掛載在『內存當中』的,有點像是以前 DOS 年代的虛擬硬盤啦!所以當然沒有占任何的硬盤空間啰!
· du
語法:
[root @test /root ]# du [-abckms] [目錄名稱] 參數說明: [目錄名稱] 可以省略,假如省略的話,表示要統計目前所在目錄的檔案容量 -a :全部的檔案與目錄都列出來!默認值是指列出目錄的值! -b :列出的值以 bytes 輸出 -c :最后加總 total ! -k :列出的值以 KB 輸出 -m :列出的值以 MB 輸出 -s :只列出最后加總的值! 范例: [root