磁盤管理
懶惰的文字搬運工,
一、磁盤基礎概念
對檔案操作指令
open() read() write() close()
設備號碼:
主設備號:major 標識設備型別
次設備號:minor 在同一設備型別設備下區分不同設備
如果主設備號和次設備號一致,說明兩者就是同一個設備,即使檔案的INODE不一樣也是同一個設備
硬碟介面及速率
IDE 133MB/S 并口
SCSI 640MB/S 并口
STAT 6Gbps等同于768MB/S 串口
SAS 6Gbps等同于768MB/S 串口
USB 480MB/S
M.2 450MB/s
NVME 3200 MB/s
注意,速度不單單是由介面決定了,
并口介面:同一線纜可以接多個設備
串口介面:同一線纜只能接一個設備
服務器硬碟大小:
LFF 3.5寸,早期都是這種,和普通家用電腦一樣
SFF 2.5寸,不同與2.5英寸的筆記本硬碟
機械硬碟:
生產中一般都是用機械硬碟,容量大,性價比高,由磁頭、機械臂、盤片組成
磁頭: header 磁頭數=盤面數
磁道: cylinder 磁道數=柱面數
扇區: secotr 512位元組
在centos7及以后版本就不在按照柱面劃分磁區了,而以扇區作為劃分磁區的單位,更加精細化,
centos5\6還是以柱面為單位進行劃分磁區
機械硬碟轉速 5400 7200 10000 15000 RPM 每分鐘轉多少圈
尋址方式:
CHS: 早先方式,已經淘汰
CHS的意思就是先確認柱面(Cylinder),再確認磁頭(Header),最后確認扇區(Sector),先柱面再磁頭再扇區
CHS采用24位尋址
其中前10位表示磁道,中間8位表示磁頭,后6位表示扇區
2^10*2^8*2^6=1024*256*64=16,777,216
磁盤最大容量:
16,777,216*512=8,589,934,592?=8,388,608?K=8,192M=8G
LBA:
LBA是一個整數,通過轉換成CHS格式繼續完成磁盤具體尋址
ATA-1規范采用28位LBA,同樣每個扇區512位元組,最大128GB
ATA-6規范采用48位LBA,同樣每個扇區512位元組,最大128PB
最大尋址個數:2^48
磁盤最大容量:2^48*512=131,072?T=128P
磁道號越小,速度越快,磁道號越大,速度越快,
訪問資料的時間=尋道的時間 + 盤片轉圈的時間 + 起頭讀資料的時間
也可以把盤片轉圈的時間算到尋道的時間內
硬碟的命名:
centos5中: IDE 稱為 hd## hda1 hda2 hdb1 hdc1...
STAT稱為 sd## sda1 sda2 sdb1 sdb2...
USB 稱為 sd## sda1 sda2 sdb1 sdb2...
SAS 稱為 sd## sda1 sda2 sdb1 sdb2...
SCSI稱為 sd## sda1 sda2 sdb1 sdb2...
centos6\7\8中: 無論IDE還是STAT SCSI SAS都稱為sd##
二、磁盤磁區:
(一)、添加硬碟
查看硬碟的方式:
cat /proc/partitions 查看記憶體中的磁區表資訊
ll /dev/sd* 查看記憶體中的設備資訊
lsblk 查看記憶體中的設備磁區資訊
fdisk -l 查看硬碟中的磁區資訊
在不關機重啟的下識別硬碟
echo '---' > /sys/class/scsi_host/host0/scan
其中host0可以改成host1 host2 host3 host4
其中scsi_host標識是scsi介面型別的磁盤
小技巧:可以定義成別名
alias scandisk='echo '\''- - -'\'' > /sys/class/scsi_host/host2/scan;echo '\''- - -'\'' > /sys/class/scsi_host/host0/scan' #表示數字0-n
判斷硬碟型別:
lsblk -d -o name,rota 1 表示機械硬碟 0表示固態硬碟
-f 可以顯示對應的檔案系統
cat /sys/block 1 表示機械硬碟 0表示固態硬碟
(二)、磁區介紹
磁盤磁區格式化分為低級格式化和高級格式化,
低級格式化主要是磁盤生產廠商再磁盤出廠時進行的,主要時劃分磁道,生成簇,
高級格式化主要是用來創建檔案系統,
磁區的優勢:
優化I/O性能
實作磁盤空間配額限制
提高修復速度
隔離系統和程式
安裝多個OS
采用不同檔案系統
查看磁區資訊
cat /proc/partitions 查看記憶體中的磁區表資訊
ll /dev/sd* 查看記憶體中的設備資訊
lsblk 查看記憶體中的設備磁區資訊
fdisk -l 查看硬碟中的磁區資訊
現在磁盤磁區格式有兩種型別,一種是早期的MBR型別,一種是現在較為流行的GPT型別,

