1. 程式人生 > >2. LINUX主機規劃與磁盤分區

2. LINUX主機規劃與磁盤分區

linux 磁盤基本知識 分區

A. 安裝Linux前,需要對使用了解後進行規劃, 你必須要針對districtions的特性,服務器軟件能力,未來的升級需求,硬件擴充性

B. 對所安裝的主機進行磁盤分區規劃 目錄規劃 權限規劃 IP規劃

2.1 Linux與硬件的搭配 (目前品牌的服務器都基本支持LINNUX,包括各驅動,但是臺式機一般不一定,有時沒有提供LINUX的驅動,所以硬件購買前需要確認兼容性)

需要考慮計算能力,數據儲存的容量,輸入輸出的I/O,網絡接口

2.2 各硬件在LINUX中的文件名

【linux中,每個裝置都被當成一個文件來對待,如IDE接口的硬件的文件名就是 /dev/sd[a-d],其中的字母a-d當中任一個,/dev/sda, /dev/sdb就表示兩個文件】

設備名稱
在Linux內的文件名
SCSI/SATA/USB 接口硬盤 (包括USB內存)
/dev/sd[a-p]
virtI/O 界面
/dev/vd[a-p] 用於虛擬機內
軟盤驅動器
/dev/fd[0-7] 現基本已不用
printer
/dev/lp[0-2](25Pin) /dev/usb/lp[0-15]USB
mouse/keyboard

/dev/input/mouse[0-15] 通用的

/dev/psaux(ps/2界面)

/dev/mouse(當前鼠標)

cdrom/dvdrom

/dev/scd[0-1] 通用

/dev/sr0[0-1] (通用,centos較常見)

/dev/cdrom(當前CDROM)

磁帶機

/dev/ht0(IDE界面)---基本淘汰

/dev/st0(sata/scsi界面)

/dev/tape(當前磁帶)

IDE硬盤機
/dev/hd[a-d] 基本已不用
adw

近些年來虛擬化技術的成熟應用, 方便了我們學習,這次的學習我就是安裝在虛擬化的系統中的。

例:PC上有兩個SATA盤和一個USB盤,主板上有6個SATA槽,兩個SATA盤在SATA1和SATA5上,那麽這幾個設備在LINUX中的文件名是什麽?

SATA1插槽上的檔名: /dev/sda SATA5插槽上的檔名:/dev/sdb USB上的開機後才誤別的:/dev/sdc

硬盤簡述:

硬盤是由磁盤, 機械手臂,磁盤讀取頭與主軸馬達所組成, 磁盤面上又分為扇區,磁道 硬盤的容量=柱面數*磁頭數*扇區數*512B

早期的硬盤第一個扇區有重要的信息,稱為MBR(master boot record)格式,近年來由於磁盤容量不斷擴大,大於2T的磁盤分區無法進行讀取,因此後來又多了一個新的磁盤分區格式--GPT

MSDOS(MRB)與GPT磁盤分區表(partition table)

LINUX為了兼容windows磁盤,使用了支持windows的MBR的方式來處理管理程序與分區表,而開機管理程序紀錄區與分區表則通通放在磁盤的第一個扇區,這個扇區是512byte:

主要包括這兩個數據:

* 主要啟動記錄區(master boot record,MBR): 可以安裝開機管理程序的地方,有446bytes

* 分區表(partition table): 記錄整顆硬盤分區的狀態,有64bytes

每個分區信息用16個字節表示,四個分區就用掉了16X4=64個字節,這64個字節分布在MBR的第467-510字節,後面緊接著兩個字節AA和55被稱為幻數(Magic Number),BOIS讀取MBR的時候總是檢查最後是不是有這兩個幻數,如果沒有就被認為是一個沒有被分區的硬盤.

由於分區表所在的區塊僅有64bytes容量,因此最多僅能有四組記錄區,每組記錄了該區段的起始與結束的磁柱號碼,這四個分區的記錄被稱為主要(Primary)或延伸(extended)分區槽。

  • 其實所謂的【分區】只是針對那個64bytes的分區表進行設定而已!

  • 硬盤默認的分區表僅能寫入四組分區信息

  • 這四組分區信息我們稱為主要(Primary)或延伸(extended)分區

  • 分區的最小單位【通常】為磁柱。

  • 當系統要寫入磁盤時,一定會參考磁盤分區表,才能針對某個分區進行數據的處理。


2.3 磁盤分區的好處

(數據的安全性 系統效能考慮)

如我們對一個磁盤進行了分區,P1,P2,P3,P4,P1-P3為主分區,P4為擴展分區,由於擴展分區的目的是使用額外的扇區來記錄分區信息,擴展分區本身並不能拿來格式化,然後我們可以通過擴展分區所指向的那個區塊繼續作分區的記錄。

擴展分區繼續分區,分出來的叫做邏輯分區(logical partition), 在LINUX中邏輯分區的設備名稱號碼是從5號開始的。

P1(/dev/sda1) P2(/dev/sda2) P3(/dev/sda3) P4(/dev/sda4 ) L1(/dev/sda5)

