對Linux而言,其哲學思想之一就是一切皆文件,因此Linux之上所有設備的操作都是通過文件接口來實現的,也就是說在訪問設備的時候就如同訪問一個文件一樣,因為他們使用的都是文件系統接口。
設備也分種類,如:
1、塊設備:block 其存取單位是“塊”,如硬盤
2、字符設備:char 存取單位是“字符”,如鍵盤
每個設備都有一個文件作為他的訪問入口,次文件我們稱之為設備文件;該文件關聯至一個設備驅動程序,進而能夠跟與之對應的硬件設備進行通信
設備號碼:用來表示設備,不同類別的設備有不同的設備號,同一類別的設備有不同的設備或多個設備,因此就有主設備和次設備號。
主設備號:major number,標識設備類型
次設備號:minor number,標識同一類型下的不同設備
我們可以通過ls -l /dev 來查看設備文件的設備號碼,如:
其中c開頭的是字符設備,也就是char的首字母。所以,同理,塊設備就是b開頭
主設備號和次設備號通過逗號隔開,前面為主設備號,后面為此設備號
在這里有不同的打頭字母,對應不同的文件類型。
b 塊設備 如:硬盤
c 字符設備 如:鍵盤
d 目錄文件
l 鏈接文件
s 套接字文件
為了區別不同的應用程序進程和連接,許多計算機操作系統為應用程序與TCP/IP協議交互提供了稱為套接字(Socket)的接口磁盤設備的設備文件命名
磁盤設備的設備文件命名
IDE:/dev/hd
SCSI,SATA,SAS,USB:/dev/sd
不同設備表示方法:在設備文件名后面追加一些字母a-z來表示
/dev/sda, /dev/sdb, /dev/sdc….
同一設備上的不同分區:采用數字遞增的方式,如1,2…
/dev/sda1, /dev/sda2,… /dev/sdb1, /dev/sdb2…..
機械式硬盤
磁道:每個盤片上被劃分成N個同心圓,稱之為磁道
扇區:磁盤上的每個磁道被等分為若干個弧段,這些弧段便是磁盤的扇區
柱面:每個磁盤上面相同位置都會有以個相同的編號,所有相同編號的磁道稱之為柱面
扇區的劃分
將每一個磁道按512個字節為單位劃分為等分,叫做扇區的劃分 每個扇區512字節,而文件的最小單位是“塊” 每個“塊”由連續的8個扇區組成 大小也就是4KB
磁盤如何分區
1)外磁道的讀寫速度比內側磁道的讀寫速度快。
2)磁盤的分區是根據柱面來劃分的
3)每個盤面上的一個柱面只能屬于一個分區,而且由外向內多個柱面組合成一個分區來使用,因此越靠外的柱面其讀寫速率越高,所以通常我們將每個盤面最外側的柱面劃分成系統分區。
0磁道0扇區
在磁盤之上有個叫做0磁道0扇區是被預留出來的,它不屬于任何分區,這個扇區稱之為MBR,嚴格意義上講應該叫做用來存儲MBR的一段空間。該扇區的大小為512bytes,專門用來存儲mbr,即主引導記錄,分為三部分:
1)446bytes:存儲boot loader,引導加載器;
2)64bytes,存儲分區表,有多少個分區,每個分區從哪里開始到哪里結束;其中每16bytes標識一個分區,因此,一塊硬盤最多只能有4個主分區;
3)2bytes,前面信息的有效標識(或者叫做結束標志),用四個16進制來表示55AA, 標識前面510bytes是有效的
一塊磁盤最多只能劃分四個主分區,要么劃分3個主分區+1個擴展分區(N個邏輯分區)
磁盤分區管理工具:fdisk parted sfdisk
查看:fdisk -l [DEVICE] 例如:fdisk -l /dev/sda 查看sda硬盤,也可以不跟最后的選項,直接查看有幾個硬盤及分區信息
創建分區:fdisk 是一個交互式界面,有許多子命令
p:顯示磁盤分區表
n:新建分區
d:刪除分區
t:修改分區的系統ID
l:列表出所有已建好的系統ID
w:保存并退出
q :不保存退出
查看內核是否已經識別新的分區:cat /proc/partitions
對于已經有分區處于使用狀態的磁盤來講,新建分區后需要讓內核重讀其分區表:
Centos 5 之上:
#partprobe [DEVICE]
Centos 6和7:
#partx -a [DEVICE]
#kpartx -af [DEVICE]
創建文件系統
1、mkfs命令
mkfs -t FSTYPE=mkfs.FSTYPE
mkfs -t ext4=mkfs.ext4
mkfs -L 設定卷標
2、 mke2fs -t {ext2|ext3|ext4} 指定文件系統
mke2fs -b {1024|2048|4096} 指定塊大小
mke2fs -L LABEL 打標
mke2fs -i # 每多少字節給創建一個iNode,次字節數不應該小于塊大小
mke2fs -N # 直接指定可用的iNode數
mke2fs -m # 指定預留空間占整個分區空間的百分比,默認為5
mke2fs -O 指定分區特性
*對交換分區使用特定的工具mkswap來創建交換分區,但前提是要先調整設備分區類型為8e
3、blkid:查看指定塊設備的屬性信息
-L‘卷標名’:可以查看到卷標名所對應的磁盤分區
-U‘UUID’ :可以查看到UUID所對應的磁盤分區
4、tune2fs:重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統的超級塊信息:
-L 修改卷標
-m # :修改預留空間百分比
-O[^]FEATURE:啟用指定特性,特性前加^,表示關閉此種特性
-o[^]mount-options:開啟或關閉指定的掛在選項
-U UUID :修改UUID
5文件系統的檢測
因進程意外終止或系統崩潰等情況導入寫入操作費正常終止時,可能會導致文件損壞;此時。應該修復文件系統,注意:需要離線修復
工具:fsck e2fsck (file system check 文件系統檢查的簡寫)
fsck所支持的選項
-t:fstype
-a:自動修復錯誤
-r:交互式修復錯誤
e2fsck:專用于修改ext系列文件系統
-y:對問題自動回答yes
-f:強制進行檢測
超級塊
作用:存儲文件系統的大小、有多少是空的和已經提哦啊滿的占多少,以及他們各自的總數和其他諸如此類的信息。 要使用一個分區來進行數據訪問,那么第一個要訪問的就是超級塊。所以,如果超級塊壞了,那磁盤也基本沒救了。
包括:文件系統的大小、空閑塊數目、空閑塊索引表、空閑i節點數目……等等
文件系統的掛載
磁盤分區要想被使用必須先掛載,所謂掛載是指將額外的分區與分文件系統上的某目錄建立關聯關系的過程(默認只有管理員才有權限)。注意:如果該目錄中有文件,則目錄中的原有文件會被隱藏
掛載工具:mount 的使用:mount DEVICE MOUNT_POINT
DEVICE:所需要掛載的磁盤分區
MOUNT_POINT:掛載點:另一個文件系統的訪問入口 固定掛載點:/mnt /media
掛載點需要具備以下倆點:
1 事先存在
2 使用空閑目錄
常用的掛載選項:mount [option]…[-t fstype] [-o option]
-t fstype 指定文件系統類型
-r :只讀掛載
-w:讀寫掛載
-a:自動掛載所有(/etc/fstab文件中定義的)的支持自動掛載設備
-n:掛載時,不更新/etc/mtab文件
-B:綁定目錄到另一個目錄上
-o option:
atime/noatime:文件和目錄被訪問時是更新最近一次的訪問時間戳
auto/noauto:設備是否支持mount 的-a 選項自動掛載
dev/nodev:是否支持在此設備上使用設備
exec/noexec:是否允許執行此設備上的二進制程序文件
suid/nosuid:是否支持在此設備的文件上使用suid
remount:重新掛載,通常用于不卸載的情況下重新制定掛載選項
ro:只讀
rw :只寫
acl:在此設備是支持使用facl,默認不支持
注意:上述選項可多個同時使用,彼此之間用逗號分隔
默認掛載選項:rw,suid,dev,auto,exec,nouser(不允許普通掛載此文件設備),async(異步I/O,數據寫操作先與內存完成,而后再根據某種策略同步至持久設備中)
掛載交換分區
啟用:swapon
swapon [option]…[device]
-a:激活所有的交換分區
-p priority:指定優先級(用數字來表示)
關閉:swapoff
-a:禁用所有
內存及交換分區的使用信息查看:free
-m:以MB為單位
-g:以GB為單位
mem:物理內存的使用情況
swap:交換分區的使用情況
三種方式查看所有已經掛載的設備
1 mount
2 cat /proc/mounts
3 cat /proc/mtab
_ueditor_page_break_tag_
設備自動掛載
自動掛載的設備的配置文件:/etc/fstab
該文件的語法格式:每行定義一個要掛載的文件系統,有一下6個字段
1、掛載的設備:可以使一下幾種方式
設備文件
LABEL
UUID:centos 7目前使用的方式
2、掛載點
3、文件系統類型
4、掛載選項:mount命令中的選項,掛載選項可以有多個,彼此間用逗號分隔
5、轉儲頻率(備份頻率):
0:從不
1:每天
2:每隔一天
6、自檢次序
0:不自檢,額外創建的文件系統都無須自動自檢
1:首先自檢,通常只有根文件系統需要
2:次級自檢,不同的設備可以使用同一個自檢次序
3:依次在2之后
…
使用mount -a 可以重新加載/etc/fstab 文件中的所有掛載項
原創文章,作者:cszdz123,如若轉載,請注明出處:http://www.www58058.com/40054
文章對磁盤分區的要點,進行了完整的表述,對于硬盤基礎知識可以結合圖片來詳細說明。同時對于命令的使用,沒有很好的練習,對于學習linux,只有多練習,才能發現問題。時間實踐真理的唯一標準哦。