k8s自動化運維十-磁碟掛載

語言: CN / TW / HK

承接上文k8s自動化運維九

列出磁碟分割槽

fdisk -l

物理分割槽只分了一個/dev/sda,

在安裝虛擬機器的時候並沒有給它進行物理分割槽,在裝linux作業系統的時候,自動劃分了2個區域,這兩個區域區域代表邏輯分割槽。

sd,hd表示硬碟, a表示第一塊盤, 1表示硬碟上的第一個分割槽,sda1是引導分割槽,sda2是真正儲存檔案(包括系統檔案、使用者檔案等)的分割槽。

/dev/mapper/centos-root 這個指根目錄下有18.2GB,都在sda2中。

/dev/mapper/centos-swap 這個是指交換分割槽大小是2GB。

檢視磁碟空間

  • df

單獨用df,沒有格式輸出,以KB為單位

  • df -h

/dev/sda1是引導分割槽,/dev/mapper/centos-root是/dev/sda2分割槽,真正儲存檔案的分割槽。

tmpfs 儲存一些系統檔案,一般用來做交換分割槽。

引導分割槽使用了15%,說明磁碟的使用情況是非常健康的。

一般看/dev/mapper/centos-root、/dev/sda1 這兩個分割槽就行了,如果這兩個分割槽沒有達到80%以上,都不要緊的。

檢視目錄下所有檔案大小

du -ah /tmp/

  • a表示這個目錄下的所有檔案,包含子檔案和目錄

  • h表示格式化輸出 就是帶上單位KB,沒有h則只有數字,沒有K,這裡只有KB單位,沒有MB、GB

檢視目錄下所有檔案大小及彙總

du -ac /tmp/

多了一個彙總total,加個h多了一個K

顯示檔案大小

du -sh /etc/yum

  • s 表示彙總

  • h 表示格式輸出

去掉s,計算目錄中的每個檔案的大小

顯示目錄下所有檔案總計

du -sh /etc

帶上s ,把整個etc目錄做個彙總,計算大小,節省了系統運算的時間。

監控磁碟I/O狀況iotop

  • -n 指定統計次數

    iotop -n 5

  • -u 指定程序使用者

    iotop -u root

    全是跟root相關的程序

  • -o 顯示正在進行I/O活動的程序,可以減少輸出的干擾

    iotop -o

    只顯示活動的程序

  • 檢視服務的程序號

    netstat -antlp

1119是sshd服務的程序號,1990是終端服務連線到了虛擬機器192.168.168.156的22埠即sshd程序,本機電腦通過閘道器192.168.168.1與虛擬機器進行交換資料。

-p 指定程序號,監視指定程序,只輸出該程序的統計資訊

iotop -p 1990

只檢視這個ssh與io互動的狀況。

iotop監控磁碟io情況,輸出資訊說明

程序肯定和io打交道,io的寫入和讀取

這是每個程序所佔磁碟的讀取速率,把所有跟io相關的程序都列出來了,

  • Total DISK READ 讀取速率總計

    讀磁碟彙總,每秒0個位元組,說明這個磁碟沒有執行緒讀

  • Total DISK WRITE 寫入速率總計

  • Actual DISK READ 實際讀取磁碟速率

  • Actual DISK WRITE 實際寫入磁碟速率

  • TID 執行緒,按p可切換PID,不管執行緒還是程序,id都一樣

  • PRIO 優先順序

  • USER 執行程序的使用者

  • DISK READ 磁碟速度速率

  • DISK WRITE 磁碟寫入速率

  • SWAPIN swap交換百分比

    swap磁碟跟cpu交換的百分比,百分比越大,說明佔有的這個磁碟io互動延遲就越大,延遲越大,說明這個磁碟io負載壓力較大,百分比越小,磁碟越沒有壓力。

  • IO> IO等待所佔百分比

    io等待所佔的百分比,值越小,說明磁碟io空閒比較大,磁碟越沒有壓力,百分比越大,說明等待延遲就越長,io負載壓力就越大。

  • COMMAND 執行緒/程序詳細資訊

    表示每個程序都在幹什麼,執行的什麼命令

