天天看點

Linux檔案系統的建立及挂載

日期: 2015年09月01日

Linux檔案系統管理

VFS:(Virtual File System 虛拟檔案系統)

   VFS 是一種軟體機制,與它相關的資料結構隻存在于實體記憶體當中。是以在每次系統初始化期間,Linux 都首先要在記憶體當中構造一棵 VFS 的目錄樹(在 Linux 的源代碼裡稱之為 namespace),實際上便是在記憶體中建立相應的資料結構。VFS 中的各目錄其主要用途是用來提供實際檔案系統的挂載點。

VFS 目錄樹結構:

Linux檔案系統的建立及挂載

Linux檔案系統支援的類型:

基本檔案系統:Ext2, Ext3, Ext4, Reiserfs(支援小檔案), xfs(支援大檔案), btrfs, JFS, vfat(支援WindowsFAT32), NTFS

交換分區:swap

叢集檔案系統:GFS2(全局檔案系統), OCFS2

網絡檔案系統:NFS, smbfs(CIFS) Common Internet File System

CD光牒:iso9660

分布式檔案系統:ceph

moosefs, mogilefs, hdfs, gfs, glusterfs

(1)日志型檔案系統:

非日志型檔案系統:ext2

日志型檔案系統:ext3

(2)swap: 交換分區

建立檔案系統:

在分區上執行格式化(進階格式化)要使用某種檔案系統需滿足兩個條件:

核心中:支援此中檔案系統

使用者空間:有檔案系統管理工具

檔案系統管理工具:

mkfs、mke2fs、e2label、blkid、dumpe2fs、tune2fs、fsck、e2fsck

<<========================================【mkfs】========================================>>

mkfs指令

功能:

建立檔案系統

格式:

mkfs [-V] [-t fstype] [fs-options] filesys [blocks]

常用選項:

-t fstype  指定要建立何種檔案類型

-c  在制做檔案系統前,檢查該分區是否有壞道

-fs  指定建立檔案系統時的參數

執行個體:

# mkfs -t ext2 /dev/sda3

# mkfs -t ext3 /dev/sda2

# mkfs -t ext4 /dev/sda1

Ext4: mkfs -t ext4 = mkfs.ext4 = mke2fs -t ext4

Ext3: mkfs -t ext3 = mkfs.ext3 = mke2fs -t ext3 = mke2fs -j

Ext2: mkfs -t ext2 = mkfs.ext2 = mke2fs -t ext2

<<========================================【mke2fs】========================================>>

mke2fs指令

建立ext系列檔案系統,支援ext2、ext3、ext4

mke2fs [OPTION]... DEVICE

-t {ext2|ext3|ext4}

-j : 相當于-t ext3

-L Label:卷标

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

-i #: #個位元組給預留一個inode

-N #: 直接指定預留多少個Inode

-I #:Inode大小

-m #:預留管理者的空間百分比,預設為5

-O:指定分區特性

配置檔案: /etc/mke2fs.conf

//先用fdisk建立一個20G的邏輯分區

Linux檔案系統的建立及挂載

//用fdisk -l 檢視目前/dev/sda硬碟的已有分區,此時可見已添加了一個20G的分區sda5

Linux檔案系統的建立及挂載

//但是此時核心仍未識别到該新添加的分區,是以還不能對其建立檔案系統

Linux檔案系統的建立及挂載

//使用partx -u 更新分區清單,此時核心已識别到該新添加的分區sda5

Linux檔案系統的建立及挂載

//使用mke2fs指令建立檔案系統,類型為ext4,添加卷标:Newpartition,指定塊大小為4096

Linux檔案系統的建立及挂載

<<========================================【blkid】========================================>>

blkid指令

檢視裝置的屬性,UUID和TYPE

blkid/dev/SOMEDEVICE:

//檢視剛剛建立的sda5分區的檔案系統類型、卷标、UUID

Linux檔案系統的建立及挂載

<<========================================【e2label】========================================>>

e2label指令

檢視分區的卷标和為分區設定卷标

格式

e2label/dev/SOMEDEVICE: 檢視卷标

e2label/dev/SOMEDEVICE 新卷标名

//使用e2label指令檢視sda5的卷标,并把卷标修改為database

Linux檔案系統的建立及挂載

<<========================================【dumpe2fs】========================================>>

dumpe2fs指令

用于檢視ext檔案系統的超級塊和快組資訊

dumpe2fs[ OPTIONS ]... device

-h: 僅檢視超級塊中儲存的資訊

