Linux磁盤分區管理筆記

磁盤管理(disk manage) - 01-15-AM
存儲管理(storage manage)

新硬盤的管理流程:分區fdisk或parted--〉格式化mkfs--〉掛載mount
思考:將分區、格式概念和一套3室一廳的房子聯繫起來。或者將分區、格式概念和一個衣櫃聯繫起來。也可以將分區、格式概念和小學生的方格寫字本聯繫起來。
Linux磁盤分區管理筆記

分區的作用:將硬盤上的數據進行分類管理,如c盤存操作系統,d盤存安裝軟件,e盤存電影和音樂。
格式化:是一個創建文件系統的過程,將分區中的容量按邏輯上分成inode表、數據塊等信息。
掛載:將一個分區的文件系統加載(讀)到一個目錄中。即目錄是訪問分區文件系統的入口,訪問這個掛載點目錄就等同於訪問這個分區文件系統中的文件。

硬盤分區(disk partition):
GPT分區管理:parted命令
GPT:是GUID(Globally Unique Identifier) Partition Table全局唯一標識分區表的縮寫。GPT分區表中只有主分區這個管理概念。允許創建128個主分區。GPT分區表可以用來管理總容量大於2TB以上的硬盤。硬盤的UUID號可用blkid命令來查。

GUID:全局唯一標識符(GUID,Globally Unique Identifier)是一種由算法生成的二進制長度爲128位的數字標識符。GUID主要用於在擁有多個節點、多臺計算機的網絡或系統中。GUID標識符由隨機產生的字母、數字混合組成。

練習準備:將linux虛擬機關機,給虛擬機添加5塊SCSI接口的2GB的硬盤,創建快照“5塊2G硬盤”,然後將虛擬機開機,執行lsblk命令顯示磁盤塊設備列表。

要求:將2GB的硬盤sdb用GPT分區表進行管理,要求給sdb硬盤創建2個主分區,第1個主分區容量是1.5G,另一個主分區的容量使用所有剩餘空間。
查塊設備列表(list block):lsblk
定義分區表標籤(即格式):parted -s /dev/sdb mklabel gpt
創建第1個1.5G的主分區:parted -s /dev/sdb mkpart primary 1M 1.5G
創建第2個主分區(使用所有剩餘空間-1):parted -s /dev/sdb mkpart primary '1.5G -1'
查看sdb硬盤的分區表信息:lsblk 或 fdisk -l /dev/sdb

parted命令的附加功能:
顯示(print)sdb硬盤的分區表:parted /dev/sdb p
刪除(remove)sdb硬盤的2號分區:parted -s /dev/sdb rm 2

mount掛載:將分區的文件系統內容讀取到一個目錄中。訪問這個掛載點目錄就等同於訪問這個分區文件系統中的文件。其實windows中的c、d等盤符就是自動掛載的目錄。例如,在windows中插入U盤後會被自動分配到一個盤符,這就是微軟在後臺做的一個mount自動掛載的程序。

要求:將sdb硬盤的第1個分區格式化成ext4文件系統,將第2個分區格式化成xfs文件系統。將第1個分掛載到/mnt/sdb1目錄中,將第2個分掛載到/mnt/sdb2目錄中。分別往分區的掛載點目錄中寫入一些數據。
查分區:lsblk
格式化1號分區:mkfs.ext4 /dev/sdb1 或 mkfs -t ext4 /dev/sdb1
格式化2號分區:mkfs.xfs /dev/sdb2 或 mkfs -t xfs /dev/sdb1
創建掛載點目錄:mkdir -pv /mnt/sdb{1,2} 或 mkdir -pv /mnt/sdb1 /mnt/sdb2
手動掛載:mount /dev/sdb1 /mnt/sdb1 ; mount /dev/sdb2 /mnt/sdb2
查掛載信息:lsblk 或 df -hT 或 mount
寫入數據:touch /mnt/sdb1/{a.txt,b.mp3} ; cp -v /etc/host* /mnt/sdb2
遞歸(-R)顯示/mnt目錄中的文件名列表:ls -R /mnt

課堂練習:參考sdb硬盤的操作,將sdc、sdd硬盤也做同樣的分區、格式化、手動掛載、寫入文件操作。
磁盤分區的參考腳本(入門級):
入門級腳本:即沒有if條件、for循環這些控制語句的腳本,通常是一次性的腳本。
cat pt.sh 腳本內容如下
#!/bin/bash
#腳本中以#號開頭的內容爲註釋,僅起到說明作用。上面的#!/bin/bash腳本的解釋器程序名,通常是/bin/bash或/bin/sh或/bin/python。
#以下的a、x是變量,$a、$x是調用變量a、x的取值。
a=/dev/sdc
x=/mnt/sdc
lsblk
parted -s $a mklabel gpt
parted -s $a mkpart primary 1M 1.5G
parted -s $a mkpart primary '1.5G -1'
lsblk
mkfs.ext4 ${a}1
mkfs.xfs ${a}2
mkdir -pv ${x}1 ${x}2
mount ${a}1 ${x}1
mount ${a}2 ${x}2
touch ${x}1/{a.txt,b.mp3}
cp -v /etc/host* ${x}2/
ls ${x}1 ${x}2
lsblk

