首頁 > 軟體

Linux磁碟概念及其管理工具fdisk

2020-06-16 17:34:43

引言:馮諾依曼體系中的資料記憶體就是我們常說的磁碟或硬碟,它是計算機不可缺少的一個元件,下面來看看Linux中磁碟的基礎概念及管理工具fdisk

實驗環境CentOS7.2 

磁碟概念

按磁碟屬性分類有機械硬碟跟固態硬碟

(1)機械硬碟:內部真空

 磁碟:正反面含有磁性物質的碟片,由一個馬達固定所有磁碟轉動,固定角速度

   每個碟片正反面各有一個磁頭,所有磁頭固定在一個機械臂上

平均尋道時間:5400rpm, 7200rpm, 10000rpm, 15000rpm轉速

track(磁軌):每個碟片上出廠格式化

sector(磁區):512bytes單位

cylinder(柱面):不同盤面上同一編號的磁軌組合在一起,分割區劃分按照柱面實現

越靠近較外部分割區的柱面組成的分割區,越快。Windows上C槽在最外面

(2)固態硬碟

 類似與多個並行U盤,工作模式上模擬機械硬碟的機制。

電器裝置,速度個人筆電是原來的3到5倍,讀400個iops(io per second)、寫200iops


 

在正式介紹Linux裝置檔案前需先了解一個概念:MBR

MBR(Master Boot Record):主引導分割區,為一個編號為0的512位元組的磁區

      446bytes:bootloader,引導載入器程式,主開機記錄,引導啟動作業系統的程式;

      64bytes:分割區表,每16bytes標識一個分割區,一共只能有4個分割區

      2bytes:表示MBA是否有效;55AA為有效;

    注意:

         1) 主分割區最多四個,擴充套件分割區只能一個

         2) 擴充套件分割區不能單獨使用,要繼續分成邏輯分割區,邏輯分割區可以由多個

         3) 一個分割區就是一個獨立的檔案系統

         4) 主分割區和擴充套件分割區的標識:1-4;邏輯分割區:5+

 

其在Linux中的建立新磁碟分割區會涉及主分割區與擴充套件分割區內容

 


 

/dev

不管是機械硬碟還是固態硬碟對於Linux看來它都是屬於/dev/下的檔案

  裝置檔名

  1)磁碟:IDE: /dev/hd[a-z]

     SCSI, SATA, USB, SAS: /dev/sd[a-z]

  2)分割區:/dev/sda#:      /dev/sda1, ...

  注意:CentOS 6和7統統將硬碟裝置檔案標識為/dev/sd[a-z]#

 

  /dev裝置檔案介紹

  1)裝置檔案:關聯至裝置的驅動程式;裝置的存取入口;

  2)裝置號:

          major:主裝置號,區分裝置型別;用於標明裝置所需要的驅動程式;

          minor:次裝置號,區分同種型別下的不同的裝置;是特定裝置的存取入口;

          比如/dev/sd# :sd為主裝置號#為次裝置號

參照裝置的方式:裝置檔名卷標UUID


 

磁碟管理工具fdisk

fdisk

    建立檢視分割區

      (1)檢視磁碟的分割區資訊:

命令使用格式:fdisk -l [-u] [device...]:列出指定磁碟裝置上的分割區情況;

      (2)管理分割區

命令使用格式:fdisk /dev/sd# :建立,刪除,儲存磁碟分割區設定。

fdisk提供了一個互動式介面來管理分割區,它有許多子命令,分別用於不同的管理功能;所有的操作均在記憶體中完成,沒有直接同步到磁碟;直到使用w命令儲存至磁碟上;

以下命令選項為m中的常用選項:

              n:建立新分割區        d:刪除已有分割區

              t:修改分割區型別      l:檢視所有已經ID

              w:儲存並退出        q:不儲存並退出

              m:檢視幫助資訊      p:顯示現有分割區資訊

命令演示

