linux 系統一切以檔案的方式儲存於硬碟,應用程式資料需要時刻讀寫硬碟,所以企業
生產環境中對硬碟的操作變得尤為重要,對硬碟的維護和管理也是每個運維工程師必備工作
之一。一、計算機硬碟簡介
硬碟是計算機主要儲存媒介之一,由乙個或者多個鋁製或者玻璃制的碟片組成,碟片外覆蓋有鐵磁性材料,硬碟內部由磁軌、柱面、扇區、磁頭等部件組成。
/dev/sdb、/dev/sdc、/dev/vda。不同硬碟介面,在系統中識別的裝置名稱不一樣。ide 硬碟介面在 linux 中裝置名為/dev/hda,sas、scsi、sata 硬碟介面在 linux 中裝置名為 sda,高效雲盤硬碟介面會識別為/dev/vda 等。
檔案儲存在硬碟上,硬碟的最小儲存單位叫做 sector(扇區),每個 sector 儲存 512 位元組。作業系統在讀取硬碟的時候,不會逐個 sector 的去讀取,這樣效率非常低,為了提公升讀取效率,作業系統會一次性連續讀取多個 sector,即一次性讀取多個 sector 稱為乙個 block(塊)。由多個 sector 組成的 block 是檔案訪問的最小單位。block 的大小常見的有 1kb、2kb、4kb,block 在 linux 中常設定為 4kb,即連續八個 sector 組成乙個 block。
/boot 分割槽 block 一般為 1kb,而/data/分割槽或者/分割槽的 block 為 4k。可以通過如下三種方法檢視 linux 分割槽的 block 大小:
1、dumpe2fs /dev/sda1 |grep "block size" 2、tune2fs -l /dev/sda1 |grep "block size"
3、stat /boot/|grep "io block"
二、硬碟 block 及 inode 詳解
通常而言,作業系統對於檔案資料的存放包括兩個部分:檔案內容、許可權及檔案屬性。作業系統檔案存放是基於檔案系統,檔案系統會將檔案的實際內容儲存到 block 中,而將許可權與屬性等資訊存放至 inode 中。
superblock:記錄檔案系統的整體資訊,包括 inode 與 block 的總量、使用大小、剩餘大小,以及檔案系統的格式與相關資訊等;inode:記錄檔案的屬性,許可權,同時會記錄該檔案的資料所在的 block 編號;
block:儲存檔案的內容,如果檔案超過預設 block 大小,會自動占用多個 block。
因為每個 inode 與 block 都有編號,而每個檔案都會占用乙個inode ,inode 內則有檔案資料放置的 block 號碼。如果能夠找到檔案的 inode,就可以找到該檔案所放置資料的block 號碼,從而讀取該檔案內容。
作業系統進行格式化分割槽時,作業系統自動將硬碟分成兩個區域。乙個是資料 block 區,用於存放檔案資料;另乙個是 inode table 區,用於存放 inode 包含的元資訊。每個 inode 節點的大小,可以在格式化時指定,預設為 128bytes 或 256bytes,/boot 分割槽 inode 預設為 128bytes,其他分割槽預設為 256bytes,檢視 linux 系統 inode 方法如下:
dumpe2fs -l /dev/sda1 |grep node
tune2fs -l /dev/sda1 |grep node
stat /boot/|grep node
格式化磁碟時,可以指定預設 inode 和 block 的大小,-b 指定預設 block 值,-i 指定預設 inode 值。
三、硬鏈結介紹
一般情況下,檔名和 inode 編號是一一對應的關係,每個 inode 號碼對應乙個檔名。但 unix/linux 系統多個檔名也可以指向同乙個 inode 號碼。這意味著可以用不同的檔名訪問同樣的內容,對檔案內容進行修改,會影響到所有檔名。但刪除乙個檔名,不影響另乙個檔名的訪問。這種情況就被稱為硬鏈結(hard link)。
建立硬鏈結的命令為:ln jf1.txt jf2.txt,其中 jf1.txt 為原始檔,jf2.txt 為目標檔案。如上命令原始檔與目標檔案的 inode 號碼相同,都指向同乙個 inode。inode 資訊中有一項叫做"鏈結數",記錄指向該 inode 的檔名總數,這時會增加 1,變成 2,同樣刪除乙個 jf2.txt 檔案,就會使得 jf1.txt inode 節點中的"鏈結數"減 1。如果該 inode值減到 0,表明沒有檔名指向這個 inode,系統就會**這個 inode 號碼,以及其所對應block 區域。
四、軟鏈結介紹
除了硬鏈結以外,還有一種鏈結-軟鏈結。檔案 jf1.txt 和檔案 jf2.txt 的 inode 號碼雖然不一樣,但是檔案 jf2.txt 的內容是檔案 jf1.txt 的路徑。讀取檔案 jf2.txt 時,系統會自動將訪問者導向檔案 jf1.txt。無論開啟哪乙個檔案,最終讀取的都是檔案 jf1.txt。檔案 jf2.txt 就稱為檔案 jf1.txt的"軟鏈結"(soft link)或者"符號鏈結(symbolic link)。檔案 jf2.txt 依賴於檔案 jf1.txt 而存在,如果刪除了檔案 jf1.txt,開啟檔案 jf2.txt 就會報錯:"no such file or directory"。
五、硬鏈結與軟連線的區別
硬鏈結不能跨分割槽鏈結,硬鏈結只能對檔案生效,對目錄無效,也即是目錄不能建立硬鏈結。硬鏈結原始檔與目標檔案共用乙個 inode 值,從某種意義上來,節省 inode空間。不管是單獨刪除原始檔還是刪除目標檔案,檔案內容始終存在。同時鏈結後的檔案不占用系統多餘的空間。
軟鏈結可以跨分割槽鏈結,軟鏈結支援目錄同時也支援檔案的鏈結。軟鏈結原始檔與目標檔案 inode 不相同,從某種意義上來,會消耗省 inode 空間。不管是刪除原始檔還是重啟系統,該軟鏈結還存在,但是檔案內容會丟失,一旦新建源同名檔名,軟鏈結檔案恢復正常。
Linux的磁碟管理
裝置檔案 塊檔案b 按塊為單位,隨機訪問的裝置,硬碟 b,c 字元裝置c 按字元進行訪問,線性裝置,鍵盤 c dev 主裝置號,次裝置號 major number 主裝置號 裝置型別 minor number 此裝置號 同一種裝置型別的不同裝置 硬碟的裝置檔名 ide,ata hd sata sd ...
Linux的磁碟管理
linux上,dev目錄下的sd hd 為a,b,c等字母 表示一塊磁碟,而sda1,sda2等表示該磁碟上的分割槽,我們可以使用一下命令檢視磁碟的分割槽資訊 asda fdisk l dev sda該命令還可以用來給磁碟進行分割槽,用法如下 fdisk dev sda分完區,就得到sda1,sda...
Linux的磁碟管理
磁碟的工作原理 物理概念 磁軌 磁頭 扇區 柱面 磁碟的分類 機械盤 介面io 固態盤 io 序列sata scsi iscsi 並行ata fc二層協議 檔案系統 邏輯概念 磁碟必須要有檔案系統 資料儲存 資料庫 資料管理平台 windows fat32 ntfs linux 單檔案系統 ext2...