<<========================================【tune2fs】========================================>>

tune2fs指令

用于調整“ext2/ext3”檔案系統中的可改參數

tune2fs[ OPTIONS ]... device

-l:  檢視超級塊中的資訊

-L 卷标名:  設定卷标

-m: 預留管理者的空間百分比,預設為5

-r:  設定檔案系統保留塊的大小

-j:  如果原來的檔案系統為ext2, -j能夠将其提升為ext3

-O [^] feature[,...]:  調整分區特性

-o [^] mount-options[,...]:  設定其預設挂載選項

async: 異步I/O

sync: 同步I/O

noatime/atime: 是否更新通路時間戳,建議noatime

auto/noauto: 是否能夠被mount -a選項自動挂載;

diratime/nodiratime: 是否更新目錄的通路時間戳;

exec/noexec:是否允許執行其中的二進制程式;

_netdev: 在網絡裝置啟用之前禁止嘗試挂載網絡裝置

remount: 重新挂載

acl: 啟用facl  檔案通路控制清單

ro:挂載為隻讀

rw:挂載為可讀寫

user/nouser: 是否允許普通挂載此裝置

//開啟/dev/sda5 分區的預設挂載選項,啟動檔案通路控制清單

Linux檔案系統的建立及挂載

<<========================================【fsck】========================================>>

fsck指令

用于檢查并且試圖修複檔案系統中的錯誤,當檔案系統發生錯誤時,可用fsck指令嘗試加以修複

-t fstype

-a:自動修複檔案系統,不詢問任何問題

-r: 互動式修複錯誤

-A:依照/etc/fstab配置檔案的内容,檢查檔案内所列的全部檔案系統

-P:當搭配"-A"參數使用時,則會同時檢查所有的檔案系統

-v:執行時顯示詳細的資訊

<<========================================【e2fsck】========================================>>

e2fsck指令

用于檢查檔案系統的完整性,通過适當的選項可以嘗試修複出現的錯誤

-f: 強制檢測

-y: 對問題自動回答為yes

-b<superblock>: 指定superblock,而不使用預設的superblock

-B<區塊大小>:指定區塊的大小,機關為位元組

e2fsck執行後的傳回值及代表意義如下:

0 沒有任何錯誤發生。

1 檔案系統發生錯誤,并且已經修正。

2 檔案系統發生錯誤,并且已經修正。

4 檔案系統發生錯誤,但沒有修正。

8 運作時發生錯誤。

16 使用的文法發生錯誤。

128 共享的函數庫發生錯誤。

交換分區:

虛拟記憶體并不是真正的記憶體,它是在硬碟上劃分出一塊區域,将其格式化成實體記憶體相同的格式。一旦發生了實體記憶體不足的情況,就可以将實體記憶體頁框中的資料移動到虛拟記憶體上。而實體記憶體空間被重新釋放後,又可以将虛拟記憶體頁框中的資料移動回去,這個過程就好像是在交換資料一樣,故這一區域被稱為交換分區(swap)

<<==============================【mkswap、swapon、swapoff】==============================>>

mkswap指令

用于在一個檔案或者裝置上建立交換分區。在建立完之後要使用sawpon指令開始使用這個交換區。

-c:建立交換區前,先檢查是否有損壞的區塊

-L label

另外兩個相關指令:

swapon

-a #标記所有的交換分區都為啟用狀态

-p #: 在啟用的時候指定其優先級

swapoff

-a #禁用所有

//建立一個空間為4G的分區/dev/sda6,然後把該分區建立為交換分區

Linux檔案系統的建立及挂載

檔案系統的挂載和使用

将額外檔案系統與根檔案系統某現存的目錄建立關聯關系,進而使得此目錄作為其他檔案系統通路入口的行為,稱之為挂載,解除此關系關系的過程稱為解除安裝。

挂載點: mountpoint, 裝置挂載至目錄:

注意:挂載點在挂載後,其内部原有的檔案會被暫時隐藏,建議使用空目錄作為挂載點

相關指令:mount、umount、fuser、free、df、du

<<========================================【mount】========================================>>

mount指令

用于挂載檔案系統到指定的挂載點

mount:不跟任何參數,可顯示目前系統所有已挂載的裝置

mount[options] [-t fstype] [-o option] 裝置 挂載點

-tfstype 挂載的檔案系統格式

-a:加載檔案“/etc/fstab”中描述的所有檔案系統

-o [^]:檔案系統預設挂載選項的啟用或關閉

