1、裝置檔案
I/O Ports: I/O裝置位址。
裝置檔案的使用:
通過将檔案關聯至一個裝置驅動程式,進而能夠跟與之對應硬體裝置進行通信。
一切皆檔案,是以磁盤的也是也是基于裝置檔案與之通信的:open(), read(), write(), close()
裝置号碼:
主裝置号:major number, 辨別裝置類型;
次裝置号:minor number, 辨別同一類型下的不同裝置。
硬碟接口類型:
并行:
IDE:133MB/s
SCSI:640MB/s
序列槽:
SATA:6Gbps
SAS:6Gbps
USB:480MB/s
rpm: rotations
per minute
磁盤裝置的裝置檔案命名:
/dev/DEV_FILE
SCSI, SATA, SAS, IDE,USB: /dev/sd;
虛拟磁盤:/dev/vd;
不同磁盤辨別:a-z,aa,ab…/dev/sda, /dev/sdb, ...;
同一裝置上的不同分區:1,2, .../dev/sda1, /dev/sda5;
2、磁盤結構
2.1、機械硬碟(HDD)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCM581dvRWYoNHLwEzX5xCMx8FesU2cfdGLwATMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2kjMxUjN4MTM2QzNzETNx8CXwIjMxcTMwIzLcNXZnFWbp9CXvwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
2.2、固态硬碟(SSD)和機械硬碟(HDD)
2.3、硬碟存儲術語及扇區結構
head:磁頭;
track:磁道;
cylinder: 柱面;
sector: 扇區,512bytes;
(1)早期扇區結構
(2)區位記錄磁盤扇區結構:ZBR(Zoned Bit Recording)
2.4、CHS和LBA
CHS:
采用24bit位尋址;
最大尋址空間8GB;
LBA(logical block addressing)
LBA采用48個bit位尋址
最大尋址空間128PB
注意:
由于CHS尋址方式的尋址空間在大概8GB以内,是以在磁盤容量小于大概8GB時,可以使用CHS尋址方式或是LBA尋址方式;在磁盤容量大于大概8GB時,則隻能使用LBA尋址方式。
2.5、使用分區空間
裝置識别;
裝置分區;
建立檔案系統;
标記檔案系統;
在/etc/fstab檔案中建立條目;
挂載新的檔案系統;
2.5、磁盤分區的意義及分區類型
磁盤分區意義:
優化I/O性能
實作磁盤空間配額限制
提高修複速度
隔離系統和程式
安裝多個OS
采用不同檔案系統
兩種分區方式:MBR,GPT
2.5.1、MBR
MBR:
Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T;
按柱面
MBR分區結構:
硬碟主引導記錄MBR由4個部分組成:
主引導程式(偏移位址0000H--0088H):它負責從活動分區中裝載,并運作系統引導程式。
出錯資訊資料區:偏移位址0089H--00E1H為出錯資訊,0E2H--01BDH全為0位元組。
分區表(DPT,Disk Partition Table):含4個分區項,偏移位址01BEH--01FDH,每個分區表項長16個位元組,共64位元組;為分區項1、分區項2、分區項3、分區項4
結束标志字:偏移位址01FE--01FF的2個位元組值為結束标志55AA。
2.5.2、GPT分區
GPT:
GUID(Globals Unique Identifiers) partition table;
支援128個分區,使用64位,支援8Z(512Byte/block)、64Z (4096Byte/block);
使用128位UUID(Universally Unique Identifier) 表示磁盤和分區;
GPT分區表自動備份在頭和尾兩份,并有CRC校驗位UEFI;
(統一擴充固件接口)硬體支援GPT,使作業系統啟動
3、分區管理
3.1、圖形化
圖形化磁盤管理功能工具:
點選“應用程式” ->“系統工具” ->“磁盤”;
執行指令gnome-disks
3.2、分區管理
列出塊裝置:lsblk;
建立分區使用:
fdisk 建立MBR分區;
gdisk 建立GPT分區;
parted 進階分區操作;
partprobe-重新設定記憶體中的核心分區表版本;
3.3、parted指令
注意:parted的操作都是實時生效的,小心使用
文法:
parted [選項]... [裝置 [指令 [參數]...]...]
示例:
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200 (預設M)
parted /dev/sdb rm 1
parted -l
3.3、分區工具:fdisk & gdisk
gdisk /dev/sdb:類fdisk 的GPT分區工具;
fdisk -l [-u] [device...] 檢視分區;
fdisk /dev/sdb 管理分區;
子指令:
p 分區清單
t 更改分區類型
n 建立新分區
d 删除分區
v 校驗分區
u 轉換機關
w 儲存并退出
q 不儲存并退出
檢視核心是否已經識别新的分區:
cat /proc/partations
同步分區表:
centos6通知核心重新讀取硬碟分區表:
新增分區用:
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
删除分區用:
partx -d --nr M-N /dev/DEVICE
CentOS 5,7:使用partprobe
partprobe [/dev/DEVICE]
4、檔案系統管理
4.1、檔案系統類型
Linux檔案系統:ext2(Extended file system), ext3,ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
CD光牒:iso9660
Windows:FAT32, exFAT,NTFS
Unix:FFS(fast), UFS(unix), JFS2
網絡檔案系統:NFS, CIFS
叢集檔案系統:GFS2, OCFS2(oracle)
分布式檔案系統: fastdfs,ceph, moosefs, mogilefs,glusterfs, Lustre
RAW:未經處理或者未經格式化産生的檔案系統
查前支援的檔案系統:cat /proc/filesystems
4.2、建立檔案系統
mkfs指令:
(1) mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL': 設定卷标
建立ext檔案系統:
mke2fs:
ext系列檔案系統專用管理工具;
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L 'LABEL'
-j: 相當于 -t ext3;
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 為資料空間中每多少個位元組建立一個inode;此大小不應該小于block的大小;
-N #:指定分區中建立多少個inode;
-I 一個inode記錄占用的磁盤空間大小,128---4096;
-m #: 預設5%,為管理人員預留白間占總空間的百分比;
-O FEATURE[,...]:啟用指定特性;
-O ^FEATURE:關閉指定特性;
檔案系統标簽:
指向裝置的另一種方法
與裝置無關
blkid:
塊裝置屬性資訊檢視;
文法:
blkid [OPTION]... [DEVICE]
-U UUID: 根據指定的UUID來查找對應的裝置
-L LABEL:根據指定的LABEL來查找對應的裝置
e2label:管理ext系列檔案系統的LABEL
e2label DEVICE [LABEL]
findfs :查找分區
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
tune2fs:
重新設定ext系列檔案系統可調整參數的值;
-l:檢視指定檔案系統超級塊資訊;super block
-L 'LABEL':修改卷标
-m #:修預留給管理者的空間百分比
-j: 将ext2更新為ext3
-O: 檔案系統屬性啟用或禁用, –O ^has_journal
-o: 調整檔案系統的預設挂載選項,–o ^acl
-U UUID: 修改UUID号
dumpe2fs:
塊分組管理,32768塊
-h:檢視超級塊資訊,不顯示分組資訊
4.3、檔案系統檢測和修複
常發生于當機或者非正常關機之後;
挂載為檔案系統标記為“ no clean”;
注意:一定不要在挂載狀态下修複;
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自動修複錯誤
-r: 互動式修複錯誤
FS_TYPE一定要與分區上已經檔案類型相同;
e2fsck:ext系列檔案專用的檢測修複工具
-y:自動回答為yes
-f:強制修複
5、挂載
挂載:
将額外檔案系統與根檔案系統某現存的目錄建立起關聯關系,
進而使得此目錄做為其它檔案通路入口的行為
注意:
挂載點下原有檔案在挂載完成後會被臨時隐藏;
挂載點目錄一般為空;
事先存在;建議使用空目錄;
程序正在使用中的裝置無法被解除安裝;
mount DEVICE MOUNT_POINT
mount [-fnrsvw] [-t vfstype] [-o options] device dir
-t vsftype:指定要挂載的裝置上的檔案系統類型
-r: readonly,隻讀挂載
-w: read and write, 讀寫挂載
-n: 不更新/etc/mtab,mount不可見
-a:自動挂載所有支援自動挂載的裝置(定義在了/etc/fstab
檔案中,且挂載選項中有auto功能)
-L 'LABEL': 以卷标指定挂載裝置
-U 'UUID': 以UUID指定要挂載的裝置
-B, --bind: 綁定目錄到另一個目錄上
檢視核心追蹤到的已挂載的所有裝置
cat /proc/mounts
-o options:(挂載檔案系統的選項),多個選項使用逗号分隔
async:異步模式
sync:同步模式,記憶體更改時,同時寫磁盤
atime/noatime:包含目錄和檔案
diratime/nodiratime:目錄的通路時間戳
auto/noauto:是否支援自動挂載,是否支援-a選項
exec/noexec:是否支援将檔案系統上運作應用程式
dev/nodev:是否支援在此檔案系統上使用裝置檔案
suid/nosuid:是否支援suid和sgid權限
remount:重新挂載
ro:隻讀
rw:讀寫
user/nouser:是否允許普通使用者挂載此裝置,/etc/fstab使用
acl:啟用此檔案系統上的acl功能
loop: 使用loop裝置
defaults:相當于rw, suid, dev, exec, auto, nouser, async
6、解除安裝指令
檢視挂載情況
findmnt MOUNT_POINT|device
檢視正在通路指定檔案系統的程序
lsof MOUNT_POINT
fuser -v MOUNT_POINT
終止所有在正通路指定的檔案系統的程序
fuser -km MOUNT_POINT
解除安裝
umount DEVICE
umount MOUNT_POINT
7、檔案挂載配置檔案
注意:使用mount -a 指令挂載/etc/fstab中的所有檔案系統
/etc/fstab每行定義一個要挂載的檔案系統:
1)要挂載的裝置或僞檔案系統;
裝置檔案;
LABEL:LABEL="";
UUID:UUID="";
僞檔案系統名稱:proc, sysfs;
2)挂載點;
3)檔案系統類型;
4)挂載選項:defaults;
5)轉儲頻率:0:不做備份 1:每天轉儲 2:每隔一天轉儲;
6)自檢次序:
0:不自檢;
1:首先自檢;一般隻有rootfs才用1;
8、處理交換檔案和分區
交換分區是系統RAM的補充。
8.1、基本設定
建立交換分區或者檔案
使用mkswap寫入特殊簽名
在/etc/fstab檔案中添加适當的條目
使用swapon -a 激活交換空間
交換分區的啟用與禁用:
啟用:swapon
swapon [OPTION]... [DEVICE]
-a:激活所有的交換分區;
-p PRIORITY:指定優先級
/etc/fstab:pri=value
禁用:swapoff [OPTION]... [DEVICE]
8.2、SWAP的優先級
可以指定swap分區0到32767的優先級,值越大優先級越高;
如果使用者沒有指定,那麼核心會自動給swap指定一個優先級,這個優先級從-1開始,
每加入一個新的沒有使用者指定優先級的swap,會給這個優先級減一;
先添加的swap的預設優先級比較高,除非使用者自己指定一個優先級,
而使用者指定的優先級(是正數)永遠高于核心預設指定的優先級(是負數);
優化性能:分布存放,高性能磁盤存放;