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