磁盤管理體系架構(gòu);
磁盤選型;
磁盤分區(qū),格式化,掛載;
磁盤swap;
磁盤分區(qū)的方案;
磁盤管理指令;
磁盤相關(guān)故障案例:磁盤空間不足;
======================================================================
磁盤分類:
機械硬盤:HDD,里邊有電機,無空氣(有的會充稀有氣體),電機帶動磁盤高速旋轉(zhuǎn),讀取數(shù)據(jù);
固態(tài)硬盤:SSD,集成電路與芯片,存儲芯片;
======================================================================
接口分類:類似于水壺的壺嘴,影響磁盤的讀寫速度;不同的類型有不同的讀寫速度,
SATA:中間被隔開了,一邊傳數(shù)據(jù),一邊接電源,短的接數(shù)據(jù),長的接電源;機械盤一般用這個接口,也有固態(tài)盤;一般家用;
SAS:機械固態(tài)盤都有,給企業(yè)環(huán)境使用;接口類似于SATA,也是一長一短,SAS中間沒有斷開,中間是連著的;
PCI-E:速度最快,固態(tài)硬盤用;這種接口一開始給網(wǎng)卡\顯卡用,后來用作硬盤;很占空間;企業(yè)級使用;
m.2 NVME:筆記本用的,固態(tài)硬盤接口;性能也比較快,也省空間;
======================================================================
固態(tài)硬盤存儲顆粒:
SLC,MLC,TLC
TLC最便宜,然后MLC,SLC,企業(yè)多用。
======================================================================
RAID:磁盤冗余陣列,管理磁盤方式.
使用raid,1)可以獲得更高的容量,2)更快的速度,更高的性能;3)更高的冗余(安全).
但上述三個特性,無法同時都滿足;
======================================================================
RAID級別:就是對這些硬盤的管理方式的選擇;
常用級別:
--------------------------------------------------------------------------------------------
0:條帶,串聯(lián),最少1塊硬盤,安全冗余:最低,可用容量:所有硬盤的和,性能:讀寫最快,使用場景:不要求安全,只要求速度;舉例:數(shù)據(jù)庫從庫存儲從庫web服務(wù)器;
--------------------------------------------------------------------------------------------
1:鏡像;只能有2塊盤;安全冗余:100%;可用容量:一半(兩塊容量之和),性能:寫入速度慢,讀取OK;使用場景:只追求安全性,對于速度沒;舉例:系統(tǒng)盤,監(jiān)控服務(wù)器;
--------------------------------------------------------------------------------------------
5:最少3塊盤,安全冗余:最多損壞1塊盤;可用容量:損失1塊硬盤的容量;性能:寫入性能不好,讀取OK;使用場景:對于速度安全,對于速度要求不高;使用場景:普通數(shù)據(jù)庫,存儲訪問量不高;
--------------------------------------------------------------------------------------------
10:最少4塊盤;安全冗余:可以損壞一半;可用容量:損失所有硬盤一半的容量;性能:讀寫很快;使用場景:對于安全和性能都要;舉例:高并發(fā)或高訪問量數(shù)據(jù)庫主庫 存儲;
======================================================================
磁盤分區(qū)
MBR,GPT;兩種方式,統(tǒng)稱磁盤引導程序;
MBR:只能支持2T以內(nèi)的硬盤;大于2T,只識別2T空間;且有主分區(qū),擴展,邏輯分區(qū);對應的命令fdisk/parted;
GPT:支持大容量的硬盤;主分區(qū)可以無限使用;一百多個主分區(qū);對應的命令:parted/gdisk;
注意:parted的命令,都是時時生效的;比較危險;
fdisk和gdisk操作類似,只是針對的盤不一樣。
---------------------------------------------------------------------------------------------------------------------------------
MBR分區(qū):每一塊硬盤上存放磁盤引導程序,引導程序在磁盤開頭部分,用于引導系統(tǒng)啟動。我們一般不用太關(guān)注,
我們安裝系統(tǒng)的時候自動安裝
位置:磁盤分區(qū)表,磁盤的開始部分:0磁頭,0磁道,1扇區(qū)(512字節(jié));
這512字節(jié)放了倆東西:
引導程序,446bytes(MBR);
磁盤分區(qū)表,64bytes;
分區(qū)結(jié)束標識2字節(jié):55AA;
分區(qū)表64字節(jié),每個分區(qū)占16字節(jié),最多4個分區(qū);
這4個分區(qū),叫主分區(qū);
擴展分區(qū)是用于解決主分區(qū)數(shù)量只能有4個的問題,擴展分區(qū)無法直接使用,需要在擴展分區(qū)下面創(chuàng)建邏輯分區(qū),邏輯分區(qū)用來存放數(shù)據(jù);
GPT分區(qū)詳解:https://blog.csdn.net/li33293884/article/details/50562527
<<大話存儲>>,有精力可以看看;
======================================================================
磁盤及分區(qū)的命名
磁盤文件或分區(qū)文件放在/dev/下面
命名方式如下
sda:SAS,STAT,SCSI;a就是第一塊硬盤;
vda:虛擬機,云;a就是第一塊硬盤;
分區(qū)命名:
? 主分區(qū)+擴展分區(qū),從1-4;
? 邏輯分區(qū)從5開始;
例:硬盤及分區(qū)命名
第2塊SATA硬盤的第1個主分區(qū) ? /dev/sdb1 ? ? ?
第3塊SAS硬盤的第2個邏輯分區(qū) ? /dev/sdc6
第5塊公有云的云盤的第3個主分區(qū) /dev/vde3
======================================================================
加硬盤分區(qū)使用操作步驟:
加一塊硬盤;
分區(qū)操作;
創(chuàng)建文件系統(tǒng)(格式化);
掛載(給設(shè)備設(shè)置一個入口,如果不掛載,設(shè)備就無法訪問使用,類似于沒門沒窗);
-----------------------------------------------------------------------------------------
看實例:先準備環(huán)境:
Vmware添加2塊硬盤,大小隨便;
查看磁盤信息:
fdisk -l | grep '/dev/sd'
案例1:創(chuàng)建20Mb的分區(qū);
//查看磁盤,進入交互式方式
# fdisk /dev/sdb //輸入命令后就可以操作磁盤了,一般就是增刪改查
p //print,輸出磁盤分區(qū)信息;
n //new,增加,創(chuàng)建分區(qū);
d //delete 刪除分區(qū)
w //保存并退出
q //quit,退出不保存
n //輸入n,會提示p或e的選擇,主分區(qū)和擴展
? p //默認就是p,可以直接回車;
? 1 //這一步讓選擇分區(qū)號,默認主分區(qū)就是1-4,選擇默認就可以;
? 起始扇區(qū) //這一步讓選擇起始扇區(qū),默認就行
? +20M //這一步讓選擇分區(qū)大小,Last 扇區(qū),可以是K,M,G,輸入這一步,就結(jié)束了;可以保存退出了;
//溫馨提示:fdisk操作的時候,按刪除鍵會出現(xiàn)無法刪除現(xiàn)象,使用 ctrl+u 或 ctrl+刪除鍵 即可刪除
# ll /dev/sdb* //查看磁盤生效沒
-----------------------------------------------------------------------------
案例2:創(chuàng)建一個分區(qū)使用硬盤所有空間
創(chuàng)建分區(qū)哪一步,輸入n后,一路回車,就是使用了磁盤所有空間;
======================================================================
要想使用磁盤,分區(qū)完還需要接著格式化,掛載后,才能使用。
格式化:? 創(chuàng)建 make 文件系統(tǒng) filesystem
mkfs 創(chuàng)建文件系統(tǒng)
mkfs 磁盤或分區(qū)
mkfs.xfs /dev/sdb1 //.,點后的xfs,文件系統(tǒng)格式,也可以寫成mkfs -t xfs
mkfs.xfs /dev/sdb //如果沒有劃分分區(qū),直接上硬盤名也行
//格式化時候,系統(tǒng)會自動創(chuàng)建inode和block
//-f,強制選項,如果格式化時候,磁盤有一個文件系統(tǒng)了,就需要加上否則無法格式化,提式你有一個文件系統(tǒng)了
mkfs.ext4
======================================================================
掛載
掛載:給設(shè)備指定入口
使用方法:mount 設(shè)備 入口
入口:掛載點,一般就是個空目錄;
mount /dev/sdb1 /mnt //這就掛載上了,臨時掛載
//檢查
df -h //查看有沒有這個磁盤的掛載信息,有就成功了
//卸載
umount 入口
umount /mnt
選項:-lf,強制卸載
------------------------------------------------------------------------------------------
永久掛載
永久掛載的話,就別用/mnt目錄了;
法1,掛載命令 mount /dev/sdb1 /data/ 寫入到/etc/rc.local,入口最好寫絕對路徑;
法2,寫入到開機自動掛載文件/etc/fstab; filesystem table文件系統(tǒng)的掛載表;
/etc/fstab每一列含義:
[root@web01 ~]# cat /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
第一列:設(shè)備名字/dev/sdb1或UUID形式,UUID就是每個設(shè)備的唯一標識號碼;
//blkid可以查看UUID;
第二列:掛載點;
第三列:文件格式,文件系統(tǒng)類型,常見的xfs/ext4;
第四列:defaults,一般都是defaults,是掛載參數(shù),掛載選項;
第五列:0,是否備份;
第六列:0,是否檢查;
本例的內(nèi)容就這樣寫:
/dev/sdb1 /data/ xfs defaults 0 0
//書寫時候注意,平時用空格分隔,總是重啟失敗,用tab鍵分隔,就可以正常重啟掛載;
掛載光盤
mount /dev/cdrom /mnt/ //掛載后會提示,只能讀,不能寫;
ls -l /mnt/Packages/*.rpm |wc -l //查看多少安裝包
---------------------------------------------------------------------------
擴展,隨后研究LVM如何實現(xiàn)動態(tài)擴展分區(qū)空間.lvm邏輯卷;
邏輯卷使用建議:
優(yōu)點:可以動態(tài)調(diào)整分區(qū)大小;
缺點:軟件實現(xiàn),效率較低;
工作中可以搭配raid+lvm使用,來提高些效率;
或者直接raid部署系統(tǒng),不使用lvm;
======================================================================
下面介紹parted命令
案例:創(chuàng)建GPT分區(qū),大小10MB
//查看
parted /dev/sda print
//進入交互模式操作:
parted /dev/sdc //這就進入磁盤了
(parted) print //查看信息
//創(chuàng)建分區(qū)表gpt格式,或者mklabel gpt一樣,注意,mbr叫做msdos類型
(parted) mktable gpt
//創(chuàng)建分區(qū)10mb
(parted) mkpart primary 0 10
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
//刪除分區(qū)
(parted) rm 1
(parted) p
//退出編輯
q或quit
======================================================================
SWAP
swap:交換分區(qū),內(nèi)存不足時,臨時充當內(nèi)存,占用的磁盤空間;
案例:服務(wù)器運行java程序,突然占用大量內(nèi)存,以至于占用swap空間了;如何解決?
第一,保證網(wǎng)站正常,增加swap空間;
第二,聯(lián)合開發(fā)一起排查導致這樣的原因;
-------------------------------------------------------------
實例演示如何創(chuàng)建添加掛載SWAP
創(chuàng)建SWAP:
1,創(chuàng)建指定大小的文件;比如1G;
2,把文件轉(zhuǎn)化為swap;
3,激活這個swap,把它加入到Linux中;
4,記得配置永久掛載;
1,創(chuàng)建指定大小的文件
dd if=/dev/zero of=/tmp/1g bs=1M count=1024
[root@web01 ~]# ll -h /tmp/1g
[root@web01 ~]# file /tmp/1g
/tmp/1g: data
2,把文件轉(zhuǎn)化為swap;類似于格式化
mkswap /tmp/1g
[root@web01 ~]# file /tmp/1g
/tmp/1g: Linux/i386 swap file (new style), version 1 (4K pages), size 262143 pages, no label, UUID=39974129-be6a-451f-99ef-1c2602130470
3,激活這個swap,把它加入到Linux中;
//查看內(nèi)存信息
//top,free -h
[root@web01 ~]# free -h
[root@web01 ~]# swapon /tmp/1g
swapon: /tmp/1g: insecure permissions 0644, 0600 suggested.
[root@web01 ~]# free -h //可以看到,激活成功并已加入Linux;
//swapoff,卸載
4,永久掛載swap;
方案一:swapon /tmp/1g 寫入到/etc/rc.local里;
方案二:寫入到/etc/fstab:/tmp/1g swap swap defaults 0 0
======================================================================
企業(yè)分區(qū)方案
公有云;
物理機/虛擬機(私有云);
--------------------------------------------------------------------
服務(wù)器存放的數(shù)據(jù),不重要:
分區(qū)方案:
/根分區(qū):所有剩余空間;
/boot/ 引導分區(qū):存放引導文件,存放系統(tǒng)內(nèi)核鏡像;推薦1G即可,用得很少,200M就夠了;
--------------------------------------------------------------------
swap:公有云可以不配置,如果是java建議配一點;大小可以根據(jù)實際內(nèi)存調(diào)整,實際內(nèi)存>8G,swap可以配8G,實際內(nèi)存<8G,可以實際內(nèi)存*1.5(2倍)配置,最大別超過8G;
--------------------------------------------------------------------
服務(wù)器存放的數(shù)據(jù),重要:
分區(qū)方案:
/根分區(qū):40G-200G(參考公有云服務(wù)器),主要安裝一些軟件,重要數(shù)據(jù)單獨存放;
/boot/ 引導分區(qū):存放引導文件,存放系統(tǒng)內(nèi)核鏡像;推薦1G即可,用得很少,200M就夠了;
swap:公有云可以不配置,如果是java建議配一點;大小可以根據(jù)實際內(nèi)存調(diào)整,實際內(nèi)存>8G,swap可以配8G,實際內(nèi)存<8G,可以實際內(nèi)存*1.5(2倍)配置,最大別超過8G;
/data/:剩余所有空間;
--------------------------------------------------------------------
不知道是否重要:
/boot/:這三塊參照上述分區(qū)方案;
swap:這三塊參照上述分區(qū)方案;
/根分區(qū):這三塊參照上述分區(qū)方案;
剩余空間不劃分:未來誰使用誰劃分;
======================================================================
磁盤空間不足故障案例
案例1:正??臻g不足;
這種情況最簡單,現(xiàn)像:df -h一看,某個磁盤分區(qū)使用率達到了100%,如何排查,如何處理?
模擬:創(chuàng)建1個大文件;
dd if=/dev/zero of=/var/log/nginx.log bs=1M count=2000
df -h //排查第1步,先整體看一下,磁盤哪里空間沒了;
du -sh //詳細查看目錄所占空間
[root@web01 ~]# du -sh / //查看根所占空間,看不了其他的;
[root@web01 ~]# du -sh /* //看根下第一級目錄所占的空間大小;
//找出一級目錄,接著找二級目錄,一層一層找,直到找到具體的大文件或目錄;
//找出目錄或文件后,確認是否可以刪除;
解決:能刪就刪,不能刪就只能加硬盤加空間了;
--------------------------------------------------------------------
案例2:inode引起的;
提示:no space left on device
先用df -h,查看磁盤空間發(fā)現(xiàn)沒有滿;可以懷疑inode引起的;
原因:磁盤空間不足,block導致,或者inode導致;
排查:df -i 來查看inode使用情況;
如果發(fā)現(xiàn)inode快用完了,找出這個分區(qū)中,大目錄(目錄本身大小大于1MB,du -sh目錄所占空間)就行;
找個目錄模擬與分析:
[root@web01 ~]# mkdir -p /mclind/test-inode
[root@web01 ~]# cd /mclind/test-inode/
[root@web01 test-inode]# ll -d /mclind/test-inode/
// ls -l 查看目錄大小表示目錄下面1層,文件名字大小
// 目錄占的磁盤空間:du -sh 查看 目錄下面所有文件block大小之和;
解決:確認是否可以刪除或處理;
模擬inode滿了;創(chuàng)建小文件磁盤,比如,100k,變成分區(qū),掛載使用;
dd if=/dev/zero of=/tmp/100k bs=1k count=100
mkfs.ext4 /tmp/100k //xfs不一定成功,磁盤太小的話,不會成功
mkdir -p /mclind/inode
mount /tmp/100k /mclind/inode
touch /mclind/inode/{1..10}
df -h
df -i
//這種情況不常見;
--------------------------------------------------------------------
案例3:文件未徹底刪除,磁盤空間不足;
前提:
條件1:刪除文件,需要權(quán)限,假如有權(quán)限,可以刪除,如果硬連接數(shù)為0,才是成功刪除,使用rm命令;
條件2:文件調(diào)用數(shù)也為0,文件是否被使用中(命令,或服務(wù)在使用);
排查:如何知道硬連接數(shù)是否為0,一般rm后通過ls,find查看,找不到就是沒了;
如何知道進程調(diào)用數(shù)是否為0, lsof,顯示系統(tǒng)調(diào)用與使用了哪些文件(list open file),需要用yum安裝lsof, lsof | grep 文件名
故障模擬:
現(xiàn)象:提示磁盤空間不足,no space ...
df -h ,查看提示磁盤滿了;
繼續(xù)排查:du -sh排查,這種查詢,統(tǒng)計總大小,可能發(fā)現(xiàn)沒有滿;
可以懷疑可能是文件未徹底刪除導致的;
模擬:dd創(chuàng)建文件
[root@web01 ~]# dd if=/dev/zero of=/var/log/nginx2.log bs=1M count=10000
tail -f /var/log/nginx2.log
rm -rf /var/log/nginx2.log
df -h
du -sh //查看發(fā)現(xiàn)空間占用并不是很大
接著就需要使用lsof
lsof | grep delete //在lsof中delete是一個標記,表示這個文件沒有入口,就是硬連接為0,但是還有進程或服務(wù)在調(diào)用它;
lsof | grep nginx
結(jié)束這個服務(wù),就自動釋放了這個文件,建議重啟服務(wù);
ps aux | grep tail
kill tail_pid
再次用df -h查看,磁盤已恢復;
======================================================================
磁盤其他補充:
文件系統(tǒng):磁盤中文件的存放組織方式.
常見文件系統(tǒng):
xfs:CentOS 7 默認的系統(tǒng);
ext4:CentOS 6/ubuntu默認的文件系統(tǒng);
ext3:CentOS 5 默認;
--------------------------------------------------------------------
磁盤性能常用指標:
吞吐量:就是讀寫速度,
iops:每秒讀寫次數(shù);
延遲:讀寫的時候操作延時;
--------------------------------------------------------------------
磁盤總結(jié):
磁盤的選型;
Raid級別;
磁盤分區(qū),格式化,掛載,永久掛載;
swap創(chuàng)建;
企業(yè)分區(qū)規(guī)則;
磁盤故障案例分析:空間故障,inode/block;
文件系統(tǒng);
磁盤性能指標;