MBR型別:
MBR,又稱為主引導記錄(Master Boot Record),位于0柱面,0磁頭,0扇區當中,使用了32位二進制來表示扇區數,也就是最大只能支持2TB大小的磁盤,
該扇區共計512位元組,分成三個部分,
第一部分:前446位元組,用來存放作業系統引導程式(bootloader),這是引導某個磁區上的作業系統起來的第一段程式,
第二部分:后64位元組,用來存放磁區表,每16個位元組標識一個主磁區,一共可以標識4個主磁區,
其中每個磁區16個位元組介紹:
第1個位元組:引導標志,十六進制80表示活動磁區,00表示非活動磁區,在一個硬碟上只能由一個活動磁區,標識此磁區上存在作業系統,
第2~4個位元組:描述了磁區起始位置的磁頭號,柱面號,扇區號,其中第2個位元組的8位標識起始磁頭號,第3個位元組低6位標識起始扇區號,第3個位元組高2位和第4個位元組的8位標識起始柱面號,這3個位元組也就是磁區起始位置的CHS描述方法
第5個位元組:磁區型別,0標識磁區未使用,83表示linux型別磁區,82表示swap磁區,8e表示LVM邏輯卷,05表示擴展磁區
第6~8個位元組:描述了磁區結束位置的磁頭好,柱面號,扇區號,其中第6個位元組的8位標識結束磁頭號,第7個位元組低6位標識結束扇區號,低7個位元組高2位和第8個位元組的8位標識結束柱面號,這3個位元組也就是磁區結束位置的CHS描述方法
第9~12個位元組:使用LBA方式描述了磁區的起始位置,
第13~16個位元組,使用LBA方式描述了磁區的結束位置,
第三部分:最后2個位元組,有效標識位,55AA表示磁區表有效,
如果4個磁區不夠使用,可以拿出一個主磁區來擴展使用,變成擴展磁區,擴展磁區的16個位元組里面記錄了另外一段磁盤空間,利用另外一段磁盤空間的EBR(前512位元組)記錄磁區資訊,
其中EBR的前446位元組未使用,中間64位元組,最后2位元組的結束表示,
而中間64位元組中,
第一個16個位元組記錄了當前邏輯磁區的起始位置、結束位置、磁盤型別等等,同MBR型別;
第二個16個位元組記錄了下一個邏輯磁區的起始位置、結束位置、磁盤型別等,同MBR
第三個16個位元組,未使用
第四個16個位元組,未使用
這樣就可以突破只能記錄4個磁區的限制了,同時也就解釋了邏輯磁區不允許中間有間隔,如果刪了sda5后,后面的sda6就會自動變成sda5的原因,因為邏輯磁區是靠前一個邏輯磁區中的EBR記錄下一個邏輯磁區的起始位置的,
MBR磁區中一塊硬碟最多有4個主磁區或者也可以有最多3個主磁區+1個擴展磁區(N個邏輯磁區)
例如, 我們想劃分出6個磁區,就有下面幾種可行方案
一個主磁區和五個擴展磁區:1P + 5L
sda1 + sda5 + sda6 + sda7 + sda8 + sda9
兩個主磁區和四個擴展磁區:2P + 4L
sda1 + sda2 + sda5 + sda6 + sda7 + sda8
三個主磁區和三個擴展磁區:3P + 3L
sda1 + sda2 + sda3 + sda5 + sda6 + sda7
備注:所有的邏輯磁區一定是從5號開始的,前1~4可以是主磁區和擴展磁區,
GPT型別 :
GPT型別出來的所有型別都是主磁區,GPT突破了MBR只能分4個主磁區的限制,最大允許128個主磁區,
分為4個區域:EFI資訊區(GPT頭),磁區表,GPT磁區區域、備份區域,
GPT頭:前512位元組為保護的MBR磁區,其作用是定位磁區表的位置和大小,GPT頭還包括GPT頭和磁區表的校驗和
磁區表:這個區域由GPT頭定義,一般占用磁盤LBA2~LBA33號扇區,每個扇區可儲存4個主磁區的磁區資訊,所以一共可以分128個主磁區,
每個磁區由起始地址、結束地址、型別值、名字、屬性標志、GUID值組成,
GPT磁區區域:資料區,這個區域的起始地址和結束地址由GPT頭定義,
備份區:備份區域我i與磁盤的尾部,包含GPT頭和磁區表的備份,一共使用了最后的33個扇區,最后一個扇區備份GPT頭,倒數第二個扇區備份LBA2的扇區內容,等等倒敘備份,
老式的BIOS不支持GTP,需要使用UEFI,所以就由了兩種組合
BIOS + MBR
UEFI + GPT
BIOS和UEFI區別
BIOS采用了16位匯編語言撰寫,只能運行在實模式(記憶體尋址方式由16位段暫存器的內容乘以16(10H)當欄位基地址,加上16位偏移地址形成20位的物理地址)下,可訪問的記憶體空間為1MB,只支持字符操作界面
UEFI采用32位或者64位的C語言撰寫,突破了實模式的限制,可以達到最大的尋址空間,支持圖形操作界面,使用檔案方式保存資訊,支持GPT磁區啟動,適合和較新的系統和硬體的配合使用
(三)、磁區的相關命令
fdisk 管理MBR磁區
gdisk 管理GPT磁區
parted 高級磁區操作,可以是互動或非互動式 ,慎重使用,沒有保存這一說法,直接就生效
parted命令
備注,此命令是立即生效,小心謹慎,centos6上不能使用parted命令
pirnt 列印磁區表
mklabel [gpt|msdos] 指定卷標
mkpart [primary] # ## 創建primary磁區,大小是從第#個扇區到第##個扇區
rm # 洗掉第幾個磁區
fdisk命令
fdisk [option] DEVICE
查看磁區資訊
fdisk -l DEVICE 查看DEVICE設備上的磁區資訊,DEVICE可以省略,標識列出系統所有硬碟的磁區資訊
管理磁區資訊
注意:管理磁區時,DEVICE不能省,必須指定,
m 幫助
w 保存
q 不保存退出
p 顯示磁區表
n 新增磁區
d 洗掉磁區
t 更改磁區型別,也就是更改system ID
l 可以顯示磁區型別
gdisk命令
查看磁區資訊
gdisk -l DEVICE 查看DEVICE設備上的磁區資訊,DEVICE可以省略,標識列出系統所有硬碟的磁區資訊
管理磁區資訊
m 幫助
w 保存
q 不保存退出
p 顯示磁區表
n 新增磁區
d 洗掉磁區
t 更改磁區型別,也就是更改system ID
l 可以顯示磁區型別
三、檔案系統創建
mkfs命令
-f 強制創建檔案系統
-L "LABEL" 創建卷標,最好加上引號
-t TYPE 指定創建的檔案系統型別
-b ## 指定塊大小,[1024|2048|4096]也就是指定檔案系統分配的最小單位
mkfs.xfs DEVICE 創建xfs檔案檔案系統
mkfs.ext4 DEVICE 創建ext4檔案系統
mkfs -t xfs 創建xfs檔案系統
mkfs -t ext4 創建ext4檔案系統
uuidgen命令
用于隨機生成UUID
tune2fs命令
-l DEVICE 查看DEVICE設備的資訊
-U DEVICE 更改設備的UUID
dumpe2fs命令
dumpe2fs DEVICE 查看DEVICE設備的分組資訊
xfs_info命令
xfs_info DEVICE 查看DEVICE設備的資訊
blkid命令
可以查看塊設備的UUID和設備型別,沒有創建檔案系統的磁區,這個命令是查不出的
findfs命令
可以查找設備
四、檔案系統檢測和修復
注意:一定不要在掛載狀態下執行修復命令
fsck命令
fsc.FS_TYPE或 fsck -t FS_TYPE
選項:
-a 自動修復錯誤
-r 互動式修復錯誤
e2fsck命令
選項:
-f 強制修復
-y 自動回答yes
-p 自動進行安全的修復檔案系統問題
xfs_repair命令
xfs檔案系統專用檢測修復工具
選項:
-f 修復檔案
-n 只檢查
-d 允許修復只讀的掛載設備,在單用戶下修復 / 時shiyong ,然后立即重啟
五、掛載
關于掛載,在centos6當中每次掛載都會把資訊寫入到/etc/mtab檔案中,
cat /proc/mounts可以讀取實時掛載資訊
mount命令
一個掛載點,同一時間只能掛載一個設備,一個掛載點同時掛載多個設備,但只能看到最后一次掛載的設備內容
如果一個未掛載的掛載點內有檔案,掛載后,此掛載點內原來檔案會暫時無法訪問,作為掛載點的目錄一般未空目錄
mount命令讀取的也是/etc/mtab的資訊,可以使用mount -n選項不更新寫入到/etc/mtab檔案
mount [OPTIONS] 掛在設備 掛載點
mount 單命令可以查看已經掛載的設備資訊
選項:
-t TYPE 指定掛載的設備型別
-r 掛載成只讀
-w 掛在成讀寫
-n 不更新/etc/mtab
-a 自動掛載,只會掛載那些未掛載的設備,掛載上的設備不會重新掛載,
-L '卷標名' 使用卷標名掛載
-U 'UUID' 使用UUID掛載
-B 或 --bind 把一個檔案夾掛載到另外一個檔案夾
-o OPTIONS
remount 重新掛在
rw 讀寫掛載
ro 只讀掛載
async/sync 是否異步寫入,建議asnyc
atime/notime 是否更新檔案或目錄的訪問時間,建議noaime
diratime/nodiratime 是否更新目錄的訪問時間
exec/noexec 里面的可執行檔案直接運行,但是還可以通過腳本呼叫,間接運行
suid/nosuid 是否支持suid
user/nouiser 是否支持普通檔案掛載設備
loop 掛 載成回環設備檔案
defaults 默認
nouuid 不檢測UUID掛載
掛載設備:
DEVICE
UUID=
LABEL=
有部分特殊的設備:tmpfs swap
lsof命令
lsof /PATH/TO/SOMEFILE 可以查看誰在使用此檔案
fuser命令
-V 顯示誰在使用
-k 結束
-m 指定掛載點
findmnt命令
判斷目錄是不是掛載點,然后判斷echo $?判斷狀態
如果是掛載點,就會把掛載點的資訊都顯示出來
如果不是掛載點,就不會又任何顯示
可以使用$?判斷狀態,0表示又是掛載點,1表示不是掛載點
示例
[root@CentOS7 ~]# findmnt /media [root@CentOS7 ~]# echo $? 1 [root@CentOS7 ~]# findmnt /boot TARGET SOURCE FSTYPE OPTIONS /boot /dev/sda1 xfs rw,relatime,attr2,inode64,noquota [root@CentOS7 ~]# echo $? 0 [root@CentOS7 ~]# echo $? 0 [root@CentOS7 ~]# findmnt /media [root@CentOS7 ~]# echo $? 1
umount命令
取消掛載
關于快取和緩沖
緩沖區buffer 緩沖寫入到磁盤的資料,寫入快取
快取cache 快取資料到記憶體當中,主要用來加速資料從硬碟中讀取的速度,讀入快取,
在centos6中還是區分buffer和cache了,centos7以后的版本就不區分了,復用相同檔案內容,
swap建議值:
低于2GB 建議2倍記憶體大小
2~4G 建議1倍記憶體大小
4~ 4G或0.5倍記憶體大小
swap是根據/proc/sys/vm/swappiness的值決定是否啟用swap
/proc/sys/vm/swapiness的值表示剩余記憶體達到此值的百分比就啟用
mkswap命令
用來格式化swap磁區
swapon命令
選項:
-a 自動掛載swap磁區
-s 可以查看掛載的swap磁區,實際上-s選項就是顯示/proc/swaps檔案的內容,而且可以顯示多個設備的優先級(priority)
swapoff命令
swapoff DEVICE禁用某個swap設備
mkisofs命令
mkisofs -r -o /root/etc.iso /etc 把某個目錄打包成iso鏡像檔案
lsusb命令
查看usb設備是否識別
dmesg命令
可以查看硬體設備
df命令
可以查看已掛載的各個磁區使用資訊,包括資料和元資料的占用
選項:
-h 人性化顯示
-i 顯示inode節點資訊
-P 按POSIX規范顯示
-T 顯示出檔案系統型別
du命令
可以顯示檔案或目錄的資料實際使用大小
選項:
-h 人性化顯示,默認是以k為單位顯示
-s 求和,只顯示總共大小
六、RAID陣列
RAID0 多個硬碟組合成大的虛擬硬碟,虛擬硬碟之和就是多個硬碟的大小總和,
讀性能提升,寫性能提升,如果一個磁盤損壞,資料就徹底報廢,沒有任何容錯性,所以生產中不會使用,
RAID1 多個硬碟互為鏡像,主要用來防止單點失敗,這和備份不一樣,僅是用來防止一個硬碟損壞,
讀性能提升,寫性能略有下降,
RAID4 其中一個硬碟固定只放了校驗位,當其中一塊硬碟壞了,可以通過異或計算出來,也就是允許壞一塊硬碟,存放校驗位的硬碟經常損壞
讀性能提升,寫性能提升
RAID5 多塊硬碟輪流存放校驗位,只允許壞一塊硬碟,
讀性能提升,寫性能提升
RAID6 和RAID5差不多,只不多有兩塊硬碟用來存放校驗位
RAID10 先RAID1 再RAID0 先鏡像 再組合 一般都用這個
RAID01 先RAID0 再RAID1 先組合 再鏡像 現在不用這個了
RAID50 先RAID5 再RAID0
JBOD 先用使用一個硬碟,再使用一個,依次,主要用來組合不同容量的硬碟
七、LVM邏輯卷
(一)邏輯卷創建
先創建PE,再創建卷組,再創建邏輯卷,格式化,掛載就能使用了,
pvcreate命令
pvcreate DEVICE1 DEVICE2 創建PE
pvs命令
可以顯示簡要pe資訊
pvdisplay命令
可以顯示詳細的pe資訊
vgcreate命令
創建邏輯卷組
vgs命令
可以顯示簡要pv資訊
vgdisplay命令
可以顯示詳細pv資訊
vgextend命令
vgextend VG_NAME DEVICE 把PE物理卷加入到vg卷組中
lvcreate命令
lvcreate -n LV_NAME -L 600M VG_NAME
-n 指定邏輯卷的名稱
-l 指定PE的個數
-L 指定容量大小,容量是PE的整數倍,不一定會剛剛好600M
-s 創建快照
lvcreate -n binlogo_snapshot -s -L 100M /dev/vg0/binlog
lvs命令
可以顯示簡要lv資訊
lvdispaly命令
可以詳細顯示lv的資訊
lvextend命令
lvextend -L +100%free VG_NAME
-l 指定PE的個數 +100%vg表示全部空間
-L 指定容量大小,容量是PE的整數倍,不一定會剛剛好600M +100%free表示全部空間
-r 自動擴展檔案系統,無論什么檔案系統,
同步檔案系統邊界命令
resizee2fs LV_DEVICE 同步ext系列檔案系統
xfs_growfs 掛載點 同步xfs檔案系統
(二)邏輯卷縮減
ext4檔案系統才支持縮減,xfs檔案系統不支持縮減
縮減只支持離線縮減,先取消掛載
縮減有風險,建議先備份
縮減邏輯卷五大步
第一步、取消掛載
第二步、檢查檔案系統
e2fsck DEVICE
第三步、縮減檔案系統
resize2fs DEVICE ###
第四步、縮減邏輯卷
lvreduce -L ### DEVICE
第五步、重新掛載
(三)邏輯卷創建快照
lvcreate -n binlogo_snapshot -s -L 100M /dev/vg0/binlog 創建快照
lvcreate --merge /dev/vg0/binlog_snapshot 恢復快照,合并快照之前先要取消掛載
再掛載xfs檔案系統型別的快照的時候,需要使用-o -nouuid選項,一定要ro掛載 ext系列檔案系統,不用加-o -nouuid直接就能掛載
快照特點:
備份速度塊
應用場景是測驗環境,不能完全代替備份
創建快照之后性能可能會略有下降
(四)邏輯卷洗掉
從卷組總拆除硬碟
pvmove DEVICE 意思就是把DEVICE上面的資料移動到別的設備上
vgreduce vg0 DEVICE 意思就是把DEVICE設備從vg0中洗掉
pvromove DEVICE 從PE中移除DEVICE設備
邏輯卷洗掉
先取消掛載
再洗掉邏輯卷
再洗掉卷組
在洗掉物理
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/100143.html
標籤:Linux
