磁盤管理
主要有以下幾部分:
磁盤結構
分區類型
管理分區
管理文件系統
掛在設備
管理虛擬內存
設備文件
I/O Ports: I/O 設備地址
一切皆文件:
open(), read(), write(), close()等一些系統庫函數
設備類型:
塊設備:block ,存取單位“塊”,磁盤
字符設備:char ,存取單位“字符”,鍵盤
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信
設備號碼:
主設備號:major number, 標識設備類型
次設備號:minor number, 標識同一類型下的不同設備
硬盤的借口類型
并行:
IDE :133MB/s
SCSI :640MB/s
串口:
SATA :6Gbps /8=768左右的MB/s
SAS :6Gbps
USB :480MB/s
傳輸速度都是理論值,這里說的是最高值
rpm: rotations per minute每分鐘的轉速
設備文件
磁盤設備的設備文件命名:/dev/DEV_FILE
IDE: /dev/hd
SCSI, SATA, SAS, USB: /dev/sd
虛擬機里的虛擬磁盤:/dev/vda
不同設備:a-z
/dev/sda, /dev/sdb, …
同一設備上的不同分區:1,2, …
/dev/sda1, /dev/sda5 傳統分區方式GBR
一張圖來看下硬盤的結構
傳統機械硬盤:
硬盤的一些存儲術語
先來一張硬盤的磁道圖:
head :磁頭 最多256個 n個盤面,n個磁頭
track :磁道 從外向內:0磁道,1磁道……
cylinder: 柱面
secotr: 扇區,512bytes
fdisk命令查看: -u可以用扇區顯示 圖為柱面單位
使用分區空間
設備識別
設備分區
創建文件系統
標記文件系統
在/etc/fstab 文件中創建條目
掛載新的文件系統
磁盤的分區
為什么劃分分區?
? 優化I/O 性能
? 實現磁盤空間配額限制
? 提高修復速度
? 隔離系統和程序
? 安裝多個OS
兩種分區方式:MBR(默認的分區方式),GPT
MBR: Master Boot Record ,1982年,使用32位表示扇區數,分區不超過2T ——主引導記錄
如何分區:按柱面
0磁道0 扇區:512bytes
446bytes: boot loader —引導加載器 在安裝操作系統時創建
64bytes :分區表
1 6bytes: 標識一個分區
2bytes: 55AA
4 個主分區;3 主分區+1 擴展(N 個邏輯分區)
一張圖認識一下MBR硬盤分區結構:
添加新的硬盤 然后輸入下面的命令
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
觸發磁盤的生成
Windows的分區方式:MBR
GRT分區方式
GPT:GUID patition table支持128個分區,使用64位,支持8Z(512Byte/block)64Z(4096Byte/block)
使用128位UUID區表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
UEFI(統一擴展固件接口)硬件支持GPT
下面來看一下GPT分區方式的結構圖:
圖形化的分區工具:
圖形化磁盤管理功能工具:點擊“應用程序”-> “系統工具”-> “磁盤”或執行命令gnome-disks
管理分區
列出塊設備
lsblk
創建分區使用:
? fdisk創建MBR分區,也支持GPT,對于一塊硬盤,最多只能管理15分區 -l顯示分區表
注意:fdisk /dev/sda對硬盤進行分區,sda后面不加任何字符
p顯示分區情況;n劃分分區;q不存盤退出;w存盤退出;d刪除分區
加完分區之后,執行partx -a /dev/sda命令生效
? gdisk創建GPT分區
? GNU parted 高級分區操作(創建、復制、調整大小等等)
partprobe -重新設置內存中的內核分區表版本
分區工具fdisk和gdisk
fdisk /dev/sdb
gfisk /dev/sdb
# 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, ext3, ext4, xfs (SGI), btrfs(Oracle),reiserfs,jfs(AIX), swap blkid可查看
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
查前支持的文件系統: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=<label>
findfs [options] UUID=<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:查看超級塊的信息(分組信息),分區用分組管理
文件系統檢測和修復
常發生于死機或者非正常關機之后
掛載為文件系統標記為“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
-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
掛載點和/etc/fstab
配置文件系統體系
被mount 、fsck 和其它程序使用
系統重啟時保留文件系統體系
可以在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中所有的文件系統
文件掛載的配置文件
/etc/fstab 每行定義一個要掛載的文件系統;
·要掛載的設備或偽文件系統
·掛載點
·文件系統類型
·掛載選項
·轉儲頻率
·自檢次序
*要掛載的設備或偽文件系統:
設備文件、LABEL(LABEL="") 、UUID(UUID="") 、偽文件系統名稱(proc,sysfs)
*掛載選項: defaults
*轉儲頻率: 0:不做備份
1:每天轉儲
2:每隔一天轉儲
*自檢次序: 0:不自檢
1:首先自檢;一般只有rootfs才用1
利用文件,實現文件系統 一些相關命令:
[root@localhost ~]# dd if=/dev/zero of=/testdir/partfile bs=1M count=500 [root@localhost ~]# mkfs.ext4 /testdir/partfile [root@localhost ~]# mkdir /mnt/partfile [root@localhost ~]# mount /testdir/partfile /mnt/partfile/ -o loop
然后vim /etc/fstab加一行
/testdir/partfile /mnt/partfile ext4 loop 0 0
處理交換文件和分區
交換分區是系統RAM 的補充
基本設置包括:
? 創建交換分區或者文件
? 使用mkswap 寫入特殊簽名
? 在 在/etc/fstab 文件中添加適當的條目
? 使用swapon -a 激活交換空間
掛載交換分區
啟用:swapon
swapon [OPTION]… [DEVICE]
-a :激活所有的交換分區;
-p PRIORITY :指定優先級
/etc/fstab:pri=value
禁用:swapoff [OPTION]… [DEVICE]
swap的優先級
·用戶可以給某個swap 指定一個0 到32767 的優先級
·如果用戶沒有指定,那么核心會自動給swap指定一個優先級,這個優先級從-1 開始,每加入一個新的沒有用戶指定優先級的swap ,會給這個優先級減一。
·先添加的swap 的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級( 正數) 永遠高于核心缺省指定的優先級(是負數)。
·優化性能:分布存放,高性能磁盤存放
下面我們來創建一個全新的swap分區:
先用free命令查看下swap大小 free后面可跟-k;-m;-G表示大小用k,m,G顯示
然后我們在新的硬盤上創建一個swap分區
好的,一條命令查看是否創建成功:
OK,創建成功 接下來格式化我們的新分區
好的 完成格式化 這里加了卷標(-L)
接下來進行掛載:vim /etc/fstab
把要掛載的文件寫入系統設置里進行保存 LABEL那行是我們要加的
在啟用之前 可以用swapon -n查看
新硬盤的swap分區啟用成功
然后 來指定一下swap的優先級
這里呢 defaults是系統默認 是負數 把它換成pri=數字 存盤
先禁用一下要改優先級的分區 然后再啟用 優先級修改成功
原創文章,作者:舊城以西,如若轉載,請注明出處:http://www.www58058.com/40874
總結的很完整,圖文并貌,內容充實。