AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 114368
In Process
squarism
squarism
Asked: 2010-02-19 11:09:35 +0800 CST2010-02-19 11:09:35 +0800 CST 2010-02-19 11:09:35 +0800 CST

安全地拆分 raidctl 镜像

  • 772

我有一台带有板载 LSI 卡和两个磁盘的 Sun T5220 服务器,它们位于 RAID 1 镜像中。数据现在并不重要,但我们有一个故障磁盘,并且正在尝试了解如何真正做到这一点,如果我们必须从故障中恢复。

最初的情况是这样的:

# raidctl -l c1t0d0
卷大小条带状态缓存 RAID
         子尺寸级别
                 磁盘
-------------------------------------------------- --------------
c1t0d0 136.6GN/A 降级关闭 RAID1
                 0.1.0 136.6G 好
                 不适用 136.6G 失败

0.0.0 磁盘上的绿灯。查找/点亮 0.1.0 磁盘。所以我知道我的驱动器坏了,它是哪一个。服务器仍然明显启动。

首先,我们尝试放入一个新磁盘。该磁盘来自未知来源。Format 看不到它, cfgadm -al 看不到它,所以 raidctl -l 看不到它。我认为这很糟糕。我们从另一个备用服务器尝试了另一个磁盘:

# raidctl -c c1t1d0 c1t0d0(其中 t1 是我的好磁盘 - 0.1.0)
磁盘已占用空间。

不同的语法选项也不会改变任何东西:

# raidctl -C "0.1.0 0.0.0" -r 1 1
磁盘已占用空间。

# raidctl -C "0.1.0 0.0.0" 1
磁盘已占用空间。

好的。这可能是因为备用服务器的磁盘上已经有 RAID 1。啊哈,我可以在 raidctl 中看到另一个卷:

#raidctl -l
控制器:1
         卷:c1t1d0(这是我服务器的根镜像)
         卷:c1t132d0(这是国外根镜像)
         磁盘:0.0.0
         磁盘:0.1.0
         ...

没问题。我不关心数据,我只是删除了外来镜像。

# raidctl -d c1t132d0
(关于数据删除的警告,但它有效)

在这一点上,/usr/bin/ 二进制文件吓坏了。我的意思是, ls -l /usr/bin/ 显示 1.4k 但cat /usr/bin/which给了我一个换行符。太好了,我刚刚吹走了二进制文件(即:内存中的二进制文件仍然有效)?我弹开盒子。一切都恢复正常。哇。无论如何,回到重建我的镜子。

#raidctl -l
控制器:1
         卷:c1t1d0(这是我服务器的根镜像)
         磁盘:0.0.0
         磁盘:0.1.0
         ...

男人说你可以删除一面镜子,它会分裂它。好的,我将删除根镜像。

# raidctl -d c1t0d0
正在使用的数组。(这可能不是确切的错误)

我用谷歌搜索了这个,发现在从镜像启动时你当然不能这样做(即使使用-f)。好的。我boot cdrom -s删除了卷。

现在我有一个磁盘,在 c1t1d0(我的数据所在的位置)上有一个“LSI-Logical-Volume”类型,在 c1t0d0(我试图镜像到)上有一个全新的“Hitachi 146GB”:

(从 CD 启动)
# raidctl -c c1t1d0 c1t0d0(man 说它是镜像的源目标)
非法阵列布局。

# raidctl -C "0.1.0 0.0.0" -r 1 1(每个人的替代语法)
非法阵列布局。

# raidctl -C "0.1.0 0.0.0" 1(假设为 raid1,没有帮助)
非法阵列布局。

相同大小的磁盘,相同的制造商,但我确实删除了卷,而不是放入空白磁盘并等待它重新同步。也许这是一个严重的错误。我尝试将我的好磁盘的格式类型选择为普通的 146gb 磁盘,但它重置了分区表,我很确定这会擦除数据(如果这是生产则不好)。

我是骨头吗?有人有打破和重新同步镜像的经验吗?Google 上没有关于“非法数组布​​局”的内容,所以这是我对搜索之神的贡献。

solaris raid mirror lsi
  • 1 1 个回答
  • 9652 Views

