linux下確認裸盤是否使用-漸入佳境


--作者:飛翔的小胖豬

--創建時間:2021年3月9日

6.1 概述

在私有雲和虛擬化環境中業務方經常會根據自己的業務情況申請磁盤用作數據存儲用。如果申請了磁盤但沒有使用的情況,將極大的造成資源的浪費。

平台管理員需要及時識別並回收該類磁盤,以節約存儲資源。文檔只針對於linux操作系統進行說明。

6.1.1 難點

部分業務單位在使用磁盤不會對磁盤進行分區格式化操作,直接使用裸磁盤進行操作。回收的難點在於如何識別裸磁盤是否在使用。類似於oralce數據庫的asm跳過文件系統直接使用磁盤。

6.1.2 步驟

具體操作主要通過如下幾個步驟實現:

  1. 查找到系統中未分區及格式化的磁盤。重點在於未格式化的磁盤。

  2. 使用iostat命令

  3. 使用fdisk 命令查看塊情況

  4. 查看二進制文件

6.1.3 環境說明

操作系統:CentOS Linux release 8.1.1911 (Core)

磁盤規划:

磁盤大小 磁盤名 描述
5G /dev/sdb 未分區,已經格式化。
10G /dev/sdc 未分區,未格式化,有數據。
15G /dev/sdd 未分區,未格式化,沒有數據

6.2 具體操作

6.2.1 區分未分區磁盤

1.登錄到操作系統中使用lsblk命令查看當前系統中的磁盤信息。

[root@136-b ~]# lsblk 
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   60G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   59G  0 part 
  ├─cl-root 253:0    0   37G  0 lvm  /
  ├─cl-swap 253:1    0    4G  0 lvm  [SWAP]
  └─cl-home 253:2    0 18.1G  0 lvm  /home
sdb           8:16   0    5G  0 disk 
sdc           8:32   0   10G  0 disk 
sdd           8:48   0   15G  0 disk 

結論:此處的sdb、sdc、sdd三張磁盤沒有分區,同時磁盤后沒有跟掛載點。說明這三張盤沒有掛載,但不確定是否使用。

2.使用blkid命令查看格式化情況。

[root@136-b ~]# blkid 
/dev/sdb: UUID="e2673e77-6362-475f-9b7c-68f00d965d0b" TYPE="ext4"
/dev/sda1: UUID="ed221b0b-feb7-4c6d-86e6-397ee5a56a26" TYPE="ext4" PARTUUID="471c2506-01"
/dev/sda2: UUID="wepdLR-HPdh-rGbf-6Ad5-3uYY-C0DE-Jnj8yR" TYPE="LVM2_member" PARTUUID="471c2506-02"
/dev/sr0: UUID="2020-01-03-21-42-40-00" LABEL="CentOS-8-1-1911-x86_64-dvd" TYPE="iso9660" PTUUID="087a73cc" PTTYPE="dos"
/dev/mapper/cl-root: UUID="4686504e-2cbe-4eef-bd10-35462d76aecf" TYPE="xfs"
/dev/mapper/cl-swap: UUID="333af461-2d09-4c67-aabe-ea169069f158" TYPE="swap"
/dev/mapper/cl-home: UUID="2bf76b9d-f87e-4d0f-afa9-c3054bce43bb" TYPE="xfs"

結論:通過blkid命令得知sdb、sdc、sdd三張盤中只有/dev/sdb進行了分區。/dev/sdc、/dev/sdd磁盤沒有進行分區。

通過lsblk和blkid兩個命令得知磁盤/dev/sdb進行了分區,同時沒有進行掛載此時可以確定/dev/sdb沒有使用。可以對/dev/sdb磁盤進行回收。在回收前可以新建一個目錄臨時掛載確認該磁盤是否有數據,如果有數據則聯系業務方詢問情況,按回復進行操作。

6.2.2 查看磁盤是否有流量

使用iostat -dxc 1命令實時展示當前磁盤流量,至少觀察2分鍾以上。第一行可以不用管第一行是每個磁盤至開機以來的均值。

