文件系統

首先要談文件系統就必須要了解磁盤的相關概念。
每個磁盤在剛出廠時廠商都會進行低級格式化,用來劃分磁道,扇區等,但不劃分分區,因爲分區是個邏輯概念。

磁盤的物理組成:
扇區(Sector):最小的物理存儲單位,每個扇區512bytes,每個扇區開頭都要存一些額外的數據;
磁道:磁盤的存儲是通過機械臂的旋轉,按着圓圈來存儲的。
柱面:每個磁盤上相同編號的磁道,柱面是分區的最小單位
分區(Partition):磁盤的邏輯組成結構,可以使一個磁盤上裝多個文件系統;

MBR(master boot record):主引導記錄(磁盤的第一個扇區)
446bytes:boot loader,引導程序,啓動操作系統的重中之重!!!
64bytes:分區標識,每16bytes標識一個分區,最多四個主分區
2bytes:magic number 標記MBR是否有效

×××在開機的時候,
cpu先運行BIOS,在內存中進行開機自檢和系統自啓動;
BIOS沒有問題後再找相應設備的MBR,只要MBR的任何數據有問題,×××就無法找到磁盤裏相應的操作系統,也就不能開機,所以MBR非常重要!!!

上面說了每個磁盤只能創建四個主分區,爲了創建多個分區就有了擴展分區,所以我們就可以在擴展分區中創建多個分區。
但是注意擴展分區只能有一個,但是你可以在擴展分區中創建任意多個分區。


磁盤分區完畢後就用到了文件系統,每個分區都可以擁有自己的文件系統。
文件系統就相當於一個文件管理的軟件,但文件系統本身不一定在當前分區上,文件系統的數據一定在當前分區上。
文件系統將分區分爲兩片:
1.元數據(matadate)區:inode(縮影節點index node)記錄了文件的很多屬性,但不包括文件名。
2.數據存儲區:磁盤塊block,文件存儲的單元
每個inode有一個唯一的號碼,每個inode指向文件所存儲的磁盤塊。
當文件系統需要查找當前分區空閒的inode和block的時候我們就需要遍歷整個數據區,這樣的話花費的時間太多;所以我們就需要用到bit map 位圖來查找。


磁盤和文件系統的基本概念就這麼多,詳細的還是要看書查資料。那麼如何建立一個文件系統呢?Linux中有什麼文件系統相關的命令呢?
1.劃分磁盤,在安裝操作系統是,一開始會有磁盤分區的選項,如果不注意的話,系統會自動的將你的硬盤分配滿,那就沒有機會自己劃分硬盤了。所以在安裝操作系統的時候要自己分配磁盤空間,留些空間做以後的操作。(我也只是在虛擬機上安裝的操作系統,後面會在物理機上嘗試安裝)可以使用fdisk命令查看磁盤分區,和創建新的磁盤分區。
2.劃分好磁盤後要對磁盤進行格式化,也就是在分區中創建文件系統,這裏用到了mkfs命令,要是ext2文件系統的話也可以用mke2fs命令創建文件系統。
3.文件系統創建好後不代表就可以使用了,還要進行掛載,將文件系統掛載在一個空目錄中纔可以使用,這裏用到了mount命令。但是在系統重啓之後,新建的磁盤分區會消失,不能每次開機都重建文件系統。那麼就需要在/etc/fstab文件中進行開機掛載。
4.除了上述的基本文件系統操作之外還有特殊設備的loop掛載和內存交換空間swap的構建,都和文件系統有關
5.還有些文件系統相關的檢查和查看命令,如df查看當前主機的磁盤分區(必須以及掛載);dumpe2fs查看分區的詳細信息;free查看內存交換空間swap的使用;fsck磁盤檢驗等還有些命令。以下是之前提到一些命令的詳細選項用法。

1.mkfs: make file system
-t FSTYPE

mkfs -t ext2 = mkfs.ext2
mkfs -t ext3 = mkfs.ext3

專門管理ext系列文件:
2.mke2fs
-j: 創建ext3類型文件系統
-b BLOCK_SIZE: 指定塊大小,默認爲4096;可用取值爲1024、2048或4096;
-L LABEL:指定分區卷標;
-m #: 指定預留給超級用戶的塊數百分比
-i #: 用於指定爲多少字節的空間創建一個inode,默認爲8192;這裏給出的數值應該爲塊大小的2^n倍;
-N #: 指定inode個數;
-F: 強制創建文件系統;
-E: 用戶指定額外文件系統屬性;

