1. 程式人生 > >磁盤及文件系統管理詳解

磁盤及文件系統管理詳解

zl

磁盤管理:


機械式硬盤:

U盤、光盤、軟盤、硬盤、磁帶

MBR:主引導記錄(512byte),不屬於任何分區

446byte:BootLoader,程序

64byte:每16byte標識一個分區(最多只能創建四個主分區,主+擴展<=4,擴展分區只能有一個)

2byte:Magic Number,標記MBR是否有效


RPM:轉/每分鐘

iNode條目:存儲的是inode號,文件的屬主屬組(Owner/Group)、擴展屬性、權限(Mode)、大小(Size)、時間戳(Timestamps)等各種跟文件數據沒有關系的信息,以及直接/間接/多級間接磁盤塊指針;但是沒有文件名

目錄:路徑映射表

新建文件:找到空iNode以分配iNode節點,找到磁盤塊以填充數據內容

刪除文件:清空iNode節點內容,存儲塊標記為未使用,但數據未刪除

剪切文件:修改iNode節點的存放路徑(同一分區)

復制文件:創建新文件並填充數據內容

跨分區剪切文件:新分區建立文件→從老分區復制文件→老分區刪除文件

inode Bitmap(iNode位圖):標識iNode

block Bitmap(塊位圖):位圖是為了加快索引

Super Block(超級塊):存儲的內容--------有多少塊組、每個塊組中有多少塊、塊大小、空閑/引用磁盤塊、空閑/引用iNode;可有多個備份

GDT(塊組描述符表Group Description Table):保存的內容---------當前分區上每個塊的塊組名,每個塊組起始磁盤號、結束塊的編號;需備份

Boot Block:任何一個分區的第一個塊,預留出來,不能存數據

inode Table(iNode表):存放目錄文件與inode號的對應關系


Boot BlockBlock Group 0Block Group 1 ...Block Group n

/ \

/ \

Super BlockGDTBlock Bitmapinode Bitmapinode TableData Blocks



鏈接文件

硬鏈接:直接指向同一個iNode的具有不同路徑的兩個文件

1.只能對文件創建,不能應用於目錄

2.不能跨文件系統

3.創建硬鏈接會增加文件被鏈接的次數(ls -l)

軟鏈接(符號鏈接):鏈接文件中保存的內容是被鏈接文件的絕對路徑,權限取決於實際被鏈接文件

1.可應用於目錄

2.可以跨文件系統

3.不會增加被鏈接文件的鏈接次數

4.其大小為指定的路徑所包含的字符個數

# ln [-s -v] SRC DEST


# du FILE (顯示目錄下每個文件及目錄本身的大小)

-s:顯示目錄的大小

-h:單位換算

# df (顯示磁盤分區使用情況)

-i:iNode使用情況

-P:磁盤塊使用情況

-h:換算為合適的單位


設備文件

塊設備:以塊為單位,隨機訪問的設備-----硬盤

字符設備:以字符為單位的線性設備-----鍵盤

# ll /dev/sda1:(沒有大小)

brw-rw----. 1 root disk 8, 1 Nov 16 08:57 sda1

8主設備號:標識設備類型

1次設備號:標識同一類型中不同設備

創建設備文件:(設備文件需與真實硬件相關聯才能正常使用)

# mknod [OPTION]... NAME TYPE [MAJOR MINOR]

-m MODE:指定權限

TYPE:b(塊設備)、c(字符設備)

硬盤設備的設備文件名:

IDE、ATA:/dev/hd[a-d](第一個IDE口:主/dev/hda+從/dev/hdb,第一個主分區/dev/hda1)

SATA/SCSI/USB:/dev/sd[a-p]

軟驅:/dev/fd[0-1]

打印機:/dev/lp[0-15]

光驅:/dev/cdrom 鼠標:/dev/mouse 磁帶機:/dev/st0或/dev/ht0(IDE設備)

a、b、c...來區別同一種類型下的不同設備

邏輯分區可以有多個(從5開始),擴展分區只能有一個,主分區最多可以有四個

查看當前系統識別了幾塊硬盤:

