下面介紹的是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
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。
CD光牒檔案系統: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,以隻讀的方式挂載目标檔案系統;CD光牒
-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、挂載CD光牒如下:
(1)、保證CD光牒鏡像檔案放入虛拟機光驅
(2)、保證光驅處于"已連接配接"狀态
(3)、建立CD光牒挂載點,例如: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:最低優先級自檢
本文轉自little_ding 51CTO部落格,原文連結:http://blog.51cto.com/12496428/1922221,如需轉載請自行聯系原作者