給腳本添加可執行權限:chmod +x pt.sh
運行腳本:./pt.sh 或 bash pt.sh 或 sh pt.sh 或 python pt.py

到此,GPT分區的管理介紹完畢,其中內容包括分區的查詢lsblk、創建parted、格式化mkfs、掛載mount。


MBR分區表管理:
MBR:是主引導記錄(main boot record)的縮寫。
MBR:是保存在硬盤的0磁道0柱面1扇區的位置,佔用512字節(因爲1個扇區默認的大小是512字節)。其中bootloader引導程序佔用446字節,DPT(disk partition table)分區表佔用64字節,magic佔用2字節。

MBR的分區表特點:
0.只能管理總容量在2TB以內的硬盤。
1.最多隻允許分4個主分區,因爲DPT分區表總容量是64字節,每個分區佔用16字節,即64/16=4。
2.如果想分的個以上的分區,可採用分一個主分區(primary)和一個擴展分區(extend),然後在擴展分區中創建邏輯(logical)分區來實現。
3.主分區的編號爲1~4,第1個邏輯分區的編號默認爲5。
4.只能在主分區和邏輯分區上格式化創建文件系統。並且只能在主分區和邏輯分區上寫入文件。
Linux磁盤分區管理筆記

Linux磁盤分區管理筆記

硬盤分5個分區的方案(用MBR分區表):
方案一、1個主分區,1個擴展分區,4個邏輯分區。
方案二、3個主分區,1個擴展分區,2個邏輯分區。

練習準備:將sdb硬盤的兩個分區的文件系統依次卸載掉,並刪除sdb硬盤的所有分區。
查分區表信息:lsblk
卸載分區的文件系統:umount /mnt/sdb1 /mnt/sdb2
刪除分區表(修改分區表格式標籤即可):parted -s /dev/sdb mklabel msdos
查分區表信息:lsblk

MBR分區練習:將2GB的硬盤sdb用MBR分區表進行管理,要求給sdb硬盤創建1個容量爲1.2G的主分區,再創建一個擴展分區容量爲所有剩餘空間。在擴展分區中創建2個邏輯分區,第1個邏輯分區容量爲600M,第2個邏輯分區的容量爲所有剩餘空間。
查分區表信息:lsblk
cfdisk管理分區:cfdisk /dev/sdb
cfdisk快捷鍵:n是new新建 p是primary主分區 l是logical邏輯分區
W(大寫)是wite保存(寫入) q是quit退出
創建主分區:n新建==>p主分區==>1.2G回車==>beginning回車==>W(大寫)保存==>yes回車
創建邏輯分區1:選free空閒空間==> n新建==>l邏輯分區==>600M回車==>beginning回車
創建邏輯分區2:選free空閒空間==> n新建==>l邏輯分區==>600M回車==>beginning回車==>W保存==>yes回車==>q鍵退出
查分區表信息:lsblk

練習要求:將sdb硬盤的第1個分區格式化成ext4文件系統,將第1、2個邏輯分區格式化成xfs文件系統。將第1個分掛載到/mnt/data目錄中,將第1、2個邏輯分區分別掛載到/mnt/mysql、/mnt/web目錄中。分別往分區的掛載點目錄中寫入一些數據。
查分區表信息:lsblk
格式化分區:mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb5
mkfs.xfs /dev/sdb6
創建掛載點目錄:mkdir -pv /mnt/{data,mysql,web}
手動掛載:mount /dev/sdb1 /mnt/data
mount /dev/sdb5 /mnt/mysql
mount /dev/sdb6 /mnt/web
寫入數據:touch /mnt/data/{a1.txt,b1.mp3}
mkdir -pv /mnt/mysql/{haha,hehe}
cp -v /etc/host* /mnt/web/
遞歸顯示文件名列表:ls -R /mnt/{data,mysql,web}

課堂練習:參考sdb硬盤的操作,將sdc、sdd硬盤分區的文件系統卸載掉,刪除sdc、sdd硬盤的分區表,再做同樣的分區、格式化、手動掛載、寫入文件操作。


fstab自動掛載:
mount手動掛載的缺點:當系統重啓後,用戶必須重新手動將分區的文件系統掛載到指定的目錄。但是用戶可以將mount手動掛載的命令寫到/etc/rc.d/rc.local開機運行腳本文件中,系統在啓動時會自動執行rc.local腳本中的命令。

