Seven 儲存結構與磁碟劃分 主分割槽交換分割槽的作用!

媣凊碸煙雨柔°發表於2020-10-17

檔案儲存結構(FHS標準)

在Linux系統中,目錄、字元裝置、塊裝置、套接字、印表機等都被抽象成了檔案,即“Linux系統中一切都是檔案”。既然平時我們打交道的都是檔案,那麼又應該如何找到它們呢?在Windows作業系統中,想要找到一個檔案,我們要依次進入該檔案所在的磁碟分割槽(假設這裡是D盤),然後在進入該分割槽下的具體目錄,最終找到這個檔案。但是在Linux系統中並不存在C/D/E/F等碟符,Linux系統中的一切檔案都是從“根(/)”目錄開始的,並按照檔案系統層次化標準(FHS)採用樹形結構來存放檔案,以及定義了常見目錄的用途。另外,Linux系統中的檔案和目錄名稱是嚴格區分大小寫的。例如,root、rOOt、Root、rooT均代表不同的目錄,並且檔名稱中不得包含斜槓(/)。Linux系統中的檔案儲存結構如圖所示。


在這裡插入圖片描述

提示:FHS定義了使用者應該把什麼型別的檔案檔案存放到什麼位置,但使用者不一定要遵守,這裡只是定義而非gun定。

Linux系統中常見的目錄名稱以及相應內容

在這裡插入圖片描述

物理裝置命名規則(udev)

在Linux系統中一切都是檔案,硬體裝置也不例外。既然是檔案,就必須有檔名稱。系統核心中的udev裝置管理器會自動把硬體名稱規範起來,目的是讓使用者通過裝置檔案的名字可以猜出裝置大致的屬性以及分割槽資訊等;這對於陌生的裝置來說特別方便。另外,udev裝置管理器的服務會一直以守護程式的形式執行並偵聽核心發出的訊號來管理/dev目錄下的裝置檔案。Linux系統中常見的硬體裝置的檔名稱如表所示。
在這裡插入圖片描述
由於現在的IDE裝置已經很少見了,所以一般的硬碟裝置都會是以“/dev/sd”開頭的。而一臺主機上可以有多塊硬碟,因此係統採用a~p來代表16塊不同的硬碟(預設從a開始分配,如果超過26個硬碟,那麼前26個命名sd[a-z],第27-52個命名為sd[aa-az],第53-78個命名為sd[ba-bz],依此類推)而且硬碟的分割槽編號也很有講究:

  1. 主分割槽或擴充套件分割槽的編號從1開始,到4結束;
  2. 邏輯分割槽從編號5開始。
  3. 儲存裝置的名稱從a開始按序命名,是由系統核心的識別順序決定的,與裝置在第幾個插槽無關。
  4. 分割槽編號並不代表分割槽個數,分割槽的數字編碼不一定是強制順延下來的,也有可能是手工指定的。

- [ ] 硬碟命名規則

在這裡插入圖片描述
正是因為計算機有了硬碟裝置,我們才可以在玩遊戲的過程中或遊戲通關之後隨時存檔,而不用每次重頭開始。硬碟裝置是由大量的扇區組成的,每個扇區的容量為512位元組。其中第一個扇區最重要,它裡面儲存著主開機記錄與分割槽表資訊。就第一個扇區來講,主開機記錄需要佔用446位元組,分割槽表為64位元組,結束符佔用2位元組;其中分割槽表中每記錄一個分割槽資訊就需要16位元組,這樣一來最多隻有4個分割槽資訊可以寫到第一個扇區中,這4個分割槽就是4個主分割槽。第一個扇區中的資料資訊如圖所示。
在這裡插入圖片描述

檔案系統與資料資料

常見的檔案系統

**Ext3:**是一款日誌檔案系統,能夠在系統異常當機時避免檔案系統資料丟失,並能自動修復資料的不一致與錯誤。然而,當硬碟容量較大時,所需的修復時間也會很長,而且也不能百分之百地保證資料不會丟失。它會把整個磁碟的每個寫入動作的細節都預先記錄下來,以便在發生異常當機後能回溯追蹤到被中斷的部分,然後嘗試進行修復。