# fdisk -l [/dev/DEVICENAME] (列出當前系統上的所有[指定]磁盤及其磁盤分區

管理磁盤分區:

低級格式化:創建磁道

高級格式化:創建文件系統(利用VFS使得Linux可以支持多種文件系統,作翻譯官)

# mkfs.文件類型名稱 硬盤分區名稱(mkfs -t ext2 = mkfs.ext2)

文件類型名稱:cramfs,ext2/3/4,fat,msdos,xfs,btrfs,minix,vfat

ext3(journal file system日誌文件系統):能加快文件系統的修復速度

分區:數據區、元數據區、日誌區

專門管理ext系列文件:

# mke2fs

-j:創建ext3類型文件系統

-b BLOCK_SIZE:指定塊大小,默認為4096,可用取值為1024、2048或4096

-L LABEL:指定分區卷標

-m #:指定預留給超級用戶的塊數百分比

-i #:用於指定為多少字節的空間創建一個inode,默認為8192;這裏給出的數值應為塊大小的2^n倍

-N #:指定iNode個數

-F:強制創建文件系統

-E:用戶指定額外的文件系統屬性

# blkid 硬盤分區名稱 (顯示uuid值全局唯一標識符、卷標label和type等相關屬性屬性,)

# e2label (用於查看或定義卷標)

# e2label 設備文件 卷標 (設定卷標)

# tune2fs (調整文件系統的相關屬性)

-j:不損害原有數據,將ext2升級為ext3

-L LABEL:設定或修改卷標

-m #:調整預留百分比

-r #:指定預留塊數

-o:設定默認掛載選項

-c #:指定掛載次數達到#次之後進行自檢,0或-1代表關閉此功能

-i #:每掛載使用多少天後進行自檢,0或-1代表關閉此功能

-l:顯示超級塊之後的信息

# dumpe2fs (顯示文件系統相關信息)

-h:只顯示超級塊信息

# fsck (檢查並修復Linux文件系統)

-t FSTYPE:指定文件系統類型

-a:自動修復(不詢問)

# e2fsck (專用於修復ext2/3文件系統)

-f:強制檢查

-p:自動修復

# fdisk /dev/sda (交互式命令)

p:顯示當前硬件的分區

n:創建新分區

d:刪除一個分區

w:保存退出

q:不保存退出

t:修改分區類型

l:顯示所支持的所有類型

# cat /proc/partitions (判斷內核是否讀到了新建的分區表信息)

# partprobe [/dev/sda] (通知內核重讀[指定]分區表)


掛載:將新的文件系統關聯至當前根文件系統

卸載:將某文件系統與當前根文件系統的關聯關系予以移除

掛載:mount

# mount (顯示當前系統已經掛載的設備及掛載點)

# mount [options] [-o options] 設備 掛載點

-a:表示掛載/etc/fstab文件中定義的所有文件系統

-n:默認情況下,mount命令每掛載一個設備,都會把掛載的設備信息保存至/etc/mtab文件,使用-n選項意味著掛載設備時,不把信息寫入此文件

-t FSTYPE:指定正在掛載設備上的文件系統的類型,不使用此選項時,mount會調用blkid命令獲取對應文件系統的類型

-r:只讀掛載,掛載光盤時常用此選項

-w:讀寫掛載

-o:指定額外的掛載選項,也即指定文件系統啟用的屬性

remount:重新掛載

loop:掛載本地回環設備(可用於掛載鏡像)

ro:只讀掛載

rw:讀寫掛載

設備:

設備文件:/dev/sda5

卷標:LABEL=" "

UUID:UUID=" "

掛載點:目錄

要求:

此目錄沒有被其他進程使用

目錄得事先存在

目錄中的原有文件將會暫時隱藏

掛載完成後,要通過掛載點訪問對應文件系統上的文件。如光盤鏡像不能直接被訪問,經過掛載之後可以在掛載點中查看其包含內容

卸載:umount

# umount 設備/掛載點

卸載註意事項:掛載的設備沒有進程使用

# fuser (驗證進程正在使用的文件或套接字文件)

-v:查看某文件上正在運行的進程

-k:

-m:

