1. 程式人生 > >mount: /dev/sdb already mounted or /sheepdog1 busy(multipath,wwid,uuid,udev)

mount: /dev/sdb already mounted or /sheepdog1 busy(multipath,wwid,uuid,udev)

multipath 存儲 利用 lin fuse tro channel 發現 使用

正常處理邏輯:

先umount /dev/sdb或是umount /backup
如果還是顯示的busy,你試試下面的方法
fuser -m /dev/sdb
查看一下是否sdb1正在被使用,或是有進程正在使用它
然後fuser -km /dev/sdb
強制殺掉所有使用/dev/sdb目錄的進程
最後umount /dev/sdb1或是umount /backup
再試著mount /dev/sdb1 /backup。

安裝上面的方法操作了,還是提示設備忙。

fuser -m /dev/sdb查看,發現multipathd的進程。

fdisk -l查看,原來是產生了/dev/mapper/mpathi這個多路徑,直接掛載/dev/sdb顯示設備busy

需要mount /dev/mapper/mpathi /destination,如果直接掛載/dev/sdb會顯示設備busy

註:

/dev/mapper/mpathb不一定對應/dev/sdb。

使用multipath -l可以查看,多路徑與設備的對應關系。

[root@cloud1 ~]# multipath -l
mpathi (36c81f66000c60a7c000001d153d906eb) dm-1 DELL,MD36xxf
size=500G features=‘0‘ hwhandler=‘0‘ wp=rw
|-+- policy=‘round-robin 0‘ prio=0 status=active
| `- 0:0:0:1 sdi 8:128 active undef running
|-+- policy=‘round-robin 0‘ prio=0 status=enabled
| `- 0:0:1:1 sdk

8:160 active undef running
|-+- policy=‘round-robin 0‘ prio=0 status=enabled
| `- 1:0:0:1 sdm 8:192 active undef running
`-+- policy=‘round-robin 0‘ prio=0 status=enabled
`- 1:0:1:1 sdo 8:224 active undef running
mpathh (36c81f66000c60ac9000001f853d61638) dm-0 DELL,MD36xxf
size=2.0T features=‘0‘ hwhandler=‘0‘ wp=rw
|-+- policy=‘round-robin 0‘ prio=0 status=active
| `- 0:0:0:0 sdh
8:112 active undef running
|-+- policy=‘round-robin 0‘ prio=0 status=enabled
| `- 0:0:1:0 sdj 8:144 active undef running
|-+- policy=‘round-robin 0‘ prio=0 status=enabled
| `- 1:0:0:0 sdl 8:176 active undef running
`-+- policy=‘round-robin 0‘ prio=0 status=enabled
`- 1:0:1:0 sdn 8:208 active undef running

另外,本地磁盤不需要多路徑,可以在/etc/multipath.conf,利用blacklist關鍵字進行設置。

blacklist {
wwid 36c81f660e05108001a9dee3a07f4647b
wwid 36c81f660e05108001a9dee430880eb15
wwid 36c81f660e05108001a9dee4b08f11a43
wwid 36c81f660e05108001a9dee2406a6866e
wwid 36c81f660e05108001a9dee5209606e95
wwid 36c81f660e05108001a9dee2f07422a0f
}

另外,multipath -F(清楚unsed path)

How to identity unsed path:

If the dev does not mount,it‘s unused path.

multiple -F will erase all paths.

Create multiple path:

Use command

Shell#multipath

操作系統通過路徑發送IO到存儲,Linux系統SCSI磁盤路徑有以下部分組成:
·HBA卡的PCI標示符
·HBA卡的管道號
·存儲端SCSI target地址
·LUN(Logical Unit Number) 號
根據SCSI標準,每個SCSI磁盤都有一個WWID。類似於網卡的MAC地址,要求是獨一無二。

About WWID

通過WWID標示SCSI磁盤就可以保證磁盤路徑永久不變,Linux系統上/dev/disk/by-id目錄包含每個SCSI磁盤WWID訪問路徑

實例:scsi-3600508b400105e210000900000490000 -> ../../sda

sda的wwid就是3600508b400105e210000900000490000
提示:Linux自帶的device-mapper-multipath工具就是通過WWID來探測SCSI磁盤路徑,可以將同一設備多條路徑合並,並在/dev/mapper/下面創建新的設備路徑。通過multipath –l可以看到WWID與 磁盤路徑、Host:Channel:Target:Lun與/dev/sd以及major:minor對應關系。

About UUID
UUID是有文件系統在創建時候生成的,用來標記文件系統,類似WWID一樣也是獨一無二的
。因此使用UUID來標示SCSI磁盤,也能保證路徑是永久不變的。

Method:Linux上/dev/disk/by-uuid可以看到每個已經創建文件系統的磁盤設備以及與/dev/sd之間的映射關鍵。
註意:Linux自帶的md和LVM工具也會在SCSI磁盤上面寫入UUID信息。

About UDEV
UDEV是Linux提供的一種讓用戶對設備進行自定義命名的機制。可以通過UDEV將WWID/UUID信息跟磁盤路徑映射起來,這樣也可以保證設備路徑永久不變。

mount: /dev/sdb already mounted or /sheepdog1 busy(multipath,wwid,uuid,udev)