本節索引:
一、磁盤基本概念
二、磁盤分區管理
三、文件系統管理
四、設備掛載管理
一、磁盤基本概念
設備文件:
Linux中一切皆文件:open(),read(),write(),close()
設備類型:
塊設備:block,存儲單位“塊”,磁盤
字符設備:char,存儲單位“字符”,鍵盤
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信
設備號碼:
主設備號:maj,標識設備類型
次設備號:min,標識同一類型下的不同設備
磁盤結構
硬盤的接口類型:
并行:
IDE:133MB/s
SCSI:640MB/s
串口:
SATA:6Gbps
SAS:6Gbps
USB:480MB/s
硬盤:
機械硬盤(HDD):傳統普通硬盤,主要由:盤片,磁頭,馬達等組成
優勢:相比固態硬盤,價格低,容量大,使用壽命長
固態硬盤(SSD):用固態電子存儲芯片陣列而制成的硬盤。
優勢:相比機械硬盤,防震抗摔,傳輸速率,功率,噪音有優勢
目前SSD不能完全取代HHD
磁盤設備文件命名:?
/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
注:在腳本中,盡量避免使用磁盤設備文件名諸如sda,名稱不穩定,應使用UUID
磁盤存儲術語:
head:磁頭;???????????????? 8bit尋址 2**8=256
track:磁道;
ctlinder:柱面???????????????? 10bit尋址?????? 2**10=1024
sector:扇區????????? 6bit尋址 2**6=64
chs:磁盤三維。柱面、磁頭、扇區
一個扇區共有512Byte,CHS可定義255*63*1024個扇區信息
echo 512*63*1024*255/1024/1024 | bc
8032M
CHS:老的命名方式,不超過8G
LBA:邏輯的塊尋址,超過8G
二、磁盤分區管理
我們知道使用磁盤有三個步驟:
1、創建分區
2、創建文件系統:格式化
3、掛載:分配目錄名
為什么要對磁盤進行分區?
1、優化I/O性能
2、實現磁盤空間配額限制
3、提高修復速度
4、隔離系統和程序
5、安裝多個OS
6、采用不同的文件系統
分區類型
兩種分區方式:MBR,GPT
MBR:Master Boot Record
誕生于1982年,使用32位表示扇區數,分區不能超過2T
MBR如何分區:按柱面
0磁道0扇區:512bytes
446bytes:boot loader
64bytes:分區表
16bytes:標識一個分區(最多4個分區)
2bytes:55AA(分區標識位)
支持4個主分區;3個主分區+1擴展分區(N個邏輯分區)
注:生產中最好給MBR分區表進行備份
BIOS+MBR
傳統BIOS運行流程:
開機–>BIOS初始化–>BIOS自檢–>引導操作系統–>進入系統
GPT:GUID(Globals Unique Identifiers)
支持128個分區,使用64位,支持8Z(512Byte/block),64Z(4096Byte/block)
使用128位的通用唯一識別碼UUID(Universally Unique Identifier)表示磁盤和
分區表自動備份在頭和尾兩份,并有CRC校驗位
UEFI(同一擴展固件接口):硬件支持GPT,使操作系統啟動
分區表
MBR保護+GPT分區表+GPT劃分數據+備份
UEFI+GPT
UERI運行流程
開機–>UEFI初始化–>引導操作系統–>進入系統
管理分區
列出塊設備:
lsblk
創建分區使用:
fdisk????????????????? 創建MBR分區
gdisk???????????????? 創建GPT分區
parted????????????? 高級分區操作
parted命令
parted的操作都是實時生效的,小心使用
格式:parted[option]…[設備[命令[參數]…]…]
parted /dev/sdb mklabel gpt|msdos????????????? 設置分區類型GPT或MBR
parted /dev/sdb print?????????????????????????????? 打印sdb分區列表信息
parted /dev/sdb mkpart primary 1 200 (默認M)? 設置sdb分區大小
parted /dev/sdb rm 1??????????????????????????????? 刪除sdb1分區
parted -l???????????????????????????????????? 列出分區信息
分區工具fdisk和gdisk
fdisk -l[-u][device…]?????? 查看分區
fdisk /dev/sdb ??????????????? 管理分區(交互式)
子命令:
p?????????????? 顯示分區列表
t??????????????? 更改分區類型(數據將丟失)
n?????????????? 創建新分區
d?????????????? 刪除分區
t??????????????? 添加設備標簽
v??????????????? 校驗分區
u?????????????? 轉換單位
w????????????? 保存并退出
q?????????????? 不保存并退出
注:可使用重定向和多行重定向echo -e “n\np\n\n\n+2G\nw\n” | fdisk /dev/sdc
同步分區表
cat/proc/partations??????? 查看內核是否已經識別新的分區
partprobe???????????????? 同步分區表(centos5,7可用)
partx -a? /dev/sda???????? 增加分區同步分區表(centos6可用)時使用;
partx -d –nr M-N /dev/sda??? 刪除分區同步分區表(centos6可用)時使用;
三、文件系統管理
所謂文件系統,它是操作系統中藉以組織、存儲和命名文件的結構。磁盤或分區和它所包括的文件系統的
不同是很重要的,大部分應用程序都基于文件系統進行操作,在不同種文件系統上是不能工作的。
文件系統類型
Linux文件系統:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap
光盤:iso9660
Windows:FAT32,exFAT,NTFS
Unix:FFS(fast),UFS(unix),JFS2
網絡文件系統:NFS,CIFS
集群文件系統:GFS2,OCFS2
分布式文件系統:fastfs,ceph,moosefs,mogilefs,glusterfs,Lustre
RAW:未經處理或者未經格式化產生的文件系統(性能好,但不便于管理)
根據文件系統是否支持“journal(日志)”功能可分為:
日志型文件系統:ext3,ext4,xfs,…(犧牲讀取性能,防止數據文件破壞)
非日志型文件系統:ext2,vfat(易造成數據文件破壞)
文件系統的組成部分:
內核中的模塊:ext4,xfs,vfat
用戶空間的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat
Linux的虛擬文件系統:VFS
查看支持的文件系統:cat /proc/filesystems
創建文件系統:
mkfs命令兩種用法:
1、mkfs.FS_TYPE? /dev/DEVICE 建議使用此用法,直觀不易出錯
ext4
xfs
btrfs
vfat
2、mkfs -t FS_TYPE /dev/DEVICE
-L ‘LABEL’???????????????? 設定卷標(分區標簽)
mke2fs???????????????????????????????? ext系統文件系統專用的管理工具
-t{ext2|ext3|ext4} 創建文件系統類型
-b{1024|2048|4096}????? 設定block塊的大小
-i #???????????????????? 為數據空間每多少字節創建一個inode,此大小不應小于
block大小
-L?????????????????????? 添加卷標簽(建議使用掛載點作卷標)
-N #?????????????????? 指定分區中創建#個inode
-l??????????????????????? 一個inode記錄占用磁盤空間的大小,128-4096
-m # ???????????????????????? 默認5%,管理員用戶預留空間占總空間百分百
文件系統標簽LABEL
它是指向設備的另一種方法,與設備無關
blkid?????????????????????????????????? 塊設備屬性信息查看
格式:blkid [option]…[DEVICE]
-U UUID??????????????????? 根據指定UUID來查找對應設備
-L LABEL?????????? 根據指定卷標來查找對應設備
e2label:管理ext系列文件系統的LABEL卷標
格式:e2label DEVICE[LABEL]
findfs????????????????????????????????? 查找分區
格式:findfs [option] LABEL = <label> 根據卷標查找
?? findfs [option] UUID? = <uuid>??????? 根據UUID查找
tune2fs????????????????????????????? 重新設定ext系列文件系統可調整參數的值
-l??????????????????????? 查看指定文件系統超級塊信息
-L ‘LABEL’???????????????? 修改卷標
-m #????????????????? 修改預留給管理員空間的百分百
-j??????????????????????? 將ext2升級到ext3
-O????????????????????? 文件系統屬性啟用或禁用,-O ^has_journal
-o????????????????????? 調整文件系統的默認掛載選項,-o^acl
-U UUID??????????????????? 修改UUID號
dumpe2fs??
塊分組管理,32768
-h?????????????????????? 查看超級塊信息,不顯示分組信息
超級塊(superblock)
dumpe2fs ????? /dev/sda1??????? 查看分區下所有超級塊
-h????????????? 查看超級塊信息
tune2fs???????????? -l?????????????? 查看超級塊信息
超級塊時存儲文件系統的大小、有多少是空的和已經填滿的占多少,以及它們各自的總數和其他諸如此類的信息。
要使用一個分區來進行數據訪問,那么第一個要訪問的就是超級塊,由此可見超級塊的重要性。
超級塊占用第一號物理塊,是文件系統的控制塊。超級塊包括:文件系統的大小、空閑塊數目、空閑塊索引表、空
閑i節點數目、空閑i節點索引表、封鎖標記等。超級塊時系統為文件分配存儲空間、回收存儲空間的依據。
所以,為了防止超級塊數據損壞,就需要對超級塊數據進行備份,以便于損壞時進行修復。
文件系統檢測和修復
常發生于死機或者非正常關機之后
掛載為文件系統標記為”no clean”
注意:一定不要在掛載狀態下修復或檢測,否則數據將破壞!
fsck ????????????????????????????????? 文件系統檢查
fsck.FS_type
fsck -t FS_type
-p?????????????????????? 自動修復錯誤
-r?????????????????????? 交互式修復錯誤
注:FS_TYPE一定要與分區上已設置的文件系統類型相同
e2fsck??????????????????????????????? ext系列文件專用的檢測修復工具
-y?????????????????????? 自動回答為yes
-f?????????????????????? 強制修
四、設備掛載管理
掛載:把額外的文件系統與根文件系統現場的目錄建立起關聯關系,進而使得此目錄
作為其他文件訪問入口的行為
一個掛載點只能掛載一個設備,但一個設備可掛載多個掛載點
掛載點建議要是空目錄,否則該目錄下原有文件將被隱藏,變為垃圾文件
卸載:為解除此關聯關系的過程
把設備關聯掛載點:mount Point
? ?monut
卸載時:可使用設備,也可使用掛載點
?? umount
掛載命令:
通過查看/etc/mtab文件顯示當前已掛載的所有設備
mount
格式:mount [-fnrsvw] [-t vfstype] [-o options] device? dir
device?????????????????????? 指明要掛載的設備
(1)設備文件:例如dev/sda2
(2)卷標:-L ‘LABEL’,例如-L ‘MYDATA’
(3)UUID,-U ‘UUID’,例如-U ’35bfb8f8-1c9a-4f67-b8fe-a7edb84c4780’
(4)偽文件系統名稱:proc,sysfs,devtmpfs,configfs
dir????????????????????? 掛載點
事先存在;建議使用空目錄
進程正在使用中的設備無法被卸載
option:
-t?????????????????????? 指定要掛載的設備上的文件系統類型
-r?????????????????????? readontlt,只讀掛載
-w????????????????????? r+w,讀寫掛載(默認)
-n?????????????????????? centos6隱藏掛載,不更新/etc/mtab,mount不可見,cat /proc/mounts可見
-a?????????????????????? 自動掛載所有支持自動掛載的設備
-L ‘LABEL’???????????????? 以卷標指定掛載設備
-U ‘UUID’????????????????? 以UUID指定要掛載的設備
-B,–bind??????????????? 綁定目錄到另一個設備上。類似于軟連接
-o options:(掛載文件系統的選項),多個選項使用逗號分隔
async???????????????????????? 異步模式(默認模式)
sync????????????????? 同步模式,內存更改時,同時寫磁盤
atime/noatime??????????????? 包含目錄和文件(是否更新atime,默認更新)
diratime/nodiratime?????? 目錄的訪問時間戳
auto/noauto??????????? 是否支持自動掛載,是否支持-a選項
exec/noexec??????????? 是否支持將文件系統上運行應用程序
dev/nodev??????????????? 是否支持在此文件系統上使用設備文件
suid/nosuid????????????? 是否支持suid和sgid權限
remount?????????????????? 重新掛載
ro????????????????????? 只讀
rw????????????????????? 讀寫
user/nouser???????????? 是否允許普通用戶掛載此設備,/etc/fstab使用
acl???????????????????? 啟用此文件系統上的acl功能
loop???????? ?????? 使用loop設備,把文件掛載目錄,模擬設備
默認:rw,suid,dev,exec,auto,nouser,async
卸載命令:
查看掛載情況:
findmnt?? MOUNT_POINT|DEVICE
查看正在訪問指定文件系統的進程:
lsof MONUT_POINT
???????? fuser? -v? MOUNT_POINT
終止所有在正訪問指定的文件系統的進程
?? fuser? -km MONUT_POINT
卸載:
umount?? DEVICE
???????? umount?? MOUNT_POINT
掛載點和/etc/fstab
配置文件系統體系
被mount、fsck和其他程序使用
系統重啟時保留文件系統體系
可以在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中的所有文件系統
/etc/fstab??????? 每行定義一個要掛載的文件系統
設備或偽文件系統??? 掛載點?? 文件系統類型?? 掛載選項?? 備份間隔時間{0|1|2}?? 文件系統檢查{0|1}
要掛載的設備或偽文件系統
設備文件
LABEL:LABEL=””
UUID:UUID=””
偽文件系統名稱:proc,sysfs
掛載點
文件系統類型
掛載選項:default
轉儲頻率:0:不做備份 ; 1:每條轉儲 ; 2:每隔一天轉儲 ;
自檢次序:0:不自檢 ; 1:首先自檢;一般只有rootfs才用1
一些特殊文件設備的掛載永久生效的設置:
vim /etc/fstab
/root/p1? /mnt/p1? ??????? ext4???????? ? loop???? ?????? 0??? 0????? ?? 掛載普通文件
/mnt/cdrom??? /mnt/cdrom??? iso9660??? defaults????? 0??? 0????? 掛載光盤
/boot??????????????? /mnt/boot ???? none??????? ? bind???????? 0??? 0????? 掛載目錄到目錄下
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96953