系统管理指南:设备和文件系统

Procedure如何恢复完整的文件系统

有时文件系统会遭到严重损坏,因此必须进行完全恢复。通常,在出现磁盘故障后,需要恢复完整的文件系统。在恢复软件之前,可能需要更换硬件。有关如何更换磁盘的信息,请参见SPARC: 添加系统磁盘或辅助磁盘(任务列表)x86: 添加系统磁盘或辅助磁盘(任务列表)

完全恢复文件系统(如 /export/home)可能需要很长时间。如果已持续备份文件系统,则可以将其恢复到上次增量备份时的状态。


注 –

不能使用此过程来恢复根 (/) 文件系统或 /usr 文件系统。有关恢复这些文件系统的说明,请参见如何恢复根 (/) 和 /usr 文件系统


  1. 成为超级用户或承担等效角色。

  2. 如有必要,请取消挂载文件系统。


    # umount /dev/rdsk/device-name
    

    或:


    # umount /file-system
    
  3. 创建新的文件系统。


    # newfs /dev/rdsk/device-name
    

    系统将询问您是否要在原始设备上构造新的文件系统。确认 device-name 正确,以便不会破坏其他文件系统。

    有关更多信息,请参见 newfs(1M) 手册页。

  4. 确认是否应该创建新的文件系统。


    newfs: construct a new file system /dev/rdsk/cwtxdysz:(y/n)? y
    

    将创建新的文件系统。

  5. 在临时挂载点上挂载新的文件系统。


    # mount /dev/dsk/device-name /mnt
    
  6. 转到对应的挂载点目录。


    # cd /mnt
    
  7. (可选)为安全起见,请对磁带进行写保护。

  8. 将级别 0 磁带的第一卷插入磁带机中。

  9. 恢复文件。


    # ufsrestore rvf /dev/rmt/n
    

    此时会恢复转储级别 0 备份。如果备份需要多个磁带,则系统会提示您按数字顺序装入各磁带。

  10. 取出磁带并在驱动器中装入下一级别的磁带。

    请始终从转储级别 0 开始恢复磁带,并继续进行其他转储级别的恢复,直到到达最高的转储级别。

  11. 按从低级别到高级别的顺序,对每个转储级别重复执行步骤 8步骤 10

  12. 验证文件系统是否已恢复。


    # ls
    
  13. 删除 restoresymtable 文件。


    # rm restoresymtable
    

    系统将删除已创建且通过 ufsrestore 命令执行检查点恢复的 restoresymtable 文件。

  14. 转到其他目录。


    # cd /
    
  15. 取消挂载最近恢复的文件系统。


    # umount /mnt
    
  16. 取出最后一个磁带并在磁带机中插入未进行写保护的新磁带。

  17. 对最近恢复的文件系统执行级别 0 备份。


    # ufsdump 0ucf /dev/rmt/n /dev/rdsk/device-name
    

    此时会执行级别 0 备份。由于 ufsrestore 命令将重定位文件并更改 inode 分配,因此应始终立即执行新创建文件系统的完整备份。

  18. 挂载恢复的文件系统。


    # mount /dev/dsk/device-name mount-point
    

    恢复的文件系统已挂载并且可以使用。

  19. 验证恢复且挂载的文件系统是否可用。


    # ls mount-point
    

示例 27–5 恢复完整的文件系统

以下示例说明如何恢复 /export/home 文件系统。


# newfs /dev/rdsk/c0t0d0s7

newfs: /dev/rdsk/c0t0d0s7 last mounted as /export/home

newfs: construct a new file system /dev/rdsk/c0t0d0s7: (y/n)? y

819314 sectors in 867 cylinders of 15 tracks, 63 sectors

        400.1MB in 55 cyl groups (16 c/g, 7.38MB/g, 3584 i/g)

super-block backups (for fsck -F ufs -o b=#) at:

 32, 15216, 30400, 45584, 60768, 75952, 91136, 106320, 121504, 136688,

 681264, 696448, 711632, 725792, 740976, 756160, 771344, 786528, 801712,

 816896,

# mount /dev/dsk/c0t0d0s7 /mnt

# cd /mnt

# ufsrestore rvf /dev/rmt/0

Verify volume and initialize maps

Media block size is 126

Dump   date: Thu Jul 29 10:14:00 2004

Dumped from: the epoch

Level 0 dump of /export/home on starbug:/dev/dsk/c0t0d0s7

Label: none

Begin level 0 restore

Initialize symbol table.

Extract directories from tape

Calculate extraction list.

Warning: ./lost+found: File exists

Make node ./rimmer

Make node ./rimmer/wdir

Make node ./lister

Make node ./pmorph

Make node ./inquisitor

Make node ./kryten

Make node ./kryten/letters

Make node ./kryten/reports

Extract new leaves.

Check pointing the restore

extract file ./rimmer/words

extract file ./rimmer/words1

extract file ./rimmer/words2

extract file ./rimmer/words3

extract file ./rimmer/wdir/words

extract file ./rimmer/wdir/words1

extract file ./rimmer/wdir/words2

extract file ./rimmer/wdir/words3

.

.

.

Add links

Set directory mode, owner, and times.

Check the symbol table.

Check pointing the restore

# rm restoresymtable

# cd /

# umount /mnt

# ufsdump 0ucf /dev/rmt/0 /export/home

                    .

                    .

                    .

# mount /dev/dsk/c0t0d0s7 /export/home

# ls /export/home