設備文件
I/O Ports: I/O設備地址
一切皆文件:
open(), read(), write(), close()
設備類型:
塊設備: block,存取單位“塊”,磁盤
字符設備: char,存取單位“字符”,鍵盤
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應
硬件設備進行通信
設備號碼:
主設備號: major number, 標識設備類型
次設備號: minor number, 標識同一類型下的不同設備
硬盤接口類型
并行:
IDE: 133MB/s
SCSI: 640MB/s
串口:
SATA: 6Gbps
SAS: 6Gbps
USB: 480MB/s
rpm: rotations (硬盤轉速)
設備文件
磁盤設備的設備文件命名:
-
/dev/DEV_FILE
IDE: /dev/hd
SCSI, SATA, SAS, USB: /dev/sd
不同設備: a-z
/dev/sda, /dev/sdb, …
同一設備上的不同分區: 1,2, …
硬盤結構
head:磁頭
track:磁道
cylinder: 柱面
secotr: 扇區, 512bytes
為什么是分區?
-
優化I/O性能
-
實現磁盤空間配額限制
-
隔離系統和程序
-
提高修復速度
-
安裝多個OS
-
采用不同文件系統
分區
兩種分區方式: MBR, GPT
MBR: Master Boot Record, 1982年, 使用32位表示扇區 數, 分區不超過2T
如何分區:按柱面
0磁道0扇區: 512bytes
-
446bytes: boot loader
-
64bytes:分區表
-
16bytes: 標識一個分區
-
2bytes: 55AA(標識磁盤分區是否存在分區)
MBR分區結構
-
4個主分區; 3主分區+1擴展(N個邏輯分區)
GPT分區
GPT:GUID( Globals Unique Identifiers) partition table 支持128個分區,使用64位,支持8Z( 512Byte/block ) 64Z (4096Byte/block)
使用128位UUID 表示磁盤和分區 GPT分區表自動備份在頭 和尾兩份,并有CRC校驗位
UEFI (統一擴展固件接口)硬件支持GPT,使操作系統啟動 GPT分區結構
EFI部分又可以分為4個區域: EFI信息區(GPT頭)、分區表、 GPT分區、備份區域
列出可用的磁盤設備
圖形化磁盤管理功能工具:點擊“應用程序” -> “系統工具” ->“磁盤”或執行命令gnome-disks
管理分區
列出塊設備
lsblk
創建分區使用:
fdisk 創建MBR分區,也支持GPT,對于一塊硬盤,最多只能管 理15分區
gdisk 創建GPT分區
GNU parted 高級分區操作(創建、復制、調整大小等等) partprobe-重新設置內存中的內核分區表版本
-
fdisk /dev/sdb
-
gfisk /dev/sdb 類fdisk 的GPT分區工具
fdisk -l [-u] [device…]
子命令:
-
p 分區列表
-
t 更改分區類型
-
n 創建新分區
-
d 刪除分區
-
w 保存并退出
-
q 不保存并退出
同步分區表
查看內核是否已經識別新的分區:
cat /proc/partations
通知內核重新讀取硬盤分區表
新增分區用
partx -a -n M:N /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
刪除分區用
partx -d -n M:N /dev/DEVICE
centos6: –nr N-M
CentOS 5, 7: 使用partprobe
partprobe [/dev/DEVICE]
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
文件系統
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。
文件系統類型 Linux文件系統: ext2(Extended file system), ext3,ext4, xfs( SGI) , btrfs( Oracle) , reiserfs, jfs(AIX) , swap
光盤: iso9660
Windows: fat32, ntfs
Unix: FFS( fast) , UFS( unix) , JFS2
網絡文件系統: NFS, CIFS
集群文件系統: GFS2, OCFS2( oracle)
分布式文件系統: ceph, moosefs, mogilefs, glusterfs,Lustre
RAW:未經處理或者未經格式化產生的文件系統
文件系統分類
根據其是否支持"journal"功能:
-
日志型文件系統: ext3, ext4, xfs, …
-
非日志型文件系統: ext2, vfat
文件系統的組成部分:
內核中的模塊: ext4, xfs, vfat
用戶空間的管理工具:
mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虛擬文件系統: VFS–系統在文件系統上,虛擬出一個新的文件系統, 統一配置接口, 方便訪問, 用戶與文件系統通過VFS進行訪問.
查前支持的文件系統: cat /proc/filesystems
文件系統選擇
創建文件系統
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=
findfs [options] UUID=
tune2fs
tune2fs:重新設定ext系列文件系統可調整參數的值
-
-l:查看指定文件系統超級塊信息; super block
-
-L 'LABEL':修改卷標
-
-m #:修預留給管理員的空間百分比
-
-j: 將ext2升級為ext3
-
-O: 文件系統屬性啟用或禁用, –O ^has_journal
-
-o: 調整文件系統的默認掛載選項,–o ^acl
-
-U UUID: 修改UUID號
dumpe2fs:
-
-h:查看超級塊信息(分組信息),分區用分組管理
超級塊和inode table
文件系統檢測和修復
常發生于死機或者非正常關機之后
掛載為文件系統標記為“ dirty”
fsck: File System Check
-
fsck.FS_TYPE
-
fsck
-
-t FS_TYPE
-
-a: 自動修復錯誤
-
-r: 交互式修復錯誤
注意: FS_TYPE一定要與分區上已經文件類型相同;
e2fsck: ext系列文件專用的檢測修復工具
-
-y:自動回答為yes
-
-f:強制修復 掛載mount
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯關系的過程
把設備關聯掛載點: mount Point
mount
卸載時:可使用設備,也可以使用掛載點
umount
掛載點下原有文件在掛載完成后會被臨時隱藏
掛載點目錄一般為空, 存在文件的話, 文件一般會被隱藏
用mount命令掛載文件系統
掛載方法: mount DEVICE MOUNT_POINT
mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備
mount [-fnrsvw] [-t vfstype] [-o options] device dir device:指明要掛載的設備;
(1) 設備文件:例如/dev/sda5
(2) 卷標: -L 'LABEL', 例如 -L 'MYDATA'
(3) UUID, -U 'UUID':例如 -U '0c50523c-43f1- 45e7-85c0-a126711d406e'
(4) 偽文件系統名稱: proc, sysfs, devtmpfs, configfs dir:掛載點事先存在;建議使用空目錄
進程正在使用中的設備無法被卸載
mount常用命令選項
-
-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
mount常用命令選項
-
-o options: (掛載文件系統的選項),多個選項使用逗號分隔
-
async:異步模式
-
sync:同步模式,內存更改時,同時寫磁盤
-
atime/noatime:包含目錄和文件
-
diratime/nodiratime:目錄的訪問時間戳
-
auto/noauto:是否支持自動掛載,是否支持-a選項
-
exec/noexec:是否支持將文件系統上運行應用程序
-
dev/nodev:是否支持在此文件系統上使用設備文件
-
suid/nosuid:不否支持suid和sgid權限
-
remount:重新掛載
-
ro:只讀
-
rw: 讀寫
-
user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載
-
acl:啟用此文件系統上的acl功能
-
Defaults:相當于rw, suid, dev, exec, auto, nouser, async
卸載命令
查看掛載情況:
findmnt MOUNT_POINT
查看正在訪問指定文件系統的進程:
lsof MOUNT_POINT
fuser -v MOUNT_POINT
終止所有在正訪問指定的文件系統的進程:
fuser -km MOUNT_POINT
卸載:
umount DEVICE
umount MOUNT_POINT
原創文章,作者:M20-石俊,如若轉載,請注明出處:http://www.www58058.com/40473
文章對相關的磁盤管理知識點總結的很詳細,也有具體的示例操作,但是對于一些專有名詞,沒有通過自己的語言總結成一句通順的話語,這里需要多多鍛煉,我們寫博客主要是為了給別人看,而不是當作一份筆記來記錄。望多查資料,深入學習。