Linux 磁碟管理

老虎死了还有狼發表於2024-09-08

1.磁碟分類

磁碟,硬碟 != 記憶體

  • HDD(hard)機械硬碟.
  • SSD(solid)固態硬碟.
  • 磁碟介面:類似於水壺的壺嘴,決定了磁碟最大速度. ⭐
硬碟選項 說明 容量轉速
機械硬碟 SATA 備份伺服器,效能要求不高場景,10k rpm 4tb 8tb 10tb 根據需要選擇(未來規劃)
機械硬碟 SAS 企業環境標配,生產環境使用,15k rpm 300G 600G 900G
固態硬碟 U2/PCI-E 訪問量大,大量讀寫操作,效能好,價格高. TB
固態硬碟 SATA/SAS 價效比高. TB

2.磁碟分割槽

主分割槽:
擴充套件分割槽:
    邏輯分割槽

2.1 瞭解-磁頭-磁軌-扇區(機械硬碟)

2.2 瞭解-固態硬碟組成

# 控制晶片(主控)
# 儲存晶片(顆粒)
  slc
  mlc
  tlc
  QLC
3d xxx

2.3 主分割槽-擴充套件分割槽-邏輯分割槽(硬碟小於2t)

  • MBR引導對應的磁碟分割槽最多有4個(主分割槽).
  • 建立擴充套件分割槽,無法直接使用。需要在擴充套件分割槽下面建立邏輯分割槽然後使用。

分割槽MBR 說明
主分割槽 直接佔用磁碟分割槽表,可以存放資料.
擴充套件分割槽 佔用主分割槽1個位置,只能有1個.一般剩餘多少空間給擴充套件分割槽多少.無法直接使用.
邏輯分割槽 先建立擴充套件分割槽,然後建立邏輯分割槽,可以存放資料.

2.4 磁碟分割槽實戰-fdisk ⭐️⭐️⭐️⭐️⭐️

2.4.1 磁碟分割槽簡介
點選檢視程式碼
[root@Kylin-V10-sp3 ~]# fdisk -l
Disk /dev/sda:100 GiB,107374182400 位元組,209715200 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x08e597e1

裝置       啟動    起點      末尾      扇區 大小 Id 型別
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM


Disk /dev/sdb:1 GiB,1073741824 位元組,2097152 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x4abfed3a

裝置       啟動  起點    末尾    扇區  大小 Id 型別
/dev/sdb1        2048 2097151 2095104 1023M 83 Linux


Disk /dev/sdc:1 GiB,1073741824 位元組,2097152 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組


Disk /dev/sdd:2.93 TiB,3221225472000 位元組,6291456000 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:gpt
磁碟識別符號:7E7322A5-9FA0-4C1E-BCFB-FC2DA454683B

裝置         起點   末尾   扇區   大小 型別
/dev/sdd1      34 390625 390592 190.7M Linux 檔案系統
/dev/sdd2  391168 585727 194560    95M Linux 檔案系統


Disk /dev/mapper/klas-root:65.11 GiB,69906464768 位元組,136536064 個扇區
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組


Disk /dev/mapper/klas-swap:2.11 GiB,2260729856 位元組,4415488 個扇區
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組


Disk /dev/mapper/klas-backup:31.79 GiB,34129051648 位元組,66658304 個扇區
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
[root@Kylin-V10-sp3 ~]# 

'''
磁碟命名:
  /dev/sd開頭 #sas,sata,scsi介面
  /dev/vd開頭 #雲伺服器 雲盤 ,虛擬化環境
  /dev/nvme卡頭 #固態硬碟 nvme
第1塊硬碟 a 一次類推
  /dev/sda
分割槽MBR分割槽中 數字形式
主分割槽或擴充套件分割槽 1-4
邏輯分割槽:從5開始.
第1個主分割槽 /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
1個主分割槽 1個擴充套件分割槽 1個邏輯
/dev/sda1 /dev/sda2 /dev/sda5
'''

2.4.2 fdisk 指令
w 儲存並退出 write
q 退出不儲存 quit
p 檢視分割槽資訊 print
n 新建分割槽 new
d 刪除 delete
2.4.3 給第2塊硬碟/dev/sdb,建立1個100mb的主分割槽,建立擴充套件分割槽(剩下所有容量),建立100M邏輯分割槽邏輯分割槽
點選檢視程式碼
[root@Kylin-V10-sp3 ~]# fdisk -l | grep sd
Disk /dev/sda:100 GiB,107374182400 位元組,209715200 個扇區
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM
Disk /dev/sdb:1 GiB,1073741824 位元組,2097152 個扇區
Disk /dev/sdc:1 GiB,1073741824 位元組,2097152 個扇區
Disk /dev/sdd:2.93 TiB,3221225472000 位元組,6291456000 個扇區
/dev/sdd1      34 390625 390592 190.7M Linux 檔案系統
/dev/sdd2  391168 585727 194560    95M Linux 檔案系統
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# fdisk /dev/sdb

歡迎使用 fdisk (util-linux 2.35.2)。
更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。


命令(輸入 m 獲取幫助):F
未分割槽的空間 /dev/sdb:1023 MiB,1072693248 個位元組,2095104 個扇區
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組

 起點    末尾    扇區  大小
 2048 2097151 2095104 1023M