async:異步模式

sync: 同步模式

atime/noatime:是否更新通路時間戳;

diratime/nodiratime:是否更新目錄的通路時間戳;

auto/noauto: 是否允許此裝置被自動挂載;

exec/noexec:是否允許執行此檔案系統上應用程式;

dev/nodev:是否支援在此裝置上使用裝置檔案;

suid/nosuid:

remount:重新挂載

user/nouser: 是否允許普通挂載此裝置;

acl:是否支援此裝置上使用facl;

defaults:rw,suid, dev, exec, auto, nouser, and async

如挂載時沒有設定特性,可使用tune2fs修改:

# tune2fs -o mount-option   裝置預設挂載屬性

# tune2fs -o ^mount-option  取消預設挂載屬性

幾個關鍵的配置檔案:

/etc/rc.d/rc.sysinit:系統初始化腳本

/etc/mtab:記載的是現在系統已經裝載的檔案系統,包括作業系統建立的虛拟檔案等;

/etc/fstab:是開機後系統自動挂載的檔案系統。

此檔案中定義的檔案系統挂載表

每行定義一個檔案系統:(每行包含的内容)

1、要挂載的裝置或僞檔案系統

LABEL=, UUID=

2、挂載點

3、檔案系統類型

4、挂載選項,多個選項間使用逗号分隔;

defaults

5、轉儲頻率

0:從不備份

1:每日備份

6、自檢次序

0: 不自檢

1:首先自檢,通常隻有/才有1;

<<========================================【umount】========================================>>

umount指令

解除安裝已挂載的分區,(當裝置空閑時才可以被解除安裝)

umountDEVICE

umountMOUNT_POINT

<<========================================【fuser】========================================>>

fuser指令

檢視占用挂載的裝置的程序:

fuser-v 挂載點:  檢視目前正在通路該挂載點的程序

fuser-km 挂載點:  終止所有正在通路該挂載點的程序:

<<========================================【free】========================================>>

free指令

檢視記憶體空間使用狀态:

-m: 顯示結果以MB為機關

-g: 顯示結果以GB為機關

核心映射檔案中記憶體的相關資訊:

# cat/proc/meminfo

<<========================================【df】========================================>>

df指令

檢視目前系統上已挂載的分區,及其空間使用資訊、inode資訊等

-a或--all:包含全部的檔案系統

-h或--human-readable:以可讀性較高的方式來顯示資訊

-i或--inodes:顯示inode的資訊

-T或--print-type:顯示檔案系統的類型

<<========================================【du】========================================>>

du指令

統計檔案或目錄的實際大小

-a或-all:  顯示目錄中個别檔案的大小

-h或--human-readable:  以K,M,G為顯示機關

-L<符号連結>或--dereference<符号連結>:  顯示指定符号連結的源檔案大小

-S或--separate-dirs:  顯示個别目錄的大小時,并不含其子目錄的大小

-c或--total:  除了顯示個别目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和

-s或--summarize:  僅顯示總計,隻列出最後加總的值

-k或--kilobytes:  以KB(1024bytes)為機關輸出

-m或--megabytes:  以MB為機關輸出

-l或--count-links: 重複計算硬體連結的檔案

-L<符号連結>或--dereference<符号連結>:  顯示選項中所指定符号連結的源檔案大小

-D或--dereference-args:  顯示指定符号連結的源檔案大小

[root@localhost~]# du -sch /etc

23M        /etc

23M        total

[root@localhost~]# ^C

[root@localhost~]#

練習:建立一個10G的檔案系統,類型為ext4,要求開機可自動挂載至/mydata目錄

1、使用fdisk指令,建立一個10G的分區

Linux檔案系統的建立及挂載

2、使用partx指令更新分區表讓核心能夠識别到新建立的分區

Linux檔案系統的建立及挂載

3、使用e2fs指令為此分區建立檔案系統,類型為ext4

Linux檔案系統的建立及挂載

4、在根目錄下建立mydata目錄,并使用mount指令挂載分區

Linux檔案系統的建立及挂載

5、使用blkid指令檢視該分去的UUD,并把該值複制下來

Linux檔案系統的建立及挂載

6、編輯/etc/fstab配置檔案,添加一行該分區的資訊,下次開機後系統将會自動挂載該分區

Linux檔案系統的建立及挂載

7、可使用mount -a 指令加載目前/etc/fstab配置檔案内所有分區,并立即挂載

Linux檔案系統的建立及挂載

繼續閱讀