文件管理操做的命令應用及原理
——Linux磁盤管理及文件系統管理
@(Linux磁盤管理,文件系統管理)[磁盤分區管理,inode索引節點,經常使用操做命令, ]node
對於接觸過Linux的朋友,對各類文件(目錄文件)的建立、複製、移動、重命名和刪除等操做必定不陌生,不少人能夠作到熟極而流的地步。但是大家知道這些命令運行背後的原理和執行機制嗎,知其然不可不知其因此然,今天咱們就來研究一下這些經常使用命令背後的故事。centos
- 一切皆文件 :Linux系統的 根本原則!
[TOC]緩存
1 經常使用文件管理類命令的用法
經常使用文件管理類命令:mkdir , rmdir , touch , cp , mv , rm安全
#####1.1 mkdir rmdir touch 建立(目錄)文件命令 建立/刪除 目錄文件:mkdir和rmdir網絡
mkdir [OPTION]... DIRECTORY... -p : 創建父目錄及子目錄或文件 -v : verbose,顯示建立過程數據結構
mrmdir [OPTION]... DIRECTORY... -p : 刪除父目錄及子目錄或文件 -v :verbose,顯示刪除過程架構
touch 修改文件時間戳命令:使用此命令建立空白文件 touch FILE_NAME ...分佈式
#####1.2 cp 複製文件(目錄)命令工具
#####1.2.1 單源文件複製: cp [OPTION]... [-T] SOURCE DEST學習
單源文件複製特性: (1)若是DEST路徑不存在,則建立以DEST的basename爲文件名的文件,並複製源文件的數據流至DEST的basename文件中; 如: cp /etc/issus /tmp/123 則創建一個指定文件名爲123的文件,文件內容和issue相同;
(2)若是DEST存在: 非目錄文件;則DEST文件名不變,覆蓋DEST文件內容; 若是DEST是目錄文件;則如今DEST目錄下建立一個與源文件同名的文件,並複製數據流;
#####1.2.2 多源文件複製,有兩種形式 (1) cp [OPTION]... SOURCE... DIRECTORY (2) cp [OPTION]... -t DIRECTORY SOURCE...
經常使用選項: -i : 交互式複製,即覆蓋以前提醒用戶確認(對於Centos 7是默認選項): -f :強制覆蓋目標文件: -r|R :遞歸複製,即複製目錄, -d :複製符號連接文件自己,而非其指向的源文件,即複製快捷方式,不復制源文件: -a :-dR --preserve=all,archive,用於實現歸檔; --preserve(保留)= mode :權限 ownership :屬主和屬組 timestamps :時間戳 context :安全標籤 xattr :擴展屬性 links :符號連接 all :上述全部屬性 多源文件複製特性: (1)若是DEST不存在:命令提示錯誤; (2)若是DEST存在: 若是DEST是非目錄文件:命令提示錯誤 若是DEST是目錄文件:分別複製每一個文件至目錄文件中,並保持源文件名; 如: cp /etc/{issue,fstab} /tmp/
【命令總結】:cp命令在DEST不存在狀況下不能建立目錄,只會新建同名的文件,文件內容與源文件相同;
#####1.3 mv 文件(目錄)重命名和移動命令: mv命令:move(rename) files,可重命名或移動文件;語法格式與cp命令相同: mv移動: mv [OPTION]... [-T] SOURCE DEST
(1) MV [OPTION]... SOURCE... DIRECTORY (2) MV [OPTION]... -t DIRECTORY SOURCE... -i :交互式 -f :force mv重命名: cd到DEST文件的同級目錄內, mv oldFILENAME newFILENAME
#####1.4 rm 刪除文件命令 rm [OPTION] {FILE|DIRECTORY}... -i : interactive,與用戶交互,在刪除前詢問用戶確認 -v :verbose,顯示刪除過程 -d : 刪除空白目錄文件 -r|R :recursive,遞歸刪除,刪除目錄及其目錄下全部文件(目錄)【操做危險,慎用】 -f :force,強制刪除【操做危險,慎用】
【注意】:應創建一個文件目錄看成回收站,全部不須要的文件不要直接刪除,而是 mv 至回收站文件,肯定後要 rm 後,在回收站內使用 rm 命令
- 關於這些命令背後的實現機制,這一切都要從存儲設備開始講起。咱們將學習硬盤基礎知識、分區管理、文件系統管理、數據和元數據、inode索引節點等知識,最後,咱們未來講述文件操做命令的實現機制。
2 Linux磁盤基礎知識
計算機的五個組成部分爲:控制器、運算器、存儲器、輸入設備和輸出設備。這些林林總總多種多樣的設備能夠分爲 Charactor-Device(字符設備)和 Block-Device(塊設備)兩種。
Charactor-Device :存取單位爲「字符」,常見的 Charactor-Device 好比鍵盤; Block-Device :存取單位是「塊」,咱們今天要講的磁盤就屬於 Block-Device。
#####2.1 磁盤的接口 存儲設備包括機械硬盤、固態硬盤、移動磁盤、U盤、軟盤和光盤等等,咱們今天講的磁盤主要是對於機械硬盤的。 磁盤與計算機主板間的接口分爲並口和串口兩種。 並口:IDE、SCSI 串口:STAT、SAS、USB #####2.2 磁盤設備的命名
磁盤接口對應的設備文件名 : /dev/DEV_FILE IDE : /dev/hd SCSI,SATA,SAS,USB : /dev/sd
【注意】設備名在centos6之後統一爲 :/dev/sd 命名方式: 不一樣設備:a-z 如:/dev/sda , /dev/sdb , ... 同一設備上的不一樣分區: 1,2... 如:/dev/sda1 , /dev/sda5 , ...
#####2.3 機械式硬盤相關知識
幾個專業術語:磁道、柱面、扇區、MBR track:磁道 當磁盤旋轉時,磁頭若保持在一個位置上,則每一個磁頭都會在磁盤表面劃出一個圓形軌跡,這些圓形軌跡就叫作磁道(Track)。 cylinder:柱面 在有多個盤片構成的盤組中,由不一樣盤片的面,但處於同一半徑圓的多個磁道組成的一個圓柱面(Cylinder)。 sector:扇區 磁盤上的每一個磁道被等分爲若干個弧段,這些弧段即是硬盤的扇區(Sector)。硬盤的第一個扇區,叫作引導扇區。每一個扇區512bytes字節 MBR : Main Boot Record,主引導記錄 是位於磁盤最前邊的一段引導(Loader)代碼。它負責磁盤操做系統(DOS)對磁盤進行讀寫時分區合法性的判別、分區引導信息的定位,它由磁盤操做系統(DOS)在對硬盤進行初始化時產生的。 0磁道0扇區 : 512bytes MBR :Master Boot Record 前446bytes :存儲Boot loader 中64bytes :存儲分區表, 每16bytes:標識一個分區, 後2bytes : 存儲MBR有效性標識,55AA
##3 Linux磁盤分區管理
#####3.1 磁盤分區概念 即被劃分後的硬盤區域,按柱面劃分,磁盤分區可作看做是邏輯卷管理前身的一項簡單技術。 計算機中存放信息的主要的存儲設備就是硬盤,可是硬盤不能直接使用,必須對硬盤進行分割,分割成的一塊一塊的硬盤區域,這就是磁盤分區。
#####3.2 磁盤分區的目的 老舊的文件系統不支持單個分區體積太大的數據空間,因此分區是一種傳統。固然分區有不少好處,分區後有利於管理,方便針對不一樣分區執行不一樣的操做,且當硬盤的某一部分損壞時,僅僅會影響對應的分區,其他分區數據不會受到影響,可繼續使用。針對不一樣的分區內存放數據的類型,可定製不一樣需求,如定製數據存儲格式、定製是否只讀,可節省空間或加快數據存取速度。
MBR的中間64bits對應儲存分區表,每16bytes標識一個分區,所以一個磁盤最多有4個主分區,爲了實現擴展功能,因此一塊硬盤最多3個主分區和一個擴展分區,在擴展分區上能夠劃分多個邏輯分區,邏輯分區的編號從5開始。 在傳統的磁盤管理中,將一個硬盤分爲兩大類分區:主分區和擴展分區。主分區是可以安裝操做系統,可以進行計算機啓動的分區,這樣的分區能夠直接格式化,而後安裝系統,直接存放文件。
#####3.3 磁盤分區的步驟
##### 3.3.1 fdisk 磁盤分區命令 僅對於一塊硬盤來說,最多隻能管理15個分區; fdisk -l [-u] [device...] fdisk device子命令:管理功能 p : print ,顯示已有分區; n : new , 建立; d : delete , 刪除 w : write , 寫入磁盤並退出; q : quit , 放棄更新並退出; m : 獲取幫助 l : 列出全部分區id t : 調整分區id 通常Linux用到的分區格式編號爲: 5 :Extended 82 :Linux swap / Solaris 83 :Linux 8e :Linux LVM ##### 3.3.2 查看內核是否已經識別新的分區 cat /proc/partitions 若無新加的分區,則表明內核未識別該分區; ##### 3.3.3 通知內核從新讀取硬盤分區表 CentOS6.X 或者 CentOS7.X 可執行下列命令: partx -a /dev/DEVICE -n M:N : 表明識別M到N間的分區; 【注】該命令可能要反覆用屢次才能所有識別新分區; kpartx -a /dev/DEVICE -f : force 【慎用】 CentOS5.X 可以使用:partprobe partprobe /dev/DEVICE
4 Linux文件系統管理
#####4.1 文件系統的概念 文件系統是指在存儲設備上組織文件的方法。操做系統中負責管理和存儲文件信息的軟件機構稱爲文件管理系統,文件系統是對文件存儲設備的空間進行組織和分配,明確磁盤或分區上的文件的方法和數據結構,也指文件系統種類。文件系統還包括經過目錄結構找到文件的指定路徑的格式(FHS)。 大部分程序基於文件系統進行操做,在不適用的文件系統上不能工做。一個分區或磁盤在做爲文件系統使用前,須要初始化,並將記錄數據結構寫到磁盤上。這個過程就叫創建文件系統。
#####4.2 文件系統的分類 #####4.2.1 按照平臺架構及應用環境劃分 Linux文件系統:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap 交換分區 : swap 光盤:iso9660 Windows :fat32,ntfs Unix : FFS,UFS,JFS2 網絡文件系統:NFS,CIFS 集羣文件系統:GFS2,OCFS2 分佈式文件系統:ceph,moosefs,mogilefs,GlusterFS,Lustre Linux的虛擬文件系統:VFS #####4.2.2 根據其是否支持"journal"(日誌)功能,將文件系統劃分紅 日誌型文件系統:ext3,ext4,xfs,... 非日誌型文件系統:ext2,vfat
#####4.3 文件系統的組成 內核中的模塊: ext4,xfs,vfat 用戶空間的管理工具:mkfs.ext4 , mkfs.xfs ,mkfs.vfat
#####4.4 建立文件系統 #####4.4.1 mkfs命令:適用於ext4 ,xfs,btrfs,vfat等系統 mkfs.FS_TYPE /dev/DEVICE -f : 強制修改文件系統 -L DEV_NAME : 命名卷標 mkfs -t FS_type /dev/DEVICE -f : 強制修改文件系統 -L LABEL : 命名卷標
#####4.4.2 mke2fs命令: ext2,ext3,ext4 類文件系統專用管理工具 不支持xfs等其餘文件系統 mke2fs [OPTION] /dev/DEVICE -t {ext2|wxt3|ext4} : 指明系統類型 -b {1024|2048|4096} : 指明塊大小 -L LABEL : 指明卷標 -j : journal ,指定爲日誌型,至關於 -t ext3 mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i # : 爲數據空間中每多少個字節建立一個inode編號;#大小不該該小於block的大小; -N # : 爲數據空間建立#個inode編號; -m # : 爲管理人員預留的空間百分比,爲避免因爲磁盤空間耗盡而沒法進行管理操做,#默認爲5,表明預留5%的空間; -O FEATURE[,...] :建立分區時,指明分區特性; -O FEATURE[,...] : 啓用指定特性 -O ^FEATURE[,...]: 關閉指定特性
#####4.4.3 塊設備屬性信息查看 : blkid ~]# blkid 命令結果顯示內容:DEVICE:UUID TYPE blkid [OPTION]... [DEVICE]
-U UUID : 根據指定的UUID來查找指定的設備 -L LBAEL : 查找指定LABEL的設備 #####4.4.4 文件系統檢測及修復:當文件系統可能受到損壞時,進行磁盤檢查及修復 fsck : File System Check fsck.FS_TYPE fsck -t FS_TYPE -a : 自動修復錯誤 -r : 交互式修復錯誤 【注意】 FS_TYPE必定要與分區上已有的文件系統類型相匹配 e2fsck : ext系列文件系統專用的檢測修復工具 -y : 自動回答爲yes -f :強制修復
5 索引節點和連接文件
#####5.1 inode : Index Node , 索引節點 #####5.1.1 索引式文件系統 根據inode編號查找全部存放文件內容的塊。 inode bitmap :inode位圖,和塊位圖相似,自己佔一個塊,對位標識每一個inode空閒與否的狀態信息; inode table :inode表,存儲文件對應的metadata(元數據)信息,每一個文件都有一個inode,一個塊組中的全部inode組成了inode表。
【notes】:當存儲設備初始格式化時,inode編號的總量就已經肯定了,當 小文件數量過多時,就會出現磁盤空間未滿,卻取法寫入數據這種狀況,緣由就是inode編號已經被劃分完畢,因此在分配inode數量時應根據所存儲數據的特性來配置inode相關內容。
#####5.2 連接文件 #####5.2.1 硬連接 硬連接:指向同一個inode的多個不一樣路徑,建立文件的硬連接即爲爲inode建立新的引用路徑,所以會增長其引用計數; ln [OPTION]... SRC... DEST SRC : 將要被連接的原文件 DEST : 連接的文件 如:給/etc/fstab 文件建立一個硬連接文件 /etc/fstab.hardlink ~]# ln /etc/fstab /etc/fstab.hardlink 【注意】一、硬連接不能對目錄文件進行,僅能對文件進行; 二、不能跨分區進行;
#####5.2.2 符號連接(軟連接) 符號連接(軟連接):建立一個文件,文件中存儲一串strings,strings的內容是被連接文件的路徑;
ln [-sv] SRC... DEST SRC : 將要被連接的原文件 DEST : 連接的文件 -s : symbolic link -v : verbose 【注意】一、符號連接能夠對目錄文件進行; 二、能夠跨分區進行; 三、指向的是另外一個文件的路徑,其大小爲指向路徑strings的長度,不增長或減小原文件inode的引用計數。
6 Linux文件操做類命令的實現機制
#####6.1 建立(目錄)文件實現機制 查找inode表中的空閒inode並分派給新文件,查找目標分區磁盤super-block中的空閒block並分配給新文件,將文件名稱和inode編號等元數據添加至【上一級目錄文件所對應的磁盤塊數據】中。 #####6.2 刪除操做實現機制 即爲減小其引用計數,直到減小到0爲止,其實際數據並未刪除,只是沒有引用該數據的路徑而已。
-
恢復刪除數據: 根據緩存等蛛絲馬跡找到指向已刪除數據的路徑。
-
粉碎文件:可保護想銷燬的數據 即執行刪除操做後對存儲原刪除數據的磁盤的塊寫入其餘內容覆蓋。
#####6.3 複製的實現機制 在目標目錄下建立新空文件,並生成一個新的inode編號,而後把源文件的數據複製過去,將新的inode指向新的數據造成連接。
#####6.4 文件移動實現機制
##### 5.41 跨分區實現機制 將【原文件的名稱和對應磁盤塊數據的inode編號】從【原路徑上一級目錄文件所對應的磁盤塊數據】中刪除,原文件的inode引用次數減小至0,在【目標分區目標路徑的上一級目錄文件所對應的磁盤塊數據】中,執行建立新文件操做並在新分區的對應路徑寫入原文件數據並將原文件執行刪除,此過程當中inode編號不變化;
##### 5.42 同分區移動實現機制 將【原文件的名稱和對應磁盤塊數據的inode編號】從【原路徑上一級目錄文件所對應的磁盤塊數據】移動至【目標目錄文件所對應的磁盤塊數據】中,原文件inode引用次數減小至0,此過程當中inode編號不變化。
反饋與建議
-
微博:@我真的是阿初
感謝閱讀個人文章,但願能給你帶來一些幫助。