# fuser -km MOUNT_POINT (終止正在訪問此掛載點的所有進程)


swap分區(交換分區):必須是一個獨立的分區

# free (查看分區使用情況)

buffers:緩沖(大→緩沖區→小)

cached:緩存(小→緩存區→大)

創建交換分區:

fdisk命令中,t調整分區類型為82

# mkswap /dev/sda#

-L LABEL

掛載交換分區:

# swapon /dev/sda# (啟用交換分區)

-a:啟用所有的定義在/etc/fstab文件中的交換設備

# swapoff /dev/sda# (關閉交換分區)


回環設備:

loopback:使用軟件來模擬實現硬件

創建一個鏡像文件,120G


創建文件的方式模擬存儲空間:

dd命令:直接復制底層數據流

if=input_file:指定數據來源

of=output_file:指定數據存儲目標

bs=#:設置每個塊的大小

count=#:設置要拷貝塊的個數

conv=ucase:將字母從小寫轉換成大寫

conv=lcase:將字母從大寫轉換為小寫

seek=#:創建數據文件時,跳過的空間大小


文件系統的配置文件/etc/fstab:

OS在初始化時,會自動掛載此文件中定義的每個文件系統

內容:

要掛載的設備 掛載點 文件系統類型 掛載選項 轉儲頻率 文件系統檢測次序

轉儲頻率:跟文件系統備份相關,用於定義多久對此文件系統做一次完全備份,0:不備份,1:每天備份,2:每兩天一次備份....

文件系統檢測次序:只有/為1,其他文件系統可為2,0表示不檢查


文件管理---------壓縮、解壓縮

壓縮格式:gz,bz2,xz,zip,z

壓縮算法:算法不同,壓縮比也會不同

compress:FILENAME.z

uncompress:

gzip:.gz(只能壓縮文件,不能壓縮目錄)

# gzip /PATH/TO/SOMEFILE (壓縮完成後會刪除原文件)

-d:解壓縮

-#:1-9,指定壓縮比,默認是6

# gunzip /PATH/TO/SOMEFILE.gz (解壓完成後會刪除原文件)

# zcat /PATH/TO/SOMEFILE.gz (不解壓的情況,查看文本文件的內容)

bzip2:.bz2,比gzip有更大壓縮比的壓縮工具,使用格式近似(只能壓縮文件,不能壓縮目錄)

# bzip2 /PATH/TO/SOMEFIE (壓縮完成後會刪除原文件)

-d:解壓縮

-#:1-9,指定壓縮比,默認是6

-k:壓縮時保留原文件

# bunzip2 /PATH/TO/SOMEFILE.bz2 (解壓完成後會刪除原文件)

# bzcat /PATH/TO/SOMEFILE.bz2 (不解壓的情況,查看文本文件的內容)

xz:.xz,有更大的壓縮比(只能壓縮文件,不能壓縮目錄)

# xz /PATH/TO/SOMEFILE (壓縮完成後會刪除原文件)

-d:解壓縮

-#:1-9,指定壓縮比,默認是6

-k:壓縮時保留原文件

# unxz /PATH/TO/SOMEFILE.bz2 (解壓完成後會刪除原文件)

# xzcat /PATH/TO/SOMEFILE.bz2 (不解壓的情況,查看文本文件的內容)

zip:既歸檔又壓縮的工具

# zip FILENAME.zip FILE1 FILE2 ... (壓縮後不刪除原文件)

# unzip FILENAME.zip

archive:歸檔,歸檔本身並不意味著壓縮

tar:歸檔工具(只歸檔不壓縮)

# tar

-c:創建歸檔文件

-x:展開歸檔文件

-f FILE.tar:操作歸檔文件名

-t:不展開歸檔,直接查看歸檔了哪些文件

-z:用Gzip壓縮或解壓

-j:用bzip2壓縮或解壓

-J:用xz壓縮或解壓

-v:顯示壓縮或解壓的過程

-p:保留原始的權限與屬性

-P:使用絕對路徑來壓縮

-C:指定解壓到的目錄

--xattrs:歸檔時,保留文件的擴展屬性

cpio:歸檔工具

磁盤及文件系統管理詳解