SWAPIN和IO>這兩個引數要重點關注下,哪個程序把磁碟IO的負載拉的很高,就把哪個程序殺掉。

檢視磁碟io的負載

  • 系統檢測工具安裝

    yum install -y sysstat iotop lsof

  • iostat -xk 1 3

    iostat依賴sysstat,1表示間隔時間是1秒,3表示輸出3次,xk表示檢視io的整個負載,

每隔1秒輸出一次,共輸出3次,基本把io所有基本資訊都輸出出來了。avg-cpu表示cpu的平均速率,cpu的負載,%idle越大,表示空閒率越高,98.99%說明基本沒什麼負載,

  • Device 磁碟分割槽名稱,裝置的名稱,

    sda0,sda1是連線到計算機硬碟驅動器(sda(表示第1塊SCSI硬碟,是物理分割槽))的邏輯分割槽;dm-0& dm-1是在安裝或配置計算機時建立的邏輯(卷)分割槽;scd0表示第1個USB光碟機;fd0是交換分割槽

  • rrqm/s 每秒進行讀運算元目,每秒讀取多少個數據塊

  • wrqm/s 每秒進行寫運算元目

  • r/s 每秒完成的讀I/O裝置次數

  • w/s 每秒完成的寫I/O裝置次數

  • rkB/s 每秒讀K位元組數

  • wkB/s 每秒寫K位元組數

  • avgrq-sz 平均每次裝置I/O操作的資料大小

  • avgqu-sz 平均I/O佇列長度,如果佇列長度長了,說明佇列已經很擁堵了,io處理不過來了,負載就越高

  • await 平均每次裝置I/O操作的等待時間(毫秒),等待時間越短,說明速度越快

  • r_await 每個讀操作平均所需的時間

  • w_await 每個寫操作平均所需的時間

  • svctm 平均每次裝置I/O操作的服務時間(毫秒)

  • %util 一秒中有百分之多少的時間用於I/O操作即IO消耗cpu的百分比,這個值越大,說明被IO消耗的時間比例就越大,IO負載就會越高,只看這一列就可以知道IO負載高不高了。

Linux的硬碟識別

2.6 kernel以後,linux會將識別到的硬體裝置,在/dev/下建立相應的裝置檔案.如:

sda 表示第1塊SCSI硬碟

hda 表示第1塊IDE硬碟(即連線在第1個IDE介面的Master口上)

scd0 表示第1個USB光碟機.

當添加了新硬碟後,在/dev目錄下會有相應的裝置檔案產生。cciss的硬碟是個例外,它的

裝置檔案在/dev/cciss/目錄下。一般使用”fdisk -l”命令可以列出系統中當前連線的硬碟。

新硬碟沒有分割槽資訊,則只顯示硬碟大小資訊。

  • 怎樣給linux作業系統增加磁碟

    首先要掛載物理磁碟,先把虛擬機器關機,關了虛擬機器,再來掛載物理磁碟,

把這個虛擬機器關了,這個虛擬機器當前的磁碟空間是20G。

如果是物理機的話,機房人員直接插入一個磁碟就可以了,那怎麼給虛擬機器新增磁碟呢?

點選硬碟,

新增磁碟,

點選磁碟,

選擇SCSI,

使用新的虛擬磁碟,

設定增加的磁碟空間,選擇將虛擬磁碟拆分成多個檔案,

設定虛擬機器磁碟檔案,

新增好之後,這樣就會多了一個新硬碟,相當於機房人員在伺服器上插入了一個新的硬碟,

選擇10G的這個新硬碟,點選新增、確定,然後開啟虛擬機器,

在虛擬機器啟動的時候,會自動將這個新硬碟掛載到linux作業系統中,但還不能在linux作業系統中寫入檔案,還需要進行磁碟掛載、分割槽、格式化。

磁碟掛載、分割槽、格式化

  • 檢視分割槽資訊

    fdisk -l

  • 建立一個分割槽

    fdisk -u /dev/sdb

  • 檢視磁碟掛載情況

