目前我們可以接觸到的大部分pc依然採用上世紀遺傳下來的 BIOS + MBR
組合。 BIOS,基本輸入輸出系統 (Basic Input-Output System),是軟件與硬件之間的一個接口,可以把它看作一個翻譯在中文與英語之間,雖然兩者完全不同,不過可以讓大家瞭解 BIOS
所處的位置,BIOS 通常被寫入一塊 ROM
芯片連接在主板上,當然也有直接寫入北橋的,不過相當少見。 BIOS
幾乎是完全用彙編語言編寫,很大程度上決定了主板的性能及穩定性。
MBR,主引導記錄 (Master Boot Record),也就是我們常見的分區方法,不過管理員外的最終用戶很少知道它的存在,MBR
分區的標準決定了 MBR 只支持在2TB以下 (超過 2TB
的只能管理 2TB) 的硬盤中創建4個分區表項,要獲得更多分區,需要次級結構–擴展分區。擴展分區可以再次被分成一個或多個邏輯磁盤,也就是普通情況下的C盤以外的盤,或說第一個分區以外的部分,有些情況下
Windows 裏的C盤可能會是一個邏輯分區。
EFI,可擴展固件接口 (Extensible Firmware Interface),由英特爾 (Intel)
公司提出的一種替代 BIOS 的升級方案。 EFI
的位置很特殊,它不像是 BIOS 那樣自己即是固件又是接口,EFI
只是一個接口,位於操作系統與平臺固件之間,感覺像是公司、CEO、CEO祕書之間的關係一樣,由CEO (操作系統)
下任務,CEO祕書 (EFI)
負責把任務分配下發到公司各部門經理 (平臺固件),經理們又把任務下發到具體的小組 (各類硬件)
去完成。
GPT ,全局唯一標識磁盤分區表 (GUID Partition Table),GUID,全局唯一標識符 (Globally Unique Identifier)
。GUID 分區表 (GPT)
是作爲 Extensible Firmware Interface (EFI)
計劃的一部分引入的。當然,你也可以在 BIOS 的PC中使用 GPT
分區,雖然 GPT 來自以 EFI
計劃,但並不依賴於 EFI。GPT
相對於以往 PC 普遍使用的主引導記錄 (MBR)
分區方案更加靈活。比如可以超過 MBR 分區表項4個的限制,在 GPT
規範裏對分區的數量幾乎是沒有限制的,大家在網上可以查到的128個實際上是 Windows
系統 (支持 GPT
的 Windows) 做出的限制。 GPT
對可管理磁盤大小也超過了 MBR 的2TB (1TB = 1024GB)
而達到了 18EB (1EB = 1024TB) 。在 MBR
分區方案中操作系統的引導是通過放在磁盤最開始 (第一扇區)
裏的 MBR (這裏的 MBR
是指主引導記錄,而不是主引導記錄分區方案,兩者是同名的。我的猜測是爲了與 GPT
分區方案區分,使用了主引導記錄引導方式的名字 MBR 來命名此種分區方案,我查不到確切的資料正明我的猜測是否正確,只能大家努力區分一下了。)
。把重要的信息 (如分區信息、目錄等)
放在某個扇區裏是 MBR 分區方案的方法,而 GPT
把這個信息放到了分區裏,Intel的解釋是這樣可以更加明確更加安全。 GPT
分區爲了保護自己不受 MBR 方案下磁盤管理軟件的危害,在磁盤的最開始位置 (第一個扇區)
建立了一個保護分區 (Protective MBR),這種分區的類型標識爲 0xEE。蘋果系統 (Mac OS X)
下這個保護分區大小爲 200MB,這個分區在 Window NT
磁盤管理器里名字叫做 GPT 保護分區。這個分區可以讓不能識別 GPT
的磁盤管理軟件把 GPT 磁盤看成一個未知格式的分區,而不是錯誤地當成一個未分區的磁盤。
文件系統限制:
以下信息出自:維基百科
ext3
塊尺寸最大文件尺寸最大文件系統尺寸
1KiB 16GiB 2TiB
2KiB 256GiB 8TiB
4KiB 2TiB 16TiB
8KiB 16TiB 32TiB
ext4
Extents
ext4引進了Extent檔案儲存方式,以取代ext2/3使用的block mapping方式。Extent指的是一連串的連續實體block,這種方式可以增加大型檔案的效率並減少分裂檔案。ext4支援的單一Extent,在單一block爲4KB的系統中最高可達128MB[1]。單一inode中可儲存4筆Extent;超過四筆的Extent會以Htree方式被索引。
最大文件尺寸 16 TiB (for 4k block filesystem)
最大卷容量 1 EiB
xfs
最大可支持的文件大小爲263 = 9 x 1018 = 9 exabytes,最大文件系統尺寸爲18 exabytes。
ReiserFS
最大文件尺寸 8 TiB
最大卷容量 16 TiB
大於2T的磁盤分區方法
由於MBR分區表只支持2T磁盤,所以大於2T的磁盤必須使用GPT分區表,具體方法如下:
GPT格式的磁盤相當於原來MBR磁盤中原來保留4個partition table的4*16個字節,只留第一個16個字節,類似於擴展分區,真正的partition
table在512字節之後,GPT磁盤沒有四個主分區的限制。
但fdisk不支持GPT,我們可以使用parted來對GPT磁盤操作。
parted功能很強大,既可用命令行也可以用於交互式
在提示符下輸入parted就會進入交互式模式,如果有多個磁盤的話,我們需要運行select sdx x爲磁盤,來進行磁盤的選擇
Java代碼
- parted>
- parted>select sdb 假設磁盤爲sdb
- parted>mklabel gpt 將MBR磁盤格式化爲GPT
- #parted>mklabel msdos 將GPT磁盤轉化爲MBR磁盤
- parted>mkpart primary 0 100 劃分一個起始位置爲0,大小爲100M的主分區
- parted>mkpart primary 100 200 劃分一個起始位置爲100M,大小爲100M的主分區
- #parted>mkpart primary 0 -1 將整塊磁盤分成一個分區
- parted>print 打印當前分區
- parted>quit 退出
parted>
parted>select sdb 假設磁盤爲sdb
parted>mklabel gpt 將MBR磁盤格式化爲GPT
#parted>mklabel msdos 將GPT磁盤轉化爲MBR磁盤
parted>mkpart primary 0 100 劃分一個起始位置爲0,大小爲100M的主分區
parted>mkpart primary 100 200 劃分一個起始位置爲100M,大小爲100M的主分區
#parted>mkpart primary 0 -1 將整塊磁盤分成一個分區
parted>print 打印當前分區
parted>quit 退出
parted的更多命令:
Java代碼
- check NUMBER do a simple check on the file system
- cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition
- help [COMMAND] prints general help, or help on
- COMMAND
- mklabel LABEL-TYPE create a new disklabel (partition
- table)
- mkfs NUMBER FS-TYPE make a FS-TYPE file system on
- partititon NUMBER
- mkpart PART-TYPE [FS-TYPE] START END make a partition
- mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
- move NUMBER START END move partition NUMBER
- name NUMBER NAME name partition NUMBER as NAME
- print [free|NUMBER|all] display the partition table, a
- partition, or all devices
- quit exit program
- rescue START END rescue a lost partition near START
- and END
- resize NUMBER START END resize partition NUMBER and its file
- system
- rm NUMBER delete partition NUMBER
- select DEVICE choose the device to edit
- set NUMBER FLAG STATE change the FLAG on partition NUMBER
- toggle [NUMBER [FLAG]] toggle the state of FLAG on partition
- NUMBER
- unit UNIT set the default unit to UNIT
- version displays the current version of GNU check NUMBER do a simple check on the file system cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition help [COMMAND] prints general help, or help on COMMAND mklabel LABEL-TYPE create a new disklabel (partition table) mkfs NUMBER FS-TYPE make a FS-TYPE file system on
partititon NUMBER
mkpart PART-TYPE [FS-TYPE] START END make a partition
mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
move NUMBER START END move partition NUMBER
name NUMBER NAME name partition NUMBER as NAME
print [free|NUMBER|all] display the partition table, a
partition, or all devices
quit exit program
rescue START END rescue a lost partition near START
and END
resize NUMBER START END resize partition NUMBER and its file
system
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition
NUMBER
unit UNIT set the default unit to UNIT
version displays the current version of GNU
在parted裏邊不支持ext3的文件系統,所以如果要使用的話,要退出parted進行格式話
Java代碼
- mkfs.ext3 /dev/sdx1 mkfs.ext3 /dev/sdx1
因爲fdisk是不支持GPT磁盤,所以不要使用fdisk -l來查看X磁盤剛纔分好的區,看不到的。
命令行的模式:將硬盤轉化爲GPT磁盤後,執行下列命令
Java代碼
- parted /dev/sdx mkpart primary 0 100 劃分一個起始位置爲0大小爲100M的主分區