[root@136-b ~]# iostat -dxc  1 | egrep  '^sd[b-d]'
sdb    0.21    0.10   5.11     45.82     0.00    11.36   0.00  99.13    0.13    0.52   0.00    24.27   458.23   0.20   0.01
sdc    0.14    0.00   3.67      0.00     0.00     0.00   0.00   0.00    0.03    0.00   0.00    26.78     0.00   0.13   0.00
sdd    0.14    0.00   3.67      0.00     0.00     0.00   0.00   0.00    0.04    0.00   0.00    26.78     0.00   0.13   0.00

sdb    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdc    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdd    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

sdb    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdc    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdd    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

sdb    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdc    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdd    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

sdb    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdc    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdd    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

sdb    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdc    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdd    0.00    0.00   0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

結論:此處可以看到sdb sdc sdd 三張磁盤的實時流量均為0。運維人員可以多觀察一段時間,以保證當前非業務閑時。如果多次長時間確認均未有數據則表示磁盤沒有數據讀寫,初步判斷磁盤未作為裸磁盤使用。

6.2.3 查看磁盤塊情況

使用fdisk命令查看磁盤的是否有數據。使用fdisk 磁盤路徑命令操作磁盤。在Command (m for help): 處輸入x,然后在Expert command (m for help):處先輸入p查看磁盤分區情況。然后使用d從設備中打印第一個扇區的原始數據。

fdisk 命令的 x 模式比較高危,謹慎使用。

/dev/sdc

[root@136-b ~]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.32.1).
.................
Created a new DOS disklabel with disk identifier 0x3dffbe5c.

Command (m for help): x

Expert command (m for help): p
Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3dffbe5c

Expert command (m for help): d

First sector: offset = 0, size = 512 bytes.
00000000  74 65 73 74 31 31 31 31  31 31 31 31 31 0a 00 00
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

結論:/dev/sdc不存在分區,同時第一個扇區存在原始數據,判斷/dev/sdc存在數據。/dev/sdc可能還在使用,此時需要和業務方溝通確認具體情況。

 

/dev/sdd

[root@136-b ~]# fdisk /dev/sdd
Welcome to fdisk (util-linux 2.32.1).
...................
Created a new DOS disklabel with disk identifier 0x2a454cf2.

Command (m for help): x

Expert command (m for help): p
Disk /dev/sdd: 15 GiB, 16106127360 bytes, 31457280 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2a454cf2

Expert command (m for help): d

First sector: offset = 0, size = 512 bytes.
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

結論:/dev/sdd不存在分區,同時第一個扇區沒有原始數據,結合之前的lsblkblkid命令的結果判斷/dev/sdd沒有數據。

6.2.4 導出磁盤二進制文件

使用xxd命令以二進制文件查看磁盤文件,一般查看1000行就行了。我們只對/dev/sdc和/dev/sdd說明。

最終命令:

xxd /dev/設備名 | head -n 200000 |awk -F":" '{print $2}'| uniq

查看指定設備的前n行是否有不一樣的數據,如果一張磁盤未使用,那么所有位置均為00 00 。如果該命令只輸出了一條記錄0000000000這種的那么可以判定該盤沒有數據。

謹慎起見可以適當增加-n 后的數字,此處的200000表示前200000行。用戶可根據自己實際環境調整。

 

命令:xxd /dev/設備名 | head -n 1000 | more

/dev/sdc

[root@136-b ~]# xxd /dev/sdc | head -n 1000 | more
00000000: 7465 7374 3131 3131 3131 3131 310a 0000  test111111111...
00000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
................

結論:/dev/sdc存在數據,但是數據不多,/dev/sdc直接作為裸盤使用。

 

/dev/sdd

[root@136-b ~]# xxd /dev/sdd | head -n 1000 | more
00000000: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
................

結論:/dev/sdd不存在任何數據,所有元數據都是0000,/dev/sdd沒有以任何形式使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM