首頁 > 軟體

基礎磁碟管理

2020-06-16 17:22:08

一、裝置檔案

Linux中裝置型別分為字元裝置與塊裝置,他們特點分別為:

  • 塊裝置特性:以“塊”為單位進行存取,隨機存取,例如磁碟

  • 字元裝置特性:以“位元組”單位進行存取,線性存取,例如鍵盤

裝置檔案:關聯至一個驅動程式,進而能夠跟與之對應硬體裝置進行通訊;它僅後設資料,沒有資料;只有裝置號

裝置號:裝置號分為主裝置號,次裝置號

  • major:標記裝置型別

  • minor:標記同一型別下的不同的裝置

例如:

[root@CentOS6 ~]# ll /dev/sd*
brw-rw---- 1 root disk 8,  0 Jan 31 02:35 /dev/sda
brw-rw---- 1 root disk 8,  1 Jan 31 02:35 /dev/sda1
brw-rw---- 1 root disk 8,  2 Jan 31 02:35 /dev/sda2
brw-rw---- 1 root disk 8,  3 Jan 31 02:35 /dev/sda3
brw-rw---- 1 root disk 8, 16 Jan 31 02:35 /dev/sdb
brw-rw---- 1 root disk 8, 17 Jan 31 02:35 /dev/sdb1
brw-rw---- 1 root disk 8, 20 Jan 31 02:35 /dev/sdb4
brw-rw---- 1 root disk 8, 21 Jan 31 02:35 /dev/sdb5

二、磁碟介面型別

  • IDE(ATA):並口, 133MB/s,裝置檔案:/dev/hd

  • SCSI: 並口,Small Computer System Interface, 640MB/s,15000rpm,裝置檔案:/dev/sd

  • SATA:串列埠, 6Gbps, 裝置檔案:/de/sd

  • SAS: 串列埠, 6Gbps,裝置檔案: /dev/sd

  • USB: 串列埠, 480MB/s,裝置檔案:/dev/sd

三、磁碟結構

1.物理結構

  • 圓盤(platter):就是硬碟的碟片,為實現大容量,一般都是多個

  • 磁頭(head)數:每個碟片一般有上下兩面,分別對應1個磁頭,共2個磁頭,實現資料的存取

2.邏輯結構

  • 磁軌(track):當磁碟旋轉時,磁頭若保持在一個位置上,則每個磁頭都會在磁碟表面劃出一個圓形軌跡,這些圓形軌跡就叫做磁軌,從外邊緣的0開始編號,根據磁化方向來存數資料0和1

  • 柱面(cylinder):不同碟片的相同編號的磁軌構成的圓柱麵就被稱之為柱面,磁碟的柱面數與一個盤面上的磁軌數是相等的

  • 磁區(sector):每個磁軌都別切分成很多扇形區域,每個磁軌的磁區數量相同,每個磁區大小為512位元組

硬碟的容量=柱面數×磁頭數×磁區數×512(位元組數)

四.磁碟分割區

磁碟分割區分為兩種方式MBR與GPT。

1.MBR分割區

硬碟的0柱面、0磁頭、1磁區稱為主引導磁區(也叫主開機記錄MBR)。它由三個部分組成:硬碟主載入程式(BootLoader)、硬碟分割區表DPT(Disk Partition table)和魔數(Magic Number)。

  • Boot Loader:主載入程式,啟動作業系統的一段程式碼,佔446個位元組

  • DPT:占64個位元組,硬碟中分割區有多少以及每一分割區的大小都記在其中

  • Magic Number:結束標誌,占2個位元組,固定為0xAA55或0x55AA,這取決於處理器型別,如果是小端模式處理器(如Intel系列),則該值為0xAA55;如果是大端模式處理器(如Motorola6800),則該值為0x55AA

可檢視:

[root@CentOS6 ~]# hexdump -C -n 512 /dev/sda | tail -10
00000170  00 be 93 7d e8 2a 00 eb  fe 47 52 55 42 20 00 47  |...}.*...GRUB .G|
00000180  65 6f 6d 00 48 61 72 64  20 44 69 73 6b 00 52 65  |eom.Hard Disk.Re|
00000190  61 64 00 20 45 72 72 6f  72 00 bb 01 00 b4 0e cd  |ad. Error.......|
000001a0  10 ac 3c 00 75 f4 c3 00  00 00 00 00 00 00 00 00  |..<.u...........|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 80 20  |............... |
000001c0  21 00 83 9f 06 19 00 08  00 00 00 40 06 00 00 9f  |!..........@....|
000001d0  07 19 82 b4 56 1e 00 48  06 00 00 00 40 00 00 b4  |....V..H....@...|
000001e0  57 1e 83 fe ff ff 00 48  46 00 00 b8 f9 05 00 00  |W......HF.......|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

註:如果沒有“55AA”,該分割區會被認為是裸分割區!!

裸裝置(raw device):也叫裸分割區(原始分割區),是一種沒有經過格式化,不被Unix通過檔案系統來讀取的特殊塊裝置檔案。由應用程式負責對它進行讀寫操作。不經過檔案系統的緩衝。它是不被作業系統直接管理的裝置。這種裝置少了作業系統這一層,I/O效率更高。不少資料庫都能通過使用裸裝置作為儲存媒介來提高I/O效率。 裸分割區只能夠使用dd來進行備份。

2.分割區型別

  • 主分割區與活動分割區:也被稱為主磁碟分割區,是磁碟分割區的一中型別,???主要作用是用來安裝作業系統。一個硬碟最多可建立4個主分割區。活動分割區是基於主分割區的,磁碟分割區中的任意主分割區都可以設定為活動分割區。如果電腦上4個主分割區都安裝了不同的系統,那被標記為活動分割區的主分割區將用於初始引導,即啟動活動分割區內安裝的系統。

  • 擴充套件分割區與邏輯分割區:因為主分割區最多可以建立4個,我們需要使用擴充套件分割區打破4的限制。在磁碟上可以建立多個邏輯分割區而建立的這些邏輯分割區都被稱為擴充套件分割區,您可以用主分割區和邏輯分割區中儲存資料,但是不能用擴充套件分割區儲存,因為擴充套件分割區是我們對邏輯分割區的總稱,只是一中稱呼。

註:主分割區的個數小於等於4個,擴充套件分割區個數最多為一個。

3.GPT分割區

GPT:GUID patition table 支援128個分割區,使用64位元,支援8Z(512Byte/block )64Z (4096Byte/block),使用128位元UUID 表示磁碟和分割區GPT分割區表自動備份在頭和尾兩份,並有CRC校驗位,UEFI(統一擴充套件韌體介面)硬體支援GPT,結構如下圖所示:

UUID與GUID:

UUID (Universally Unique Identifier)是一個由4個連字號(-)將32個位元組長的字串(32個十六進位制數)分隔後生成的字串(8-4-4-4-12),總共36個位元組長。比如:550e8400-e29b-41d4-a716-446655440000 GUID 是微軟對UUID這個標準的實現。UUID是由開放軟體基金會(OSF)定義的。UUID還有其它各種實現,不止GUID一種。比如我們這裡在Java中用到的。

UUID的生成:由當前系統時間+其他內容,組合生成,所以一般不會有重複。

隨機生成:

[root@CentOS6 ~]# uuidgen
c38577b6-e369-4825-b09a-caf6f44b6e3f

五、管理磁碟分割區

1.fdisk命令Linux分割區表操作工具軟體

fdisk - Partition table manipulator for Linux    

SYNOPSIS
       fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device

子命令說明:

m:顯示幫助資訊 
p: 顯示當前硬體的分割區,包括沒儲存的改動
n: 建立新分割區,e: 擴充套件分割區,p: 主分割區
d: 刪除一個分割區
w: 儲存退出
q: 不儲存退出
t: 修改分割區型別
l: 顯示所有支援的分割區型別

