--作者:飛翔的小胖豬
--創建時間:2021年3月9日
在私有雲和虛擬化環境中業務方經常會根據自己的業務情況申請磁盤用作數據存儲用。如果申請了磁盤但沒有使用的情況,將極大的造成資源的浪費。
平台管理員需要及時識別並回收該類磁盤,以節約存儲資源。文檔只針對於linux操作系統進行說明。
6.1.1 難點
部分業務單位在使用磁盤不會對磁盤進行分區格式化操作,直接使用裸磁盤進行操作。回收的難點在於如何識別裸磁盤是否在使用。類似於oralce數據庫的asm跳過文件系統直接使用磁盤。
6.1.2 步驟
具體操作主要通過如下幾個步驟實現:
-
查找到系統中未分區及格式化的磁盤。重點在於未格式化的磁盤。
-
使用iostat命令
-
使用fdisk 命令查看塊情況
-
查看二進制文件
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不存在分區,同時第一個扇區沒有原始數據,結合之前的lsblk
和blkid
命令的結果判斷/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沒有以任何形式使用。