1、對已使用的磁碟裝置,建立新分割區,若沒有可用空間則自動退出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@localhost ~]# fdisk /dev/sda
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分割區號 (3,4,預設 3):
No free sectors available
命令(輸入 m 獲取幫助):

2、對新新增的磁碟建立新分割區。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@localhost ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁碟識別符號 0xd391e822 建立新的 DOS 磁碟標籤。
命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分割區號 (1-4,預設 1):
起始 磁區 (2048-10485759,預設為 2048):
將使用預設值 2048
Last 磁區, +磁區 or +size{K,M,G} (2048-10485759,預設為 10485759):+1G
分割區 1 已設定為 Linux 型別,大小設為 1 GiB
命令(輸入 m 獲取幫助):w
[root@localhost ~]# fdisk -l
磁碟 /dev/sda:21.5 GB, 21474836480 位元組,41943040 個磁區
Units = 磁區 of 1 * 512 = 512 bytes
磁區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標簽型別:dos
磁碟識別符號:0x00036006
   裝置 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    41943039    20458496   8e  Linux LVM
磁碟 /dev/sdb:5368 MB, 5368709120 位元組,10485760 個磁區
Units = 磁區 of 1 * 512 = 512 bytes
磁區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標簽型別:dos
磁碟識別符號:0xd391e822
 裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux

3、建立擴充套件分割區,及刪除已存在分割區

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[root@localhost ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分割區號 (2-4,預設 2):
起始 磁區 (2099200-10485759,預設為 2099200):
將使用預設值 2099200
Last 磁區, +磁區 or +size{K,M,G} (2099200-10485759,預設為 10485759):+1G
分割區 2 已設定為 Extended 型別,大小設為 1 GiB
命令(輸入 m 獲取幫助):p
磁碟 /dev/sdb:5368 MB, 5368709120 位元組,10485760 個磁區
Units = 磁區 of 1 * 512 = 512 bytes
磁區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標簽型別:dos
磁碟識別符號:0xd391e822
   裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576    5  Extended
擴充套件分割區建立完畢,下面在擴充套件分割區上建立邏輯分割區,大家可以看到其標號從5開始
命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
新增邏輯分割區 5
起始 磁區 (2101248-4196351,預設為 2101248):
將使用預設值 2101248
Last 磁區, +磁區 or +size{K,M,G} (2101248-4196351,預設為 4196351):+100M
分割區 5 已設定為 Linux 型別,大小設為 100 MiB
命令(輸入 m 獲取幫助):p
磁碟 /dev/sdb:5368 MB, 5368709120 位元組,10485760 個磁區
Units = 磁區 of 1 * 512 = 512 bytes
磁區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標簽型別:dos
磁碟識別符號:0xd391e822
   裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576    5  Extended
/dev/sdb5         2101248     2306047      102400   83  Linux

儲存退出後,將邏輯分割區刪除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁碟。
[root@localhost ~]# fdisk -l
...
   裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576    5  Extended
/dev/sdb5         2101248     2306047      102400   83  Linux
...
[root@localhost ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):d
分割區號 (1,2,5,預設 5):5
分割區 5 已刪除
命令(輸入 m 獲取幫助):p
磁碟 /dev/sdb:5368 MB, 5368709120 位元組,10485760 個磁區
Units = 磁區 of 1 * 512 = 512 bytes
磁區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標簽型別:dos
磁碟識別符號:0xd391e822
   裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576    5  Extended
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁碟。
[root@localhost ~]# fdisk -l
...
   裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576    5  Extended
...

注意在已經分割區並且已經掛載其中某個分割區的磁碟裝置上建立的新分割區,核心可能在建立完成後無法直接識別

   通知核心強制重讀磁碟分割區表:

檢視:cat  /proc/partitions

CentOS 5:partprobe [device]

CentOS 6,7:partx, kpartx

partx -a [device]

kpartx -af [device]

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-08/134664.htm


IT145.com E-mail:sddin#qq.com