範例:

[root@CentOS6 ~]# fdisk -l /dev/sda1  #列出分割區資訊

Disk /dev/sda1: 209 MB, 209715200 bytes
255 heads, 63 sectors/track, 25 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

     Device Boot      Start         End      Blocks   Id  System

2.lsblk命令列出所有塊裝置

[root@CentOS6 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  3.7G  0 rom  
sda      8:0    0   50G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 47.8G  0 part /
sdb      8:16   0   50G  0 disk 
└─sdb1   8:17   0   20G  0 part 
sdc      8:32   0   20G  0 disk 
├─sdc1   8:33   0  9.2G  0 part 
└─sdc2   8:34   0  3.9G  0 part

3.partx、partprobe、kpartx命令:通知核心重讀裝置的分割區表

centos5,7:

partprobe /dev/DEVICE

CentOS 6 通知核心重讀指定裝置的分割區表:

# partx -a /dev/DEVICE
# kpartx -af /dev/DEVICE
-l: 列出指定裝置的分割區資訊

驗證是否執行成功:

[root@CentOS6 ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0   52428800 sda
   8        1     204800 sda1
   8        2    2097152 sda2
   8        3   50125824 sda3
   8       16   52428800 sdb
   8       17   20980858 sdb1
   8       32   20971520 sdc
   8       33    9638968 sdc1
   8       34    4024282 sdc2
 253        0    9638968 dm-0
 253        1    4024282 dm-1

4.parted命令:管理磁碟分割區

格式:

parted [options] [device [command [options...]...]]

列印分割區詳情:

[root@CentOS6 ~]# parted /dev/sdc print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos  #MBR分割區型別

Number  Start   End     Size    Type     File system  Flags
 1      32.3kB  9870MB  9870MB  primary
 2      9870MB  14.0GB  4121MB  primary
 3      14.0GB  21.5GB  7477MB  primary

新建分割區:

[root@CentOS6 ~]# parted /dev/sdb mkpart primary 2 200 #預設單位M
Warning: You requested a partition from 2000kB to 200MB.                  
The closest location we can manage is 21.5GB to 21.5GB.
Is this still acceptable to you?
Yes/No? y                                                                 
Warning: The resulting partition is not properly aligned for best performance.

Ignore/Cancel? i                                                          
Information: You may need to update /etc/fstab.

刪除分割區:

[root@CentOS6 ~]# parted /dev/sdb rm 2
Information: You may need to update /etc/fstab.

列出所有分割區:

[root@CentOS6 ~]# parted -l
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  211MB   210MB   primary  ext4            boot
 2      211MB   2358MB  2147MB  primary  linux-swap(v1)
 3      2358MB  53.7GB  51.3GB  primary  ext4

...

設定分割區表型別:

[root@CentOS6 ~]# parted /dev/sdb mklabel gpt #gpt換位msdos則為MBR型別
Warning: The existing disk label on /dev/sdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? y                                                                 
Information: You may need to update /etc/fstab.

5.gdisk命令:gpt分割區表管理

註:gdisk與fdisk相似用來管理GPT分割區表。

6.mknod命令:建立塊裝置檔案或字元裝置檔案

 

格式:

mknod [OPTION]... NAME TYPE [MAJOR MINOR]

常用選項:

-m:設定許可權
-Z:設定安全的上下文

範例:

[root@bash ~]# mknod -m 600 /dev/mysdev b 65 0  
#建立塊裝置制定許可權為600,主裝置號65,次裝置號0

[root@bash ~]# ll /dev/mysdev 
brw------- 1 root root 65, 0 Feb  6 09:25 /dev/mysdev

補充:

新增硬碟不重新啟動讓核心識別命令:

[root@CentOS6 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-02/140308.htm


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