Linux 磁盤管理 基礎篇--創建基本文件分區
1 概述
本文通過對講解了磁盤的基本概念,分區,創建文件系統,掛載,卸載等步驟進行講解。使得用戶能夠創建基本的磁盤並掛載使用空間。
2 磁盤基本概念
2.1 磁盤空間
每個扇區大小是512byte,這是磁盤的最小單位
每一個磁道上有多少個扇區就是扇區數 sectors
每一圈叫做磁道(track),最外面的叫做0磁道
依次往裏增加,最裏面的磁道數最大
每個盤有兩個面,都有兩個磁頭(head)讀取數據
相同的磁道組成的叫做柱面(cylinder),同樣最外面叫0柱面,最裏面柱面數最大
因此,
每個盤面的存儲空間:512*sectors*tracks
每個柱面的空間:512*sectors*heads
每個硬盤的空間是:512*sectors*tracks*heads
扇區數是由6bit來決定,所以每個磁道最大有2^6就64個扇區
磁道的數量是由10bit來決定磁道的數量,所以磁道最多是2^10=1024個
盤面的數量是由8bit決定的,所以每個硬盤最大有2^8=256個磁頭
所以早期每個柱面的大小為 512byte*64*256/1024/1024=8M.
CentOS6或者之前的版本默認柱面是劃分分區的基本單位是8M,centOS7默認用扇區為單位分區。
但是,早期每個磁盤的最大空間就是1024*8M/1024=8G.現在的磁盤為了解決這個問題,就采用了區位記錄磁盤扇區結構(ZBRzoned bit recording)來定義磁盤的空間,磁盤大小因此得到了擴展。
扇區圖片
2.2 磁盤尋址方式
分為CHS 和 LBA 兩種
CHS
采用24bit位尋址
其中前10位表示cylinder,中間8位表示head,後面6位表示sector。
最大尋址空間8GB
LBA(logical block addressing)
LBA是一個整數,通過轉換成CHS格式完成磁盤具體尋址
LBA采用48個bit位尋址
最大尋址空間128PB
由於CHS尋址方式的尋址空間在大概8GB以內,所以在磁盤容量小於大概8GB時,可以使用CHS尋址方式或是LBA尋址方式;在磁盤容量大於大概8GB時,則只能使用LBA尋址方式
2.3 分區的概念
2.3.1 分區的原因
優化I/O性能
實現磁盤空間配額限制
提高修復速度
隔離系統和程序
安裝多個OS
采用不同文件系統
2.3.2 使用分區空間
設備識別
設備分區
創建文件系統
標記文件系統
在/etc/fstab文件中創建條目
掛載新的文件系統
2.3.3 管理分區
兩種分區方式:MBR,GPT
分區相當於是把一塊大硬盤分成幾個小房間。MBR是比較舊的分區方式,只能分區較小的空間已經分區的數量也會比較少,GPT則是克服了MBR的缺點。
MBR和GPT引導系統啟動的方式不一樣
BIOS 和 UEFI 引導系統啟動流程
BIOS+MBR引導計算機進行啟動,BIOS寫入到ROM裏面,當計算機啟動時,BIOS就會去讀取MBR分區。通過BIOS配合MBR引導啟動分區
但是BIOS並跟GPT搭配。如果一定要用,可以通過 (BIOS+MBR)sda 系統盤,引導系統啟動+GPT(其他盤)分區的方式來進行分區。
默認情況下 UEFI+GPT進行系統的啟動
2.3.3.1 MBR分區概念
MBR: Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T
如何分區:按柱面
0磁道0扇區:512bytes
446bytes: boot loader
64bytes:分區表
16bytes: 標識一個分區
2bytes: 55AA
4個主分區;3主分區+1擴展(N個邏輯分區)
MBR分區結構圖
硬盤主引導記錄MBR由4個部分組成
主引導程序(偏移地址0000H--0088H),它負責從活動分區中裝載,並運行系統引導程序。
出錯信息數據區,偏移地址0089H--00E1H為出錯信息,00E2H--01BDH全為0字節。
分區表(DPT,Disk Partition Table)含4個分區項,偏移地址01BEH--01FDH,每個分區表項長16個字節,共64字節為分區項1、分區項2、分區項3、分區項4
結束標誌字,偏移地址01FE--01FF的2個字節值為結束標誌55AA
2.3.3.2 GPT分區
GPT:GUID(Globals Unique Identifiers)partition table 支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)
使用128位UUID(Universally Unique Identifier) 表示磁盤和分區GPT分區表自動備份在頭和尾兩份,並有CRC校驗位
UEFI (統一擴展固件接口)硬件支持GPT,使操作系統啟動
GPT分區結構
GPT的第一個0扇區是保護MBR,一樣是512byte,但是這個MBR不是用來啟動引導盤的。只是保護的目的,因為傳統的操作系統都是支持MBR,並不支持GPT。保護MBR是當舊的電腦系統系統不識別GPT分區的時候,即認不出GPT格式的硬盤有數據的時候,會識別出該硬盤上有個MBR分區,最起碼是不會讓管理者誤認為沒有操作系統或者分區,直接對該硬盤進行格式化。
GPT格式做的可以分128個分區。GPT分區表有自動備份的功能,支持更大的分區
2.3.4 格式化分區
給硬盤分區後,還要講對應的硬盤進行格式化,指定文件系統類型,是指定了對應分區上文件管理的方式,相當於有軟件來管理這個文件了。
文件系統是操作系統用於明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日誌,壓縮,加密等
查前支持的文件系統:
cat /proc/filesystems
查看當前系統支持的文件系統,可以進入fs目錄下查看,語句如下
cd /lib/modules/`uname -r`/kernel/fs
文件系統類型主要有以下幾種
Linux文件系統:ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
光盤:iso9660
Windows:FAT32, exFAT,NTFS
Unix: FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2(oracle)
分布式文件系統:fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未經處理或者未經格式化產生的文件系統
根據其是否支持"journal"功能:
日誌型文件系統: ext3, ext4, xfs, ...
非日誌型文件系統: ext2, vfat
文件系統的組成部分:
內核中的模塊:ext4, xfs, vfat
用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虛擬文件系統:VFS
當然,在文件系統中也是運行沒有文件系統的硬盤存在。
如果沒有分區,沒有文件系統,叫RAW,裸文件系統
如果沒有文件系統,要讀數據,可以用hexdump–C –n 512 /dev/sdb1這樣來讀取。
沒有文件系統的話,相當於把數據之間放在磁盤上了,讀取速度回比較快,如oracle數據庫就會把數據放在裸文件系統裏。
3 創建分區
以下三個工具可以創建分區。
fdisk創建MBR分區,
gdisk創建GPT分區
parted高級分區操作
3.1 parted分區
parted的操作都是實時生效的,小心使用
用法:parted [選項]... [設備[命令[參數]...]...]
parted /dev/sdb mklabel gpt|msdos //給整個硬盤打標簽,指定接下來硬盤要分區的類型 parted /dev/sdb print //顯示硬盤的分區信息 parted /dev/sdb mkpart primary 1 200 (默認M)//開始分區,並指定大小 parted /dev/sdb rm 1 //數字1,移除掉對應的分區 parted -l //字母l,顯示分區內容
註意
parted /dev/sdb mklabel gpt
如果用parted指定了硬盤lab為gpt分區,則用fdisk命令也可以創建出gpt格式的分區,但是不建議這麽用
parted /dev/sdc mklabel msdos
如果用parted指定了硬盤lab為mbr分區,則用gdisk分區的時候,會提示將MBR轉換為GPT分區,這個和指定成GPT不一樣。
3.2 fdisk分區
gfisk /dev/sdb 類fdisk 的GPT分區工具,這裏就僅介紹fdisk
fdisk -l [-u] [device...] 查看分區
fdisk /dev/sdb 管理分區
子命令:
p 分區列表
t 更改分區類型,centOS 6和centOS 7 相同類型的code不一樣。
n 創建新分區
d 刪除分區
v 校驗分區
u 轉換單位
w 保存並退出
q 不保存並退出
當分區後,新的分區不會馬上同步,需要用partprobe 或者 partx進行同步,原理是通知內核重新讀取硬盤分區表,重新設置內存中的內核分區表版本
partprobe- 用於centOS5和centOS7上
partx - 用於centOS6上
同步新增加的分區,命令
partx –a /dev/sda //表示通過新增加硬盤的分區表。如果盤裏面已經同步的分區,則表示該分區忙碌。
如果是同步刪除的分區,用命令
partx -d -nr 6-8 /dev/sda//則要指定刪除分區的那個具體數字。
命令lsblk可以列出塊設備
查看內核是否已經識別新的分區,命令如下
cat /proc/partitions
4 創建文件系統
創建文件系統,就是要將分好的分區進行格式化,指定對應的文件系統
4.1 mkfs命令
(1) mkfs.FS_TYPE /dev/DEVICE ,其中FS_TYPE可以指定為ext3,ext4,xfs,vfat等
(2) mkfs -t FS_TYPE /dev/DEVICE
(3) mkfs -L ‘LABEL‘ /dev/DEVICE: 設定卷標
4.2 mke2fs命令
mke2fs:ext系列文件系統專用管理工具,專門用來格式化ext文件系統格式的工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L ‘LABEL‘
-j: 相當於-t ext3
mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3
-i#: 為數據空間中每多少個字節創建一個inode;此大小不應該小於block的大小
-N #:指定分區中創建多少個inode
-I 一個inode記錄占用的磁盤空間大小,128---4096
-m #: 默認5%,為管理人員預留空間占總空間的百分比
-O FEATURE[,...]:啟用指定特性
-O ^FEATURE:關閉指定特性
4.3 文件系統標簽
指向設備的另一種方法
與設備無關
blkid:塊設備屬性信息查看
blkid[OPTION]... [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
如果硬盤不重新格式化,則UUID不會變,且是唯一,因為磁盤的命名或者標簽可能會改變,所以,掛載建議用設備的UUID進行掛載
-L LABEL:根據指定的LABEL來查找對應的設備
e2label:管理ext系列文件系統的LABEL
e2label DEVICE [LABEL]
findfs:查找分區
findfs[options] LABEL=<label>
findfs[options] UUID=<uuid>
4.4 調整ext文件系統參數值
tune2fs:重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L ‘LABEL‘:修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用,–O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號
4.5 查看ext文件系統信息
命令:dumpe2fs
塊分組管理,32768塊
-h:查看超級塊信息,不顯示分組信息
4.6 文件系統檢測和修復
常發生於死機或者非正常關機之後
掛載為文件系統標記為“no clean”,註意,如果文件系統是ext2,則可能會顯示no clean,但是沒掛載的時候用dumpe2fs檢查又是clean狀態
註意:一定不要在掛載狀態下修復
fsck檢查文件系統的狀態。可以修復故障的文件系統,取消掛載後才能執行該命令,否則可能會破壞文件系統。該命令慎用,非必要時候不要執行。
fsck -f /dev/sdb5 多了-f選項,強制檢查硬盤,如果沒有-f,大致檢查。只能修復文件系統,如果數據已經被破壞了,被覆蓋掉的數據就不能修復了,還沒被破壞的數據可以繼續查看
因異常導致的丟失的文件可以到 lost+found文件夾下查找
fsck: File System Check
fsck.FS_TYPE
fsck-t FS_TYPE
-p: 自動修復錯誤
-r: 交互式修復錯誤
FS_TYPE一定要與分區上已經文件類型相同
e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
5 掛載
5.1 mount 掛載
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯關系的過程
把設備關聯掛載點:mount Point
卸載時:可使用設備,也可以使用掛載點
掛載點下原有文件在掛載完成後會被臨時隱藏
掛載點目錄一般為空
掛載方法:mount DEVICE MOUNT_POINT
mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要掛載的設備;
(1) 設備文件:例如/dev/sda5
(2) 卷標:-L ‘LABEL‘, 例如-L ‘MYDATA‘
(3) UUID, -U ‘UUID‘:例如-U ‘0c50523c-43f1-45e7-85c0-a126711d406e‘
(4) 偽文件系統名稱:proc, sysfs, devtmpfs, configfs
dir:掛載點
事先存在;建議使用空目錄
進程正在使用中的設備無法被卸載
mount常用命令選項
-t vsftype:指定要掛載的設備上的文件系統類型
-r: readonly,只讀掛載
-w: read and write, 讀寫掛載
-n: 不更新/etc/mtab,mount不可見
-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L ‘LABEL‘: 以卷標指定掛載設備
-U ‘UUID‘: 以UUID指定要掛載的設備
-B, --bind: 綁定目錄到另一個目錄上
-o options:(掛載文件系統的選項),多個選項使用逗號分隔
async:異步模式
sync:同步模式,內存更改時,同時寫磁盤
atime/noatime:包含目錄和文件
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載,是否支持-a選項
exec/noexec:是否支持將文件系統上運行應用程序
dev/nodev:是否支持在此文件系統上使用設備文件
suid/nosuid:不否支持suid和sgid權限
remount:重新掛載
ro:只讀
rw:讀寫
user/nouser:是否允許普通用戶掛載此設備,/etc/fstab使用
acl:啟用此文件系統上的acl功能
loop: 使用loop設備
defaults:圖形界面自動掛載相當於rw, nosuid, dev, exec, auto, nouser,async
defaults:但是通過mount分區掛載默認是相當於rw, suid, dev, exec, auto, nouser, async
查看內核追蹤到的已掛載的所有設備
cat /proc/mounts
5.2 寫入配置命令
要使得掛載長期有效,即開機時自動掛載,需要往配置文件/etc/fstab寫入相關的信息
配置文件系統體系
被mount、fsck和其它程序使用
系統重啟時保留文件系統體系
可以在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中的所有文件系統
/etc/fstab每行定義一個要掛載的文件系統,裏面每個字段的含義如下:
要掛載的設備或偽文件系統
設備文件
LABEL:LABEL=""
UUID:UUID=""
偽文件系統名稱:proc, sysfs
掛載點
文件系統類型,相關文件系統類型可見2.3.4節內容
掛載選項:defaults
轉儲頻率:0:不做備份1:每天轉儲2:每隔一天轉儲
自檢次序:0:不自檢
1:首先自檢;一般只有rootfs才用1
自檢次序字段 如果有分區填寫大於1的話,則在檢查完根分區後,接著按填寫的數字從小到大依次檢查下去。同數字 的同時檢查。比如第一和第二個分區填寫2,第三和第四個分區填寫3,則系統在檢查完根分區後,接著同時檢查第一和第二個分區,然後再同時檢查第三和第四個分區。
特殊文件掛載舉例
其中,可以用showmount –e ip 可以看到對應ip上的共享文件夾,然後再將其掛載上nfs文件格式上
6 卸載
一般情況下,正在被訪問的掛載設備是不能被正常卸載,所以卸載前可以先用以下命名查看情況後在進行卸載
查看掛載情況,可以檢查掛載是否成功
findmnt MOUNT_POINT|device
查看正在訪問指定文件系統的進程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
終止所有在正訪問指定的文件系統的進程
fuser -km MOUNT_POINT
卸載
umountDEVICE
umountMOUNT_POINT
到這裏為止,普通分區的使用已經完成,可以正常使用新的分區
本文出自 “自學linux” 博客,請務必保留此出處http://ghbsunny.blog.51cto.com/7759574/1956554
Linux 磁盤管理 基礎篇--創建基本文件分區