1 概述
本文通過對講解了磁盤的基本概念层亿,分區(qū)橡娄,創(chuàng)建文件系統(tǒng),掛載鳖敷,卸載等步驟進(jìn)行講解脖苏。使得用戶能夠創(chuàng)建基本的磁盤并掛載使用空間。
2 磁盤基本概念
2.1 磁盤空間
每個扇區(qū)大小是512byte定踱,這是磁盤的最小單位
每一個磁道上有多少個扇區(qū)就是扇區(qū)數(shù) sectors
每一圈叫做磁道(track)棍潘,最外面的叫做0磁道
依次往里增加,最里面的磁道數(shù)最大
每個盤有兩個面崖媚,都有兩個磁頭(head)讀取數(shù)據(jù)
相同的磁道組成的叫做柱面(cylinder)亦歉,同樣最外面叫0柱面,最里面柱面數(shù)最大
因此畅哑,
每個盤面的存儲空間:512*sectors*tracks
每個柱面的空間:512*sectors*heads
每個硬盤的空間是:512*sectors*tracks*heads
扇區(qū)數(shù)是由6bit來決定肴楷,所以每個磁道最大有2^6就64個扇區(qū)
磁道的數(shù)量是由10bit來決定磁道的數(shù)量,所以磁道最多是2^10=1024個
盤面的數(shù)量是由8bit決定的荠呐,所以每個硬盤最大有2^8=256個磁頭
所以早期每個柱面的大小為 512byte*64*256/1024/1024=8M.
CentOS6或者之前的版本默認(rèn)柱面是劃分分區(qū)的基本單位是8M赛蔫,centOS7默認(rèn)用扇區(qū)為單位分區(qū)。
但是泥张,早期每個磁盤的最大空間就是1024*8M/1024=8G.現(xiàn)在的磁盤為了解決這個問題呵恢,就采用了區(qū)位記錄磁盤扇區(qū)結(jié)構(gòu)(ZBRzoned bit recording)來定義磁盤的空間,磁盤大小因此得到了擴(kuò)展媚创。
扇區(qū)圖片
2.2 磁盤尋址方式
分為CHS 和 LBA 兩種
CHS
?采用24bit位尋址
?其中前10位表示cylinder渗钉,中間8位表示head,后面6位表示sector钞钙。
?最大尋址空間8GB
LBA(logical block addressing)
?LBA是一個整數(shù)晌姚,通過轉(zhuǎn)換成CHS格式完成磁盤具體尋址
?LBA采用48個bit位尋址
?最大尋址空間128PB
由于CHS尋址方式的尋址空間在大概8GB以內(nèi)粤剧,所以在磁盤容量小于大概8GB時,可以使用CHS尋址方式或是LBA尋址方式挥唠;在磁盤容量大于大概8GB時抵恋,則只能使用LBA尋址方式
2.3 分區(qū)的概念
2.3.1 分區(qū)的原因
?優(yōu)化I/O性能
?實(shí)現(xiàn)磁盤空間配額限制
?提高修復(fù)速度
?隔離系統(tǒng)和程序
?安裝多個OS
?采用不同文件系統(tǒng)
2.3.2 使用分區(qū)空間
?設(shè)備識別
?設(shè)備分區(qū)
?創(chuàng)建文件系統(tǒng)
?標(biāo)記文件系統(tǒng)
?在/etc/fstab文件中創(chuàng)建條目
?掛載新的文件系統(tǒng)
2.3.3 管理分區(qū)
?兩種分區(qū)方式:MBR,GPT
分區(qū)相當(dāng)于是把一塊大硬盤分成幾個小房間宝磨。MBR是比較舊的分區(qū)方式弧关,只能分區(qū)較小的空間已經(jīng)分區(qū)的數(shù)量也會比較少,GPT則是克服了MBR的缺點(diǎn)唤锉。
MBR和GPT引導(dǎo)系統(tǒng)啟動的方式不一樣
BIOS 和 UEFI 引導(dǎo)系統(tǒng)啟動流程
BIOS+MBR引導(dǎo)計算機(jī)進(jìn)行啟動世囊,BIOS寫入到ROM里面,當(dāng)計算機(jī)啟動時窿祥,BIOS就會去讀取MBR分區(qū)株憾。通過BIOS配合MBR引導(dǎo)啟動分區(qū)
但是BIOS并跟GPT搭配。如果一定要用晒衩,可以通過(BIOS+MBR)sda系統(tǒng)盤嗤瞎,引導(dǎo)系統(tǒng)啟動+GPT(其他盤)分區(qū)的方式來進(jìn)行分區(qū)。
默認(rèn)情況下UEFI+GPT進(jìn)行系統(tǒng)的啟動
2.3.3.1 MBR分區(qū)概念
?MBR: Master Boot Record听系,1982年贝奇,使用32位表示扇區(qū)數(shù),分區(qū)不超過2T
?如何分區(qū):按柱面
?0磁道0扇區(qū):512bytes
446bytes: boot loader
64bytes:分區(qū)表
16bytes: 標(biāo)識一個分區(qū)
2bytes: 55AA
?4個主分區(qū)靠胜;3主分區(qū)+1擴(kuò)展(N個邏輯分區(qū))
MBR分區(qū)結(jié)構(gòu)圖
?硬盤主引導(dǎo)記錄MBR由4個部分組成
?主引導(dǎo)程序(偏移地址0000H--0088H)掉瞳,它負(fù)責(zé)從活動分區(qū)中裝載,并運(yùn)行系統(tǒng)引導(dǎo)程序浪漠。
?出錯信息數(shù)據(jù)區(qū)陕习,偏移地址0089H--00E1H為出錯信息,00E2H--01BDH全為0字節(jié)址愿。
?分區(qū)表(DPT,Disk Partition Table)含4個分區(qū)項该镣,偏移地址01BEH--01FDH,每個分區(qū)表項長16個字節(jié),共64字節(jié)為分區(qū)項1必盖、分區(qū)項2拌牲、分區(qū)項3俱饿、分區(qū)項4
?結(jié)束標(biāo)志字歌粥,偏移地址01FE--01FF的2個字節(jié)值為結(jié)束標(biāo)志55AA
2.3.3.2?GPT分區(qū)
GPT:GUID(Globals Unique Identifiers)partition table 支持128個分區(qū),使用64位拍埠,支持8Z(512Byte/block )64Z (4096Byte/block)
?使用128位UUID(Universally Unique Identifier) 表示磁盤和分區(qū)GPT分區(qū)表自動備份在頭和尾兩份失驶,并有CRC校驗(yàn)位
?UEFI (統(tǒng)一擴(kuò)展固件接口)硬件支持GPT,使操作系統(tǒng)啟動
GPT分區(qū)結(jié)構(gòu)
GPT的第一個0扇區(qū)是保護(hù)MBR枣购,一樣是512byte嬉探,但是這個MBR不是用來啟動引導(dǎo)盤的擦耀。只是保護(hù)的目的,因?yàn)閭鹘y(tǒng)的操作系統(tǒng)都是支持MBR涩堤,并不支持GPT眷蜓。保護(hù)MBR是當(dāng)舊的電腦系統(tǒng)系統(tǒng)不識別GPT分區(qū)的時候,即認(rèn)不出GPT格式的硬盤有數(shù)據(jù)的時候胎围,會識別出該硬盤上有個MBR分區(qū)吁系,最起碼是不會讓管理者誤認(rèn)為沒有操作系統(tǒng)或者分區(qū),直接對該硬盤進(jìn)行格式化白魂。
GPT格式做的可以分128個分區(qū)汽纤。GPT分區(qū)表有自動備份的功能,支持更大的分區(qū)
2.3.4 格式化分區(qū)
給硬盤分區(qū)后福荸,還要講對應(yīng)的硬盤進(jìn)行格式化蕴坪,指定文件系統(tǒng)類型,是指定了對應(yīng)分區(qū)上文件管理的方式,相當(dāng)于有軟件來管理這個文件了敬锐。
?文件系統(tǒng)是操作系統(tǒng)用于明確存儲設(shè)備或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu)背传;即在存儲設(shè)備上組織文件的方法。操作系統(tǒng)中負(fù)責(zé)管理和存儲文件信息的軟件結(jié)構(gòu)稱為文件管理系統(tǒng)滞造,簡稱文件系統(tǒng)
?從系統(tǒng)角度來看续室,文件系統(tǒng)是對文件存儲設(shè)備的空間進(jìn)行組織和分配,負(fù)責(zé)文件存儲并對存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)谒养。具體地說挺狰,它負(fù)責(zé)為用戶建立文件,存入买窟、讀出丰泊、修改、轉(zhuǎn)儲文件始绍,控制文件的存取瞳购,安全控制,日志亏推,壓縮学赛,加密等
查前支持的文件系統(tǒng):
cat?/proc/filesystems
查看當(dāng)前系統(tǒng)支持的文件系統(tǒng),可以進(jìn)入fs目錄下查看吞杭,語句如下
cd?/lib/modules/`uname?-r`/kernel/fs
文件系統(tǒng)類型主要有以下幾種
?Linux文件系統(tǒng):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
?網(wǎng)絡(luò)文件系統(tǒng):NFS, CIFS
?集群文件系統(tǒng):GFS2, OCFS2(oracle)
?分布式文件系統(tǒng):fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
?RAW:未經(jīng)處理或者未經(jīng)格式化產(chǎn)生的文件系統(tǒng)
根據(jù)其是否支持"journal"功能:
?日志型文件系統(tǒng): ext3, ext4, xfs, ...
?非日志型文件系統(tǒng): ext2, vfat
文件系統(tǒng)的組成部分:
?內(nèi)核中的模塊:ext4, xfs, vfat
?用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虛擬文件系統(tǒng):VFS
當(dāng)然盏浇,在文件系統(tǒng)中也是運(yùn)行沒有文件系統(tǒng)的硬盤存在。
如果沒有分區(qū)芽狗,沒有文件系統(tǒng)绢掰,叫RAW,裸文件系統(tǒng)
如果沒有文件系統(tǒng),要讀數(shù)據(jù)滴劲,可以用hexdump–C –n 512 /dev/sdb1這樣來讀取攻晒。
沒有文件系統(tǒng)的話,相當(dāng)于把數(shù)據(jù)之間放在磁盤上了班挖,讀取速度回比較快鲁捏,如oracle數(shù)據(jù)庫就會把數(shù)據(jù)放在裸文件系統(tǒng)里。
3 創(chuàng)建分區(qū)
以下三個工具可以創(chuàng)建分區(qū)萧芙。
?fdisk創(chuàng)建MBR分區(qū)碴萧,
?gdisk創(chuàng)建GPT分區(qū)
?parted高級分區(qū)操作
3.1 parted分區(qū)
parted的操作都是實(shí)時生效的,小心使用
?用法:parted [選項]... [設(shè)備[命令[參數(shù)]...]...]
parted?/dev/sdb?mklabel?gpt|msdos??//給整個硬盤打標(biāo)簽末购,指定接下來硬盤要分區(qū)的類型
parted?/dev/sdb?print??//顯示硬盤的分區(qū)信息
parted?/dev/sdb?mkpart?primary?1?200?(默認(rèn)M)//開始分區(qū)破喻,并指定大小
parted?/dev/sdb?rm?1??//數(shù)字1,移除掉對應(yīng)的分區(qū)
parted?-l??//字母l,顯示分區(qū)內(nèi)容
注意
parted?/dev/sdb?mklabel?gpt
如果用parted指定了硬盤lab為gpt分區(qū)盟榴,則用fdisk命令也可以創(chuàng)建出gpt格式的分區(qū)曹质,但是不建議這么用
parted?/dev/sdc?mklabel?msdos
如果用parted指定了硬盤lab為mbr分區(qū),則用gdisk分區(qū)的時候擎场,會提示將MBR轉(zhuǎn)換為GPT分區(qū)羽德,這個和指定成GPT不一樣。
3.2 fdisk分區(qū)
gfisk /dev/sdb 類fdisk 的GPT分區(qū)工具迅办,這里就僅介紹fdisk
?fdisk -l [-u] [device...] 查看分區(qū)
?fdisk /dev/sdb 管理分區(qū)
子命令:
?p 分區(qū)列表
?t 更改分區(qū)類型宅静,centOS 6和centOS 7 相同類型的code不一樣。
?n 創(chuàng)建新分區(qū)
?d 刪除分區(qū)
?v 校驗(yàn)分區(qū)
?u 轉(zhuǎn)換單位
?w 保存并退出
?q 不保存并退出
當(dāng)分區(qū)后站欺,新的分區(qū)不會馬上同步姨夹,需要用partprobe 或者 partx進(jìn)行同步,原理是通知內(nèi)核重新讀取硬盤分區(qū)表矾策,重新設(shè)置內(nèi)存中的內(nèi)核分區(qū)表版本
partprobe- 用于centOS5和centOS7上
partx - ? 用于centOS6上
同步新增加的分區(qū)磷账,命令
partx?–a?/dev/sda?//表示通過新增加硬盤的分區(qū)表。如果盤里面已經(jīng)同步的分區(qū)贾虽,則表示該分區(qū)忙碌逃糟。
如果是同步刪除的分區(qū),用命令
partx?-d?-nr?6-8?/dev/sda//則要指定刪除分區(qū)的那個具體數(shù)字蓬豁。
命令lsblk可以列出塊設(shè)備
查看內(nèi)核是否已經(jīng)識別新的分區(qū)绰咽,命令如下
cat?/proc/partitions
4 ?創(chuàng)建文件系統(tǒng)
創(chuàng)建文件系統(tǒng),就是要將分好的分區(qū)進(jìn)行格式化地粪,指定對應(yīng)的文件系統(tǒng)
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: 設(shè)定卷標(biāo)
4.2 mke2fs命令
mke2fs:ext系列文件系統(tǒng)專用管理工具,專門用來格式化ext文件系統(tǒng)格式的工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L 'LABEL'
-j: 相當(dāng)于-t ext3
mkfs.ext3 = mkfs-t ext3 = mke2fs -j = mke2fs -t ext3
-i#: 為數(shù)據(jù)空間中每多少個字節(jié)創(chuàng)建一個inode驶忌;此大小不應(yīng)該小于block的大小
-N #:指定分區(qū)中創(chuàng)建多少個inode
-I 一個inode記錄占用的磁盤空間大小矛辕,128---4096
-m #: 默認(rèn)5%,為管理人員預(yù)留空間占總空間的百分比
-O FEATURE[,...]:啟用指定特性
-O ^FEATURE:關(guān)閉指定特性
4.3 文件系統(tǒng)標(biāo)簽
?指向設(shè)備的另一種方法
?與設(shè)備無關(guān)
?blkid:塊設(shè)備屬性信息查看
blkid[OPTION]... [DEVICE]
-U UUID: 根據(jù)指定的UUID來查找對應(yīng)的設(shè)備
如果硬盤不重新格式化,則UUID不會變付魔,且是唯一聊品,因?yàn)榇疟P的命名或者標(biāo)簽可能會改變,所以几苍,掛載建議用設(shè)備的UUID進(jìn)行掛載
-L LABEL:根據(jù)指定的LABEL來查找對應(yīng)的設(shè)備
?e2label:管理ext系列文件系統(tǒng)的LABEL
e2label DEVICE [LABEL]
?findfs:查找分區(qū)
findfs[options] LABEL=
findfs[options] UUID=
4.4?調(diào)整ext文件系統(tǒng)參數(shù)值
tune2fs:重新設(shè)定ext系列文件系統(tǒng)可調(diào)整參數(shù)的值
-l:查看指定文件系統(tǒng)超級塊信息翻屈;super block
-L 'LABEL':修改卷標(biāo)
-m #:修預(yù)留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統(tǒng)屬性啟用或禁用,–O ^has_journal
-o: 調(diào)整文件系統(tǒng)的默認(rèn)掛載選項,–o ^acl
-U UUID: 修改UUID號
4.5 查看ext文件系統(tǒng)信息
命令:dumpe2fs
塊分組管理妻坝,32768塊
-h:查看超級塊信息伸眶,不顯示分組信息
4.6?文件系統(tǒng)檢測和修復(fù)
?常發(fā)生于死機(jī)或者非正常關(guān)機(jī)之后
?掛載為文件系統(tǒng)標(biāo)記為“no clean”,注意刽宪,如果文件系統(tǒng)是ext2,則可能會顯示no clean,但是沒掛載的時候用dumpe2fs檢查又是clean狀態(tài)
?注意:一定不要在掛載狀態(tài)下修復(fù)
fsck檢查文件系統(tǒng)的狀態(tài)厘贼。可以修復(fù)故障的文件系統(tǒng)圣拄,取消掛載后才能執(zhí)行該命令嘴秸,否則可能會破壞文件系統(tǒng)。該命令慎用庇谆,非必要時候不要執(zhí)行岳掐。
fsck?-f? /dev/sdb5 多了-f選項,強(qiáng)制檢查硬盤饭耳,如果沒有-f串述,大致檢查。只能修復(fù)文件系統(tǒng)寞肖,如果數(shù)據(jù)已經(jīng)被破壞了纲酗,被覆蓋掉的數(shù)據(jù)就不能修復(fù)了,還沒被破壞的數(shù)據(jù)可以繼續(xù)查看
因異常導(dǎo)致的丟失的文件可以到 lost+found文件夾下查找
?fsck: File System Check
fsck.FS_TYPE
fsck-t FS_TYPE
-p: 自動修復(fù)錯誤
-r: 交互式修復(fù)錯誤
FS_TYPE一定要與分區(qū)上已經(jīng)文件類型相同
?e2fsck:ext系列文件專用的檢測修復(fù)工具
-y:自動回答為yes
-f:強(qiáng)制修復(fù)
5 掛載
5.1 mount 掛載
?掛載:將額外文件系統(tǒng)與根文件系統(tǒng)某現(xiàn)存的目錄建立起關(guān)聯(lián)關(guān)系新蟆,進(jìn)而使得此目錄做為其它文件訪問入口的行為
?卸載:為解除此關(guān)聯(lián)關(guān)系的過程
?把設(shè)備關(guān)聯(lián)掛載點(diǎn):mount Point
?卸載時:可使用設(shè)備耕姊,也可以使用掛載點(diǎn)
?掛載點(diǎn)下原有文件在掛載完成后會被臨時隱藏
?掛載點(diǎn)目錄一般為空
?掛載方法:mount DEVICE MOUNT_POINT
?mount:通過查看/etc/mtab文件顯示當(dāng)前已掛載的所有設(shè)備
?mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要掛載的設(shè)備;
(1) 設(shè)備文件:例如/dev/sda5
(2) 卷標(biāo):-L 'LABEL', 例如-L 'MYDATA'
(3) UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e'
(4) 偽文件系統(tǒng)名稱:proc, sysfs, devtmpfs, configfs
dir:掛載點(diǎn)
事先存在栅葡;建議使用空目錄
進(jìn)程正在使用中的設(shè)備無法被卸載
mount常用命令選項
?-t vsftype:指定要掛載的設(shè)備上的文件系統(tǒng)類型
?-r: readonly茉兰,只讀掛載
?-w: read and write, 讀寫掛載
?-n: 不更新/etc/mtab,mount不可見
?-a:自動掛載所有支持自動掛載的設(shè)備(定義在了/etc/fstab文件中欣簇,且掛載選項中有auto功能)
?-L 'LABEL': 以卷標(biāo)指定掛載設(shè)備
?-U 'UUID': 以UUID指定要掛載的設(shè)備
?-B, --bind: 綁定目錄到另一個目錄上
-o options:(掛載文件系統(tǒng)的選項)规脸,多個選項使用逗號分隔
async:異步模式
sync:同步模式,內(nèi)存更改時,同時寫磁盤
atime/noatime:包含目錄和文件
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載,是否支持-a選項
exec/noexec:是否支持將文件系統(tǒng)上運(yùn)行應(yīng)用程序
dev/nodev:是否支持在此文件系統(tǒng)上使用設(shè)備文件
suid/nosuid:不否支持suid和sgid權(quán)限
remount:重新掛載
ro:只讀
rw:讀寫
user/nouser:是否允許普通用戶掛載此設(shè)備熊咽,/etc/fstab使用
acl:啟用此文件系統(tǒng)上的acl功能
loop: 使用loop設(shè)備
?defaults:圖形界面自動掛載相當(dāng)于rw,nosuid, dev, exec, auto, nouser,async
defaults:但是通過mount分區(qū)掛載默認(rèn)是相當(dāng)于rw,suid, dev, exec, auto, nouser, async
查看內(nèi)核追蹤到的已掛載的所有設(shè)備
cat?/proc/mounts
5.2 寫入配置命令
要使得掛載長期有效莫鸭,即開機(jī)時自動掛載,需要往配置文件/etc/fstab寫入相關(guān)的信息
?配置文件系統(tǒng)體系
?被mount横殴、fsck和其它程序使用
?系統(tǒng)重啟時保留文件系統(tǒng)體系
?可以在設(shè)備欄使用文件系統(tǒng)卷標(biāo)
?使用mount -a 命令掛載/etc/fstab中的所有文件系統(tǒng)
/etc/fstab每行定義一個要掛載的文件系統(tǒng)被因,里面每個字段的含義如下:
?要掛載的設(shè)備或偽文件系統(tǒng)
設(shè)備文件
LABEL:LABEL=""
UUID:UUID=""
偽文件系統(tǒng)名稱:proc, sysfs
?掛載點(diǎn)
?文件系統(tǒng)類型卿拴,相關(guān)文件系統(tǒng)類型可見2.3.4節(jié)內(nèi)容
?掛載選項:defaults
?轉(zhuǎn)儲頻率:0:不做備份1:每天轉(zhuǎn)儲2:每隔一天轉(zhuǎn)儲
?自檢次序:0:不自檢
1:首先自檢;一般只有rootfs才用1
自檢次序字段如果有分區(qū)填寫大于1的話梨与,則在檢查完根分區(qū)后堕花,接著按填寫的數(shù)字從小到大依次檢查下去。同數(shù)字 的同時檢查粥鞋。比如第一和第二個分區(qū)填寫2缘挽,第三和第四個分區(qū)填寫3,則系統(tǒng)在檢查完根分區(qū)后呻粹,接著同時檢查第一和第二個分區(qū)壕曼,然后再同時檢查第三和第四個分區(qū)。
特殊文件掛載舉例
其中等浊,可以用showmount –e ?ip可以看到對應(yīng)ip上的共享文件夾腮郊,然后再將其掛載上nfs文件格式上
6 卸載
一般情況下,正在被訪問的掛載設(shè)備是不能被正常卸載筹燕,所以卸載前可以先用以下命名查看情況后在進(jìn)行卸載
?查看掛載情況伴榔,可以檢查掛載是否成功
findmnt ?MOUNT_POINT|device
?查看正在訪問指定文件系統(tǒng)的進(jìn)程
lsof ? MOUNT_POINT
fuser ?-v ?MOUNT_POINT
?終止所有在正訪問指定的文件系統(tǒng)的進(jìn)程
fuser -km MOUNT_POINT
?卸載
umountDEVICE
umountMOUNT_POINT
到這里為止,普通分區(qū)的使用以及完成庄萎,可以正常使用新的分區(qū)