Linux學習—磁盤管理知識點總結
目錄
設備文件
磁盤介紹
磁盤分區
創建磁盤分區
同步分區表
文件系統
一、設備文件
設備文件關聯至設備驅動程序,用戶通過操作這些設備文件間接管理對應的硬件設備
一個設備的名稱表示整個磁盤,而分區則用設備名加上一個分區號來表示
設備文件類型:
塊設備 存取單位是塊,如磁盤
字符設備 存取單位是字符,如鍵盤
為了方便管理這些設備,系統設置了主設備號和次設備號用來區分
看如下示例:
8 代表主設備號 後邊的數字代表次設備號
創建設備文件:
mknod 文件名 b 主設備號 次設備號 創建塊設備文件
mknod 文件名 c 主設備號 次設備號
二、磁盤介紹
(針對機械硬盤)
磁盤的結構圖如下:
CHS(柱面/磁頭/扇區)
C:一個柱面號即磁道號,通常由外向內依次編號
H:一個磁頭號即盤面號,一個盤面僅有一個磁頭
S:一個磁道可以有多個扇區,通常一個扇區512字節,一個扇區包含三個字段
標識字段 校驗字段 數據字段
磁盤的存儲容量=磁頭數*磁道數*扇區數*512(字節)
磁盤的編址方式:
①CHS方式 #柱面,#磁頭,#扇區的方式絕對尋址
②LBA方式 以0柱面,0磁頭,1扇區表示整個磁盤的第一個扇區,後面的扇區相對
三、磁盤分區
在虛擬機界面新創建創建一個磁盤
可是現在遠程終端並不能同步新加的磁盤
需要輸入
echo '- - -' > /sys/class/scsi_host/host0/scan
同步磁盤信息
fdisk -l 查看新創建的磁盤
每個磁盤的第一個扇區存放的是分區信息(MBR—Master Boot Record),包括三部分:
1、boot loader(446字節) Linux下為grub
2、硬盤分區表(16字節*4=64字節)
3、結束位(2字節) 十六進制的55 aa
hexdump命令可以查看二進制的文件,-C表示16進制輸出
hexdump -C -n 512 /dev/sda -v 查看分區信息有數據(16進制)
hexdump -C -n 512 /dev/sdb -v 查看分區信息全為0
現在來做這樣一個實驗(對分區表)
dd if=/dev/sda of=/dev/sdb bs=1 count=512 將/dev/sda的磁盤前512字節信息復制給/dev/sdb
再次執行hexdump -C -n 512 /dev/sdb -v,分區表信息和結束位信息如下:
結果兩張磁盤的分區信息一樣,唯一不同的是/dev/sdb沒有第五個分區的信息(原因是分區表只有16字節*4=64字節,只能保存四張分區表的信息,即不能保存邏輯分區的信息),效果圖如下:
dd if=/dev/zero of=/dev/sdb bs=1 count=512 破壞/dev/sdb的分區信息
fdisk -l
發現/dev/sdb的分區消失
總結:MBR中的分區表就是存放著整個磁盤的分區信息,並且最多只能劃分三個分區加一個擴展分區
繼續實驗(對結束位)
dd if=/dev/sda of=/dev/sdb bs=1 count=512
dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510 (破壞分區信息的結束位)
hexdump -C -n 512 /dev/sdb -v,結果結束位的55 aa變為了00 00
fdisk -l 顯示/dev/sdb沒有分區
dd if=/dev/sda of=/dev/sdb bs=1 count=2 skip=510 seek=510
hexdump -C -n 512 /dev/sdb -v
fdisk -l 顯示/dev/sdb又有分區
總結:結束位用來區分MBR的結束,如果沒有該結束位,則系統無法識別出分區表的結束,即沒有分區
四、創建磁盤分區
fdisk ——磁盤分區
-l 列出指定外圍設備的分區表狀況(以柱面為單位)
-u 搭配-l選項,用扇區數目代替柱面數目(以扇區為單位,一個扇區512字節)
子命令:
a 在當前分區設定一個可啟動標誌
b 編輯一個BSD磁盤標識
c 切換為DOS兼容磁盤配額
d 刪除當前分區
l 列出所有分區的類型
m 主菜單
n 創建一個新分區
o 創建一個DOS分區
p 輸出所有分區列表和每個分區的信息
q 退出,不保存
s 創建一個空的Sun磁盤標識
t 替換當前分區的類型
u 修改分區表中的條目的顯示的單位(柱面和扇區)
v 檢測錯誤,顯示為分配扇區數的總和
w 保存修改退出
x 進入高級操作模式,專家級操作命令
在子命令模式下Ctrl+backspace為刪除鍵
用fdisk命令完成對磁盤的分區工作之後,該磁盤仍然不具備存儲功能,還需要對所需的文件系統格式化
fdisk是一個比較面相底層的系統工具,因此在使用的時候最好預先對數據進行備份,以免誤操作造成數據丟失
gdisk 命令--該命令默認沒有安裝,使用yum -y install gdisk安裝 (和fdisk極其類似)
parted 命令(實時生效,使用的時候註意)
格式:parted + [選項] + 設備文件 [命令 + 參數]
[選項]
-l 顯示所有磁盤的分區信息
[命令 + 參數] (子命令模式下可以使用tab鍵補齊)
mklabel 創建分區表結構(gpt結構不能使用fdisk -l查看)
print 顯示分區信息
mkpart primary 創建分區(默認單位為M)
rm 刪除分區
quit 退出子命令模式
實例:
parted /dev/sdb mklabel gpt mkpart primary 1 200 mkpart primary 200 300 quit parted -l
五、同步分區表
操作系統所在盤不會及時更新分區表信息
查看內核是否同步分區表信息方法:
ls 設備文件名*
cat /proc/partitions
lsblk 命令不會即時顯示,該命令讀取的是內存中的磁盤分區信息(樹狀結構)
同步分區表信息的方法:(只是修改顯示的信息,實際對硬盤沒有操作)
partprobe 設備文件名(centos6僅對非系統所在盤有效)
partx -a /dev/sdb 更新增加的分區
partx -d /dev/sdb --nr NUM1-NUM2 更新刪除的分區
六、文件系統
存儲設備或分區上的文件的方法和數據結構,一個硬盤想要存放數據,必須先創建文件系統
查看當前操作系統支持的文件系統:
ls /lib/modules/$(uname -r)/kernel/fs/
cat /proc/filesystems
創建文件系統:
mkfs 創建文件系統
mkfs.FS TYPE + 設備文件
mkfs -t FS TYPE + 設備文件
mkfs -L label + 設備文件 設定卷標
mke2fs——創建ext系列文件系統
-j 相當於-t ext3
文件系統類型
blkid 查看文件系統信息 (mount列出所有設備的格式類型)
tune2fs + 分區 重新設定ext系列文件系統的參數
-l 顯示指定分區的超級塊信息
-L 修改label
-U 設置UUID
dumpe2fs + 分區 導出分區的文件系統詳細信息(包含超級塊信息)
-h 效果和tune2fs -l一樣
超級塊 :存儲整個文件系統信息的一個塊
一個磁盤有MBR和四個分區,
一個分區有boot sector和文件系統,
一個文件系統有多個block group,
一個block group有超級塊,塊位圖,inode位圖,inode表和數據塊等
dumpe2fs /dev/sda1 dumpe2fs 1.41.12 (17-May-2010) Filesystem volume name: <none> Last mounted on: /boot Filesystem UUID: 051c003c-2cef-4115-bc1c-525759174a77 Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 51200 Block count: 204800 Reserved block count: 10240 Free blocks: 153675 Free inodes: 51161 First block: 1 Block size: 1024 Fragment size: 1024 Reserved GDT blocks: 256 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 2048 Inode blocks per group: 256 Flex block group size: 16 Filesystem created: Tue Jan 9 04:48:06 2018 Last mount time: Tue Feb 13 06:48:50 2018 Last write time: Tue Feb 13 06:48:50 2018 First inode: 11 Inode size: 128 Group 0: (Blocks 1-8192) [ITABLE_ZEROED] Checksum 0x4512, unused inodes 2008 Primary superblock at 1, Group descriptors at 2-2 Reserved GDT blocks at 3-258 Block bitmap at 259 (+258), Inode bitmap at 275 (+274) Inode table at 291-546 (+290) 3785 free blocks, 2009 free inodes, 6 directories, 2008 unused inodes Free blocks: 4408-8192 Free inodes: 24, 41-2048
上為執行dumper2fs /dev/sda1 命令的部分執行結果,Group 0之前是超級塊的內容,之後是每個塊組的一些信息
通常將超級塊、塊位圖、inode位圖成為文件的元數據,而inode表和數據塊成為數據。
文件系統檢測和修復
當對數據修改並將文件寫入磁盤時,發生在非正常關機和死機,就會發生數據不一致的問題,為此需要對文件系統進行檢查。
非正常會有標記 no clean
fsck -p 自動修復
fsck -r 交互式修復
Linux學習—磁盤管理知識點總結