这是一台 FreeBSD 9.1 amd64 计算机。它安装了 5 个磁盘。ada0 和 ada1 磁盘与硬件 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 #
谢谢
(我知道你已经解决了你的问题,但是我在寻找我自己的答案时发现了这个问题,我用另一种方式解决了这个问题)
当我用现有的 ZFS 池升级 FreeBSD 时,我遇到了类似的问题(因为 GRAID 弄乱了我的系统)。
然后,池降级了,我收到了与您收到的有关 GEOM_RAID 正在构建的阵列的相同类型的 DMESG 消息。
我的解决方案是使用“graid stop”和作为子磁盘名称提供的名称(在您的情况下应该是“Volume0”。
阵列本身的名称(在您的情况下为 Intel-fb8732fa)可能也有效。
但是,您还需要确保 GRAID 已从内核(或作为模块)中卸载,这样它就不会在每次启动时都运行并执行相同的操作。
(阵列确实在下一次启动时重新初始化,但我设法在它恢复后使用 graid delete 来阻止它,因为我没有完全禁用 graid)
这不是一个完美的答案,但这就是我所做的。我在BIOS里把控制器的RAID功能调回来了。然后我重新启动计算机,进入 RAID 卡的 BIOS。它显示磁盘是镜像的一部分,但无法正常工作。(我不知道这是怎么发生的,因为那个磁盘从来都不是镜像的一部分。)我已经删除了磁盘。然后再次重新启动计算机,将 BIOS 从 RAID 设置为 AHCI。然后又重新开始了。瞧!FreeBSD 现在可以将它们用作简单的磁盘,并且 zpool 创建也很顺利。
故事的寓意:你在 BIOS 中做什么并不重要。FreeBSD+graid 仍然会识别和使用您的 RAID 阵列,即使它们不起作用。真正的问题:为什么我无法使用 graid 删除 raid/r1 卷 - 我不知道答案。但是我的解决方案有效(唯一的问题是您必须多次重新启动计算机)。