需要在 zpool 中识别磁盘......如何?

Dan*_*Dan 17 freebsd zfs freenas zpool

我需要更换 FreeNAS 上 zpool 中的坏磁盘。

zpool status 显示

gptid/5fe33556-3ff2-11e2-9437-f46d049aaeca  UNAVAIL      0     0     0  cannot open
Run Code Online (Sandbox Code Playgroud)

如何找到该磁盘的序列号?


更多的:

glabel status 给出:

                                      Name  Status  Components
                             ufs/FreeNASs3     N/A  da0s3
                             ufs/FreeNASs4     N/A  da0s4
                    ufsid/4fa405ab96518680     N/A  da0s1a
                            ufs/FreeNASs1a     N/A  da0s1a
                            ufs/FreeNASs2a     N/A  da0s2a
gptid/5f3c0517-3ff2-11e2-9437-f46d049aaeca     N/A  ada1p2
gptid/60570005-3ff2-11e2-9437-f46d049aaeca     N/A  ada3p2
gptid/60ebeaa5-3ff2-11e2-9437-f46d049aaeca     N/A  ada4p2
gptid/a767b8ef-1c95-11e2-af4c-f46d049aaeca     N/A  ada6p2
gptid/61925b86-3ff2-11e2-9437-f46d049aaeca     N/A  ada9p2
gptid/4599731b-8f15-11e1-a14c-f46d049aaeca     N/A  ada10p2
Run Code Online (Sandbox Code Playgroud)

gptid/5fe33556在那里看不到。

camcontrol devlist给出:

<Hitachi HDS723030BLE640 MX6OAAB0>  at scbus0 target 0 lun 0 (pass0,ada0)
<ST3000VX000-9YW166 CV13>          at scbus4 target 0 lun 0 (pass1,ada1)
<ST3000VX000-9YW166 CV13>          at scbus6 target 0 lun 0 (pass3,ada3)
<Hitachi HDS723030BLE640 MX6OAAB0>  at scbus7 target 0 lun 0 (pass4,ada4)
<ST3000DM001-9YN166 CC4C>          at scbus8 target 0 lun 0 (pass5,ada5)
<WDC WD30EZRX-00MMMB0 80.00A80>    at scbus8 target 1 lun 0 (pass6,ada6)
<WDC WD30EZRX-00MMMB0 80.00A80>    at scbus9 target 0 lun 0 (pass7,ada7)
<ST3000DM001-9YN166 CC4C>          at scbus9 target 1 lun 0 (pass8,ada8)
<Hitachi HDS723030BLE640 MX6OAAB0>  at scbus10 target 0 lun 0 (pass9,ada9)
<Hitachi HDS5C3030ALA630 MEAOA580>  at scbus11 target 0 lun 0 (pass10,ada10)
< USB Flash Memory 1.00>           at scbus12 target 0 lun 0 (pass11,da0)
Run Code Online (Sandbox Code Playgroud)

这是否意味着这ada2是坏磁盘?


更新:

好的,我很确定那ada2是坏磁盘。我有我的笔记,所以我知道那是哪个磁盘。

但看起来我在那里留下了一个备用 - ada0 - 上次我在盒子里。我可以远程用ada0替换ada2吗?直到有人到达办公室?

Ouk*_*uki 16

要获取磁盘序列号,需要它正在运行且可用:

  • camcontrol identify <device> |grep ^serial (这可能是 (S)ATA 特定的)
  • smartcl -i <device> |grep ^Serial
  • 从机箱中取出后读取磁盘标签

在您的情况下,我认为第三个解决方案是唯一可用的。因此,假设您只想首先识别磁盘:

首先尝试 a glabel status(因为您的驱动器未显示为DOWNREMOVED):

$ glabel status
gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da0p1
gptid/c96da0bc-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da2p1
Run Code Online (Sandbox Code Playgroud)
  1. 你可以看到你的分区 glabel status

    然后您可以轻松识别磁盘设备名称(例如:da0表示gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7分区)。

    您可以从/var/log/messages(又名“ dmesg”)查看您的系统启动日志:

    $ dmesg | grep ^da0
    da0 at mps0 bus 0 scbus0 target 0 lun 0
    da0: <ATA ST3000DM001-1CH1 CC26> Fixed Direct Access SCSI-6 device
    da0: 600.000MB/s transfers
    da0: Command Queueing enabled
    da0: 2861588MB (5860533168 512 byte sectors: 255H 63S/T 364801C)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 你看不到你的分区 glabel status

    $ camcontrol devlist
    <ATA ST3000DM001-1CH1 CC26>        at scbus0 target 0 lun 0 (pass0,da0)
    <ATA ST3000DM001-1CH1 CC26>        at scbus0 target 4 lun 0 (pass2,da2)
    
    Run Code Online (Sandbox Code Playgroud)

    从那里,您可以轻松地发现缺少哪个磁盘(在本例中为da1),然后查看dmesg以识别该磁盘。

所以,这里没有真正的解决方案。我只是希望它可以帮助您更清楚地看到事情。

了解更多


小智 -3

假设您需要基于 Linux 的系统上特定磁盘的 uuid,您可以通过以下方式获得:

ls -la /dev/disk/by-uuid/
Run Code Online (Sandbox Code Playgroud)

或通过 fs 标签:

 ls -la /dev/disk/by-label/ 
Run Code Online (Sandbox Code Playgroud)

或通过硬件连接:

ls-la /dev/disk/by-path/
Run Code Online (Sandbox Code Playgroud)

  • 这不是** Linux。`udev` 是 Linux 特定的,就像许多花哨的 `/proc` 东西一样......不幸的是在这里。 (4认同)