亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據在磁盤上的布局

發布時間:2020-06-09 23:26:40 來源:網絡 閱讀:8295 作者:wuzhongjie 欄目:移動開發

 做存儲和計算機架構的研發人員需要深入理解數據在磁盤上的分布,只有這樣當系統出現故障的時候才能手動進行系統恢復。目前,磁盤的容量越來越大,故障率越來越高,當故障發生之后需要對磁盤數據進行恢復,磁盤數據的恢復不僅要了解分區等基本的磁盤數據布局,而且需要知道文件系統在磁盤上的數據分布。這里首先討論分區等系統基本數據在磁盤上的分布。

分區

DOS分區

 

DOS分區是目前常用的一種分區方式,其磁盤數據分布描述如下:

 

數據在磁盤上的布局

第一個扇區是主引導分區MBRMBR描述了磁盤分區的結構,MBR的內容包括引導代碼和分區表信息,最后以標志0xaa55結尾。

MBR中的引導代碼是在BIOS啟動之后首先得到運行的代碼,通常引導代碼會檢查磁盤分區表,并且判斷哪個分區是啟動分區,找到那個啟動分區之后,然后從啟動分區引導操作系統。

DOS分區規定了四個主分區,每個分區最大可以描述2TB的磁盤空間。當磁盤容量增大后,需要采用擴展分區滿足應用需求,擴展分區就是在主分區描述的空間中再建分區信息表。在四個主分區中,只能存在一個active的分區,該分區即為啟動分區。

GPT分區

 

由于巨磁阻效應的發現,磁盤的容量日益增大,DOS分區存在2TB上限的問題,不能滿足日益增長的大分區需求,因此,微軟推出了GPTGUID Partition Table),該分區表的磁盤結構如下圖所示。

 

數據在磁盤上的布局

第一部分是保留MBR,占用一個扇區;第二部分是EFI信息,該部分占用一個扇區,該頭描述了分布區的位置信息;第三部分是 分區表,一共占用32個扇區,每個分區表項占用128字節,因此,最多可以容納128個分區表項;第四部分是分區區域;為了提高可靠性,第五部分為分區表備份區域,占用整個磁盤的最后32個扇區。

Bootload在哪里?

 

知道磁盤的分區信息之后,我們通常會關注操作系統的bootloader具體在哪里?以Linux為例,bootloader通常為grub,嵌入式系統通常采用uboot,這里以grub為例,grub功能比較強大。在安裝操作系統的時候,grub就被安裝在了boot分區。在Linux中的/boot目錄就包含了grub文件和操作系統p_w_picpath文件。

Grub是支持文件系統的,在/boot/grub目錄中存在e2fs_stage1_5xfs_stage1_5等文件,這些文件統稱為stage1.5,其實就是各個不同文件系統的驅動。這里簡要介紹一下grub的構成。Grub的啟動文件分為stage1stage2兩大部分,stage1是在grub安裝的時候由grub拷貝到MBR中的,由于MBR的大小是512字節,因此,stage1文件大小為512字節。Stage1的作用是引導stage2,由于stage2存儲在boot 上,其具有文件系統格式,而stage1程序不能很大,因此,無法識別boot分區文件系統,只能采用了程序表的方式在stage1中存儲stage2文件和stage1.5文件的位置。

對于grub而言,由于需要獲取stage2文件,所以,需要修改MBR中的引導程序,所以,在安裝操作系統的時候,grub被安裝在了boot分區和MBR中。

系統如何啟動?

 

熟悉磁盤數據分布對系統啟動過程的了解有一定幫助,在此簡要描述一下系統啟動過程。

 

1, 系統上電之后,直接將BIOS程序導入內存進行運行,BIOS程序會掃描硬件,并且實現一些基本硬件的驅動(例如PCI掃描)和自檢操作。BIOS程序會掃描系統中的啟動硬盤,一旦發現一個可以啟動的硬盤,BIOS會將啟動硬盤內MBR中的引導程序裝載入內存,并且將CPU交給引導程序。

 

2, MBR中的引導程序會進行分區表檢查,由于該引導程序是grub安裝時更新過的,其實際就是grubstage1程序。當所有事情完成之后,引導程序會通過固定地址的方式將啟動分區中的grub stage2程序裝載入內存,并且將CPU交給stage2程序。

 

3, Stage2程序是grub的主體,其可以識別文件系統。boot分區上有文件系統,這是由用戶在安裝操作系統時候格式化的,grub會將boot分區mount,這樣可以很容易的找到Linux操作系統的鏡像文件,在grub運行過程中,有些系統需要一些特殊的驅動,例如,系統根文件系統建立在一個特殊的軟RAID之上,那么在啟動Linux操作系統之前需要加載特殊的軟RAID驅動。為了達到這個目的,可以采用ramdisk的方式為Linux操作系統預加載驅動,ramdisk文件可以在grub配置文件中指定。Grub 完成一些預加載操作,并且將Linux內核加載入內存,然后將CPU資源釋放給Linux內核。

 

4, 此時Linux內核開始運行,由于grub已經預加載了一些驅動,因此,Linux也能看到一些特殊的設備,然后Linux會做root switch操作,掛載真正的根文件系統。如果BIOS已經為PCI等設備分配了資源,那么Linux可以直接采用,當然也可以對PCI總線進行重新掃描,并且加載驅動程序。由于根文件系統已經加載,因此,Linux可以根據/etc/inittab啟動各種服務,至此Linux系統基本啟動完畢。

 

本文概述了分區以及bootloader在磁盤中的數據分布,對于存儲系統而言,這是最基本的。

 

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

特克斯县| 武鸣县| 泾阳县| 萨嘎县| 专栏| 芮城县| 侯马市| 睢宁县| 天门市| 巫溪县| 古蔺县| 敦化市| 郧西县| 大安市| 宿州市| 巴林左旗| 濉溪县| 祁连县| 眉山市| 兴和县| 理塘县| 微博| 安义县| 万宁市| 高清| 汾西县| 卫辉市| 米脂县| 临安市| 望城县| 万州区| 杭锦后旗| 侯马市| 西盟| 民丰县| 加查县| 长顺县| 石首市| 婺源县| 宽甸| 珠海市|