命令(輸入 m 獲取幫助):p
Disk /dev/sdb:1 GiB,1073741824 位元組,2097152 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x4abfed3a

命令(輸入 m 獲取幫助):n
分割槽型別
   p   主分割槽 (0 primary, 0 extended, 4 free)
   e   擴充套件分割槽 (邏輯分割槽容器)
選擇 (預設 p):p
分割槽號 (1-4, 預設  1): p
值超出範圍。
分割槽號 (1-4, 預設  1): 
第一個扇區 (2048-2097151, 預設 2048): 
最後一個扇區,+/-sectors 或 +size{K,M,G,T,P} (2048-2097151, 預設 2097151): +100M  

建立了一個新分割槽 1,型別為“Linux”,大小為 100 MiB。


命令(輸入 m 獲取幫助):p
Disk /dev/sdb:1 GiB,1073741824 位元組,2097152 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x4abfed3a

裝置       啟動  起點   末尾   扇區  大小 Id 型別
/dev/sdb1        2048 206847 204800  100M 83 Linux

1 分割槽上的檔案系統/RAID 簽名將被擦除。

命令(輸入 m 獲取幫助):n
分割槽型別
   p   主分割槽 (1 primary, 0 extended, 3 free)
   e   擴充套件分割槽 (邏輯分割槽容器)
選擇 (預設 p):e
分割槽號 (2-4, 預設  2): 
第一個扇區 (206848-2097151, 預設 206848): 
最後一個扇區,+/-sectors 或 +size{K,M,G,T,P} (206848-2097151, 預設 2097151): 

建立了一個新分割槽 2,型別為“Extended”,大小為 923 MiB。

命令(輸入 m 獲取幫助):p
Disk /dev/sdb:1 GiB,1073741824 位元組,2097152 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x4abfed3a

裝置       啟動   起點    末尾    扇區  大小 Id 型別
/dev/sdb1         2048  206847  204800  100M 83 Linux
/dev/sdb2       206848 2097151 1890304  923M  5 擴充套件

1 分割槽上的檔案系統/RAID 簽名將被擦除。

命令(輸入 m 獲取幫助):n
所有主分割槽的空間都在使用中。
新增邏輯分割槽 5
第一個扇區 (208896-2097151, 預設 208896): 
最後一個扇區,+/-sectors 或 +size{K,M,G,T,P} (208896-2097151, 預設 2097151): +100M

建立了一個新分割槽 5,型別為“Linux”,大小為 100 MiB。

命令(輸入 m 獲取幫助):p
Disk /dev/sdb:1 GiB,1073741824 位元組,2097152 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x4abfed3a

裝置       啟動   起點    末尾    扇區  大小 Id 型別
/dev/sdb1         2048  206847  204800  100M 83 Linux
/dev/sdb2       206848 2097151 1890304  923M  5 擴充套件
/dev/sdb5       208896  413695  204800  100M 83 Linux

1 分割槽上的檔案系統/RAID 簽名將被擦除。

命令(輸入 m 獲取幫助):w
分割槽表已調整。
將呼叫 ioctl() 來重新讀分割槽表。
正在同步磁碟。

