2017-04-04 46 views
0

我正試圖編寫一個合理的手冊來自動掃描新磁盤並將其放入現有的VG並將其擴展。我如何知道Linux中的下一個設備映射器?

不幸的是,我無法弄清楚Linux如何知道下一個設備映射器(例如/ dev/sdc),以便爲我執行這個任務創建一個完美可靠的劇本。

掃描新盤在線:

echo 0 0 0 | tee /sys/class/scsi_host/host*/scan 

有人對此有什麼想法?

謝謝。

回答

1

您正在使用混淆的術語。設備映射程序是LVM使用的框架,偶爾可以使用device mapper作爲由使用設備映射程序的應用程序創建的設備的名稱。它們通常可以在/ dev/mapper中找到。

/dev/sdc(和allo other /dev/sd[a-z][a-z]?)只是塊設備。它們可以被LVM用來創建PV(物理卷),但它們不是「設備映射器」。

我們答案:

Linux使用新設備「在字母開頭下一個可用」。不幸的是,內核和用戶的「下一個可用」可能是另一回事。如果設備已被拔出(或死亡或重新掃描)並且基礎設備被標記爲仍被使用,則Linux將使用'下一個字母',因此重新插入的/dev/sdc可能顯示爲/dev/sdd,或者如果/dev/sdd忙,則/dev/sde/dev/sdja(我不確定它在哪裏結束,但是沒有這樣的東西,例如012AIAFAIK)。

如果你想識別你的設備,你可以使用udev提供的符號鏈接。它們存在於/dev/disk和反映了不同的方法來識別的設備: - 每個驅動 通過生成UUID獨特 - 在磁盤上 通過現有分區的UUID - - by-uuidby-id - 設備ID用於(通常名稱和供應商) - by-partuuid - by-path - 由它的邏輯位置。

我最後一件事情是最好的:如果您將設備插入同一個插槽,它將在/dev/disk/by-path中具有相同的名稱,無論供應商,ID,現有文件系統和其他塊設備的狀態如何。

名稱的下面舉幾個例子你可能會發現有:

  • pci-0000:00:1f.2-ata-3 - 連接到PCI特定的控制器ATA磁盤#3。
  • pci-0000:08:00.0-sas-0x50030480013afa6c-lun-0 - 具有連接到特定PCI控制器的WWN 0x50030480013afa6c的SAS驅動器。
  • pci-0000:01:00.0-scsi-0:2:1:0 - 連接到特定PCI控制器的'奇怪'scsi設備#2。在我的情況下,它是LSI的硬件RAID。

如果您真的想要處理新設備而不考慮其名稱,請查看Udev腳本,以便在新設備上作出反應。處理udev可能會非常棘手,這裏是Ceph項目中的這種腳本示例:他們通過udev規則自動處理所有具有特定分區ID的磁盤:https://github.com/ceph/ceph/tree/master/udev

0

這是怎麼回事?

- name: Find /sys/class/scsi_host hostX softlinks 
    find: 
    path: '/sys/class/scsi_host' 
    file_type: link 
    pattern: 'host*' 
    register: _scsi_hosts 

- name: Rescanning for new disks 
    command: 'echo "- - -" > {{ item }}/scan' 
    changed_when: false 
    with_items: _scsi_hosts.files.path 
相關問題