**Ext4:**Ext3的改進版本,作為RHEL 6系統中的預設檔案管理系統,它支援的儲存容量高達1EB(1EB=1,073,741,824GB),且能夠有無限多的子目錄。另外,Ext4檔案系統能夠批量分配block塊,從而極大地提高了讀寫效率。

**XFS:**是一種高效能的日誌檔案系統,而且是RHEL 7中預設的檔案管理系統,它的優勢在發生意外當機後尤其明顯,即可以快速地恢復可能被破壞的檔案,而且強大的日誌功能只用花費極低的計算和儲存效能。並且它最大可支援的儲存容量為18EB,這幾乎滿足了所有需求。

1.inode存放檔案的許可權與屬性記錄,每個檔案佔用一個獨立的inode表格,該表格的大小預設為128位元組,裡面記錄著如下資訊:

該檔案的訪問許可權(read、write、execute);
該檔案的所有者與所屬組(owner、group);
該檔案的大小(size);
該檔案的建立或內容修改時間(ctime);
該檔案的最後一次訪問時間(atime);
該檔案的修改時間(mtime);
檔案的特殊許可權(SUID、SGID、SBIT);
該檔案的真實資料地址(point)。

2.block存放檔案的實際內容(大小可以為1KB、2KB、4KB)。

檔案很小(1KB),但依然會佔用一個block,因此會潛在地浪費3KB。
檔案很大(5KB),那麼會佔用兩個block(5KB-4KB後剩下的1KB也要佔用一個block)。

VFS虛擬檔案系統:

各式各樣的檔案系統在VFS下隱藏各自的特性和細節,使用者在操作檔案時就是統一對VFS進行操作,使用者無需關心底層的硬碟結構。
在這裡插入圖片描述

掛載硬體裝置

1.分割槽

fdisk命令:用於管理磁碟分割槽。格式:fdisk [磁碟名稱]。它提供了集新增、刪除、轉換分割槽等功能於一身的“一站式分割槽服務”。這是一條互動式命令。

引數	作用
m	檢視全部可用的引數
n	新增新的分割槽
d	刪除某個分割槽資訊
l	列出所有可用的分割槽型別
t	改變某個分割槽的型別
p	檢視分割槽表資訊
w	儲存並退出
q	不儲存直接退出

新增新的分割槽:

[root@lizhiqiang Desktop]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xc60ca334.

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc60ca334

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G
Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

檢視新的分割槽:

[root@lizhiqiang Desktop]# df -h
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/rhel_lizhiqiang-root   18G  3.0G   15G  17% /
devtmpfs                          985M     0  985M   0% /dev
tmpfs                             994M   84K  994M   1% /dev/shm
tmpfs                             994M  8.9M  986M   1% /run
tmpfs                             994M     0  994M   0% /sys/fs/cgroup
/dev/sda1                         497M  119M  379M  24% /boot

格式化新的分割槽:

[root@lizhiqiang Desktop]# mkfs.xfs /dev/sdb
mkfs.xfs: /dev/sdb appears to contain a partition table (dos).
mkfs.xfs: Use the -f option to force overwrite.
[root@lizhiqiang Desktop]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=256    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

掛載新的分割槽:

[root@lizhiqiang /]# mkdir opo
[root@lizhiqiang /]# mount /dev/sdb1 /opo

新增到系統啟動項:

vim /etc/fstab 

在這裡插入圖片描述
重啟儲存! 新的分割槽建立成功!

2.格式化

mkfs命令:用於格式化操作。格式:mkfs.檔案型別 磁碟裝置檔案。

3.掛載與解除安裝

①掛載操作就是把硬體裝置與目錄進行關聯的動作
②解除安裝操作就是取消硬體裝置與目錄關聯的動作,解除安裝檔案系統就意味不再使用硬體的裝置資源

掛載 mount 裝置 目錄

