Linux存儲管理及硬盤分區、格式化、掛載
下面介紹的是Linux的存儲管理基礎知識、使用一個新的硬盤設備步驟為(分區、格式化、掛載分區)。
一、Linux的存儲管理基礎知識點
1、硬件組成
計算機基礎知識中,各個硬件表示為:運算器(CUP);控制器(MEEM);硬盤(HDisk);網卡(NIC,即net interface card);總線(bus)。
2、南北橋芯片
芯片有南橋和北橋兩種芯片,南橋芯片鏈接低速,北橋鏈接高速,而且數據都要會接到北橋發散。南橋芯片鏈接光驅、硬盤等;北橋芯片鏈接內存等。控制器一般位於主板上,是接口後實現功能的背後芯片。
3、硬盤
硬盤主要包括主軸、永磁鐵、磁頭三部分。磁頭可以有一列,其磁盤盤片可以有很多片,其中,磁盤兩面都能存數據。磁盤存儲可以說成磁盤磁化產生。
4、五類磁盤的接口類型
(1)、IDE:為並口,來源於ATA,傳輸速度133Mbps
IDE:主板是上有兩個接口,最多可以接4塊IDE硬盤
(2)、SCSI:為並口,服務器專用。實際的兩種為:UltraSCSI320:320Mbps / UltraSCSI640:640Mbps
SCSI:7個接口,15塊硬盤
(3)、SATA(Serral ATA):為串口。實際的三種為:SATA1、SATA2、SATA3 :6Gbps
SATA:4-6個接口,4-6塊硬盤
(4)、SAS:為串口,服務器使用,傳輸速度達到6Gbps
SAS:16384塊硬盤
(5)、USB:1.0、1.1、2.0、3.0(480Mbps)、3.1(10Gbps)
磁盤接口都采用雙通道技術,提高了傳輸速度。
5、IOPS:每秒I/O的次數
以下為五種接口的IOPS數:
IDE:機械硬盤,50的IOPS
SCSI:機械硬盤,100-200的IOPS
固態硬盤,400左右的IOPS
SATA:機械硬盤,100左右的IOPS
固態硬盤,400左右的IOPS
SAS:機械硬盤,200左右的IOPS
固態硬盤,800左右的IOPS
華為的PCI-E固態硬盤IOPS為:100000+(10萬)的IOPS
6、機械式硬盤的相關內容
機械式硬盤的基本術語如下:
平均尋道時間:磁頭從一個磁道換到另一個磁道的時間。
磁盤轉速(rpm):磁盤繞主軸旋轉的速度。現在的發動機能夠達到高達15000/s,磁盤(硬盤)是真空封裝的。
track:磁道
sector:扇區,扇區用磁道邊緣弧長來表示,每一個扇區的大小為512Bytes,現在所說的扇區實際上是平均值
cylinder:柱面,從磁道向所有盤面做投影
partition:分區,分區就是基於柱面來劃分的存儲空間
head:磁頭,每個磁盤表面都有一個磁頭
7、設備文件:/dev
設備文件是關聯到硬件設備的驅動程序和設備的訪問入口。
驅動程序一般指的是設備驅動程序(Device Driver),是一種可以使計算機和設備通信的特殊程序。相當於硬件的接口,操作系統只有通過這個接口,才能控制硬件設備的工作,假如某設備的驅動程序未能正確安裝,便不能正常工作。
從RHEL6、CentOS6開始,所有的接口類型的硬盤設備統一命名為sd[a-z]。
設備號:設備號分為主設備號和次設備號兩種。
major:主設備號,區分設備類型,用於標明設備所需要的驅動程序。
minor:次設備號,區分同種類型下的不同設備,是特定設備的訪問入口。
人識別的是計算機設備文件,計算機識別的是設備號。主設備號相同的是相同的設備。設備文件名,遵循ICANN的標準。
8、mknod命令
mknod命令:mknod - make block or character special files
mknod的格式為:mknod [OPTION]... NAME TYPE [MAJOR MINOR]
選項-m, --mode=MODE 用來指定權限
例如:# mknod mydev c 100
9、設備文件的兩種設備
(1)、塊設備:用於隨機訪問的設備,數據存儲和交換的單位是塊;
(2)、字符設備:用於線性訪問的設備,數據的交換單位一般是字符。
10、設備文件存放在/dev/下,IDE接口的命名為hd[a-d];SCSI/SATA/SAS/USB接口的命名為sd[a-z]。
從RHEL6、Centos6開始,所有的接口類型的硬盤設備統一命名為sd[a-z]
兩種設備引用方式:設備文件名、卷標(Volume Lable)
使用一個新的硬盤設備步驟為:分區、創建文件系統(格式化)、掛載分區。
二、分區
1、分區的好處
(1)、優化I/O性能:
(2)、實現磁盤空間的配額限制;
(3)、進行高速修復;
(4)、隔離系統文件和其他程序文件;
(5)、安裝多個操作系統。
2、如何分區
(1)、MBR分區
MBR分區:硬盤空間小於2TB時使用,MBR分區最常用。MBR即Master(Main) Boot Record,主引導記錄,起源於1982年。
MBR的0磁道0扇區包括512Bytes,其可以分為三部分,具體如下:
446 Bytes:boot loader, 引導加載程序, 默認為GRU Bytes
64 Bytes: partation table, 分區表,每168Bytes表明一個分區的內容,因此,一共有4個主分區。
2 Bytes:結束標記,通常為55AA
在分區表的四個分區中,前三個為主分區,第四個位擴展分區。擴展分區中可以分很多的邏輯分區,邏輯分區只有一個。擴展分區不能直接使用,必須進行二次分區。
註意:a、主分區+擴展分區,最多為4個,某分區表位的編號依次為:1、2、3、4;
b、邏輯分區的編號從5開始,不管前面的四個數字編號是否被占用。
(2)、GPT分區
GPT分區:硬盤空間大於2TB時使用。GPT即GUID Partation Table, GUID分區表,支持128個分區。
UEFI(統一擴展固件接口)的硬件可以支持GPT,啟動速度較快。
3、通常使用的分區工具
(1)、兩種分區工具
fdisk: 用於創建和管理MBR分區,對於一塊硬盤,最多只能管理15個分區。
gdisk: 即GNU disk。用於創建和管理GPT分區。
(2)、重新掛載
如果使用fdisk和gdisk命令,對於已經有分區並掛載的磁盤的剩余空間進行再次分區,分區的信息即便是保存了,也不會被內核重新讀取。如果要讓內核識別此類分區,可以有以下幾種方式:(1)、重啟計算機;(2)、partprobe命令或者partx命令,強制內核重讀分區表,使用具體如下:
Centos5/7:partprobe -a [device] 如果省略了設備名,則表示重讀所有磁盤的分區表。
Centos6/7:partx -a [device]
kpartx -af [device]
強制內核識別在開機狀態下插上的SCSI接口的磁盤命令如下:
# echo ‘---‘ > /sys/class/scsi_host/host2/scan
(3)、fdisk分區示例
fdisk命令:
(fdisk - manipulate disk partition table)
fdisk -l [device...] 查看指定磁盤的分區表,如果省略device參數,則顯示所有磁盤設備的分區表’
fdisk device: 對於指定設備進行分區管理。
fdisk子命令如下:
d delete a partition
l list known partition types
m print this menu
n add a new partition
e extended
p primary partition(1-4)
l logical
p print the partition table 交互式模式中交換分區表
q quit without saving changes
t change a partition‘s system id
w write table to disk and exit
例如:順序輸入m-e-p分區
(4)、parted命令
(parted - a partition manipulation program)
parted: parted是GNU的,是有一種高級分區工具,實時生效,最好不用。
parted [options] [device [command [options...]...]]
例子如下:
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200
parted /dev/sdb rm 1
三、創建文件系統(格式化)
文件系統包括以下三方面:FHS、權限、文件的命名規則
1、為什麽要創建文件系統?
創建文件系統實際上就是給分區進行存儲空間的邏輯編址。不創建文件系統也能存儲,只是讀出比較復雜。
以圖書的平面分類管理為例,想要搜索需要的圖書,沒有特殊整理的 話需要遍歷。如果對圖書的空間分類管理,即分門別類的分,其中可以相互嵌套,這屬於幾次有限的但是有效的管理。
2、格式化分為兩類:低級格式化和高級格式化。
低級格式化:主要是在物理層面上完成的格式化,在磁盤設備出廠時,通過低級格式化來創建磁道。主要作用就是用來劃分磁道。
高級格式化:就是在分區之後進行的,主要作用就是用來創建文件系統,為分區構建邏輯編址單元,也稱為簇或塊,但無論是簇或者塊,都是將一個或多個扇區組織在一起,共同完成數據存儲。
Windows的簇的大小:512Byte、1024Byte、2048Byte、4096Byte、8192Byte、16384Byte、32768Byte、65536Byte
Linux的塊的大小:1024Byte、2048Byte、4096Byte
註意:(1)、一個塊只能放置一個文件的內容,但是一個塊可以占用多個塊。
(2)、如果在某個分區中,將創建的大量小文件,把塊劃分的小一些;反之,塊就大些。
(3)、如果分區空間比較大,塊也應該大一些。
3、兩個功能塊
在一個分區中創建了文件系統:首先會將分區劃分為大小相等的若幹塊,分為兩個功能塊,即元數據塊和數據塊。元數據塊中的元數據為index(Index node),存放元數據的固定的存儲空間,稱為Inode。每個Inode都有對應的Inode編號。數據塊是用來存放文件中的流式數據。
元數據的文件屬性包括文件大小、文件權限、文件所有者、文件時間戳、文件塊指針。
指針分為三類:直接指針、間接指針、二級間接指針
4、特殊文件:
(1)、設備與符號鏈接文件
設備文件:block special 或 character special
設備文件是僅僅將元數據中的數據指針換成了設備號。
符號鏈接文件示例:symbolic link
符號鏈接文件僅僅是將數據塊指針換成了另一個文件的訪問路徑。
特殊文件中,這類文件只占據元數據區域,沒有數據塊占用。
(2)、bitmap位圖
bitmap位圖:用二進制來存放數據塊的使用情況,1為已經使用,0為空閑。位圖分為塊位圖和元數據位圖,即block bitmap和Inode bitmap。
(3)、分組及劃分塊
在數據塊中進行分組,產生塊組,塊組中有元數據,其元數據是塊組的元數據。
隨著磁盤空間越來越大,我們劃分的快的數量也越來越多,管理起來很不方便,所以,劃分塊組可以解決此問題,每個塊組中有獨立的元數據塊和數據塊,我們存放數據的時候,以塊組的數據塊優先選擇,如果快租內的數據塊不夠,可以通過存儲策略來對多個塊組協同存儲。
超級塊:主要定義了有多少個塊組,以及每個塊組的邊界。
日誌塊:對於數據的寫入操作做記錄的塊,防止數據不一致。數據不一致通常都是不潔關機或不潔斷電導致的。
一個完整的文件系統可以包括:超級塊、Inode、Inode bitmap、block bitmap、data block、journal block。
(4)、示例:想要查找/var/log/messages文件的內容,是怎樣的過程?
首先,查找/目錄Inode編號,從數據區域中找到對應的Inode,再讀取Inode中的數據塊指針,找到存放/目錄內容的數據塊;
然後,在數據塊中查找名稱為var的文件名,如果有,就定位其Inode編號,在到元數據區域中查找對應編號的Inode,再根據數據塊指針找到保存var目錄內容的數據塊;
再然後,在該數據塊中查找名稱為log的文件名,如果有,就定位其Inode編號,在到元數據區域中查找對應編號的Inode,再根據數據塊指針找到保存log目錄內容的數據塊;
最後,在該數據塊中查找名稱為messages的文件名,如果有,就定位其Inode編號,在到元數據區域中查找對應編號的Inode,再根據數據塊指針找到保存messages目錄內容的數據塊,就可以讀取該數據。
Linux支持的文件系統
Linux文件系統包括兩部分,分別是位於內核空間中的文件系統驅動和位於用戶空間中的文件系統管理應用程序。
位於內核空間中的文件系統驅動:是內核的一部分,可以做成內核模塊。
位於用戶空間中的文件系統管理應用程序:是一系列的管理命令。
5、Linux自己的文件系統
Linux自己的四類文件系統如下:
(1)、ext、ext2、ext3、ext4
ext4可以達到的最大分區為50TB,且該分區可以做根分區,也可以做啟動分區。
(2)、xfs
xfs是目前企業級64位文件系統,最大分區500TB,可以做根分區和啟動分區。
(3)、reiserfs
reiserfs具有良好的反刪除功能
(4)、btrfs(平衡樹文件系統)
btrfs是技術預覽版的,不是特別成熟
對於不同的發行版Linux,都有其默認的文件系統選擇,具體如下:
RHEL5、Centos5對應ext3;
RHEL6、Centos6對應ext4;
RHEL7、Centos7對應xfs。
光盤文件系統:iso9660
網絡文件系統:NFS、CIFS
集群文件系統:gfs2、ocfs2
內核級的分布式文件系統:ceph
偽文件系統:proc、sysfs、tmpfs、hugepagefs
Windows的文件系統:vfat、ntfs
Unix的文件系統:ufs、FFFS、JFS、zfs
交互分區文件系統:swap
用戶空間的分布式文件系統:mogilefs、moosefs、glusterfs
註意:
不要使用磁盤設備名稱和擴展分區設備名稱作為mkfs命令的參數,如果使用磁盤設備作為mkfs的參數,所有的分區將會被刪除,如果使用擴展分區作為mkfs的參數,所有邏輯分區都將被刪除。能夠為mkfs命令參數的設備,是主分區設備和邏輯分區設備。擴展分區不能格式化,不能格式化如sdb磁盤。
6、管理文件系統的各種工具
創建文件系統的工具:mkfs(mkfs.ext2、mkfs.ext3、mkfs.ext4、mkfs.xfs、mkfs.btrfs、……)
文件系統的檢測和修復工具:fsck(fsck.ext2、fsck.ext3、fsck.ext4、fsck.xfs、……)
文件系統屬性查看工具:dumpe2fs
文件系統的屬性調整工具:tune2fs
7、創建文件系統工具:mkfs、mke2fs、e2label、tune2fs
(1)、mkfs命令
(mkfs - build a Linux filesystem)
mkfs格式:mkfs [options] [-t type] [fs-options] device [size]
例如:mkfs -t ext2 /dev/sdb1
註意:a、不要使用磁盤設備名稱和擴展分區設備名稱作為mkfs命令的參數。如果使用磁盤設備作為mkfs的參數,所有的分區都將被刪除;如果使用擴展分區作為mkfs的參數,所有的邏輯分區都將被刪除
b、能夠作為mkfs命令參數的設備,是主分區設備和邏輯分區設備;
(2)、mke2fs命令
(mke2fs - create an ext2/ext3/ext4 filesystem)
如果只是計劃【創建ext系列文件系統】的話,可以使用mke2fs命令。
mke2fs常用選項如下:
-b block-size:在創建文件系統時,調整塊大小;
-i bytes-per-inode:指明inode與字節的比率,即:多少個字節可以建一個inode,默認值為16384;
-j:創建有日誌功能的文件系統,就是ext3
-N number-of-inodes:直接指明要給此文件系統創建的inode的數量;
-m reserved-blocks-percentage:指定為超級用戶root預留的磁盤空間的百分比;默認是5;
-t fstype:指定文件系統類型,ext2 ext3 ext4,默認是ext2
-O [^]feature[,...]:關閉或開啟文件系統的特性
-L volume-label:為文件系統指定卷標
(3)、e2label命令
(e2label - Change the label on an ext2/ext3/ext4 filesystem)
e2label格式:e2label device [ new-label ]
如果只是計劃【修改ext系列文件的卷標】,可以使用e2label命令。
註意:如果不加卷標信息,表示查看指定設備的卷標;如果添加的卷標信息,表示修改指定設備的卷標。
(4)、tune2fs命令:
tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems(調整那些在ext2,3,4文件系統上的可修改的參數)
如果想要【修改ext系列文件的屬性】,可以使用tune2fs命令
tune2fs命令常用選項如下:
-j:將ext2文件系統修改為ext3;
-m reserved-blocks-percentage:修改為超級用戶預留的磁盤空間的百分比;
-o [^]mount-options[,...]:修改文件系統的默認掛載選項;
-o下的acl Enable Posix Access Control Lists.
-r reserved-blocks-count:修改為超級用戶預留的磁盤空間的塊的數量;
-L volume-name:修改文件系統的卷標
-O [^]feature[,...]:修改文件系統的特性,將其關閉或啟用;
-l:顯示超級塊的內容 相當於dumpe2fs -h
8、文件系統的檢測修改工具
(1)、fsck工具
fsck工具及用法選項如下:
-t fstype: 指定要檢測的文件系統類型
-a: 無需交互,自動修復所有問題
-r: 交互修復問題
(2)、e2fsck工具
【ext系列文件系統有專門的檢測修復工具】
e2fsck工具及用法選項如下:
-y: 在交互過程的所有問題,都以"yes"回答
-f: 強制檢測修復,即使文件系統處於"clean狀態"
9、blkid命令
blkid - locate/print block device attributes
blkid -L label | -U uuid
blkid - command-line utility to locate/print block device attributes
blkid -L label:根據卷標進行查找
blkid -U uuid:根據UUID進行查找
10、findfs命令
(findfs - find a filesystem by label or UUID)
findfs LABEL=label
findfs UUID=uuid
例如:findfs "LABEL=mylable"
10、創建swap文件系統
前提:分區類型必須是swap類型。
修改的方法是:在fdisk交互模式中,使用t命令指定分區的類型修改為82即可。
mkswap命令:
(mkswap - set up a Linux swap area)
格式:[options] device [size]
-L LABEL:設置交互分區的卷標
-f:強制執行
四、使用文件系統(掛載)
1、掛載點
根文件系統之外的其他文件系統,如果想要被訪問,都必須通過某種方式關聯到根文件系統上,具體做法就是把其他文件系統裝載到根目錄系統中的某個目錄中,這個過程稱為“掛載”。用於關聯其他文件系統的那個目錄,稱為“掛載點”
掛載點:mount point,也是其他文件系統的訪問入口,例如:/boot
掛載點的要求:(1)、作為掛載點的目錄必須事先存在
(2)、作為掛載點的目錄應該是沒有被使用或不能被其他進程使用的目錄
(3)、作為掛載點的目錄一旦掛載文件系統,其內部原有的文件將被隱藏
2、完成掛載操作,使用mount命令
mount命令:
(mount - mount a filesystem)
mount [-fnrsvw] [-t vfstype] [-o options] device dir
常用選項:
-r:readonly,以只讀的方式掛載目標文件系統;光盤
-w:read and write,以讀寫的方式掛載目標文件系統;
-n:默認情況下,設備掛載或卸載的操作會同步更新到/etc/mtab中,如果在掛載時使用了-n選項,則表示我們要禁用此特性,即便掛載成功,也不會更新到/etc/mtab中。
-t vsftype:指明要掛載的設備上創建的文件系統類型;如果省略該選項,mount命令會通過blkid來判斷要掛載的目標設備的文件系統類型;
-L LABEL:掛載文件系統時,使用卷標代替設備名稱
-U UUID:掛載文件系統時,使用UUID代替設備名稱
-a:mount -a:按照/etc/fstab文件中填寫的設備進行自動掛載;
-o option:
sync/nosync:同步/異步操作
atime/noatime:文件或目錄被讀取訪問時,是否更新訪問時間戳;
diratime/nodiratime:目錄被讀取訪問時,是否更新訪問時間戳;
ro/rw:是以只讀/讀寫的方式掛載文件系統;
dev/nodev:在此文件系統中是否允許創建設備文件;
exec/noexec:在此文件系統中是否允許運行程序文件;
auto/noauto:是否允許使用mount -a方式掛載/etc/fstab中的文件系統;
user/nouser:是否允許普通用戶掛載此文件系統;
suid/nosuid:是否允許程序文件上的SUID和SGID特殊權限生效;
relatime/norelatime:是否參考inode訪問時間來修改其修改時間和改變時間
remount:不經卸載實現重新掛載,可以應用新的掛載選項;
acl:可以使文件系統支持facl功能;
defaults:默認選項;包括:rw, suid, dev, exec, auto, nouser, async, and relatime
loop:使用環回設備;將鏡像文件掛載到掛載點;
例如:defaults,ro,nosuid
-B, --bind:將某個目錄綁定至另一個目錄;
mount --bind|-B 源目錄 目標目錄
3、卸載文件系統:umount mount_point|device
4、查看掛載信息:df -h/-hT/-hTP
5、掛載光盤如下:
(1)、保證光盤鏡像文件放入虛擬機光驅
(2)、保證光驅處於"已連接"狀態
(3)、創建光盤掛載點,例如:mount -r /dev/sr0 mount_point
6、掛載U盤:
需要事先讓系統識別U盤設備,然後根據設備名進行掛載;例如:/dev/sdc1
7、掛載交互分區
(1)、swapon, swapoff命令
(swapon, swapoff - enable/disable devices and files for paging and swapping)
-a:自動掛載存儲於/etc/fstab文件中的交互分區設備;
(2)、df命令
選項可以為:-h -T -P,其可以合起來寫。
(3)、free命令
選項可以為:-k -m -g。
8、/etc/fstab文件的格式
/etc/fstab文件的格式共6個字段,使用空白字符分隔,分別如下:
(1)、要掛載的設備
設備文件名、LABEL、UUID、偽文件系統
(2)、掛載點
swap設備無需掛載點,只需指定swap即可。
(3)、文件系統類型
(4)、掛載選項:defaults
(5)、轉儲頻率:
使用dump命令備份分區的頻率
0:表示不備份
1:每天備份一次
2:每隔一天備份一次
(6)、自檢次序
0:不自檢
1:優先自檢,通常只設置在根文件系統上;
2:次級自檢
...
9:最低優先級自檢
Linux存儲管理及硬盤分區、格式化、掛載