天天看點

linux空磁盤劃分,Linux 磁盤劃分

Linux 磁盤分區

磁道 : 當磁盤旋轉時,磁頭若保持在一個位置上,則每個磁頭都會在磁盤表面劃出一個圓形軌迹,這些圓形軌迹就叫做磁道 。

扇區 : 磁盤上的每個磁道被等分為若幹個弧段,這些弧段便是磁盤的扇區,每個扇區可以存放512個位元組的資訊,磁盤驅動器在向磁盤讀取和寫入資料時,要以扇區為機關

磁柱( 柱面 ) : 硬碟通常由重疊的一組盤片構成,每個盤面都被劃分為數目相等的磁道,并從外緣的“0”開始編号,具有相同編号的磁道形成一個圓柱,稱之為磁盤的柱面。磁盤的柱面數與一個盤面上的磁道數是相等的。由于每個盤面都有自己的磁頭,是以,盤面數等于總的磁頭數。

硬碟是以 sectors(扇區), cylinder(磁柱), partitions(分割槽) 這些東西來作為儲存的機關,而最底層的實體硬碟機關就是 sectors 了,通常一個 sector 大約是 512 bytes 左右。不過,在磁盤進行格式化的時候,可以将數個 sector 格式化成為一個邏輯扇區(logical block),通稱為 block。blocks 為一個檔案系統(filesystem)存取的最小量。所謂硬碟的CHS,即Cylinder(柱面)、Head(磁頭)、  Sector(扇區),隻要知道了硬碟的CHS的數目,即可确定硬碟的容量,硬碟的容量=柱面數×磁頭數×扇區數×512B。 ( 扇區數是一個磁道上含有的扇區數, 扇區數*512b = 1個磁道的存儲容量, 1個磁道的存儲容量 * 柱面數 = 一個磁盤的容量 ( 一個柱面數就等于一個盤面上的磁道數量 ) , 一個磁盤容量 * 磁頭數 = 總容量, 因為 磁頭數就等于盤片數 ). 磁柱是分割槽的最小機關 .

那麼 partition 是什麼?簡單的來說,你知道你的 Windows 有所謂的 C:, D: 是吧!其實他們是同一顆硬碟,隻是利用『磁盤分割表』(partition table)來将實體的硬碟規劃出不同的區塊。

Linux 分區格式化

每種作業系統所設定的檔案屬性/權限并不相同, 為了存放這些檔案的所需資料, 是以需要進行格式化, 以便成為作業系統能夠利用的檔案系統格式 ( file system ).

linux 檔案系統存放 : 權限屬性等存放在 inode中 , 實際資料存儲在 data block中 , 還有一個超級區塊 ( super block ) 會記錄整個檔案系統的整體資訊, 包括 inode與block總量等.

每個 inode , block 都有編号 , supperblock 記錄了 file system的整體資訊, 包括 inode/block 總數量, 使用量, 剩餘量, 以及檔案系統格式及相關資訊.

inode : 記錄檔案的屬性, 一個檔案占用一個 inode, 同時記錄此檔案的資料所在的 block 号碼.

block : 實際存儲檔案内容, 如果檔案太大會占用多個 block .

檔案系統一開始就将inode與block規劃好了,除非重新格式化(或利用resize2fs等指令變更檔案系統大小),否則inode與block固定後就不會再變動 .

連結( 實體連結與符号連結)

hardlink ( 實體連結 ) : 透過檔案系統的 inode 連結來産生新檔名, 而不是新檔案 . ( 多個檔名對應到一個 inode 中 )

ln Makefile ../asdf ( 建立一個 asdf ,這個 asdf 是新的檔名,但是它跟 Makefile 是同一個 inode.

hardlink 好處 : 安全, 如果你不小心删除了1個檔名,其實該檔案的 inode與 block還是存在的,此時你可以通過另一個檔名來讀取檔案。

hardlink 限制 : 不能跨 Filesystem , 不能 link 目錄 ( 不能LINK目錄原因是, 目錄下的每個子目錄都有父目錄的檔名 ../ , 是以在link父目錄的同時, 必須link每個子目錄,這樣很麻煩, 是以不能link 目錄 ) , 直覺了解是,如果允許硬連結指向目錄,假設目錄.../d1/...與.../d2/...互為硬連結,那麼在d1下必然包含目錄項“..”,試問這個“..”應該指向d1還是d2 .

symbolic link 符号連接配接 : 即 windows 中的快捷方式 . 實際上就是建立一個獨立的檔案, 這個檔案讓資料的讀取指向他link的那個檔案的檔名。從ls指令中也可以看出, 因為有個 -> 箭頭符号. ( 這兩個檔名使用的是不同的 inode号碼 ) , 注意此處指向的是那個真正的檔名, 而這個真正的檔名如果被删除了, 那麼這個"快捷方式"也就不好使了.

ln -s Makefile ../asdf ( 建立一個符号連接配接, asdf 是 Makefile 的快捷方式 )

ln [-sf] 來源檔案 目标檔案

-s : 符号連接配接

-f : 如果目标檔案存在時,就主動的将目标檔案直接移除後再建立

其中,符号連結一定要注意,要給出完成路徑,否則,會失效。 ln -s /tmp/c_practice/Makefile /tmp/asdf 沒問題, 而如果是 ln -s Makefile /tmp/asdf 就廢了。

Linux裝置代号

IDE 硬碟:/dev/hd[a-d]

CDROM:/dev/cdrom

列印機:/dev/lp[0-2]

軟碟機:/dev/fd[0-1]

網絡卡:/dev/eth[0-n]

linux 細節總結

假設你的硬碟總共有 1024 個 cylinder (利用 blocks 結合而成的硬碟計算機關), 那麼你在這塊硬碟的檔案頭地方 (就是磁盤分割表,可以想成要讀取一塊硬碟時最先讀取的地方)如果寫入你的 partitions 共有兩塊,一塊是 primary 一塊是 extended ,而且 extended 也隻規劃成一個logical ,那麼你的硬碟就是隻有兩個槽啦(對于系統來說,真正能使用的有 Primary 與 Logical 的扇區, Extended 并無法直接使用的!需要再加以規劃成為 Logical 才行! ) ,而且在 partition table 也會記錄 primary 是由『第 n1 個 cylinder 到第 n2 個 cylinder 』,是以啰,這樣子一來,當系統要去讀取 primary (就是 c 槽)的時後,就隻會在!n1~n2 之間的實體硬碟當中活動啰!