存儲相關

博客不是筆記 ,所以認爲沒必要在上面記錄一些命令的用法,那是筆記應該做的事,還是要記錄自己的理解。

磁盤

當內核運行起來之後就會接管所有的硬件,任何程序都不得直接與硬件進行通信,都要通過內核纔可以。那麼內核是爲什麼可以接管所有的硬件?因爲內核當中有各個硬件的驅動程序,這些程序集成在內核當中,其目的就是爲了接管硬件,這些驅動都是市面上常見的,相對來講比較老舊的。比如我們買了一個最新的硬盤,但是內核當中並沒有此品牌類型的驅動程序的話,那麼內核便不能使用此硬盤,所以當我們在一個硬盤裝系統的時候發現內核並不能使用此硬盤的話,除去物理原因很有可能就是驅動原因,那麼解決的辦法就是先加載驅動到內核當中,然後內核再使用驅動來裝入。

每一種的硬件因爲其物理特性的不同,硬件在linux上有不同的數據標識,比如用2來標識硬件,用3來標識顯卡等等,但是如果有多個同樣的物理設備呢?所以就有了主次設備號,第一個硬件用2標識,那麼第二個硬盤就有可能用2.2來標識,第一個2就是主設備號(major),那麼第二個設備號就是次設備號(minor number)。

linux是一切皆文件,每一個硬件也是在linux上映射成一個文件,那麼這個文件是關聯到哪裏去了呢?實際上這個文件是關聯到了內核當中的對應着設備的驅動之上了,進而能夠與硬件設備進行通信。