多了10個GB的一個分割槽sdb,sda是之前裝系統的時候掛載的一個磁碟,sdb是新掛載的,但是並沒有進行分割槽。sda裡面有2個邏輯分割槽,sda1,sda2,sdb還沒有進行分割槽,那麼sdb是不能使用的

  • 建立分割槽

    fdisk -u /dev/sdb

    (這裡千萬不能打錯,別打成sda了,那麼就會把sda磁碟上的資料格式化了,那就芭比Q了,一定要對沒有分割槽的磁碟進行分割槽,已經分割槽過的,千萬不能再分割槽了,別把資料弄丟失了)

p是列印分割槽表,

確認下這個分割槽的磁碟有沒有選擇錯誤,這個磁碟一定一定是沒有分過區的。

n是增加一個新的分割槽,

預設選擇主分割槽,另外一個是擴充套件分割槽,先分主分割槽。

分4個區,預設是從第一個開始,相當於輸入分割槽的區號1。

預設是從哪個分割槽開始,分割槽是一個扇區,預設值從2048開始分,(磁碟是有軌道的,從多少到多少,一個扇區一個扇區來分)。

然後是分幾個區,把2049到20971519這個扇區全部給主分割槽呢,還是分兩次,還是等下再分個邏輯分割槽呢,這裡把這個扇區分成一個主分割槽,10個G的磁碟分成了一個區,也沒有再對這個主分割槽再分邏輯分割槽。

將這個成功的分割槽寫入分割槽列表,此時分割槽就結束了。

可以看到,多了一個邏輯分割槽。剛才只給它分了一個主分割槽,並沒有再分其他的擴充套件分割槽,所以它的邏輯分割槽就只有一個。

檢視分割槽資訊

lsblk /dev/sdb

物理分割槽sdb,邏輯分割槽sdb1,把10個G都給了這個主的邏輯分割槽

再進行格式化

相當於在windows上格式化磁碟一樣的,

windows上分了3個區,

這裡分了一個區,分割槽完了,肯定要格式化,

常用的windows系統有三種模式 FAT16、FAT32、NTFS,還有一種模式是 exFAT 效能介於 FAT32和NTFS之間,但只有U盤可以使用;linux主流的是ext4,之前是ext3。

mkfs.ext4 /dev/sdb1

這個命令專門為格式化磁碟且格式為ext4用的,後面帶的是/dev/sdb1這個邏輯分割槽名稱,不是物理分割槽,敲成sda就芭比Q了,

格式化完了,才能真正的把磁碟掛載進行使用,才能給linux這個作業系統進行檔案寫入、讀取資料。

首先建立一個掛載目錄,檢視掛載這個磁碟的uuid,每個磁碟,不管是物理磁碟,還是邏輯磁碟,還是虛擬磁碟,都有一個uuid,是唯一標識,就像網絡卡的uui的一樣,是網絡卡的唯一標識。

mkdir -pv /newdata

# 這裡專門存的是掛載硬碟的id
ls -l /dev/disk/by-uuid

找到sdb1,這個uuid一定一定不要複製錯了,把uuid寫入分割槽列表,格式是ext4,

vim /etc/fstab

這是之前已經掛載好的,檢視的分割槽列表資料也是來源於這裡。

根分割槽的掛載是用裝置名稱來掛載的。

這裡展示了三種掛載方式,第一個是使用裝置名稱掛載,第二個是使用uuid掛載,第三個是交換分割槽,它是一個虛擬機器分割槽,沒有目錄,這裡是記憶體和硬碟的讀取分割槽,讀取速率要大於硬碟,小於記憶體,記憶體比硬碟至少要快幾十倍。

加入進去,重啟reboot,

檢視整個磁碟的使用情況

多了sdb1,此時佔了1%,因為它有些系統掛載檔案,不要去刪它,不用管它。

這個時候磁碟就可以了。

虛擬機器和真實的伺服器,包括雲伺服器操作是一樣的,只不是雲伺服器是雲廠商幫你掛載一個硬碟,你再去買個硬碟,加個硬碟,加完以後,再重啟,再掛載再重啟。

而物理機,雲自建中心,私有云,由值班人員,加個物理硬碟,加完之後,你在linux作業系統裡面,進行掛載,進行分割槽,進行格式化。