Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1099420
  • 博文数量: 286
  • 博客积分: 3124
  • 博客等级: 中校
  • 技术积分: 5186
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-24 23:42
个人简介

Bomi

文章存档

2015年(1)

2013年(1)

2012年(281)

2008年(3)

分类: 系统运维

2012-02-05 00:29:23

如何已启动的系统中,查找并修改安装在其他设备上的 ZFS 根系统内容?
  (1) 一个最简单的方式就是进入 failsafe 模式,failsafe 可以自动查找系统中的所有设备,列出可能的根文件系统所在设备(无论 UFS/ZFS),询问是否将其挂载在 /a 目录下
SunOS Release 5.11 Version snv_97 32-bit
Copyright 1983-2008 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Booting to milestone "milestone/single-user:default".
Configuring /dev
Searching for installed OS instances...
ROOT/snv_97 was found on rpool.
Do you wish to have it mounted read-write on /a? [y,n,?] y
mounting rpool on /a
Starting shell.
# zpool list
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
rpool    68G  6.02G  62.0G     8%  ONLINE  /a
# zfs list
NAME                             USED  AVAIL  REFER  MOUNTPOINT
rpool                           6.32G  60.6G  36.5K  /a/rpool
rpool/ROOT                      5.32G  60.6G    18K  legacy
rpool/ROOT/snv_97               5.32G  60.6G  5.32G  /a
rpool/dump                       512M  60.6G   512M  -
rpool/export                      37K  60.6G    19K  /a/export
rpool/export/home                 18K  60.6G    18K  /a/export/home
rpool/swap                       512M  60.9G   210M  -
  这样进入 /a ,就可以根据需要修改该 ZFS 文件系统中的内容了。
  (2)如果你的系统没有 failsafe 模式,另一种方式是手工 import ,这种方式不需要进入 failsafe 模式,但改动前后需要对 ZFS 根文件系统的结构知识有一定了解:
   # zpool import (列出所有可待选的存储池)
  pool: rpool
    id: 7154650442157903689
state: ONLINE
status: The pool is formatted using an older on-disk version.
action: The pool can be imported using its name or numeric identifier, though
        some features will not be available without an explicit 'zpool upgrade'.
config:
        rpool       ONLINE
          c0t1d0s0  ONLINE
  # zpool import -f -R /mnt rpool
  这里需要讲一下为什么要用这些选项:
  -f 是强制导入,因为该存储池在之前可能曾被活跃系统使用,-f 可以忽略与此相关的警告错误;
  -R /mnt 或其他替换的根路径,这是避免该存储池中的 /export, /export/home 等文件系统与当前系统中的相同挂载点冲突,导致某些文件系统无法挂载,采用 -R 选项可以使这些文件系统顺利挂载到指定挂载点之下的子目录中;
  import 操作成功之后,执行 zfs mount 命令可查看已挂载的文件系统,这时候你可能会注意到,该存储池中有些文件系统可能没有自动挂载,比如查看结果如下
# zfs mount
rpool/export                    /mnt/export
rpool/export/home               /mnt/export/home
rpool                           /mnt/rpool
  rpool/ROOT/snv_97 就没有挂载上,这是因为该文件系统曾是存储池中的根文件系统,这种文件系统必须手动挂载,步骤如下:
  # zfs unmount -a
  # rm -rf /mnt/*
  # zfs mount rpool/ROOT/snv_97
  # zfs mount -a
  这样进入 /mnt 目录,就可以编辑原存储池根文件系统下的内容了。
  修改完毕之后,如果不希望在将来的系统中看到这个存储池,仍然可以用 zpool export rpool 将其导出,这样与此相关的设备可以拔除到其他系统使用。

阅读(3394) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~