3.blkid: 查詢或查看磁盤設備的相關屬性
UUID
TYPE
LABEL

4.e2label: 用於查看或定義卷標
e2label 設備文件 卷標: 設定卷標

5.tune2fs: 調整文件系統的相關屬性(塊大小不能改)
-j: 不損害原有數據,將ext2升級爲ext3;
-L LABEL: 設定或修改卷標;
-m #: 調整預留百分比;
-r #: 指定預留塊數;
-o: 設定默認掛載選項;
acl
-c #:指定掛載次數達到#次之後進行自檢,0或-1表關閉此功能;
-i #: 每掛載使用多少天后進行自檢;0或-1表示關閉此功能;
-l: 顯示超級塊中的信息;

6.dumpe2fs: 顯示文件屬性信息
-h: 只顯示超級塊中的信息

7.fsck: 檢查並修復Linux文件系統
-t FSTYPE: 指定文件系統類型
-a: 自動修復

8.e2fsck: 專用於修復ext2/ext3文件系統
-f: 強制檢查;
-p: 自動修復;


*掛載:將新的文件系統關聯至當前根文件系統
卸載:將某文件系統與當前根文件系統的關聯關係預以移除;

mount:掛載
mount 設備 掛載點
設備:
設備文件:/dev/sda5
卷標:LABEL=“”
UUID: UUID=“”
掛載點:目錄
要求:
1、此目錄沒有被其它進程使用;
2、目錄得事先存在;
3、目錄中的原有的文件將會暫時隱藏;

mount: 顯示當前系統已經掛載的設備及掛載點
mount [options] [-o options] DEVICE MOUNT_POINT
-a: 表示掛載/etc/fstab文件中定義的所有文件系統
-n: 默認情況下,mount命令每掛載一個設備,都會把掛載的設備信息保存至/etc/mtab文件;使用—n選項意味着掛載設備時,不把信息寫入此文件;
-t FSTYPE: 指定正在掛載設備上的文件系統的類型;不使用此選項時,mount會調用blkid命令獲取對應文件系統的類型;
-r: 只讀掛載,掛載光盤時常用此選項
-w: 讀寫掛載

-o: 指定額外的掛載選項,也即指定文件系統啓用的屬性;
remount: 重新掛載當前文件系統
ro: 掛載爲只讀
rw: 讀寫掛載


掛載完成後,要通過掛載點訪問對應文件系統上的文件;

umount: 卸載某文件系統
umount 設備
umount 掛載點

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

swap分區:
free
-m

fdisk命令中,調整分區類型爲82;

創建交換分區:
mkswap /dev/sda8
-L LABEL

swapon /dev/sda8
-a:啓用所有的定義在/etc/fstab文件中的交換設備
swapoff /dev/sda8


迴環設備
loopback, 使用軟件來模擬實現硬件

創建一個鏡像文件,120G

dd命令:
if(input file)=數據來源
of=數據存儲目標
bs(block size)=1
count=2
seek=#: 創建數據文件時,跳過的空間大小;

複製MBR:dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1
dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1

創建一個1G的空文件 dd if=/dev/zero of=/var/swapfile bs=1M count=1024

/dev/null

mount命令,可以掛載iso鏡像;
mount DEVICE MOUNT_POINT
-o loop: 掛載本地迴環設備


mount /dev/sda5 /mnt/test
重啓後發現文件系統不存在
要想重啓後還存在就要掛載在配置文件下
文件系統的配置文件/etc/fstab
OS在初始時,會自動掛載此文件中定義的每個文件系統

要掛載的設備 掛載點 文件系統類型 掛載選項 轉儲頻率(每多少天做一次完全備份) 文件系統檢測次序(只有根可以爲1)
/dev/sda5 /mnt/test ext3 defaults 0 0

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

fuser: 驗正進程正在使用的文件或套接字文件
-v: 查看某文件上正在運行的進程
-k: kill process 關掉進程
-m:

fuser -km MOUNT_POINT:終止正在訪問此掛載點的所有進程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章