这是一台 FreeBSD 9.1 amd64 计算机。它安装了 5 个磁盘。ada0 和 ada1 磁盘与 hw raid 一起使用来提供根文件系统:
root@gw:/home/gandalf # ls /dev | grep ada
ada0
ada1
ada2
ada3
ada4
root@gw:/home/gandalf # zpool status
pool: zroot
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
raid/r0s1a ONLINE 0 0 0
errors: No known data errors
我想为剩余的磁盘创建一个 raidz 池:
root@gw:/home/gandalf # zpool create -f data raidz1 ada2 ada3 ada4
cannot create 'data': one or more devices is currently unavailable
root@gw:/home/gandalf # dmesg | grep ada2
ada2 at ata4 bus 0 scbus6 target 0 lun 0
ada2: <WDC WD20EARS-00MVWB0 51.0AB51> ATA-8 SATA 2.x device
ada2: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes)
ada2: 1907729MB (3907029168 512 byte sectors: 16H 63S/T 16383C)
ada2: Previously was known as ad16
root@gw:/home/gandalf # dmesg | grep ada3
ada3 at ata5 bus 0 scbus7 target 0 lun 0
ada3: <SAMSUNG HD103UJ 1AA01118> ATA-7 SATA 2.x device
ada3: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes)
ada3: 953868MB (1953523055 512 byte sectors: 16H 63S/T 16383C)
ada3: Previously was known as ad18
GEOM_RAID: Intel-fb8732fa: Disk ada3 state changed from NONE to ACTIVE.
GEOM_RAID: Intel-fb8732fa: Subdisk Volume0:0-ada3 state changed from NONE to ACTIVE.
root@gw:/home/gandalf # dmesg | grep ada4
ada4 at ata6 bus 0 scbus8 target 0 lun 0
ada4: <TOSHIBA DT01ACA100 MS2OA750> ATA-8 SATA 3.x device
ada4: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes)
ada4: 953869MB (1953525168 512 byte sectors: 16H 63S/T 16383C)
ada4: Previously was known as ad20
root@gw:/home/gandalf # dmesg | grep GEOM_RAID
啊哈,那么 ada3 已经是另一个 raid 卷的一部分了?让我们看看:
root@gw:/home/gandalf # dmesg | grep GEOM_RAID
GEOM_RAID: SiI-130628113902: Array SiI-130628113902 created.
GEOM_RAID: SiI-130628113902: Disk ada0 state changed from NONE to ACTIVE.
GEOM_RAID: SiI-130628113902: Subdisk SiI Raid1 Set:1-ada0 state changed from NONE to STALE.
GEOM_RAID: SiI-130628113902: Disk ada1 state changed from NONE to ACTIVE.
GEOM_RAID: SiI-130628113902: Subdisk SiI Raid1 Set:0-ada1 state changed from NONE to STALE.
GEOM_RAID: SiI-130628113902: Array started.
GEOM_RAID: SiI-130628113902: Subdisk SiI Raid1 Set:0-ada1 state changed from STALE to ACTIVE.
GEOM_RAID: SiI-130628113902: Subdisk SiI Raid1 Set:1-ada0 state changed from STALE to RESYNC.
GEOM_RAID: SiI-130628113902: Subdisk SiI Raid1 Set:1-ada0 rebuild start at 0.
GEOM_RAID: SiI-130628113902: Volume SiI Raid1 Set state changed from STARTING to SUBOPTIMAL.
GEOM_RAID: SiI-130628113902: Provider raid/r0 for volume SiI Raid1 Set created.
GEOM_RAID: Intel-fb8732fa: Array Intel-fb8732fa created.
GEOM_RAID: Intel-fb8732fa: Force array start due to timeout.
GEOM_RAID: Intel-fb8732fa: Disk ada3 state changed from NONE to ACTIVE.
GEOM_RAID: Intel-fb8732fa: Subdisk Volume0:0-ada3 state changed from NONE to ACTIVE.
GEOM_RAID: Intel-fb8732fa: Array started.
GEOM_RAID: Intel-fb8732fa: Volume Volume0 state changed from STARTING to DEGRADED.
GEOM_RAID: Intel-fb8732fa: Provider raid/r1 for volume Volume0 created.
root@gw:/home/gandalf #
是的,确实如此。我想完全摆脱 raid/r1。但是,控制器已经在 BIOS 中设置为“IDE”模式。那么为什么它会创建 raid 卷呢???我也尝试过覆盖 ada3 的前 16k 数据并重新启动计算机,但没有帮助。
我如何删除 /dev/raid/r1?
root@gw:/home/gandalf # graid status
Name Status Components
raid/r0 SUBOPTIMAL ada0 (ACTIVE (RESYNC 4%))
ada1 (ACTIVE (ACTIVE))
raid/r1 DEGRADED ada3 (ACTIVE (ACTIVE))
root@gw:/home/gandalf # graid delete raid/r1
graid: Array 'raid/r1' not found.
root@gw:/home/gandalf # graid delete /dev/raid/r1
graid: Array '/dev/raid/r1' not found.
root@gw:/home/gandalf #
谢谢
答案1
(我知道你已经解决了你的问题,但是我在寻找自己的答案时发现了这一点,我用另一种方式解决了)
当我使用现有的 ZFS 池升级 FreeBSD 时,我遇到了类似的问题(GRAID 干扰了我的系统)。
然后池就退化了,我收到了与您收到的有关由 GEOM_RAID 构建的阵列的相同类型的 DMESG 消息。
我的解决方案是使用“graid stop”和提供的名称作为子磁盘名称(在您的情况下应该是“Volume0”)。
数组本身的名称(在您的情况下为 Intel-fb8732fa)可能也会起作用。
但是,您还需要确保 GRAID 已从您的内核中卸载(或作为模块),以便它不会在每次启动时运行并执行相同的操作。
(该阵列确实在下次启动时重新初始化,但我设法通过在它重新启动后使用 graid delete 来阻止它,因为我没有完全禁用 graid)
答案2
这不是一个完美的答案,但这就是我所做的。我在 BIOS 中关闭了控制器的 RAID 功能。然后我重新启动了计算机,并进入了 RAID 卡的 BIOS。它显示了作为镜像的一部分但不起作用的磁盘。(我不知道这是怎么发生的,因为该磁盘从来都不是镜像的一部分。)在那里我删除了磁盘。然后再次重新启动计算机,将 BIOS 从 RAID 设置为 AHCI。然后再次重新启动。瞧!FreeBSD 现在可以将它们用作简单磁盘,并且 zpool 创建顺利。
这个故事的寓意是:您在 BIOS 中做什么并不重要。FreeBSD+graid 仍将识别并使用您的 RAID 阵列,即使它们不起作用。真正的问题是:为什么我无法使用 graid 删除 raid/r1 卷 - 我不知道答案。但我的解决方法有效(唯一的问题是您必须重新启动计算机几次)。