中国青基会
RSS
热门关键字:  None  linux+moodle安装  mac  rhel5  199
当前位置 : Nixsky>BSD>FreeBSD>列表

在 FreeBSD 上使用软 RAID-1

来源:Freebsdchina 作者: 时间:2007-04-05 点击:

  系统启动还在继续。不过,若在 /etc/fstab 敲错了一个字,启动过程将就此停止并等待你输入正确的信息。在下面例子中,我在修改 /etc/fstab 时忘了插入 mirror 一词,即将本应为 /dev/mirror/gm0s1a 的误作 /dev/gm0s1a,这样,FreeBSD 便不能找到我的根文件系统。

  Mounting root from ufs:/dev/gm0s1a
  setrootbyname failed
  ffs_mountroot: can't find rootvp
  Root mount failed: 6
  
  Manual root filesystem specification:
    <fstype>:<device>  Mount <device> using filesystem <fstype>
              e.g. ufs:da0s1a
    ?             List valid disk boot devices
    <empty line>       Abort manual input
  
  mountroot>

  所幸的是,它并不是看起来那么可怕。可以从列出有效的启动分区入手处理故障:

  mountroot> ?
  
  List of GEOM managed disk devices:
    mirror/gm0s1f mirror/gm0s1e mirror/gm0s1d mirror/gm0s1c mirror/gm0s1b
  mirror/gm0s1a mirror/gm0s1 ad2s1 mirror/gm0 ad0s1 ad2 acd0 ad0 fd0

  若你正确输入 / 文件系统的位置,它将继续启动(boot,原文误作 reboot)下去。

  mountroot> ufs:/dev/mirror/gm0s1a
  Mounting root from /dev/mirror/gm0s1a
  
  登入之后,先更正 /etc/fstab 的误处并重新启动。正常启动且成功登入后,键入以下命令确定镜像的每个分区已被成功加载。

  % df -h
  Filesystem            Size    Used    Avail    Capacity    Mounted on
  /dev/mirror/gm0s1a    248M     35M     193M       15%        /
  devfs                 1.0K    1.0K       0B      100%        /dev
  /dev/mirror/gm0s1e    248M     12K     228M        0%        /tmp
  /dev/mirror/gm0s1f    7.3G     99M     6.7G        1%        /usr
  /dev/mirror/gm0s1d    248M    196K     228M        0%        /var

  df 不显示交换分区的信息,可以用以下命令核实:

  % swapinfo
  Device                1K-blocks    Used    Avail    Capacity
  /dev/mirror/gm0s1b       629544       0   629544        0%

同步镜像/双工

  剩下的事就是同步两块硬盘的数据了。只要键入向镜像插入第二块硬盘的命令,数据同步将自动进行。

  # gmirror insert gm0 /dev/ad2
  GEOM_MIRROR: Device gm0: provider ad2 detected.
  GEOM_MIRROR: Device gm0: rebuilding provider ad2.

  看看进展如何:

  # gmirror list | more
  Geom name: gm0
  State: DEGRADED
  Components: 2
  Balance: round-robin
  Slice: 4096
  Flags: NONE
  GenID: 0
  SyncID: 1
  ID: 2125638583
  Providers:
  1. Name: mirror/gm0
     Mediasize: 10262568448 (9.6G)
     Sectorsize: 512
     Mode: r6w5e2
  Consumers:
  1. Name: ad0
     Mediasize: 10262568448 (9.6G)
     Sectorsize: 512
     Mode: r1w1e1
     State: ACTIVE
     Priority: 0
     Flags: DIRTY
     GenID: 0
     SyncID: 1
     ID: 3986018406
  2. Name: ad2
     Mediasize: 10262568448 (9.6G)
     Sectorsize: 512
     Mode: r1w1e1
     State: SYNCHRONIZING
     Priority: 0
     Flags: DIRTY, SYNCHRONIZING
     GenID: 0
     SyncID: 1
     Synchronized: 1%
     ID: 1946262342

  注意看 Flags 行上的 SYNCHRONIZING 字眼。这两块硬盘的数据要同步需要一些时间,如当前所示才一个百分点。据我所知,10GB 的硬盘大约需时 30 分钟,75GB 的约需两个半小时。若你觉得好奇,查查进度:

  # gmirror status
  Name    Status    Components
  mirror/gm0    DEGRADED    ad0
              ad2 (2%)

  数据同步完毕后,你将看到以白色粗体字显示的系统信息:

  GEOM_MIRROR: Device gm0: rebuilding provider ad2 finished.
  GEOM_MIRROR: Device gm0: provider ad2 activated.

  若再次输入 gmirror list,你会看到 State (状态) 已从 DEGRADED (已降级) 变成 COMPLETE (完毕),Synchronized (已同步) 一行已不见了。若在 Flags 行上看到 DIRTY (不干净) 字眼,不用担心;那仅表示系统已写入新的数据但尚未完成镜射。若你在磁盘平静下来后等数秒钟,则你将会看到 Flags 行变成了 NONE (无)。

  重启系统,最后检查一下。

  这回启动信息应包含以下这些:

  GEOM_MIRROR: Device gm0 created (id=2125638583).
  GEOM_MIRROR: Device gm0: provider ad0 detected.
  GEOM_MIRROR: Device gm0: provider ad2 detected.
  GEOM_MIRROR: Device gm0: provider ad0 activated.
  GEOM_MIRROR: Device gm0: provider ad2 activated.
  GEOM_MIRROR: Device gm0: provider mirror/gm0 launched.
  Mounting root from ufs:/dev/mirror/gm0s1a
  
结语

  GEOM 实用程序在日益进步,它的开发者不断地将新特性及更新上传到网页去。利用 cvsup 更新你手上的 FreeBSD 版本或在决定安装 FreeBSD 时选用最新的版本是很重要的。

  若你想取得镜像/双工的性能数据,用 gstat(8)。通读 gmirror(8) 的说明文字也是值得倡议的,特别是在你想了解如何更换一块坏硬盘的情况下。
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册