天天看點

Linux下的檔案系統以及磁盤操作

在檔案系統方面,Linux可以算得上作業系統中的 “瑞士軍刀”。Linux 支援許多種檔案系統,從日志型檔案系統到叢集檔案系統和加密檔案系統,而“什麼是檔案系統”?檔案系統是對一個儲存設備上的資料和中繼資料進行組織的機制。

常見的檔案系統:ext2、ext3、ext4、xfs、jfs、reiserfs、iso9660、swap、VFAT、

VFS等

例如:EXT2 XFS JFS REISERF3等都是單個檔案系統使用

說到檔案系統,就要說一下硬碟,硬碟出廠後的第一次格式化叫做低級格式化,其作用主要是為了建立磁道,同一個編号的磁道形成一個柱面,分區時則是按照柱面進行分區,從外到裡從低到高進行劃分。每一個分區可以獨立的建立一個檔案系統。

Linux 以一組通用對象的角度看待所有檔案系統。這些對象是超級塊(superblock)、inode、dentry 和檔案。超級塊在每個檔案系統的根上,超級塊描述和維護檔案系統的狀态。檔案系統中管理的每個對象(檔案或目錄)在 Linux 中表示為一個 inode。

inode 包含管理檔案系統中的對象所需的所有中繼資料(包括可以在對象上執行的操作)。另一組結構稱為 dentry,它們用來實作名稱和 inode 之間的映射,有一個目錄緩存用來儲存最近使用的 dentry。dentry 還維護目錄和檔案之間的關系,進而支援在檔案系統中移動。最後,VFS 檔案表示一個打開的檔案;注:inode:用于存放權限,屬主屬組,大小,類型,磁盤塊的指向;目錄:每一個目錄需要一個inode,存放檔案名;位圖:索引inode 非為0/1;磁盤塊位圖:标志磁盤塊有沒有被使用。

和檔案系統有聯系的指令:

1、ln:

格式:ln [options] SRC DST 預設建立的是硬連結(不能跨分區),從檔案系統的實作上來說,硬連結其實就是将一個檔案的的的inode号多次利用,具有不同的指針,隻要結點的連接配接數不是0,檔案就一直存在,不管你删除的是源檔案還是連接配接的檔案。

常用參數:-s:建立軟連接配接,是一個獨立的檔案,使用了一個新的inode号,引用的路徑,而且可以為目錄建立,并且可以跨分區。

是以在對某些檔案進行複制,剪切和删除時其實質分别是:複制:将存有的資料所在的磁盤塊進行複制一份,并使用新的inode号,建立相應的映射,而剪切則不動資料塊,隻是将inode号中的檔案路徑映射修改了,這就是為什麼有時候我們在同一個分區上移動一個很大的檔案時,也能迅速完成的原因,而删除則是将inode号辨別為0,清除其資訊,然後将磁盤塊辨別為未使用,當有新的資料存入時就将原來的資料覆寫,由此當誤删了一些資料時隻要還未向原有位置寫入新的資料時,那些被誤删的資料均是可以找回的,像一些軟體上的粉碎功能則是想原檔案資料存儲的位置重新寫入01代碼,進而達到删除原資料的目的。

2、檔案管理

(1).du:用于估算目錄和檔案的使用量

參數:

-h:機關換算,使大小以M機關顯示

-s:顯示目錄以及目錄中所有檔案的大小

例如:#du -sh /etc

(2).df:用于顯示目前系統磁盤的使用情況

-h:機關換算

-i:顯示inode的使用情況

例如:#df -ih

(3).fdisk:磁盤管理

-l:列出目前系統的每一個磁盤及其目前分區的情況

例如:#fdisk -l

(4).壓縮工具gzip/bzip2/zip/compress/xz/7z

[1]gzip:壓縮檔案-->gunzip:解壓檔案

例如:#gzip FILENAME 

#gunzip FILEMAME

-d:解壓縮

-c:gzip -c messages > messages.gz 壓縮後保留源檔案

-t:測試壓縮檔案壓縮以後是否完整

-#:(1-9)指定壓縮比,預設是6.

zcat:在不解壓的情況下檢視檔案

[3]zip:可以壓縮目錄

格式:zip [選項] 壓縮後的檔案名.zip 需要壓縮的檔案

例如:#zip message.zip message

例如:#zip myfilezip.zip message inittab 壓縮多個檔案

unzip:解壓縮

[4]tar:檔案的歸檔工具

tar tarfile.tar 檔案或目錄

-c:建立歸檔

-x:展開歸檔

-f:歸檔後檔案名

-t:不展開檢視歸檔中的檔案

-v:顯示整個歸檔回展開的過程

-z:在建立直接壓縮 gzip

-j:在建立直接壓縮 bzip2

-C:指定展開之後存放路徑

例如:#tar -cf mytar.tar message inittab 建立歸檔

例如:#tar -xf mytar.tar

例如:#tar -tf mytar.tar

例如:#tar -zcf 

例如:#tar -zxf

例如:#tar xf mytar.tar.gz -C /tmp/test

3、分區:在硬碟的0扇區0磁道存放的是MBR其大小是512個位元組,其中前446哥位元組是引導扇區俗稱“BootLoader”,存放的是系統啟動的引導,其中的64個位元組是FAT分區清單,每16個位元組可以引導一個主分區,而這就是我們通常所說的一塊硬碟,隻能建立最多4個主分區,或者3主一擴充,剩下的2哥位元組是封裝碼占用。

當分區表出現錯誤或者被破壞的時候,就無法正常進入系統,是以要對系統的分區表進行備份.

指令:

sfdisk:儲存備份分區表資訊

-d:#sfdisk -d /dev/sdb > /root/sdb.part.bak   将某個磁盤的分區表儲存