這裏我們重點講一下硬盤,盤片上有多個嵌套的圓,最外側的圓就是0磁道(track,不斷向內增加,靠外側的磁道一般都分配給活動分區使用,因爲在單位的時間內被磁頭讀取的數據最多,最流暢,;有的硬盤有多個盤片,而每個盤片上都有相同的磁道,不同的盤片上的相同的編號的磁道就是柱面(cylinder:第個磁道又有扇開的區域又叫做扇區(secotr),每一個扇區能存儲512個位。當我們分區的時候其實就是對柱面進行分區的,每個柱面只能屬於一個分區。

硬盤的工作效率受到多方面的影響,其主要的是還是其轉速與接口的影響,第分鐘可以轉的圈數,主流的7200轉,工作級別15000轉/分鐘。硬盤的接口主要是分爲二種(除固態):並口與串口,串口是比較快,因爲是爲時間頻率的,提到時鐘頻率又不得不提一下(同步與異步)。

0磁道的0扇區

0磁道就是最外側的磁道。0磁道的第一個扇區就是存放着主引導記錄,正好佔滿512位。

這512個位存放的是主引導記錄(master boot record),其中446位是存放引導加載器(boot loader),還有64位是存在分區表,第個分區表佔用16位,所以只能記錄4個主分區嘛!還有2位是標識此引導記錄的有效性。

說白了分區就是在分區表中寫入分區所對應的起始與結束柱面而已,並沒有對磁盤做物理上的劃分,如圖:

image.png

磁盤爲什麼要分區

l  有了分區重裝系統之後只會重裝系統所有的分區,其餘分區的數據不丟失。

l  提高性能

一般分區是都是三個主分區+一個擴展分區,然後在擴展分區裏面再劃分多個邏輯分區,其實穿上擴展分區也是一段空間,不過這段空間不能存在真正的數據,而是存放的是在其身上的分區的地址。寫到這裏,想起了之前學過的軟鏈接,軟鏈接文件裏面存儲也是路徑地址。

分區格式化和swap意義

格式化爲了實現數據能夠結構化管理。

當我們把一個硬盤進行分區完之後就要在裏面打格子了,打格子的過程就是格式化,所以格式化的目的並不是刪除文件,而是給分區打格子。常見的打格子的方式有:ntfs、ext2、ext4、fat32,那麼不同的類型打格子的方式意味着什麼呢?意味着數據在分區上的排列方式不同。就像一張白紙可以打成方格、田字格、橫線等類型。

swap是交換分區,當我們在安裝系統的時候最好要進行分區的。它相當於內存的外延,當內存的壓力過大時幫助內存分擔壓力的。那麼swap到底要分多大呢?這是視情況而定的,對於要求內存的要求大的服務比如mysql、sqlserver這類數據要快速在內存進行交替反而swap應該要小一些,爲什麼呢?數據中的數據在內存當中是以頁框存在的,當內存中的壓力過大的時候,就需要把一些閒置應用的分頁調用到swap分區,用的時候再調用到內存當中,但是swap是存在於硬盤上的,硬盤是機械的,它的速度遠遠跟不上內存,調用速度就會很慢,但是這類應用的要求的就是速度,所以要把交換分區劃分的小一些2G足矣,大了性能反而會下降。但是如果主機上跑的就是批處理類的、不是關鍵類的、對內存性能要求低但是對於內存的量要求很大的,可以把交換分區調的大一些,甚至可以把大部分硬盤都劃分給swap分區,像用於科學計算的批處理主機。總之一句話交換分區的大小視情況而定的,並不是越大越好。

文件系統:日誌型與非日誌型

總的來說,所有的文件系統分爲日誌型與非日誌型。

什麼是日誌型與非日誌型呢?它的作用是什麼呢?非日誌與日誌型文件系統又有什麼不同呢?想要搞清楚這件事我們要從一個例子來講起:

有一天,我有迅雷下載一個將近2G的電影時,我剛把種子添加到迅雷的下載區域,點擊下載之後立馬報錯“空間不足”,我去我的電腦看了一下我的分區的確是沒有多少空間了,但是還有1G的空間。那麼我們從這個事情能體會到什麼?當一個文件要計算機創建的時候首先計算空間判斷這個文件能不能在你的磁盤上存下,也就是說當一個文件創建的時候要先創建其元數據信息。如果判斷空間充足,繼續下載下載了一半的時候突然斷電了,當重新開機時是要進行修復的,那麼這個修復的過程是怎樣的?其實這個修復就是內核去掃描磁盤上的元數據,根據元數據中記錄的文件的塊的地址,查看這些數據塊是不是完整的,如果是完整的說明文件沒有事,如果文件不是完整的,說明文件有損,能修好就修好,修不好拉倒,這就是非日誌型文件系統的工作方式。

而日誌型的文件系統比非日誌的文件系統要高級,日誌型的文件系統除了真正的數據部分、元數據部分還有一個區域這個區域被稱爲“日誌區域”,當我們向磁盤寫入一個文件的時候

首先在日誌區域創建元數據,當這個文件完整順利的寫入到磁盤上之後再把日誌上記錄的元數據導入到真正的元數據區域。那麼這樣做有什麼好處呢?當向磁盤寫入一個文件的時候如果這個文件沒有寫完就斷電了,當系統重新開機的時候就不去掃描真正的元數據區域而是去掃描日誌區域,根據日誌區域內記錄的元數據記錄的數據塊地址檢察數據是否完整,能恢復的就恢復,不能恢復就拉倒。直接掃描日誌區域是可以加快系統修復的時候的,因爲日誌區域存儲的元數據總是要比真正的元數據區域要少很多。

文件系統的位數

其實不同的文件系統有不的位數,這個位數其實就是單個文件所能夠尋找的磁盤塊,位數越大單個文件的尋址能力就越強,單個文件的容量就越大,像最新的btrfs文件系統支持64位,其實就相當於無上限了(2的64次方,約等於無限),像早期的fat文件系統其實就是因爲其位數小的原因所以單個文件最大不能超過2G。

超級塊

當一個分區格式化成文件系統的時候,文件系統會評估此分區有多少個塊,然後平均把所有的塊分成一個又一個有塊組,每個塊組有同樣多的塊,這樣做的目的是爲了方便管理,而記錄這個分區塊組的信息(多少到多少塊是一個組,組多大,佔用和剩餘空間)的塊就叫做超級塊,因爲超級塊裏面存儲的是整個分區的結構化信息,所以它不容有失,一個分區只有一個超級塊正在使用,超級塊有許多的備份,在我們格式化分區的時候爲提醒我們超級塊備份到了哪些塊當中,如下圖當中圈起來的塊就是超級塊所在的地址。

如果說一個分區相當於一個“連隊”,那麼超級塊就是連隊裏面班長。

image.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章