Linux 硬盤與硬件管理
硬件以文件系統(Filesystem)角度來看
文件系統:一個可被掛載的數據稱為文件系統,每個操作系統可以使用的文件系統並不一樣,windows98是FAT或者FAT16文件系統,而windows2000以後有了NTFS文件系統,linux是ext2、ext3,現在出現了ext4。
文件系統通常將檔案的屬性和權限放置在inode中,至於實際數據則放置到data block中,另外還有一個超級區塊(superblock)會記錄整個文件系統的整體信息,包括inode與block的總量、 使用情況,剩余量等。
主引導扇區(master boot recorder,MBR)MBR:分區的一種方式,支持4個主分區或者1-3個主分區+一個擴展分區,其中擴展分區內可以分出多個邏輯分區。文件系統:操作系統用於明確磁盤分區內的文件的方法和數據結構。負責對文件的存儲進行劃分磁盤磁盤空間和標註位置。那些你看著是一個單獨的文件,可能在你的磁盤裏存儲並不是連續的。舉個例子,一個4G的電影,可能前一部分存儲在多少到多少扇區,後一部分存儲在多少到多少扇區。這些扇區位置以及他們的標註由文件系統來操作。不明白的話給一個最切實際的比方:一個年級可以分4個班,這個是MBR。在一個班裏,老師的座次表記錄張三在哪個位置,李四在哪個位置。這個座次表就是文件系統,負責記錄學生的位置,並給他們劃分座位。
inode:記錄檔案的屬性,同時記錄此檔案所在的block號碼,每個檔案都只會占用一個inode,因此文件系統內可以放置的檔案數量和inode的數量是對應的,系統讀取檔案時先要讀取inode,查看檔案的權限與用戶是否符合才能繼續根據inode對應的檔案block編號去尋找文檔的內容。
block:記錄檔案的實際內容,一個block只能存放一個檔案,如果檔案容量比block大,則占用多個block,如果小,則剩下的空間會浪費掉,block的大小為1K,2K,4K,在文件系統格式化的時候這個大小就會被確定下來,而且每個block會有各自的編號,以方便inode記錄尋找。
superblock:
文件系統一開始就會規劃好inode和block,除非重新格式化(或者指令resize2fs來進行更改)外不然不會更改,由於有些文件系統非常龐大,所以把inode和block放在一起不容易管理,所以文件系統將inode和block分為block group區塊群組進行管理。
block group區塊構成:
block group都有單獨的inode、block以及superblock。
以ext2文件系統為例,ext2文件系統格式化後會變為:boot sector(啟動扇區)和多個block group,boot sector可以存放開機管理程序,這樣可以將不同的開機管理程序安裝在文件系統最前端,而不用覆蓋硬盤唯一的MBR,而block group分為六個部分,下面詳述:
block group分為以下六個部分:
1:superblock :大小為1024bytes,記錄filesytstem相關信息的地方,記錄inode和block的數量,未使用和已使用的inode和block數量,記錄inode和block的大小,例如inode是128bytes,而block是1k或者2k或者4k,記錄filesystem的掛載時間,最近一次寫入數據的時間,最近一次檢驗磁盤(fsck)的時間等文件系統相關信息。最後還要記錄一個valid bit數值,文件系統已被掛載為0,反之為1。
這部分信息可以用dumpe2fs呼叫出來進行查看。
2:檔案系統描述 (filesystem description):這個區塊可以描述麽個block group的開始與結束的block號碼,以及說明每個區段分別介於哪一個block號碼中,這部分也能夠用dumpe2fs來觀察。
3:區塊對應表(block bitmap):block bitmap記錄哪些block是空的,以便新建文檔可以快速調出空的block進行儲存,同時當刪除文檔時,block bitmap也會將對應釋放的block號碼改為未使用。
4:Inode對應表(inode bitmap):這個功能和block bitmap類似,只是block bitmap記錄的是使用與未使用的block號碼,而inode bitmap記錄的是使用與未使用的inode號碼。
5:inode table:也就是上面講過的inode,這裏記錄檔案的屬性以及檔案內容放在哪些編號的block裏。同時inode的大小均固定為128bytes,inode記錄一個block需要花費4bytes,由於有些檔案非常巨大,需要占用大量的block,但是記錄一個block需要花費4bytes,而inode只有128bytes,因此系統將inode記錄block號碼的區域分為12個直接,一個間接,一個雙間接,一個三間接記錄區。
具體記錄的數據為:
1)檔案存取模式(rwx)
2)檔案擁有者(owner、group)
3)檔案的容量
4)檔案建立或狀態改變(例如權限)的時間(ctime)
5)檔案最近一次的讀取時間(atime)
6)最近修改的時間(mtime)
7)定義檔案特性的旗桿(flag)
8)該檔案內容真正的指向(pointer)
6:data block:data block是放置檔案數據的地方,就是上面說的block,是一個東西。
------------------以上轉自 貝倫醬 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/belen_xue/article/details/51586178?utm_source=copy
1.查看硬盤或目錄的容量
df查看硬盤總容量,已用容量,與inode等信息
-i, --inodes
用信息索引點代替塊表示使用狀況
-k, --kilobytes
指定塊大小等於1024字節來顯示使用狀況
-l, --local
只顯示本地文件系統使用狀況
-m, --megabytes
以指定塊大小等於1048576字節(1M)來顯示使用狀況
du 報告磁盤空間使用情況
du 報告指定的文件已使用的磁盤空間的總量,包括在層次結構中以這些以指定文件為根的目錄在內。這裏的“已使用的磁盤空間”意思為指定的文件下的整個文件層次結構所使用的空間。
在沒給定參數的情況下,du 報告當前目錄所使用的磁盤空間。
GNU 選項
-a, --all
顯示對所有文件的統計,而不只是包含子目錄。
-b, --bytes
輸出以字節為單位的大小,替代缺省時1024字節的計數單位。
-c, --total
在處理完所有參數後給出所有這些參數的總計。這個選項被
用給出指定的一組文件或目錄使用的空間的總和。
-k, --kilobytes
輸出以1024字節為計數單位的大小。多少K
-m, --megabytes
輸出以兆字節的塊為計數單位的大小(就是 1,048,576 字節)。多少M
-s, --summarize
對每個參數只顯示總和。
-S, --separate-dirs
單獨報告每一個目錄的大小,不包括子目錄的大小。
2.磁盤分割與格式化
fdisk
是一個臭蟲(直接從man fdisk 復制下來的)
在 Linux 中有很多版本的 *fdisk 類程序。 每一個都有自己的強項和缺點。分別試著使用 cfdisk,fdisk, sfdisk. (fdisk是一個有很多臭蟲的分區工具軟件,它所做的操作是模糊不清的,通常在碰巧的情況下它才會正常的運行。 它唯一值得使用的地方是它對BSD 的磁盤標簽和非 DOS 的分區表有所支持, 盡量少用這個程序。
(sfdisk是一個專為黑客提供的程序,它的用戶界面很不友善, 但它更精確,也比 fdisk 和 cfdisk 更有效。另外,它只能以非交互的方式運行。
cfdisk 是一個漂亮的程序,它只接受最嚴謹的分區表,而且它能生成高質量的分區表。 如果可能,你最好使用這個程序。)
fdisk最主要的工作就是修改分區表,咱們就先按書上的步驟走一遍:
先是刪除的步驟:
按q退出(系統認定以上步驟作廢,即無事發生,按 w是真的保存設定了噢)
再來增加分區的操作:步驟同上,不過刪除是d,新增就是n啦,n-》p(主分區)-》選編號1-4(未使用過的)-》q,不保存,哈哈哈
e2label - Change the label on an ext2/ext3/ext4 filesystem 修改設備名
這是什麽東西。
使用e2label對磁盤操作時,如果報“e2label: Bad magic number in super-block while trying to open /dev/sdb1 ,Couldn’t find valid filesystem superblock.”這樣的報錯。是因為e2label對xfs文件系統做操作出現的,一般是centos7以上系統,在7以上系統應該使用xfs_admin來操作即可!
如:
[root@localhost ~]# xfs_admin -l /dev/sdb1 #查看xfs文件系統卷標 label = "" [root@localhost ~]# xfs_admin -L test /dev/sdb1 #設置xfs文件系統的卷標為test writing all SBs new label = "test" [root@localhost ~]# xfs_admin -l /dev/sdb1 label = "test"
xfs_admin - change parameters of an XFS filesystem
然鵝
。。。唉,在這先插個眼xfs的基本使用http://www.rundba.com/?post=59。我先往下學Linux的基本指令。
mke2fs Linux下重要的格式化工具
-b設定每個數據塊的大小
-i設定inode值
-c檢查磁盤錯誤
-L設定這個扇區的label(表頭名稱)
-j建立ext3這個具備日誌管理功能的文件格式
哈哈哈哈,這個可以改名,但我沒有改
mknod - 建立塊專用或字符專用文件
mknod 用指定名稱產生一個FIFO(命名管道),字符專用或塊專用文件。
文件系統中的一個專用文件存貯著三種信息(布朗型、整型、整型)。
布朗型在字符文件與塊文件之間作出選擇,兩個整型是主、次設備號。
通常,一個專用文件並不在磁盤上占用空間,僅僅是為操作系統提供交流,而不是為數據存貯服務。一般地,專用文件會指向一個硬件設備(如:磁盤、磁帶、打印機、虛擬控制臺)或者操作系統提供的服務(如:/dev/null, /dev/random)。
塊文件通常類似於磁盤設備(在數據可以被訪問的地方賦予一個塊號,意味著同時設定了一個塊緩存)。所有其他設備都是字符文件。(以前,兩種文件類型間是有差別的。比如:字符文件I/O沒有緩存,而塊 文件則有。)
mknod命令就是用來產生這種類型文件的。
以下參數指定了所產生文件的類型:
p FIFO型
b 塊文件
c 字符文件
最下面一行 3, 3嗯就是這了
3.檢查硬盤壞軌與數據同步寫入
fsck檢查硬盤壞軌,有的話把數據扔到lost+found文件夾裏,fsck - 檢查並修復Linux文件系統。
系統啟動時就會執行的指令 fsck -A根據/etc/fstab,掃描所有設備
-a自動修復檢查到的問題扇區,不用一直按y
-r修復檢查到的問題扇區,會讓你一直按y
使用這個指令的情況是在系統出現極大問題時,(掃描硬盤時會導致部分文件系統損壞)所以在Linux啟動時必須進入單人單機模式下(runlevel1)進入維護的情況下再使用吧,用的時候就是fsck -a /dev/xxx,確認成功後reboot。
Linux為了系統效率,默認會將一些數據寫在內存裏,而不是直接寫入硬盤,但是系統莫名其妙的關機,我們就需要特定的方法讓這些數據回到硬盤即sync。
指令就是sync(一般是兩次以上)就這樣打上去sync;sync;sync;reboot
4.關於啟動盤
制作一張可引導的啟動軟盤
mkbootdisk 制作啟動軟盤(我裝的版本就沒有這個。難受)
fdformat 用來低級格式化軟盤,這個可以
6.硬盤的裝載
要建裝載目錄,如果不為空,裝進去後,原來的東西會被清空哦
mount這個指令可以裝載 linux的,windows的光驅 軟驅 硬盤,不錯哦(但是現在我用不到,我就不看了)
umount 卸載
6.硬盤效能測試與啟用
hdparm可以開啟32位存取模式。
過
Linux 硬盤與硬件管理