綜上所述,總結一下MBR分區的特性:

  • 主要分區和擴展分區最多可以有四個(

  • 擴展分區最多只能有一個

  • 邏輯分區是由擴展分區劃分出來的

  • 能夠被格式化後,作為數據存取的分區為主要分區和邏輯分區,擴展分區不能被格式化。

  • 邏輯分區的數量依操作系統而不同,在LINUX系統中SATA硬盤已經可以突破63個以上的分區限制。

MBR帶來的缺點:

  1. 操作系統無法抓取到2.2T以上的磁盤容量 2. MBR僅有一個區塊,被破壞後,經常無法或很難救援 3. MBR內的存放開機管理程序的區塊僅446bytes,無法容納較多的程序代碼


GPT磁盤分區表 GUID partition table

當前由於技術的進步,過去一個扇區就是512bytes,現在已經有4K的扇區設計出現,為了兼容於所有的磁盤,因此在扇區的定義上面,大多會使用邏輯塊(logical block address,LBA)來處理,GPT將磁盤所有區塊以此LBA(預設為512bytes)來規劃,第一個LBA稱為LBA0

MBR僅使用第一個512bytes區塊來紀錄,GPT使用了34個LBA區塊來紀錄分區,GPT還把磁盤最後的33個LBA拿來做備份。

  • LBA0(MBR相容區塊)

    與MBR模式相似,這個兼容區塊也分為兩個部分,第一個部分與MBR的446bytes一樣,儲存了第一階段的開機管理程序,原本的分區紀錄區內,兼容模式放入了一個特殊標誌,用來表示此磁盤為GPT格式,而不懂GPT分區表的管理程序,就不認識這個磁盤,起到進一步保護作用。

  • LBA1(GPT表頭紀錄)

    這個部分紀錄了分區表本身的位置與大小,同時紀錄了備份用的GPT分區,同時放置了分區表的檢驗機制碼(CRC32),操作系統會根據這個檢驗碼來判斷GPT是否正確,有錯誤還可以透過這個紀錄來取得備份

  • LBA2-33(實際紀錄分區信息處)

    從LBA2區塊開始,每個LBA都可以紀錄4筆分區記錄,所以在默認的情況下,總共可以有4*32=128個分區記錄,每個LBA有512bytes,GPT的每筆紀錄中分別提供了64bits來記載開始/結束的扇區號碼,他的最大容量限制在 2的64次方*512bytes=8ZB


GPT分區已經沒有所謂的主分區,擴展分區,邏輯分區的概念,每個分區記錄都獨立存在,當然每個都可以視為主分區,每一個都可以拿來格式化。

並不是所有的操作系統都可以讀取到GPT的磁盤格式,也不是所有的硬件都可以支持GPT格式,是否能夠讀寫GPT格式又與開機的檢測程序有關,那開機的檢測程序就是BIOS與UEFI.


2.4 開機過程中的BIOS與UEFI開機檢測程序

CMOS是記錄各項硬件參數且嵌入在主板上的一個儲存器,很多時候還要電池供電。

BIOS是一個寫入到主板上的一個軟件程序,這個BIOS就是在開機的時候,計算機系統會主動執行的第一個程序。

BIOS會去加載基本硬件的驅動方面的程序,識別並分析計算在那些設備(如儲存設備),我們以硬盤為便,BIOS會依據使用者的設定去取得能開機的硬盤,並去此硬盤裏面去讀取第一個扇區的MBR位置,MBR裏面有一個446bytes的部分裏面放置最基本的開機管理程序,此時BIOS功成圓滿,接下來就是MBR內的開機管理程序工作了。

開機管理程序---目的就是加載核心文件,開機管理程序是操作系統在安裝的時候所提供的,所以他會認識硬盤內的文件系統格式,因此就能夠讀取核心文件,然後接下來就是核心文件的工作,開機管理程序與BIOS也完成工作,將之後的工作就交給操作系統了。

簡單來說,整個開機流程到操作系統之前的動作是這樣的:

  1. BIOS : 開機自動執行的軟件,是認識硬件及加載驅動,並尋找到可開機的硬盤

  2. MBR:硬盤裝置中第一個扇區內的446bytes的開機管理程序

  3. 開機管理程序 :一支可讀取核心文件來執行的軟件

  4. 核心文件:開始操作系統功能


2.5 磁盤分區

LInux下文件系統與目錄樹的關系(掛載)

所謂【掛載]就是利用目錄當成進入點,把磁盤分區放在這個目錄下,通過這個目錄來讀取這個分區數據。

[root@nrb-sdnwan-t01 ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: 0F1C34E5-5C72-417F-9B2D-11C94D621598


# Start End Size Type Name
1 2048 6143 2M BIOS boot parti
2 6144 2103295 1G Microsoft basic
3 2103296 85997567 40G Linux LVM
4 85997568 88094719 1G Linux filesyste Linux filesystem
5 88094720 92289023 2G Microsoft basic Microsoft basic data
6 92289024 93313023 500M Linux swap Linux swap

Disk /dev/mapper/centos-root: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-home: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@nrb-sdnwan-t01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 40G 0 part
│ ├─centos-root 253:0 0 10G 0 lvm /
│ ├─centos-swap 253:1 0 2G 0 lvm [SWAP]
│ └─centos-home 253:2 0 5G 0 lvm /home
├─sda4 8:4 0 1G 0 part
├─sda5 8:5 0 2G 0 part
└─sda6 8:6 0 500M 0 part
sr0 11:0 1 1024M 0 rom
[root@nrb-sdnwan-t01 ~]#

掛載點與磁盤分區的規劃:

初學者,建議選擇自定義,不要使用默認的自動分區的模式,那樣對於學習LINUX分區沒有好處,因為你壓根就不知道這個分區是什麽鬼。

初次接觸LINUX,只要分區【/】和【SWAP】

預留一部份空間,作為學習過程中做分區練習。

麻煩一點的根據需要和用途進行磁盤規劃和分區,去分析需要較大容量的目錄,以及讀寫頻繁的目錄,需要將這些目錄獨立出來而不與根目錄放在一起。在默認的centos中,底下的目錄是比較符合容量大讀寫頻繁的目錄。

/boot / /home /var swap













本文出自 “紅塵有愛” 博客,請務必保留此出處http://19335.blog.51cto.com/9335/1978260

2. LINUX主機規劃與磁盤分區