-a:掛載所有在/etc/fstab中定義的檔案系統
-t:指定檔案系統的型別

解除安裝 umount 裝置或者目錄

用mount命令掛載,系統重啟後就會失效。要在/etc/fstab檔案追加掛載資訊才能永久掛載。在/etc/fstab檔案中,掛載資訊格式:“裝置檔案 掛載目錄 格式型別 許可權選項 是否備份 是否自檢”。

掛載資訊格式各欄位含義:

欄位	   意義
裝置檔案	   一般為裝置的路徑+裝置名稱,也可以寫唯一識別碼(UUID,Universally Unique Identifier)
掛載目錄	   指定要掛載到的目錄,需在掛載前建立好
格式型別	   指定檔案系統的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此為光碟裝置)等
許可權選項	   若設定為defaults,則預設許可權為:rw, suid, dev, exec, auto, nouser, async
是否備份	   若為1則開機後使用dump進行磁碟備份,為0則不備份
是否自檢	   若為1則開機後自動進行磁碟自檢,為0則不自檢

df命令:用於檢視掛載狀態和硬碟使用量資訊。常用引數為-h。格式:df -h。
du命令:用於檢視檔案資料佔用量。格式 :du [選項] [檔案]。

du -sh /*        #檢視在Linux系統根目錄下所有一級目錄分別佔用的空間大小
du -sh /newFS    #檢視/newFS下的內容佔了多少容量

新增交換分割槽

SWAP(交換)分割槽是一種通過在硬碟中預先劃分一定的空間,然後將把記憶體中暫時不常用的資料臨時存放到硬碟中,以便騰出實體記憶體空間讓更活躍的程式服務來使用的技術,其設計目的是為了解決真實實體記憶體不足的問題。但由於交換分割槽畢竟是通過硬碟裝置讀寫資料的,速度肯定要比實體記憶體慢,所以只有當真實的實體記憶體耗盡後才會呼叫交換分割槽的資源。

交換分割槽的建立過程與前文講到的掛載並使用儲存裝置的過程非常相似。在對/dev/sdb儲存裝置進行分割槽操作前,有必要先說一下交換分割槽的劃分建議:在生產環境中,交換分割槽的大小一般為真實實體記憶體的1.5~2倍。

新增交換分割槽的過程

1.先虛擬機器建立新的硬碟
在這裡插入圖片描述
新增完重啟虛擬機器,新增交換分割槽!

[root@lizhiqiang /]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc60ca334

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (4196352-41943039, default 4196352): 
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-41943039, default 41943039): +6G
Partition 2 of type Linux and of size 6 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

成功之後檢視 記憶體

[root@lizhiqiang /]# free -h
             total       used       free     shared    buffers     cached
Mem:          1.9G       1.1G       828M       9.8M       1.6M       257M
-/+ buffers/cache:       900M       1.1G
Swap:         2.0G         0B       2.0G

格式化新的交換分割槽,發現不可以格式化 此時執行兩次partprobe 以進行格式化:

[root@lizhiqiang /]# mkswap /dev/sdb2
/dev/sdb2: No such file or directory
[root@lizhiqiang /]# partprobe
[root@lizhiqiang /]# partprobe
[root@lizhiqiang /]# mkswap /dev/sdb2
Setting up swapspace version 1, size = 6291452 KiB
no label, UUID=474d933b-b93d-41b9-82dd-7261dc676ccf

掛載新的交換分割槽:

[root@lizhiqiang /]# swapon /dev/sdb2
[root@lizhiqiang /]# free -h
             total       used       free     shared    buffers     cached
Mem:          1.9G       1.1G       821M       9.8M       1.6M       257M
-/+ buffers/cache:       906M       1.1G
Swap:         8.0G         0B       8.0G

新增交換分割槽到系統啟動項:

vim /etc/fstab 進入設定開機啟動項

在這裡插入圖片描述
設定完成 重啟虛擬機器 free -h 分割槽完成!

shutdown -h now 關閉虛擬機器!

shutdown -t -s 0 關閉本機!

相關文章