認識硬碟
讓我們再來復習一下 硬碟 裡面有什麼東西值得我們來討論的!
·物理組成
就物理組成來說
硬碟是由多個硬碟盤所組成的
而每一個硬碟盤上面都有個磁頭( Head )在進行該硬碟盤上面的讀寫工作
而當磁頭固定不動
硬碟盤轉一圈所畫出來的圓就是所謂的磁軌( Track )
全部硬碟盤上面同一個磁軌組成了磁柱( Cylinder )
這個磁柱也是磁碟分割( partition )時
最小的單位了!另外
由圓心向半徑方向劃直線
而每個 Track 上面細分成一個一個的磁區( Sector )那就是最小的磁碟儲存物理量了
一個 Sector 通常為
Bytes
這就是整個硬碟的構造啰
那麼如果以硬碟的 filesystem 來做為檢視呢?你可以簡單的這樣想啦
一個 Partition 當中就具有一個 filesystem ( 檔案系統 ) 啰!那麼一個 partition 當中能不能具有兩個 filesystem 呢?理論上應該是不行的!因為每個檔案系統都有其獨特的支援方式
例如 Linux 的 ext
就無法被 Windows 系統所讀取!而你將一個 partition 格式化的時候
總不能格式化為 ext
也同時格式化為 fat
吧?!那是不可能的啊!底下來談一談關於檔案系統的相關功能吧!
·Filesystem
在進行磁碟格式化或者是分割的時候
都會需要知道磁碟的一些基本的名詞定義
主要有
o 主要開機磁區( Master Boot Recorder
MBR )
主要開機磁區可以說是一顆硬碟裡面最重要的地方了
怎麼說呢?因為他記錄了所有硬碟的分割資訊
以及開機的時候可以進行開機管理程式的寫入等等
如果一顆硬碟的 MBR 死掉了
那麼這顆硬碟幾乎就可以說是壽終正寢了~那麼 MBR 有什麼限制呢?他最大的限制來自於他的大小不夠大到儲存所有的資訊
因此
他僅提供最多四個 partition 的記憶
這就是所謂的 Primary (P)與 Extended (E)磁區最多相加只能有四個的原因了
所以說
如果你預計分割超過
個 partition 的話
那麼勢必需要使用
P +
E
並且將所有的剩余空間都撥給 Extended 才行( 記得呦! Extended 最多只能有一個 )
否則只要
P + E 之後還有剩下的空間
那麼那些容量將成為廢物而浪費了?所以結論就是『如果您要分割硬碟時
並且已經預計規劃使用掉 MBR 所提供的
個 partition (
P + E 或
P )那麼磁碟的全部容量需要使用光
否則剩下的容量也不能再被使用』
不過
如果您僅是分割出
P +
E 的話
那麼剩下的空間就還能再分割兩個 partition !
o 區塊( Block )
檔案在磁碟當中會被儲存在一個固定的大小區塊中
那就是 Block
而 Block 的大小通常為
的次方
其中
由於磁碟的磁區物理量通常為
K (
Bytes )
所以 Block 通常規劃為
K 的倍數
例如 EXT
預設 Block 為
K 即是一例!其中需要特別留意的地方是
一個 Block 最多僅能容納一個檔案
所以當一個檔案不足
K 時
例如大小僅為
K
那麼剩下的
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 的規劃方面
我們可以使用 mke
fs 來進行
大致上硬碟就有這些東西
您還得了解每一個 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 這個放置郵件的磁碟!)。tw.wiNgWIt.Com
· 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 :列出的值
From:http://tw.wingwit.com/Article/program/Oracle/201311/17557.html