fstab自動掛載配置文件:fstab是file system table文件系統表的縮寫。是用來記錄磁盤分區設備自動掛載信息的配置文件。系統啓動時會讀取/etc/fstab文件中的掛載配置信息,並自動掛載裏面的設備。

練習:查看/etc/fstab配置文件內容,熟悉fstab文件格式。(可用man 5 fstab瞭解文件的格式)
Linux磁盤分區管理筆記

fstab文件格式說明:
第1列:分區設備,可以是磁盤的分區設備名、分區的UUID值、分區的label標籤。UUID值、label標籤可用blkid命令查。
第2列:掛載點目錄,必須是已存在的空目錄。
第3列:文件系統類型,也就是用mkfs、mkfs.ext4、mkfs.xfs格式化創建的文件系統格式。文件系統格式可以是ext4、、xfs、vfat、ntfs、iso9660、nfs、smb等。
第4列:掛載選項,通常是defaults默認,default代表的選項是rw可讀可寫,suid超級權限,dev設備,exec可執行,auto自動,nouser無用戶,and async異步。選項還可以是ro只讀、usrquota用戶配額、grpquota組配額。
第5列:dump備份,即是否使用dump工具進行數據備份。0表示禁用,1表示啓動。
第6列:fsck檢查,即是否使用fsck工具進行磁盤掃描檢查。0表示禁用,1表示啓動。

練習準備:要求將sdb硬盤的三個分區的文件系統卸載。並用lsblk或df -hT查看掛載信息。
查掛載信息:lsblk 或 df -hT
卸載分區的文件系統:umount -v /dev/sdb{1,5,6}
查掛載信息:lsblk 或 df -hT

fstab掛載練習:採用fstab文件實現sdb硬盤三個分區的文件系統自動掛載。
第1步,在fstab配置文件中添加自動掛載設置。
vim /etc/fstab 在文件最後添加如下內容
#分區設備 掛載點 文件系統類型 掛載選項 dump備份 fsck檢查
/dev/sdb1 /mnt/data ext4 defaults 0 0
/dev/sdb5 /mnt/mysql xfs defaults 0 0
/dev/sdb6 /mnt/web xfs defaults 0 0

第2步,用mount -av做自動掛載測試。用lsblk或df -hT顯示已掛載的分區文件系統信息。
mount -av
lsblk 或 df -hT

第3步,此步驟可以不做,僅用於驗證效果。reboot重啓linux系統,系統啓動後,用lsblk或df -hT看sdb硬盤分區的文件系統是否自動掛載上了。
reboot 重啓,並等待系統啓動,再執行如下命令
lsblk 或 df -hT


mount命令詳解:
用法:mount [選項] 分區設備 掛載點
選項:
-a, --all 掛載 fstab 中的所有文件系統
-h, --help 顯示此幫助並退出
-o, --options <列表> 掛載選項列表,以英文逗號分隔,選項用man mount查幫助手冊
-r, --read-only 以只讀方式掛載文件系統(同 -o ro)
-t, --types <列表> 限制文件系統類型集合,文件系統格式類型通常有ext4、xfs、vfat、ntfs、smb、nfs、swap、iso9660等
--source <源> 指明源(路徑、標籤、uuid)
--target <目標> 指明掛載點
-v, --verbose 打印當前進行的操作
-w, --rw, --read-write 以讀寫方式掛載文件系統(默認)

源(設備):
-L, --label <標籤> 同 LABEL=<label>
-U, --uuid <uuid> 同 UUID=<uuid>
LABEL=<標籤> 按文件系統標籤指定設備
UUID=<uuid> 按文件系統 UUID 指定設備
PARTLABEL=<標籤> 按分區標籤指定設備
PARTUUID=<uuid> 按分區 UUID 指定設備
<設備> 按路徑指定設備
<目錄> 綁定掛載的掛載點(參閱 --bind/rbind)
<文件> 用於設置迴環設備的常規文件

操作:
-B, --bind 掛載其他位置的子樹(同 -o bind)
-M, --move 將子樹移動到其他位置
-R, --rbind 掛載其他位置的子樹及其包含的所有掛載

mount實例:執行如下功能的命令。
創建掛載點目錄:mkdir -pv /tmp/{c..g}
顯示磁盤塊設備清單:lsblk
將/dev/sda1分區掛載到/tmp/c目錄中:mount -t xfs /dev/sda1 /tmp/c
將/dev/sda1分區以只讀方式掛載到/tmp/d目錄中:mount -o ro /dev/sda1 /tmp/d

以uuid方式將/dev/sda1分區掛載到/tmp/e目錄中:
blkid /dev/sda1;
mount UUID="8b947ec7-6d78-4121-8a4c-7aaabf3a221e" /tmp/e

給/dev/sda1分區設置label標籤,以label標籤的方式掛載sda1分區到/tmp/f目錄中:

將/usr目錄掛載到/tmp/g目錄中(通常用於文件共享時):mount -B /usr /tmp/g

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章