linux 系統中所有的硬件設備都是通過文件的方式來使用和表達的。位於/dev目錄下的。成爲設備文件。設備文件分爲;
字符設備文件和塊設備文件。字符設備文件也被稱爲"raw"設備文件。比如打印機。終(TTY)。
塊設備文件。是以數據塊的方式存取的。系統通過塊設備存取文件的時候,先從內存的buffer中讀或寫數據,而不是直接傳送數據到物理磁盤。這樣提高了磁盤的I/O性能。
企業常用硬盤:sas stat ssd
linux磁盤設備常用方案:主設備號+次設備號+磁盤分區編號
1.主設備號代表設備的類型:比如:hd 代表IDE硬盤。sd代表SCSI硬盤。tty代表終端設備。
2.次設備號代表相同設備的序號:‘a-z‘就表示設備的序號。例如:/dev/sda 和 /dev/sdb 就表示第一和第二塊
SCSI 硬盤。當然在IDE硬盤中也可能出現系統只有一塊磁盤。卻顯示 /dev/hdb。這與硬盤的跳線有關。
3.磁盤分區號:用x 表示在每塊磁盤上劃分的磁盤分區編號。
比如 /dev/sdbx 就表示第二塊SCSI硬盤的第“x“個分區。
磁盤的使用
linux下設備對應的是硬盤分區,對任何設備都需要通過掛載的方式實現的要完成掛載,需要3個條件:
1.掛載磁盤分區的文件系統類型。
2.要掛載分區對應的設備文件
3.已經存在的目錄作爲掛載點
常用於硬盤的命令:fdisk (應用範圍:容量小於 2T) 分爲命令行模式和交互模式(一般進入磁盤的操作都是交互模式)
查看系統的磁盤設備:# fdisk -l (可以查看系統上的硬盤信息)
# fdisk /dev/sda (如果後面接具體的硬盤就是對硬盤的操作)當然所有的操作前必須卸載硬盤。
掛載命令:
# mount /dev/sdbx /data 掛載分區
# mount /dev/cdrom /mnt 掛載光盤
# mount -t ntfs-3g /dev/sdc /data1 掛載移動硬盤需要指定文件類型 -t ntfs-3g
卸載命令:
# umount /mnt 卸載分區
如果硬盤故障怎麼修復;
進入 linux rescure模式下:執行 fsck /dev/sdb -y (fsck 一般會自動識別文件類型)
查看分區的情況:
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 29G 6.0G 22G 22% /
tmpfs tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 ext4 194M 29M 155M 16% /boot
/dev/sda5 ext4 48G 185M 46G 1% /data
這裏密切關注 Use% 代表磁盤已經使用的空間。如果爲100%,則表示磁盤滿了。系統運行受阻。
磁盤分區的劃分標準:
磁盤分區由主分區,擴展分區和邏輯分區組成。
在一塊硬盤上,主分區最大個數是4個,擴展分區算是一個主分區。擴展分區可以建立多個邏輯分區。
主分區包括擴展分區編號:1-4.邏輯分區從5開始。邏輯分區建立在擴展分區的基礎上而非主分區上。
擴展分區可以理解爲邏輯分區的"容器"。實際使用的是主分區和邏輯分區。
下面看一下 /dev/sda 硬盤的情況:
# fdisk -l
Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x000411d2
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
/dev/sda2 26 3851 30720000 83 Linux
/dev/sda3 3851 4106 2048000 82 Linux swap / Solaris
/dev/sda4 4106 10444 50912256 5 Extended
/dev/sda5 4106 10444 50911232 83 Linux
這裏的start 和end 的單位是柱面。 Id 選項 83代表主分區和邏輯分區
82 代表swap交換分區 5代表 擴展分區(擴展分區不能使用。只是作爲邏輯分區的容器)
8e 代表lvm 分區 ( 7 NTFS 分區)
硬盤分區:
# fdisk dev/sdb
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
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)
這裏日常用到的是:
d :刪除一個分區
選定分區號即可。
n : 增加一個新的分區包括2個選項 e 擴展分區 p 主分區
e extended
p primary partition (1-4)
還有就是設定大小的時候,如果不輸入數值。默認佔有剩餘所有的空間。
p :顯示分區信息
q : 退出交互操作,不保存操作的內容
t : 改變分區類型
輸入後提示輸入L 查看分區標識。設定相應的類型
w :寫入飛哪去表信息到硬盤,保存操作退出
創建分區實例:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (263-2610, default 263):
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-2610, default 2610): +2G
需要注意的是這裏:如果想分很多分區的話。第四個一定是 extended (擴展分區)
因爲系統只支持4個主分區。(擴展分區可以算作一個主分區)
多餘4個的分區可以在邏輯分區表示(前提是建立在擴展分區基礎上的)
創建完成,可以w 退出
如何使用,創建的分區?
格式化分區,然後掛載磁盤。
# fdisk /dev/sdb -l (查看磁盤分區情況)
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x5ab8b6fd
Device Boot Start End Blocks Id System
/dev/sdb1 1 654 5253223+ 83 Linux
/dev/sdb2 655 1177 4200997+ 83 Linux
/dev/sdb3 1178 1570 3156772+ 83 Linux
/dev/sdb4 1571 2610 8353800 5 Extended
/dev/sdb5 1571 1832 2104483+ 83 Linux
/dev/sdb6 1833 2610 6249253+ 83 Linux
# mkfs.ext4 /dev/sdb6 (格式化文件系統位ext4)
# mkdir /sdb6 (創建掛載點)
# mount /dev/sdb6 /sdb6 (掛載分區)
# df -hT | grep sdb6 (查看結果)
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb6 ext4 5.9G 140M 5.5G 3% /sdb6
如果磁盤大於2T。使用parted 工具。可以完成超大磁盤分區。
既然分區大了,那麼分區表也做了響應的調整。
分區表分爲:MBR 和GPT 兩種。
MBR 支持2T以下硬盤容量。最多支持4個主分區或3個主分區+ 1個擴展分區。正式因爲這個原因:
我們要使用多個分區。就必須利用擴展分區作爲容器擴容。
GPT 支持大於2T 的硬盤容量。最多128個分區。最大達到18EB。
首先安裝parted # yum install parted -y
parted 的使用:
# parted (進入parted 分區交互模式)
GNU Parted 2.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb (切換磁盤分區 sda是系統盤不可以分的。sdb 是新加測試硬盤)
Using /dev/sdb
(parted) p free (p是print的簡寫。查看磁盤情況。free 顯示剩餘空間)
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdoc
(parted) mklabel gpt (前面說了要想劃分更大的分區。分區表一定要改變。mklabel 創建分區表類型)
Warning: Partition(s) on /dev/sdb are being used.
Ignore/Cancel? Ignore (這裏是測試實驗。所以選擇忽略。真實環境如果磁盤又數據或掛載選擇 Cancel)
Yes/No? yes (是否進行執行)
(parted) mkpart primary 0gb 15gb (創建主分區。開始位置,結束位置。硬盤大小 15G)
(parted) mkpart primary 15gb 21.5gb (創建第二個主分區。開始位置15G 結束位置21.5G 。大小位6.5G)
(parted) rm 2 (刪除第二個主分區)
(parted) quit (離開 parted 交互模式)
然後就是格式化分區。掛載和fdisk無異。
這裏查看的時候建議用:
# parted /dev/sdb p
不建議用 # fdisk /dev/sdb -l (這種方式不支持gpt 分區表。所以顯示的分區是一個整體)