[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# df -hT
檔案系統                型別      容量  已用  可用 已用% 掛載點
devtmpfs                devtmpfs  459M     0  459M    0% /dev
tmpfs                   tmpfs     475M     0  475M    0% /dev/shm
tmpfs                   tmpfs     475M   13M  462M    3% /run
tmpfs                   tmpfs     475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root   xfs        66G  4.4G   61G    7% /
tmpfs                   tmpfs     475M     0  475M    0% /tmp
/dev/sda1               xfs      1014M  151M  864M   15% /boot
/dev/mapper/klas-backup xfs        32G  313M   32G    1% /backup
tmpfs                   tmpfs      95M     0   95M    0% /run/user/0
/dev/sdd1               xfs       186M   12M  175M    6% /resouce/data2
/dev/sdd2               xfs        90M  5.7M   85M    7% /resouce/data3
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkfs.xfs /dev/sdb5
meta-data=/dev/sdb5              isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkdir /resouce/data1
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mount /dev/sdb1 /resouce/data
[root@Kylin-V10-sp3 ~]# mount /dev/sdb5 /resouce/data2
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# touch /resouce/data/1.txt
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# touch /resouce/data1/2.txt
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# tree /resouce/
/resouce/
├── data
│   └── 1.txt
├── data1
│   └── 2.txt
├── data2
└── data3

4 directories, 2 files
[root@Kylin-V10-sp3 ~]# 

2.4.5 刪除分割槽.
點選檢視程式碼

[root@Kylin-V10-sp3 ~]# df -h
檔案系統                 容量  已用  可用 已用% 掛載點
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M   13M  462M    3% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  4.4G   61G    7% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/sdb1               1017M   40M  978M    4% /resouce/data
/dev/sdd1                186M   12M  175M    6% /resouce/data2
/dev/sdd2                 90M  5.7M   85M    7% /resouce/data3
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# umount /dev/sdb1
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# df -h
檔案系統                 容量  已用  可用 已用% 掛載點
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M   13M  462M    3% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  4.4G   61G    7% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/sdd1                186M   12M  175M    6% /resouce/data2
/dev/sdd2                 90M  5.7M   85M    7% /resouce/data3
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# fdisk  /dev/sdb

歡迎使用 fdisk (util-linux 2.35.2)。
更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。


命令(輸入 m 獲取幫助):p
Disk /dev/sdb:1 GiB,1073741824 位元組,2097152 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x4abfed3a

裝置       啟動  起點    末尾    扇區  大小 Id 型別
/dev/sdb1        2048 2097151 2095104 1023M 83 Linux

命令(輸入 m 獲取幫助):m

幫助:

  DOS (MBR)
   a   開關 可啟動 標誌
   b   編輯巢狀的 BSD 磁碟標籤
   c   開關 dos 相容性標誌

  常規
   d   刪除分割槽
   F   列出未分割槽的空閒區
   l   列出已知分割槽型別
   n   新增新分割槽
   p   列印分割槽表
   t   更改分割槽型別
   v   檢查分割槽表
   i   列印某個分割槽的相關資訊

  雜項
   m   列印此選單
   u   更改 顯示/記錄 單位
   x   更多功能(僅限專業人員)

  指令碼
   I   從 sfdisk 指令碼檔案載入磁碟佈局
   O   將磁碟佈局轉儲為 sfdisk 指令碼檔案

  儲存並退出
   w   將分割槽表寫入磁碟並退出
   q   退出而不儲存更改

  新建空磁碟標籤
   g   新建一份 GPT 分割槽表
   G   新建一份空 GPT (IRIX) 分割槽表
   o   新建一份的空 DOS 分割槽表
   s   新建一份空 Sun 分割槽表


命令(輸入 m 獲取幫助):F   
未分割槽的空間 /dev/sdb:0 B,0 個位元組,0 個扇區
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組

命令(輸入 m 獲取幫助):d
已選擇分割槽 1
分割槽 1 已刪除。

命令(輸入 m 獲取幫助):F
未分割槽的空間 /dev/sdb:1023 MiB,1072693248 個位元組,2095104 個扇區
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組

 起點    末尾    扇區  大小
 2048 2097151 2095104 1023M

命令(輸入 m 獲取幫助):w   
分割槽表已調整。
將呼叫 ioctl() 來重新讀分割槽表。
正在同步磁碟。

[root@Kylin-V10-sp3 ~]# fdisk -l | grep sd
Disk /dev/sda:100 GiB,107374182400 位元組,209715200 個扇區
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM
Disk /dev/sdb:1 GiB,1073741824 位元組,2097152 個扇區
Disk /dev/sdc:1 GiB,1073741824 位元組,2097152 個扇區
Disk /dev/sdd:2.93 TiB,3221225472000 位元組,6291456000 個扇區
/dev/sdd1      34 390625 390592 190.7M Linux 檔案系統
/dev/sdd2  391168 585727 194560    95M Linux 檔案系統
[root@Kylin-V10-sp3 ~]# 

2.5 磁碟分割槽實戰-parted或gdisk ⭐️⭐️⭐️⭐️⭐️

磁碟引導(磁碟分割槽表) 特點 對應的命令
MBR(msdos,dos) 適用於2TB以內的硬碟,有傳統的主分割槽,擴充套件分割槽,邏 輯分割槽概念. fdisk(mbr)
GPT 適用於各種大型的硬碟,尤 其是2tb以上的硬碟,主分割槽 管夠,128個. parted(mbr,gpt),gdisk(gpt)
點選檢視程式碼
# parted 可以使用tab鍵   

[root@Kylin-V10-sp3 ~]# parted /dev/sdd
GNU Parted 3.3
使用 /dev/sdd
歡迎使用 GNU Parted!輸入 'help' 來檢視命令列表。
(parted)                                                                  
(parted) help
  align-check TYPE N                       check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           列印通用求助資訊,或 COMMAND 的幫助
  mklabel,mktable LABEL-TYPE               建立新的磁碟卷標 (分割槽表)
  mkpart 分割槽型別 [檔案系統型別] 起始點 結束點 建立一個分割槽
  name 編號 名稱                           將指定“編號”的分割槽命名為“名稱”
  print [devices|free|list,all|數字]        顯示分割槽表、可用裝置、剩餘空間、所有分割槽或特殊分割槽
  quit                                     退出程式
  rescue 起始點 終止點                      挽救臨近“起始點”、“終止點”的遺失的分割槽
  resizepart NUMBER END                    改變 NUMBER 的大小
  rm NUMBER                                刪除編號為 NUMBER 的分割槽
  select 裝置                              選擇要編輯的裝置
  disk_set 旗標 狀態                       變更已選裝置上的旗標
  disk_toggle [旗標]                       切換已選裝置上的旗標狀態
  set 編號 旗標 狀態                       改變指定“編號”分割槽的旗標
  toggle [編號 [旗標]]                     切換“編號”分割槽上的“旗標”狀態
  unit 單位                                設定預設的“單位”
  version                                  顯示目前 GNU Parted 的版本與版權資訊
(parted) mktable gpt                                                      
(parted) p                                                                
型號:VMware, VMware Virtual S (scsi)
磁碟 /dev/sdd:3221GB
扇區大小 (邏輯/物理):512B/512B
分割槽表:gpt
磁碟標誌:

編號  起始點  結束點  大小  檔案系統  名稱  標誌

 
(parted) mkpart 
對齊檢查     disk_set     help         mkpart       name         quit         resize       rm           set          unit         
align-check  disk_toggle  mklabel      mktable      print        rescue       resizepart   select       toggle       version      
(parted) mkpart primary 0 200
警告: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
忽略/Ignore/放棄/Cancel? i                                                
(parted) mkpart primary 200 300
(parted) q                                                                
資訊: 你可能需要 /etc/fstab。

[root@Kylin-V10-sp3 ~]#                                                   
[root@Kylin-V10-sp3 ~]# fdisk -l | grep sd
Disk /dev/sda:100 GiB,107374182400 位元組,209715200 個扇區
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM
Disk /dev/sdb:1 GiB,1073741824 位元組,2097152 個扇區
/dev/sdb1        2048 2097151 2095104 1023M 83 Linux
Disk /dev/sdc:1 GiB,1073741824 位元組,2097152 個扇區
Disk /dev/sdd:2.93 TiB,3221225472000 位元組,6291456000 個扇區
/dev/sdd1      34 390625 390592 190.7M Linux 檔案系統
/dev/sdd2  391168 585727 194560    95M Linux 檔案系統
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# df -hT
檔案系統                型別      容量  已用  可用 已用% 掛載點
devtmpfs                devtmpfs  459M     0  459M    0% /dev
tmpfs                   tmpfs     475M     0  475M    0% /dev/shm
tmpfs                   tmpfs     475M  6.9M  468M    2% /run
tmpfs                   tmpfs     475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root   xfs        66G  4.4G   61G    7% /
tmpfs                   tmpfs     475M     0  475M    0% /tmp
/dev/sda1               xfs      1014M  151M  864M   15% /boot
/dev/mapper/klas-backup xfs        32G  313M   32G    1% /backup
tmpfs                   tmpfs      95M     0   95M    0% /run/user/0
/dev/sdb1               xfs      1017M   40M  978M    4% /resouce/data
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkfs.xfs /dev/sdd1
meta-data=/dev/sdd1              isize=512    agcount=4, agsize=12206 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=48824, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkfs.xfs /dev/sdd2
meta-data=/dev/sdd2              isize=512    agcount=4, agsize=6080 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=24320, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mkdir /resouce/data3
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# mount /dev/sdd1 /resouce/data2
[root@Kylin-V10-sp3 ~]# mount /dev/sdd2 /resouce/data3

3.新盤分割槽-格式化-掛載⭐️⭐️⭐️⭐️⭐️

3.1 拿到一塊硬碟使用流程

步驟 說明 指令
磁碟分割槽 劃分隔斷 fdisk,parted
格式化(建立檔案系統) 裝修,裝修風格 mkfs.xfs mkfs.ext4
掛載(給裝置設定入口) 安裝門窗,入住 mount

3.2 對/dev/sdc建立1個分割槽使用所有空間.

點選檢視程式碼
[root@Kylin-V10-sp3 ~]# fdisk /dev/sdc

歡迎使用 fdisk (util-linux 2.35.2)。
更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。

裝置不包含可識別的分割槽表。
建立了一個磁碟識別符號為 0x026afacf 的新 DOS 磁碟標籤。

命令(輸入 m 獲取幫助):p
Disk /dev/sdc:1 GiB,1073741824 位元組,2097152 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x026afacf

命令(輸入 m 獲取幫助):n
分割槽型別
   p   主分割槽 (0 primary, 0 extended, 4 free)
   e   擴充套件分割槽 (邏輯分割槽容器)
選擇 (預設 p):p
分割槽號 (1-4, 預設  1): 
第一個扇區 (2048-2097151, 預設 2048): 
最後一個扇區,+/-sectors 或 +size{K,M,G,T,P} (2048-2097151, 預設 2097151): 

建立了一個新分割槽 1,型別為“Linux”,大小為 1023 MiB。

命令(輸入 m 獲取幫助):p
Disk /dev/sdc:1 GiB,1073741824 位元組,2097152 個扇區
磁碟型號:VMware Virtual S
單元:扇區 / 1 * 512 = 512 位元組
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x026afacf

裝置       啟動  起點    末尾    扇區  大小 Id 型別
/dev/sdc1        2048 2097151 2095104 1023M 83 Linux

命令(輸入 m 獲取幫助):w
分割槽表已調整。
將呼叫 ioctl() 來重新讀分割槽表。
正在同步磁碟。

[root@Kylin-V10-sp3 ~]# 

3.3 建立檔案系統

# make filesystem
# mkfs 磁碟分割槽
[root@Kylin-V10-sp3 ~]# mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=65472 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=261888, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1566, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 

3.4 掛載 ⭐️⭐️⭐️⭐️⭐️

  • 掛載:給Linux裝置一個入口,我們在Linux中透過入口進入裝置.
  • 如果不掛載,裝置就相當於是個沒有視窗沒有門的監獄,無法進入與使用.
  • 掛載點:裝置的入口,目錄.
  • 比如/mnt/目錄一般用於臨時掛載.
# 掛載:mount 裝置 入口(掛載點)
# 取消掛載:
     umount 掛載點
     umount 裝置 
[root@Kylin-V10-sp3 ~]# mount /dev/sdc1 /resouce/data1
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# df -h
檔案系統                 容量  已用  可用 已用% 掛載點
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M   13M  462M    3% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  4.4G   61G    7% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/sdb5                 95M  6.0M   89M    7% /resouce/data2
/dev/sdd2                 90M  5.7M   85M    7% /resouce/data3
/dev/sdb1                 95M  6.0M   89M    7% /resouce/data
/dev/sdc1               1017M   40M  978M    4% /resouce/data1

3.5 掛載的永久生效

# 方案01: /etc/rc.local
chmod +x /etc/rc.d/rc.local
把命令mount /dev/sdb1 /data/ 寫入到/etc/rc.local即可.

# 方案02: 專業方案/etc/fstab 檔案 ⭐ ⭐ ⭐ ⭐ ⭐
# fs (filesystem) tab(table)檔案系統掛載表格
# mount /dev/sdb1 /data/改造為符合fstab檔案的格式.
# fstab實現永久掛載配置的格式:
/dev/mapper/klas-root   /                       xfs     defaults        0 0
/dev/mapper/klas-backup /backup                 xfs     defaults        0 0
UUID=0651de56-e8f8-4c0c-993b-4523c83f4e82 /boot                   xfs     defaults        0 0
/dev/mapper/klas-swap   none                    swap    defaults        0 0
/dev/sdc1               /resouce/data1          xfs     defaults        0 0
'''
第1列 裝置名字或UUID
第2列 掛載點
第3列 檔案系統型別xfs,ext4要與格式化的時候一致
第4列 掛載選項/引數 使用defaults表示預設即可.
第5列 是否進行dump匯出備份.一般關閉.
第6列 是否程序fsck磁碟檢查.一般關閉
'''

4.raid

4.1 概述

# 物理伺服器使用.
# 對硬碟進行批次,統一管理.
# raid磁碟冗餘陣列,用來管理硬碟. 使用Raid卡實現.
# 好處(無法同時滿足)
  可以擁有更高的容量.(4tb*10 = 40tb)
  可以擁有更高的效能.(讀寫效能)
  可以擁有更高的冗餘,安全(備份).

4.2 raid級別(不同的磁碟管理方式)⭐️⭐️⭐️⭐️⭐️

  • 根據我們所選擇的raid級別的不同,我們可以獲取更高容量,效能,冗餘.
  • 溫馨提示:不同廠商,raid實現,特點有些區別.

Raid級別 應用場景
Raid 0 追求效能,不要求冗餘(安全)
Raid 1 監控伺服器,備份服務,系統根分割槽
Raid 5 訪問量不高,讀寫不高,效能要求不高(寫)
Raid 10 效能高,冗餘,給重要服務

5. 磁碟故障:磁碟空間不足系列⭐️⭐️⭐️⭐️⭐️

  • 提示: no space left on device 磁碟空間不足.

5.1 常見原因

磁碟空間不足原因

  • block剩餘數量(磁碟空間),一般是一些較大檔案導致. 日常理解磁碟空間不足,linux,windows,手機.
  • inode剩餘數量不足
  • block被佔用,檔案為徹底刪除導致.

5.2 block原因,一些大檔案.

5.2.1 故障復現

故障復現

# /usr/ /var/ /etc/

cd /var/log/
for n in {1..20}
do
dd if=/dev/zero of=1g-$n bs=1M count=1024
done
5.2.2 排查流程
  1. 檢查當前系統磁碟使用情況: df -h
  2. 一步一步排查(哪個目錄或檔案)大量佔用空間 du -sh
#1.檢視整體
df -h 檢視哪個磁碟分割槽空間不足.
透過du 檢視
#2.一層一層排查
看第1層目錄
du -sh /* |sort -hrk1
du -sh /var/* |sort -rhk1
du -sh /var/log/* |sort -rhk1
#3.定位到檔案或目錄 確認後再刪除.
5.2.3 小結
遇到磁碟空間不足,會使用df命令和du命令排查.
[root@Kylin-V10-sp3 ~]# du -sh /etc/* | sort -hr | head
9.7M/etc/selinux
9.3M/etc/udev
920K/etc/pki

5.3 inode大量被佔用導致磁碟空間不足

磁碟分割槽格式化後inode總數是固定的,每建立1個檔案就要佔用1個inode.
隨著時間推移一些服務發生異常,大量生成小檔案,最終導致inode不足

5.3.1 故障復現
點選檢視程式碼
# 建立1個小的磁碟分割槽,然後掛載使用.
#1.建立分割槽(資料檔案,塊檔案)
[root@Kylin-V10-sp3 ~]# dd if=/dev/zero of=/resouce/inode/200m bs=1M count=200
記錄了200+0 的讀入
記錄了200+0 的寫出
209715200位元組(210 MB,200 MiB)已複製,0.244658 s,857 MB/s
[root@Kylin-V10-sp3 ~]#  
[root@Kylin-V10-sp3 ~]# file /resouce/inode/200m
/resouce/inode/200m: data
[root@Kylin-V10-sp3 ~]# 
#2.格式化
[root@Kylin-V10-sp3 ~]# mkfs.xfs /resouce/inode/200m
meta-data=/resouce/inode/200m    isize=512    agcount=4, agsize=12800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=51200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# file /resouce/inode/200m 
/resouce/inode/200m: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
[root@Kylin-V10-sp3 ~]# 
#3.掛載
[root@Kylin-V10-sp3 ~]# mount /resouce/inode/200m /mnt
[root@Kylin-V10-sp3 ~]# 
#4.檢查 df -h  df -i
[root@Kylin-V10-sp3 ~]# df -h
檔案系統                 容量  已用  可用 已用% 掛載點
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M  6.9M  468M    2% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  4.6G   61G    7% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/loop0               195M   12M  184M    6% /mnt
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# cd /mnt/
[root@Kylin-V10-sp3 /mnt]# 
#5.建立大量檔案  echo {1..400000} | xargs touch 
[root@Kylin-V10-sp3 /mnt]# touch {01..102400}.txt
touch: 無法建立 '102366.txt': 裝置上沒有空間
touch: 無法建立 '102367.txt': 裝置上沒有空間
touch: 無法建立 '102368.txt': 裝置上沒有空間
[root@Kylin-V10-sp3 /mnt]#
5.3.2 排查流程

思路

建立檔案提示磁碟空間不足.
透過df -h檢視發現磁碟空間還有空間,df -i檢視inode是否耗盡.
df -h 沒有滿.
df -i 不足了.
排查: find / -type d -size +1M #目錄大小(檔名)大於1M
解決:
  刪除小檔案
  cd /test/inode
  ls | xargs rm
點選檢視程式碼
[root@Kylin-V10-sp3 /mnt]# df -i
檔案系統                  Inodes 已用(I)  可用(I) 已用(I)% 掛載點
devtmpfs                  117317     529   116788       1% /dev
tmpfs                     121363       1   121362       1% /dev/shm
tmpfs                     121363     787   120576       1% /run
tmpfs                     121363      17   121346       1% /sys/fs/cgroup
/dev/mapper/klas-root   34134016  129672 34004344       1% /
tmpfs                     121363      10   121353       1% /tmp
/dev/sda1                 524288     339   523949       1% /boot
/dev/mapper/klas-backup 16664576    1171 16663405       1% /backup
tmpfs                     121363       6   121357       1% /run/user/0
/dev/loop0                102400  102368       32     100% /mnt
[root@Kylin-V10-sp3 /mnt]# 
[root@Kylin-V10-sp3 /mnt]# df -h
檔案系統                 容量  已用  可用 已用% 掛載點
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M  6.9M  468M    2% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  4.6G   61G    7% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/loop0               195M   66M  130M   34% /mnt
[root@Kylin-V10-sp3 /mnt]# 
[root@Kylin-V10-sp3 /mnt]# rm -f ./*
-bash: /usr/bin/rm: 引數列表過長
[root@Kylin-V10-sp3 /mnt]# rm -f .*
rm: 無法刪除 '.': 是一個目錄
rm: 無法刪除 '..': 是一個目錄
[root@Kylin-V10-sp3 /mnt]# rm -f *.txt
[root@Kylin-V10-sp3 /mnt]# 
[root@Kylin-V10-sp3 /mnt]# 
[root@Kylin-V10-sp3 /mnt]# ll
總用量 0
[root@Kylin-V10-sp3 /mnt]# 
[root@Kylin-V10-sp3 /mnt]# df -i
檔案系統                  Inodes 已用(I)  可用(I) 已用(I)% 掛載點
devtmpfs                  117317     529   116788       1% /dev
tmpfs                     121363       1   121362       1% /dev/shm
tmpfs                     121363     789   120574       1% /run
tmpfs                     121363      17   121346       1% /sys/fs/cgroup
/dev/mapper/klas-root   34134016  129672 34004344       1% /
tmpfs                     121363      10   121353       1% /tmp
/dev/sda1                 524288     339   523949       1% /boot
/dev/mapper/klas-backup 16664576    1171 16663405       1% /backup
tmpfs                     121363       6   121357       1% /run/user/0
/dev/loop0                102400       3   102397       1% /mnt
[root@Kylin-V10-sp3 /mnt]#
5.3.3 刪除大量小檔案方案
# 建立或刪除大量檔案就會有錯誤提示.
touch {1..500000}
-bash: /usr/bin/touch: 引數列表過長
argument list too long

# 透過管道|xargs方式實現.
| vs |xargs
| 傳遞的字串 wc -l 或grep 或sort
|xargs 後面命令的引數
命令選項 命令的不同功能-f -r
命令引數 命令處理的目標 使用者名稱,檔名字,目錄名 rm -fr lidao.txt

#建立大量小檔案的環境
cd /oldboy/test
echo {1..500000}|xargs touch
echo a{1..500000}|xargs touch
#方案01
#刪除
ls |xargs rm -f
#如果上面還是無法刪除,透過下面的方式縮小範圍.
ls a* |xargs rm -f
ls 1* |xargs rm -f
#方案02:刪除檔案所在的目錄 記錄下目錄的許可權,所有者.
5.3.4 小結
# inode有總數,建立大量小檔案佔用inode,日積月累就會導致inode數量不足.inode用光了,建立檔案提示磁碟空間不足.
# 現象:
建立檔案提示磁碟空間不足,或修改檔案.
# 排查:
df -h看看是否為block導致.
df -i檢視inode使用情況.
inode滿了,檢視哪個目錄下面有大量小檔案: find / -type d -size +10M
ll -h 檢視目錄大小find -type d 目錄大小,目錄下檔名所佔空間.

# 解決:
確定可以刪除後.
ls |xargs rm -f
ls 1* |xargs rm -f
ls a* |xargs rm -f

5.4 block佔用,檔案未被徹底刪除導致的故障

檔案被徹底刪除條件(檔案刪除原理):

    1. rm刪除,硬連結數為0.(沒有入口)
    1. 檔案沒有被任何程序佔用. 日誌.
5.4.1 故障復現
點選檢視程式碼
# 第一個視窗建立一個大檔案,並用檢視大檔案(程序一直在後臺)
[root@Kylin-V10-sp3 ~]# dd if=/dev/zero of=/var/log/big.log bs=1M count=2000
記錄了2000+0 的讀入
記錄了2000+0 的寫出
2097152000位元組(2.1 GB,2.0 GiB)已複製,3.84818 s,545 MB/s
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# tail -f /var/log/big.log 
已終止
[root@Kylin-V10-sp3 ~]# 

# 第二個視窗刪除這個大檔案(表面上看刪除成功,但儲存未釋放)
[root@Kylin-V10-sp3 ~]# rm -f /var/log/big.log 
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# lsof | grep delete | sort -rnk7 | head -5
tail      2088                          root    3r      REG              253,0 2097152000  203324588 /var/log/big.log (deleted)
sssd_be    829                          root   19r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
sssd       759                          root   16r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
polkitd    749                       polkitd    4r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
dbus-daem  735                          dbus    6r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
[root@Kylin-V10-sp3 ~]# 
5.4.2 排查流程

如何定位到是檔案未徹底刪除導致的故障?
df -h 提示磁碟空間不足,du -sh檢視沒有滿,佔用的空間與df的差異.

思路

# 精確定位到哪個檔案未徹底刪除
  yum install -y lsof # 下載lsof
  lsof |grep delete #檔案被刪除但是還正使用中.
  lsof |grep delete
# 程序命令 pid 檔案大小
# 檔名 刪除標記
[root@Kylin-V10-sp3 ~]# lsof | grep delete | sort -rnk7 | head -5
tail      2088                          root    3r      REG              253,0 2097152000  203324588 /var/log/big.log (deleted)
sssd_be    829                          root   19r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
sssd       759                          root   16r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
# 重啟程序或結束對應程序
kill pid
點選檢視程式碼
[root@Kylin-V10-sp3 ~]# df -h
檔案系統                 容量  已用  可用 已用% 掛載點
devtmpfs                 459M     0  459M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M  6.9M  468M    2% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  6.5G   59G   10% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  151M  864M   15% /boot
/dev/mapper/klas-backup   32G  313M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/loop0               195M   12M  184M    6% /mnt
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# du -h / | sort -hr  | head -5
du: 無法訪問 '/proc/2180/task/2180/fd/3': 沒有那個檔案或目錄
du: 無法訪問 '/proc/2180/task/2180/fdinfo/3': 沒有那個檔案或目錄
du: 無法訪問 '/proc/2180/fd/4': 沒有那個檔案或目錄
du: 無法訪問 '/proc/2180/fdinfo/4': 沒有那個檔案或目錄
4.2G	/
3.3G	/usr
1.3G	/usr/lib
903M	/usr/share
738M	/usr/lib/firmware
[root@Kylin-V10-sp3 ~]# du -h /usr | sort -hr  | head -5
3.3G	/usr
1.3G	/usr/lib
903M	/usr/share
738M	/usr/lib/firmware
537M	/usr/lib64
[root@Kylin-V10-sp3 ~]# lsof | grep delete | sort -rnk7 | head -5
tail      2088                          root    3r      REG              253,0 2097152000  203324588 /var/log/big.log (deleted)
sssd_be    829                          root   19r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
sssd       759                          root   16r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
polkitd    749                       polkitd    4r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
dbus-daem  735                          dbus    6r      REG              253,0   10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# lsof | head -5
COMMAND    PID  TID TASKCMD             USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
systemd      1                          root  cwd       DIR              253,0       4096        128 /
systemd      1                          root  rtd       DIR              253,0       4096        128 /
systemd      1                          root  txt       REG              253,0    1616104   67394388 /usr/lib/systemd/systemd
systemd      1                          root  mem       REG              253,0    1581928      26345 /usr/lib64/libm-2.28.so
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# kill 2088
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# lsof | grep delete | sort -rnk7 | head -5
sssd_be    829                          root   19r      REG              253,0  10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
sssd       759                          root   16r      REG              253,0  10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
polkitd    749                       polkitd    4r      REG              253,0  10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
dbus-daem  735                          dbus    6r      REG              253,0  10406312  135364755 /var/lib/sss/mc/initgroups (deleted)
sssd_nss   842                          root   17r      REG              253,0   8406312  135364753 /var/lib/sss/mc/passwd (deleted)
[root@Kylin-V10-sp3 ~]# 
5.4.3 小結
# 檔案刪除原理(條件):
  硬連結數為0(rm)
  檔案沒有程序呼叫(程序佔用為0)
# 排查:
  df -h
  du -sh 分割槽
  df -h 顯示空間不足,du -sh顯示空間充足.
  程序佔用,檔案未徹底刪除導致的磁碟空間不足.
# 解決:
lsof |grep detele查詢程序,服務,選擇大的.
重啟服務(流量低谷期).

5.5 總結

6. 磁碟分割槽方案 ⭐⭐

6.1 思路

# 系統安裝之前我們對系統磁碟分割槽的規劃.
linux常用分割槽
/ 根分割槽
/boot 分割槽 存放引導,存放核心
swap 交換分割槽(佔用磁碟空間)
/data/分割槽 存放資料
/home/ /usr/ 不推薦了.
# 未來一些場景中,我們需要提升系統效能,我們就需要關閉swap.
分割槽方案 劃分方法
通用方案-服務上沒有重要的資料 /boot/ 分割槽存放引導,核心 1-2G
swap 是記憶體的1.5-2倍最大8G.後天(k8s,資料 庫)關閉.
/ 根分割槽,剩餘所有都給根分割槽.
通用方案-服務上有重要的資料 /boot/
swap
/ 系統分割槽40G-200G
/data/ 資料分割槽剩餘多少給多少 存放資料
通用方案-不知道伺服器作用 先劃分 /boot/ swap / 剩餘空間留著.

6.2 部署centos 7/麒麟v10

# 進行手動分割槽
/boot/
swap
/
/data/

# 在/data/下面建立檔案
# 重新安裝系統重新格式化/,/boot swap 保留/data /dev/sda5,等待安裝結束.
# 手動掛載/data/測試,資料是否還在

mkdir -p /data
mount /dev/sda5 /data/
# 檢查/data/目錄下面資料是否還在.
修改/etc/fstab

7. swap配置 ⭐

swap 交換分割槽,記憶體不足臨時充當記憶體.
基於效能考慮,會考慮關閉swap,尤其是一些服務k8s,mysql.

7.1 增加swap

點選檢視程式碼
# dd 建立指定大小的檔案
# if input file從哪裡讀取檔案. /dev/zero 字元檔案,不斷輸出0.
# of output file寫入到哪裡
# bs block size 每次讀多少
# count 次數

[root@Kylin-V10-sp3 ~]# mkdir /swap
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# dd if=/dev/zero of=/swap/1g bs=1M count=1024
記錄了1024+0 的讀入
記錄了1024+0 的寫出
1073741824位元組(1.1 GB,1.0 GiB)已複製,3.36927 s,319 MB/s
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# ll -h /swap/1g 
-rw-r--r-- 1 root root 1.0G  9月  8 09:31 /swap/1g
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# file /swap/1g 
/swap/1g: data
[root@Kylin-V10-sp3 ~]# 
# 格式化(成為swap)
[root@Kylin-V10-sp3 ~]# mkswap /swap/1g 
mkswap: /swap/1g:不安全的許可權 0644,建議使用 0600。
正在設定交換空間版本 1,大小 = 1024 MiB (1073737728  個位元組)
無標籤,UUID=5aeca3cd-f7ab-44d8-ac90-815fcc3b3c8d
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# file /swap/1g 
/swap/1g: Linux swap file, 4k page size, little endian, version 1, size 262143 pages, 0 bad pages, no label, UUID=5aeca3cd-f7ab-44d8-ac90-815fcc3b3c8d
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          948Mi       213Mi        66Mi       6.0Mi       668Mi       587Mi
Swap:         2.1Gi       6.0Mi       2.1Gi
[root@Kylin-V10-sp3 ~]# 
# 掛載(swap啟動)
[root@Kylin-V10-sp3 ~]# swapon /swap/1g
swapon: /swap/1g:不安全的許可權 0644,建議使用 0600。
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# chmod 600 /swap/1g
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          948Mi       214Mi        63Mi       6.0Mi       670Mi       586Mi
Swap:         3.1Gi       6.0Mi       3.1Gi
[root@Kylin-V10-sp3 ~]# 

# 永久生效
# vim /etc/fatab 追加 /swap/1g                swap                    swap    defaults         0 0
/dev/mapper/klas-root   /                       xfs     defaults        0 0
/dev/mapper/klas-backup /backup                 xfs     defaults        0 0
UUID=0651de56-e8f8-4c0c-993b-4523c83f4e82 /boot                   xfs     defaults        0 0
/dev/mapper/klas-swap   none                    swap    defaults        0 0
/swap/1g                swap                    swap    defaults         0 0

7.2 關閉swap

# 臨時關閉所有快取
[root@Kylin-V10-sp3 ~]# swapoff -a
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          948Mi       215Mi       211Mi        12Mi       521Mi       580Mi
Swap:            0B          0B          0B

[root@Kylin-V10-sp3 ~]# 
# 開啟剛剛建立的快取
[root@Kylin-V10-sp3 ~]# swapon /swap/1g
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          948Mi       215Mi       210Mi        12Mi       521Mi       579Mi
Swap:         1.0Gi          0B       1.0Gi
[root@Kylin-V10-sp3 ~]# 
# 開啟以前就有的快取
[root@Kylin-V10-sp3 ~]# swapon /dev/mapper/klas-swap
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          948Mi       216Mi       209Mi        12Mi       521Mi       579Mi
Swap:         3.1Gi          0B       3.1Gi
[root@Kylin-V10-sp3 ~]# 


# 配置檔案永久關閉
修改/etc/fstab檔案找出包含swap的行,新增上 # 註釋掉即可.

7.3 小結

執行java服務或系統記憶體較小,可以配置swap. (oom故障 out of memory記憶體不足.)
執行特定的服務或系統記憶體充足,可以關閉swap提升系統效能.
dd,mkswap(格式化),swapon/swapoff

相關文章