1 个回答

  • Voted
  1. squarism
    2010-02-26T09:44:21+08:002010-02-26T09:44:21+08:00

    事实证明,我找不到答案。但我确实找到了一种解决方法和一些很好的信息。首先,这是在 Solaris 10 的 10/08 (U6) 上。我从 10/09 启动 CD (U8) 启动,发现 U8 上的 raidctl 中有一个错误。U8 因“损坏的实验室 - 几何形状错误”错误而失败。即使我完全擦除了磁盘,我也无法使用 U8 引导 CD 重新创建镜像,但在 U7(可能是 U6)上,完全相同的命令有效。所以只是有一点版本警告。

    解决方法的要点是这样的(替换您的磁盘、路径等)。

    • 我的分区被分割了,但我可以看到引导 CD 上的数据。我需要大量空间来执行 ufsdump,因此我导入了一个大型 zfs 池。这对您来说可能意味着不同的事情,也许只是挂载一个大分区。我们称之为/mnt/space。
    • 将每个现有分区表复制或转储到文件中。请记住,此时您已从 CD 启动。
      • 格式化 (1, p, p) 或执行prtvtoc /dev/rdsk/c1t0d0s2 > /mnt/space/partitions.txt
    • 备份分区
      • ufsdump 0f - /dev/rdsk/c1t0d0s0 > /mnt/space/root_c1t1d0s0.dmp
      • ufsdump 0f - /dev/rdsk/c1t1d0s4 > /mnt/space/var_c1t1d0s4.dmp
      • 继续每个分区
    • 重新创建 raid(关闭 U7 或更旧的 CD,U8 有错误,失败)。
      • raidctl -c c1t0d0 c1t1d0 警告:这会擦除两个驱动器。
      • 创建 RAID 卷会破坏成员磁盘空闲空间上的所有数据,继续(是/否)?是的
    • 用格式标记新的 RAID 磁盘。您不应该收到奇怪或失败的格式标签错误。
    • 查找您的音量raidctl -l (假设在这些说明中它是 c1t1d0)
    • 恢复您的分区布局。
      • cat /mnt/space/partitions.txt | fmthard -s - /dev/rdsk/c1t1d0s2
    • 此时我实际上切换到了 DiskSuite,但恢复步骤类似。
    • newfs 每个分区。
      • newfs /dev/rdsk/c1t1d0s0(通过s7,显然跳过s2)
    • 挂载和恢复每个分区:
      • mkdir /tmp/s0
      • mount /dev/rdsk/ctt1d0s0 /tmp/s0
      • cd /tmp/s0
      • cat /mnt/space/root_c1t1d0s0.dmp | ufsrestore xf - (对根目录权限回答是)
      • umount /tmp/s0
      • 对每个切片重复
    • 复制引导块。此文件的路径取决于您的硬件:
      • installboot platform/SUNW,SPARC-Enterprise-T5220/lib/fs/ufs/bootblk /dev/rdsk/c1t1d0s0
    • 卸载所有东西,如果需要,导出 zpools,从 CD 重新启动。
    • 从打开的引导提示中编辑您的别名
      • probe-scei-all
      • show-disks(选择磁盘)
      • nvalias disk Ctrl-Y
      • boot disk
    • 此时您应该回到硬件镜像,或者您可能切换到 DiskSuite。

    如果你想在这一切的中间切换到磁盘套件: - 使用上面的 ufsdump 备份 - 删除你的硬件 RAID 定义 - 将分区恢复到第一个磁盘,对第一个磁盘上的分区进行 newfs - ufsrestore 到第一个磁盘,执行健全启动 - 然后启动常规磁盘套件安装。如果您尝试一次性从 CD 上完成磁盘套件,则不会因为元服务未运行而需要。你会得到这个错误: metadb: network/rpc/meta:default: failed to enable/disable SVM service 执行元命令不会受到伤害,它们只是不会坚持。IE:当您从硬盘重新启动时,metastat 会显示“未找到元数据库”。

    • 2

相关问题

  • 从现有目录创建 zfs 的正确方法?

  • 在 Solaris lp 或 lpr 上打印

  • 如何将 ZFS ACL 从一个文件克隆到另一个文件?

  • Solaris DNS

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve