Linux

MDADM 創建額外的塊設備

  • August 13, 2019

使用mdadm創建 RAID 陣列時,我注意到一個奇怪的問題。據我所知,它創建了其他md類型的設備。根據kernel.org文件,md設備類型是 Metadisk (RAID) 設備。

元磁碟驅動程序用於跨越多個物理磁碟的文件系統。

但是,今天開始在同一台主機上發生這種情況。(我正在使用配置管理工具來創建 RAID 陣列,但是當我手動發出mdadm命令時也會發生同樣的情況。

lsblk輸出如下所示:

user@host:~$ lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
nvme0n1   259:0    0  1.7T  0 disk
└─md0       9:0    0  3.5T  0 raid0
 └─md0p2 259:2    0  1.8T  0 md
xvda      202:0    0   20G  0 disk
└─xvda1   202:1    0   20G  0 part  /
xvdf      202:80   0   20G  0 disk
nvme1n1   259:1    0  1.7T  0 disk
└─md0       9:0    0  3.5T  0 raid0
 └─md0p2 259:2    0  1.8T  0 md

有人可以闡明一下嗎?這是預期的嗎?我第一次看到這個。

主機是Ubuntu 16.04.6 LTS

澄清

為什麼創建這些:

└─md0p2 259:2    0  1.8T  0 md

當一個塊設備被添加到系統中時,核心會嘗試解析任何可能存在於該設備上的分區表,如果成功,就會為它認為存在的分區添加塊設備,因為它在分區表中讀取了內容。請注意,可以將對許多分區表類型的支持配置到核心中,因此也可以辨識來自例如 Solaris 和 BSD 的分區表。

隨機數據可能會以某種方式與核心期望的分區表相匹配,從而導致創建錯誤的分區設備。

lsblk輸出有一個“TYPE”列,但這可能正確也可能不正確;這也可能是一個盡力而為的猜測。主要設備編號可以更好地指示它是什麼類型的設備;參考/proc/devices看看哪些數字對應什麼核心驅動。這里至少md0p2主設備號與md0主設備號不同,所以不是md驅動程序創建了該設備。

將第一個塊清零有助於防止將數據誤解為分區表:

# dd if=/dev/zero of=/dev/md0 count=1

仔細檢查您正在寫入的設備!

引用自:https://unix.stackexchange.com/questions/535353