三.Linux磁碟與文件系統的管理 MBR扇區(512B) 磁碟的分區組成 Boot sector 扇區(用來裝引導程式) Super block 記錄inode與Block的信息 Inode block中存儲文件時,會產生文件屬性記錄(user,group,文件存儲在哪個block中),每個ino ...
三.Linux磁碟與文件系統的管理
MBR扇區(512B)
磁碟的分區組成
Boot sector 扇區(用來裝引導程式)
Super block 記錄inode與Block的信息
Inode block中存儲文件時,會產生文件屬性記錄(user,group,文件存儲在哪個block中),每個inode記錄一個文件(最大128K)(記錄一個block消耗4B,最多記錄block數為32塊)並且消耗128B空間
Block 被分為若幹大小為4K的block(劃分分區時可以指定其大小)
Block可以分成若幹個Block group其中包含(super block,文件系統的描述(Block group的信息),塊對照表/點陣圖(記錄block的使用情況),inode對照表/點陣圖(inode的使用情況),inode表(文件屬性),block)
Ext2文件系統中不存在日誌步驟
Ext3文件系統存儲文件的流程
首先系統在inode點陣圖中查看inode中未使用的情況,將文件的屬性中存入inode中並且生成日誌,然後在block點陣圖中查看哪些block未使用,將文件寫入到block中並且生成日誌,然後更新block點陣圖與inode點陣圖。
在對文件進行寫入時由一個虛擬文件系統VFS來選擇採用哪種文件系統進行存儲
鏈接文件
軟鏈接 相當於windows下的快捷方式
硬鏈接 複製與硬鏈接的區別: 複製的文件會生成新的inode,並且會將文件複製到新的block中,硬鏈接也會產生新的inode,但不會將文件複製到新的block中,而是鏈接到原先文件的block。硬鏈接就是一個文件有多個名字,ls –l 中查看的數字,
表示同一個文件有幾個名字,即這個文件創建了幾個硬鏈接;由於每一個分區中都有一個inode點陣圖來記錄相應分區的block文件屬性,所以創建的硬鏈接不會跨分區,即只能在同一個分區中創建硬鏈接。
磁碟分區
一塊硬碟,最多只能劃分4個主分區(現在可以劃分128個),即主分區+擴展分區 <= 4;一塊硬碟包括512位元組MBR區(446位元組為引導程式,64位元組為分區表(標記一個主分區消耗16位元組),2位元組為結束符)。如果想劃分更多的分區的話,需要劃分一個擴展分區,然後在擴展分區中劃分若幹邏輯分區。
主分區:一塊硬碟主分區的分區符為sd[1-4](目前可以劃分為128個主分區),劃分分區時是以柱面的形式來劃分的,分區的最小組成單位為柱面,一個柱面的大小為8M。
邏輯分區的編號是從5開始的,創建的第一個邏輯分區是從擴展分區的開始處開始的。
當分區操作完成後,需要更新相應硬碟的分區表,更新之後所劃分出的分區是不能直接使用的,需要對其進行格式化操作和掛載操作,掛載的含義為:創建一個文件夾(目錄),該文件夾指向被掛載的分區。
如果需要查看新分區的各項屬性,應該在格式化該分區之後,通過tune2fs命令查看
磁碟檢驗
當磁碟出現問題後,可以對磁碟進行檢查
磁碟掛載與卸載
要使用分區,必須要將分區掛載;當卸載時,如果出現busy則表明在當前目錄有進程正在進行。
採用mount進行掛載時是臨時掛載,重啟後,將會卸載。如果需要開機自動掛載,則需要將掛載命令按照相應的格式寫入相應的文件中(/etc/fstab)
格式:設備名 掛載點 文件系統 預設許可權 是否備份(0表示不做) 是否採用fsck檢查
磁碟參數查看修改
cdef稱為盤符,12345稱為捲標,在磁碟參數中,有一個參數為磁碟分區掛載次數,每掛載一次該次數加1,直到達到最大的掛載次數,系統在重啟的時候會強制重啟這個次數。
保留的block不會存放數據。
記憶體交換空間(swap)的構建
交換分區:電腦記憶體比較小,當記憶體不足的時候,在硬碟中劃分一部分分區當作模擬記憶體,即為交換空,windows為虛擬記憶體
首先對磁碟進行分區操作(fdisk),更改其系統類型為swap,再更新磁碟分區表(partprobe), 在格式化為交換分區(mkswap),最後激活該交換分區(swapon),但是當系統重啟之後,該交換分區不會生效,開機生效需要寫進/etc/fstab中。
文件系統的特殊查看與操作
在存儲文件的時候,如果該文件的大小小於單個block的大小,則該文件還是會占用該block的所有空間,這樣對空間的利用就不是很好,容易占用空間。
Gdisk與fdisk都可以對磁碟進行分區操作,不過gdisk主要針對GPT而fdisk主要針對MBR,使用之前需要查看正確的分區表再使用相應的指令,不過可以通過parted對兩種分區表進行分區操作。
命令
Filefrag -v files 可以查看files文件存儲在哪幾個block中
dumpe2fs 分區 查看分區的信息
ls -i 文件 查看file的inode編號
ls -id 目錄 查看目錄的inode編號
df 查看已掛載文件系統容量及使用情況
df -h 以人類更適合查看的單位顯示
df -T 查看文件系統類型
du 文件夾 查看文件夾的大小(同時也會顯示文件夾下所有文件的大小)
du -h 以人類更適合查看的單位顯示
du -s 文件夾 只顯示文件夾的大小
ln -s files sfile 創建sfile為文件files的快捷方式,即file為軟鏈接指向files
ln files yfile 創建yfile為文件files的硬鏈接
fdisk -l 硬碟 列出磁碟分區表
fdisk 硬碟 對該硬碟進行分區操作
partprobe 硬碟 更新當前硬碟的分區表
partprobe 更新所有硬碟的分區表
mkfs -t 文件類型 硬碟分區符 格式化當前分區 = mkfs.文件系統 硬碟分區符
mkfs -t 文件類型 -b 多少位元組 硬碟分區符 表示格式化操作後的block size的設定
fsck 硬碟/分區 對磁碟或者分區進行檢測
fsck -f 硬碟/分區 對磁碟或分區進行強制檢查
fsck -C 硬碟/分區 可以顯示檢查的過程
badblocks 硬碟/分區 檢查硬碟或分區的壞道
badblocks -sv 硬碟/分區 檢測硬碟或分區的壞道,並且顯示出來檢測結果
mount -o 選項 -t [文件系統] 外部設備 目錄 將設備掛載到目錄
umount 外部設備 將分區卸載
umount 掛載點 將分區卸載
mount 查看當前的掛載
mount -o remount.ro 目錄 重新掛載掛載在目錄的分區(ro: 以只讀的方式;rw:可讀可寫;noexec:沒有執行許可權)
fuser -mv 目錄 查看當前目錄正在進行的進程
tune2fs -I 磁碟分區 查看磁碟參數
tune2fs -L 捲標 磁碟分區 將磁碟分區的捲標改為[捲標]
e2label 磁碟分區 查看磁碟分區的捲標
e2label 磁碟分區 捲標 更改磁碟分區的捲標為[捲標]
mount -o loop xxx.iso 目錄 將鏡像掛載到目錄下
partprobe 磁碟 更新磁碟分區表
mkswap 磁碟分區 將文件系統類型為swap的分區格式化交換空間分區
swapon 磁碟交換空間分區 激活該交換空間分區
swapoff 磁碟交換空間分區 關閉改交換空間分區
mount LEABLE=yy 目錄 將捲標為yy的分區掛載到目錄下
光碟的文件系統為iso9660,掛載iso鏡像時需要加上loop(以上操作為開機掛載/etc/fstab)
ll -sh 查看目錄文件消耗的實際block數量*block大小的值
lsblk 查看當前系統的磁碟分區情況
blkid 磁碟 顯示磁碟的分區表類型(GPT或MBR(msdos))
blkid 磁碟分區 顯示磁碟分區的UUID以及文件系統類型