1、存儲管理node
計算機結構裏,在CPU中,只有指令,沒有數據,那麼向內存取數據須要bus即常說的總線,全部總線彙總於North Bridge,鏈接了高速設備(顯卡,cpu)等等;South Bridge鏈接了低速設備(鍵盤,硬盤),且鏈接於 North;linux
BUS總線分三種,地址總線,控制總線,數據總線;鏈接cpu與北橋的總線充當三種總線,可是同一時刻只能有一個功能windows
直接經過主板插槽插在主板上的叫適配器(Adapter),向鍵鼠,硬盤,只能經過線纜鏈接至主辦的接口,接口在控制芯片(即controller)上.主板鏈接各個硬件設備,並起到'翻譯'的做用;centos
那麼,存儲數據的設備-磁盤就顯得尤其重要安全
存儲設備的性能評價標準:服務器
性能之一 每秒傳輸速率 bps網絡
IDE:並口,來源於ATA,133Mbpsapp
SCSI:並口運維
UltraSCSI320:320Mbps異步
UltraSCSI640:640Mbps
SATA:Serial ATA 串口 一根線直接一個設備
SAS:串口 用於服務器領域,向下兼容SAT
性能之二---IOPS:每秒IO次數
IDE:機械硬盤,50IPOS
SCSI:機械 100-200
固態 400左右
SATA:機械 100左右
固態 400
SAS: 機械 200左右
固態 800左右
PS:聽說華爲所使用的 PCI-E固態硬盤的IPOS可達100000+,也是6到不行。不過這種東西,在我的PC是萬萬用不得滴。。。
接下來講說機械硬盤,也就是計算機內部的那個圓形的金屬片:
首先,咱們瞭解幾個機械硬盤的術語:
track:磁道 非可視,因爲表面磁性材料密度極高、
sector:扇區 每個扇區的大小 512Bytes;如今所說的扇區,其實是平均值 最小的物理存儲單元
cylinder:柱面。從磁道向全部盤片作投影;
在柱面裏 作partition即分區,就是基於柱面來劃分的存儲空間
head:磁頭 每一個磁盤表面都有一個磁頭;磁頭的數量=盤面的數量
好,瞭解了這些術語,咱們回到linux系統中來,linux哲學思想之一,一切皆文件,存儲設備也不例外
設備文件:/dev
它是關聯到 硬件設備的驅動程序 和 設備的訪問入口;
其中,用命令查看到設備文件都有一段設備號:
major:主設備號,區分設備的類型用於標明設備所需的驅動程序
minor:從設備號,區分同種類型下的不一樣設備,是特定設備的訪問入口
主設備號相同,都是同一個設備。不一樣的此設備號表示,不一樣訪問入口訪問設備的不一樣位置;
設備文件名:
linux的設備命名遵循了icann頒佈的命名規則
即在/dev目錄下,IDE硬盤通常命名爲:hd[a-d];SCSI、SATA、SAS、USB:sd[a-z]\+ 例如sda,sdb等等,而從RHEL六、CentOS6開始:全部的接口類型的硬盤設備統一命名爲sd[a-z]
設備的引用方式:卷標引用Volume Lable 和 UUID引用:Universal unique identifi 128bit
注意:設備文件名隨時有可能會發生變化
那麼該如何使用一個新的硬盤設備呢?有如下三個步驟
1.分區
2.建立文件系統(也就是格式化)
3.掛載分區 使用分區
1.1爲什麼分區?有下列幾個緣由
1.優化I/O性能;
2.實現磁盤空間的配額限制
3.能夠進行高速修復
4.隔離系統文件和其餘程序文件
5.安裝多個操做系統
1.2如何分區?分區的方式有兩種,MBR和GPT方式
MBR:通常使用於硬盤空間小於2TB的硬盤上
全名叫Master(或main)Boot Record,主引導記錄,起源1982年
其中硬盤的0磁道0扇區(512B)裏:
446Bytes:boot loader,引導加載程序
64Bytes:Partition table,分區表每16Bytes代表一個分區的內容,一個保留4個分區,主分區
假設1tb的硬盤:分區成100+100+100+100,則剩下的600G是不能被識別的空間;要想充分使用硬盤空間除非100+100+100+700或者最後一個分區使用擴展分區;
在擴展分區裏的分區表,稱爲邏輯分區
注意:1.主分區+擴展分區,最多能夠有4個,其分區表位依次是:1 2 3 4
2.邏輯分區的標號從5開始:無論前面的4個數字編號是否被佔用
2Bytes:結束標記,55AA
GPT:硬盤空間大於2TB
GUID Partition Table:GUID 分區表,支持128個分區;
UEFI(統一擴展固件接口)的硬件能夠支持GPT 、Boot Legacy
1.3一般使用的分區工具:
fdisk:
用於建立和管理MBR分區,對於一塊硬盤,最多隻能管理15個分區
gdisk
專用於建立和管理GPT分區,這裏的g是GNU
parted:GNU
高級分區工具,實時生效;通常僅限於熟手
fdisk,gdisk非實時生效,安全性高;
可是可能存在這個問題,若是使用了這兩個命令對已經有分區而且掛載的磁盤的剩餘空間進行再次分區,分區的信息即使是保存了,也不會被內核從新讀取;
那麼該如何讓內核識別此類分區:
1.重啓計算機(不提倡),由於在一線運維裏不可能作到隨時開關機呀;
2.partprobe命令或者partx命令,強制內核重讀分區表;
partprobe [device]:CentOS 5/7 若是省略了設備名,表示重讀全部磁盤的分區表
partx -af [device]:CentOS 6/7
kpartx -af [device]:centos 6/7
fdisk 分區實例:
fdisk -l [device...]:
查看指定磁盤的分區表,若是省略[device]參數,默認所有
fdisk device
對於制定設備進行分區管理;進入分區操做後會發現有不少子目錄,輸入m查看這些子命令
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
創建好分區,下一步就是建立Filesystom了:
2.1爲何要建立文件系統
先舉一個例子
圖書館有一百萬冊圖書,兩種管理方式
1.平面分類管理
遍歷搜索
2.空間分類管理
分出門類,按拼音首字母,按年代,按出版社等等;
幾回有限單殺有效的查找
顯然第二種管理方式更加快捷優化,因此,建立文件系統,實際上就是給分區進行存儲空間的邏輯編址;
格式化:
低級格式化
主要在物理層面上完成格式化。即磁盤設備出廠時,經過低級格式化建立磁道;
主要做用:劃分磁道
高級格式化
分區以後進行,
主要做用:用來建立文件系統,爲分區構建邏輯編址單元,簇,塊
不管是簇仍是塊,都是將一個或者多個扇區組織在一塊兒,共同完成數據存儲
簇:512B 1024 2048 ....65536
塊:1024 2048 4096
注意:
1.一個簇/塊只能放置一個文件的內容,可是一個文件能夠佔用多個簇/塊;
2.若是在某個分區中,將建立大量的小文件,這時就要把塊劃分的小一些;反之,要把塊劃分的大一些;
3.若是分區空間比較大,那麼塊也應該大一些
在一個分區中建立了文件系統:
首先,會將分區劃分紅大小相等的若干塊;
元數據塊:
存儲文件的屬性 元數據——inode(index node)
文件的屬性包括:
大小,權限,全部者,時間戳, **數據塊指針(fat32 inode裏的指針4096塊;間接指針1024個塊;)
存放元數據的固定存儲空間,稱爲inode;每一個inode都有其對應的inode編號
數據塊
存放文件所包含的流式數據
特殊文件:
設備文件:block special 或 character special
符號連接文件:symbolic link
僅僅是將元數據中數據塊指針換成了另外一個文件的訪問路徑
這類文件只佔據元數據塊,沒有佔據數據塊;
block bitmap
隨着磁盤空間愈來愈大,劃分的塊的數量也愈來愈多,所以,管理起來就很不方便,因而 劃分塊組來解決該問題
塊組:
每一個塊組有獨立的元數據塊和數據塊 存放數據的時候以塊組內的數據塊優先選擇,若是塊組的數據塊不夠,能夠經過存儲策略來請多個塊組
協同存儲
超級塊:
主要定義了有多少個塊組,以及每一個塊組的邊界
爲了防止超級塊發生故障致使整個文件系統崩潰,對超級塊進行冗餘備份;
日誌塊:對於數據寫入操做作記錄的塊
防止數據不一致;數據的不一致一般是因爲非正常關機 斷電致使;
因此,一個完整的文件系統包括:
超級塊,inode,inode bitmap,block bitmap,data block,journal block
好比:
找/var/log/message文件的內容的過程
/目錄inode編號,從元數據區域中找到對應inode,再讀取inode裏的數據塊指針,找到存放/目錄內容的數據塊;
而後沒在數據塊中查找名稱爲var的文件名,若是有,就定位其inode編號,再到元數據區域中查找對應編號的inode,再根據數據塊指針找到
保存var目錄內容的數據塊;
此步驟重複下去直到找到message的數據塊部分讀取
2.2 linux支持的文件系統
位於內核空間中的文件系統驅動
1.內核的一部分
2.內核模塊
位於用戶空間中的文件系統管理應用程序
管理命令
linux本身的文件系統:
ext存在了一年 ext2(91-2005) ext3引入日誌系統 ext4
ext4:最大分區50TB,能夠作/分區,也能夠作啓動分區
xfs:企業級64位文件系統,最大分區500TB,能夠作根和啓動分區
reiserfs 良好的反刪除功能
btrfs(技術預覽版) Blance Tree
光盤文件系統:在linux只支持iso9660;
網絡文件系統:NFS、CIFS
集羣文件系統:gfs二、ocfs2
內核級的分佈式文件系統:ceph
僞文件系統:proc sysfs tmpfs hugepagefs
linux也支持 windows的文件系統:fat32/16———vfat,ntfs
unix的文件系統:ufs,FFS,JFS,zfs
交換分區文件系統:swap
用戶空間中的分佈式文件系統:mogilefs,moosefs,glusterfs;
衆多文件系統,linux均可以支持;
對與不一樣 的發行版的linux,都有其默認的文件系統選擇:
RHEL、CentOS:
5:ext3
6: ext4
7: xfs
2.3 文件系統的管理工具
建立文件系統:
mkfs
mkfs.ext2, mkfs.ext3,mkfs.xfs....
文件系統監測和修復工具
fsck
fsck.ext2....
文件系統屬性查看工具
dumpe2fs
文件系統屬性調整工具
tune2fs
mkfs:
mkfs - build a Linux Filesystem
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
好比 mkfs -t ext2 /dev/sdb1 -t選項指定要建立的fs類型
注意:
1.不要使用磁盤設備名稱和擴展分區設備名稱做爲mkfs的參數
若是使用了磁盤設備做爲參數,那麼全部的分區都將被刪除
若是使用了擴展分區設備做爲參數,全部的邏輯分區都將被刪除
2.可以做爲mkfs命令參數的設備,是主分區設備和邏輯分區設備
若是隻是計劃建立ext文件系統的話,可使用mke2fs的命令
mke2fs:
mke2fs - create an ext2/ext3/ext4 filesystem
【選項】
-b block—size:
-i bytes-per-inode:指明inode與字節的比率,即:多少個字節能夠建立一個inode,默認16384;
-j:建立帶有日誌功能的文件系統,即ext3
-N number-of-inodes:直接指明要給此文件系統建立inode的數量
-m reserved-blocks-percentage:指定爲超級用戶預留的磁盤空間百分比,默認5
-t fstype 指定文件系統的類型,ext2 ext3 ext4 默認ext2
-O [^]feature[,...]:關閉/開啓文件系統的特性
~]# mke2fs -t ext3 -O ^has_journal 看似是ext3的文件系統,但因爲加了-O ^has_journal,關閉了這個特性,實則是ext2
-L volume-label 指定卷標
若是隻是計劃修改ext系列文件系統的卷標,可使用e2label
e2label - Change the label on an ext2/ext3/ext4 filesystem
e2label device [ new-label ]
注意:不加捲標表示查看device的卷標
加捲標表示修改device的卷標;
若是要修改ext系列文件系統的屬性,使用tune2fs
tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems
調整那些在ext2,3,4文件系統上可修改的參數;
【選項】
-j:將ext2修改成ext3
-m reserved-blocks-percentage:
-o [^]mount-options[,...] 修改 默認掛載選項
-r reserved-blocks-count
-L volume-name
-O [^]feature[,...]
-l:顯示超級塊的內容 至關於 dumpe2fs -h
文件系統的檢測修復工具
fsck
ext系列文件系統專用的檢測修復工具
e2fsck
blkid
-L label
-U uuid
findfs
建立swap文件系統
前提:分區必須是swap類型
修改的方法:在fdisk交互模式中,用t命令將指定的分區類型修改成82便可
3.1 使用文件系統--掛載
跟文件系統以外的其餘文件系統若是想要被訪問;都必須經過某種方式關聯到根文件系統上,具體作法。即:把其餘文件系統裝載到根文件系統中的某個目錄中,這個過程稱爲「掛載」,用於關聯其餘文件系統的那個目錄,稱爲掛載點;
掛載點:mount point,也就是其餘文件系統的訪問入口 ,例如/boot
要求:
1.做爲掛載點的目錄必須事先存在;
2.做爲掛載點的目錄應該是沒有被使用或不能被其餘進程使用的目錄
3.做爲掛載點目錄,一旦掛載文件系統,其內原有的文件將被隱藏!
mount命令:
mount - mount a filesystem
mount [-fnrsvw] [-t vfstype] [-o options] device dir
【選項】
-r:只讀方式掛載目標文件系統 readonly!通常光盤就是這樣
-w:以讀寫的方式掛載目標文件系統
-n:默認狀況下,設備掛載或卸載的操做會同步更新到/etc/mtab中,若是掛在時使用了此選項,表示咱們要禁用此特性,即
掛在成功也不會更新到/etc/mtab中;
-t vfstype:指明要掛載的設備上建立的文件系統類型;若是省略該選項,mount命令會經過blkid來判斷要掛載的目標設備的文件系統類型
-L LABEL:掛載文件系統時,使用卷標代替設備名稱
-U UUID :掛載文件系統時,使用UUID代替設備名稱
-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:默認選項,包含了不少選項 Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.
loop:使用環回設備:將鏡像文件掛載到掛載點
-B,--bind:將某個目錄綁定至另外一個目錄
卸載文件系統:
很簡單,命令+掛載點 或者是 命令+設備
umount mount_point|device
總結一下,查看掛載文件系統的信息的命令或者文件
1.df -hTP
2.mount
3./proc/mounts文件
4./etc/mtab文件
掛載光盤:
1.保證光盤鏡像文件放入虛擬機光驅
2.保證光驅處於已鏈接狀態
3.建立光盤掛載點, mount -r | -o ro /dev/sr0 mount_point
掛載u盤
1.事先系統要能夠識別U盤
2.根據設備名(/dev/sdc1),直接進行掛載;
掛載交換分區:
特殊的命令:
swapon, swapoff
- enable/disable devices and files for paging and swapping
-a:自動掛載存儲於文件/etc/fstab中的交互分區設備
/etc/fstab文件的格式:
六個字段:空白字符分隔
1.要掛載的設備
設備文件名、label、uuid、僞文件系統
2.掛載點:
swap設備無需掛載點,指定swap便可
3.文件系統類型
4.掛載選項:defaults
5.轉儲頻率:
使用dump命令備份分區的頻率
0 不備份
1 天天備份一次
2 每隔一天備份一次
6.自檢次序:
0 不自檢
1. 優先自檢,一般只設置在根文件系統上
2:次級自檢
...
9