#sfdisk /dev/sdb < /root/sdb.part.bak

Linux識别磁盤裝置規則:IDE或者ATA裝置被識别為hd;SATA、SCSI、USB等裝置被識别為sd; 多塊磁盤裝置時用a,b,c等字母加以差別,形如:/dev/hda  /dev/hdb   /dev/sda   /dev/sdb

建立分區:fdisk /dev/sda

其中的子指令:

w:儲存修改并退出

p:顯示磁盤清單

n:添加一個新的分區

d:删除一個分區

q:放棄修改并退出

在分區建立完成之後,并不是立即生效,需要使用指令:

partprobe /dev/sda    通知核心重新掃描磁盤sda資訊,後若不跟磁盤名,則會掃描所有的磁盤

4、格式化:這次的格式化被稱為進階格式化

在linux下任何的磁盤或分區沒有進行格式化是不能使用的

mkfs -t TYPE DEVICE

例如:#mkfs -t ext3 /dev/sdb1 

-L:指定卷标

例如:#e2label /dev/sdb1顯示其卷标

例如:#e2label /dev/sdb1 HELLO 設定卷标

mke2fs /dev/sdb2

-j:把對應的磁盤分區建立為ext3類型

-b:指定塊大小{1024|2048|4096}  

-c:建立檔案系統時是否要檢查磁盤是否有壞道

-i:指定一個比例,每多少個位元組使用一個inode号{128預設|256}

-N:直接指定inode的個數

-m:指定預留給管理者的磁盤百分比

5、挂載

在Linux下任何一個儲存設備想要被通路,必須将這個裝置與根下的一個目錄相關聯起來,作為一個通路接口,而這個過程叫做挂載,去除關聯關系就叫做解除安裝。

格式:mount 裝置 挂載點

例如#mount 顯示目前所有已經挂載的檔案系統

#mount /dev/cdrom /media 将dev下的cdrom磁盤挂載到media

參數格式:mount [-t fstype] [option] 裝置 挂載點

-a:挂載所有的檔案系統 /etc/fstab  #mount -a

-n:挂載時不更新/etc/mtab檔案

-r:隻讀挂載

-w:讀寫挂載

-L label:指定卷标進行挂載

-U:指定uuid進行挂載

-o:明确指定挂載選項

    async:異步寫入

    atime:當通路時自動更新時間

    auto:可以自動挂載

    exec:允許具有執行權限的檔案執行

    nouser:禁止普通使用者挂載此裝置

    remount:重新挂載(某個屬性沒打開,需要打開時使用此項)

    ro:隻讀

    rw:隻寫

例如:#mount -o ro /dev/sdb1 /mnt 以隻讀方式将dev下的sdb1分區挂載到/mnt

例如:#mount -o remount,rw /mnt 

loop:挂載一個本地裝置

例如:#mount -o loop rhci.iso /mnt    挂載一個iso

6、umount:裝置解除安裝

umount 挂載點/挂載的裝置

例如:#umount /dev/sdb2

blkid DEV:檢視裝置的檔案類型

7、檢查檔案系統

(1).fsck檢查檔案系統的不一緻(具體檢查inode與檔案不一緻)

參數:-t FILETYPE:指定檢測的檔案系統的類型

例如:#fsck -e ext3

efsck:用來專門檢測ext類的檔案系統

參數:-f:強行進行檢測

-p:自動修複檔案系統的不一緻

-B:指定磁盤塊的大小

(2).dumpe2fs:詳細的顯示ext2 ext3檔案系統的資訊

參數:-f:即使檔案系統不一緻也要詳細顯示其資訊

-h:隻顯示超級塊的詳細資訊

tune2fs:修改ext類的檔案系統的屬性

參數:-j:将ext2檔案類型更新為ext3(不影響磁盤上的資料)

-m:修改保留給root使用者的磁盤塊與inode的百分比

-r:直接指定塊的個數

-L:設定卷标

-l:顯示超級快的資訊

-c:修改每隔多少次挂載後進行自檢 

-i:設定每隔多少天進行一次自檢,預設機關是天

-u:指定使用者

-o:指定預設的挂載功能

(3).交換分區swap(必須是一個獨立的分區,其作用相當與windows中的虛拟記憶體,當實體記憶體即将用完或者不夠使用時才會使用到交換分區)

free -m:以M為機關顯示記憶體資訊

格式化:mkswap

參數:-L:指定卷标

啟用交換分區:swapon DEV

關閉交換分區:swapoff DEV

啟動全部:swapon -a

檢查其狀态:swapon -s

(4).建立一個本地回環檔案,也可以了解為複制,可以說是直接複制磁盤塊

格式:dd if=FILE of=FILE bs=NU count=NU

if=FILE:要複制的檔案

of=FILE:目标

bs:一次複制的機關多大,預設機關位元組

count:複制多少個塊

#dd if=/etc/issue of=/tmp/abc

#dd if=/dev/sda of=/root/mbr.bak bs=512 count=1 備份mbr Mater Boot Record

#dd if=/dev/zero of=/var/swapfile bs=1M count=1 建一個1M本地回環檔案

/dev/null

/dev/zero 用于初始化一個分區

(5)./ect/fstab 開機自動挂載的檔案系統 

6個字段:

DEV-name | DEV-label | DEV-uuid

挂載點:

檔案系統類型:

挂載選項(defaults);

轉儲頻率:備份{0,1,2}{從不備份,一天一次,兩天一次}

自檢次序:{0,1,2}{從不,第一,第二},第一隻能為根

<a target="_blank" href="http://blog.51cto.com/attachment/201202/141636521.jpg"></a>

本文轉自 向陽草米奇 51CTO部落格,原文連結:http://blog.51cto.com/grass51/785156,如需轉載請自行聯系原作者

繼續閱讀