UNIX系统管理-第九章:修复文件系统
操作系统原理9-文件系统

10
9.1.3 文件系统 通用文件系统应具有以下功能: 1、提供用户对文件操作的命令; 2、提供用户共享文件的机制; 3、管理文件的存储介质; 4、提供文件的存取控制的机制,保障文件及文件系统的 安全性; 5、提供文件及文件系统的备份和恢复功能; 6、提供对文件的加密和解密功能。
11
9.2 文件的逻辑组织与存取方法 9.2.1 文件的组织 可以用两种不同的观点去进行研究文件结构 用户观点: 是研究用户“思维”中的抽象文件,或称逻辑文件,其研 究的侧重点在于为用户提供一种逻辑结构清晰、使用简 便的逻辑文件形式。用户将按照这种形式去存储、检索 和加工有关文件中的信息。 实现观点: 是研究驻留在设备“介质”中的实际文件,或称物理文件 。它研究的侧重点是选择一些工作性能良好、设备利用 率高的物理文件形式。系统将按照这种形式同外部设备 打交道并控制信息的传输
9
9.1.3 文件系统 9.1.3 文件系统 文件系统是操作系统中负责管理和存取文件信息的软件 机构,它是由管理文件所需的数据结构和相应的管理软 件以及访问文件的一组操作组成。 从系统的角度看:文件系统是一个负责文件存储空间管 理的机构。 从用户的角度看:文件系统是用户在计算机上存储信息 、和使用信息的接口。
40
9.6 文件目录 9.6.1 文件目录及内容 文件目录项:
1.文件名 2.文件的大小,单位:字节 3.文件在物理存储介质中的位置 。取决于文件的物理结构 。 对于连续文件:文件起始块号( 即文件的第一个物理块块号); 对于串联文件:指向第一个物理 块的指针; 对于索引文件:索引表。 4.存取控制信息 文件主和其它用户对该文件的访 问权限。 5.管理信息 包含文件创建的日期和时间,最 近修改该文件的日期和时间等。 6.文件的类型
教你认识un教学教案

教你认识UNIX教学教案第一章:UNIX概述1.1 课程目标:了解UNIX操作系统的历史背景、特点和应用领域。
1.2 教学内容:1.2.1 UNIX的历史发展:介绍UNIX操作系统的起源、发展过程和版本变迁。
1.2.2 UNIX的特点:讲解UNIX操作系统的开放性、多用户、多任务、简洁性、高效性等特点。
1.2.3 UNIX的应用领域:介绍UNIX操作系统在服务器、嵌入式系统、科学研究等领域的应用。
1.3 教学方法:采用讲解、案例演示、讨论等方式进行教学。
第二章:UNIX基本操作2.1 课程目标:掌握UNIX操作系统的基本操作,包括文件操作、目录操作和文本编辑。
2.2 教学内容:2.2.1 文件操作:学习创建、删除、复制、移动文件和文件夹等操作。
2.2.2 目录操作:掌握目录的创建、删除、切换和查看目录内容等操作。
2.2.3 文本编辑:学习使用VI/VIM文本编辑器进行文本编辑和基本操作。
2.3 教学方法:采用讲解、操作演示、实践操作等方式进行教学。
第三章:UNIX文件权限与管理3.1 课程目标:了解UNIX文件权限的概念,掌握文件权限的设置与更改方法。
3.2 教学内容:3.2.1 文件权限概念:讲解UNIX文件权限的分类(读、写、执行)和表示方法。
3.2.2 文件权限设置与更改:学习使用`chmod`、`chown`、`chgrp`等命令进行文件权限的设置与更改。
3.3 教学方法:采用讲解、操作演示、实践操作等方式进行教学。
第四章:UNIX常用命令4.1 课程目标:掌握UNIX操作系统中常用的命令,提高操作效率。
4.2 教学内容:4.2.1 文件操作命令:学习`ls`、`cp`、`mv`、`rm`等文件操作命令的使用方法。
4.2.2 文本处理命令:掌握`grep`、`sed`、`awk`等文本处理命令的使用技巧。
4.2.3 系统管理命令:了解`ps`、`top`、`df`、`du`等系统管理命令的功能及使用方法。
SCOUNIX文件卷结构分析及误删文件的恢复

SCOUNIX文件卷结构分析及误删文件的恢复SCO UNIX文件卷结构分析及误删文件的恢复摘要该文以SCO UNIX 3.2.4.1版本为例,分析其文件卷结构和磁盘块管理方式,并在此基础上讲述了误删文件恢复的方法。
我们知道,UNIX操作系统是以文件卷作为其文件系统的存储格式的。
对于UNIX用户尤其是系统管理员而言,要想更好地掌握UNIX操作系统,熟悉文件卷的结构是很有必要的。
由于SCOUNIX在全球的微机UNIX操作系统市场中所占份额最大,在我国更是处于垄断地位,而它的文件卷结构和磁盘块管理方式都和其它UNIX SYSTEM V不完全一样,介绍这方面信息的资料也很少。
本文就以SCO UNIX 3.2.4.1版本为例,彻底分析它的文件卷结构和磁盘块管理方式,并在此基础上,讲述一个应用--恢复误删的文件。
一、文件卷的结构文件卷是由大小相同的磁盘块序列组成的。
在文件卷偏移量512字节处,有一个长度为512字节的超级块,其后是若干i节点块、位图索引块、位图块、数据块等,如图1所示。
图1其中,位图索引块和位图块是SCO UNIX专有的,它们含有关于磁盘块管理的重要数据,一般情况下,位图块不止一个,它们的数量和块号是由位图索引块中的数据决定的。
4.1版本中,磁盘块的大小是1024字节,因此引导块和超级块合占0号磁盘块。
若块尺寸为512字节,则0号块是引导块,1号块是超级块。
其中超级块含有文件卷的许多重要信息,如文件卷的大小、位图索引块的位置等。
其数据结构放在<sys/filsys.h>文件中,具体结构如下:struct filsys{ushort s-isize;daddr-t s-fsize;short s-nfree;daddr-t sfree[NICFREE];…};其中:s-nfree、sfree[NICFREE]是SCO UNIX涉及磁盘块管理的两项重要数据,在其它UNIX SYSTEM V中也有这两项数据,但二者的含义不同。
Linux命令行中的文件和权限修复技巧

Linux命令行中的文件和权限修复技巧在Linux系统中,文件和权限的管理是非常重要的一部分。
当我们遇到文件损坏或者权限错误的情况时,需要采取适当的修复措施。
本文将介绍一些在Linux命令行中常用的文件和权限修复技巧。
一、查找并修复损坏的文件当我们无法打开或操作一个文件时,很可能是文件损坏了。
我们可以使用文件系统检查工具来找出并修复这些损坏的文件。
常用的文件系统检查工具包括fsck和smartctl。
1. 使用fsck命令检查和修复文件系统:sudo fsck -y /dev/sda1该命令将检查并修复/dev/sda1分区上的文件系统。
2. 使用smartctl命令检查硬盘的健康状态:sudo smartctl -a /dev/sda该命令将显示/dev/sda硬盘的详细信息,包括健康状态和损坏情况。
二、修复文件权限问题在Linux系统中,文件权限的正确设置是非常重要的。
当我们无法访问或操作一个文件时,可能是由于权限设置错误导致的。
下面是一些修复文件权限问题的常用命令。
1. 使用chmod命令修改文件权限:sudo chmod 755 file.txt该命令将文件file.txt的权限设置为755,即所有者具有读、写和执行权限,其他用户具有读和执行权限。
2. 使用chown命令修改文件所有者:sudo chown user file.txt该命令将文件file.txt的所有者设置为user。
3. 使用chgrp命令修改文件所属组:sudo chgrp group file.txt该命令将文件file.txt的所属组设置为group。
三、修复损坏的软链接软链接是指向另一个文件或目录的符号链接。
当软链接损坏了,我们无法使用它指向的文件或目录。
下面是修复损坏的软链接的方法。
1. 使用ln命令重新创建软链接:ln -sf /path/to/target /path/to/link该命令将重新创建一个指向目标文件或目录的软链接。
UNIX操作系统的文件管理

(1) i-count 内存inode访问计数。若为0,表示此节点为空闲, 某文件被打开时,其内存inode里的此项就加1。 只有所有用户都关闭了此文件,以使i-count为0 后,这个文件才被真正关闭。 (2) i-number 与此内存inode相对应的外存inode编号。
5、打开文件控制块file和file表
文件系统磁盘存储区的分布图
每一个文件的inode节点占用32个字节,因此每一个inode 块包含16个文件控制块。这些inode顺序编号,一个文件 占用了某inode,则其编号就成为这个文件的内部标识, 第1号inode是专门用于根目录文件的。 数据结构filsys 共有12 项内容,下面给出与我们讲述有关 的六项。 (1) s-isize inode区占用的盘块数; (2) s-fsize 盘块总数; (3) s-nfree 直接管理(也就是s-free[100]指向)的空闲块 数; (4) s-free[100] 空闲块索引表 (5) s-ninode 直接管理的空闲inode节点数; (6) s-sinode[100] 空闲inode节点索引表。 至于如何通过filsys来对空闲inode和空闲盘进行具体管理, 详情见后面关于UNIX文件系统资源管理综述部分。
4外node记录了一个文件的属性和有关信息。可以想象,在对某一
文件的访问过程中,会频繁地涉及到它,于是它就要不断来回于内、 外存之间,这当然是极不经济的。为此,UNIX在系统占用的内存区 里开辟了一张表——内存inode表(或活动文件控制块表、活动索引 节点表),该表共有100个表目,每个表目称为一个内存文件控制块 inode,当需要使用某文件的信息,而在内存inode 表中找不到其相 应的inode时,就申请一个内存inode,把外存inode的大部分内存拷 贝到这个内存inode 中,随之就使用这个内存 inode 来控制磁盘上的 文件。在最后一个用户关闭此文件后,内存inode的内容被写到外存 inode,然后释放以供它用。 内存inode的结构基本上与外存inode相同。增加的有关项目有:
unix系统恢复方法

unix系统恢复方法摘要:一、引言二、Unix系统恢复方法概述1.手动恢复a.使用命令行界面b.磁盘阵列恢复c.文件系统恢复2.自动恢复a.使用恢复软件b.数据备份与恢复3.预防措施a.定期备份重要数据b.监控系统日志c.安全策略三、总结正文:一、引言Unix系统作为一种广泛应用于企业级环境的操作系统,其稳定性和安全性备受认可。
然而,无论是Unix系统还是其他操作系统,都难免会遇到故障或数据丢失的情况。
在本篇文章中,我们将详细介绍Unix系统的恢复方法,以帮助大家在遇到问题时能够迅速恢复系统。
二、Unix系统恢复方法概述1.手动恢复1.1 使用命令行界面当Unix系统出现问题时,我们可以通过命令行界面来进行基本的恢复操作。
例如,可以使用mount命令将损坏的磁盘挂载到另一个正常的分区,然后对该分区进行数据备份。
此外,还可以使用df、du、ls等命令来检查磁盘空间使用情况、找出潜在问题等。
1.2 磁盘阵列恢复磁盘阵列(RAID)是Unix系统常用的数据存储方式。
如果磁盘阵列出现故障,可以尝试使用RAID管理工具来进行恢复。
例如,使用mdadm命令来管理磁盘阵列,通过重建、迁移或扩容等方式恢复数据。
1.3 文件系统恢复当文件系统出现问题时,可以使用Unix内置的fsck命令进行检查和修复。
此外,还可以使用第三方文件系统检测和恢复工具,如fsunderstanding、testdisk等。
2.自动恢复2.1 使用恢复软件市场上有许多针对Unix系统的恢复软件,如Stellar Data Recovery、Ontrack EasyRecover等。
这些软件支持多种文件系统和存储介质,可以帮助我们快速恢复丢失的数据。
在选择恢复软件时,请确保其对Unix系统有良好的支持,并遵循相关操作指南进行恢复。
2.2 数据备份与恢复定期进行数据备份是预防数据丢失的有效手段。
Unix系统提供了rsync、tar等备份工具,可以帮助我们轻松实现数据备份。
文件系统自动修复

文件系统自动修复在计算机系统中,文件系统扮演着重要的角色,负责管理和组织存储在计算机硬盘上的文件和文件夹。
然而,由于各种原因,文件系统可能会出现错误或损坏,导致文件的访问和使用受到限制甚至无法正常进行。
为了解决这个问题,许多操作系统都提供了文件系统自动修复的功能,本文将就文件系统自动修复进行探讨。
一、文件系统自动修复的背景和概述1. 文件系统的作用和重要性文件系统是计算机操作系统的重要组成部分,其功能是管理和组织文件,使得用户可以方便地创建、读取、修改和删除文件。
文件系统通过提供文件层次结构和文件访问接口,使得用户能够以逻辑方式组织和访问文件,提高了计算机系统的可用性和效率。
2. 文件系统的损坏和错误由于各种原因,包括硬件故障、断电、非法操作或系统错误等,文件系统可能会出现损坏或错误。
常见的问题包括文件丢失、文件重复、磁盘坏道、目录结构错误等。
当文件系统出现错误时,文件的访问和使用将受到限制,并可能导致数据的丢失和损坏。
3. 文件系统自动修复的作用和原理文件系统自动修复是一种操作系统提供的功能,可以检测和修复文件系统中的错误。
它通过扫描文件系统的结构、验证文件的完整性和重建损坏的文件元数据等方式来纠正错误。
自动修复的原理和具体实现因操作系统而异,但其基本目标是恢复文件系统的一致性和可用性,确保文件可以正常访问和使用。
二、常见的文件系统自动修复工具1. Windows操作系统的Chkdsk命令在Windows操作系统中,Chkdsk是一个常用的文件系统自动修复工具。
通过运行Chkdsk命令,系统可以扫描磁盘上的文件系统,检测和纠正错误。
Chkdsk可以检查并修复磁盘上的逻辑错误、重建损坏的目录结构、修复坏道等。
2. Linux操作系统的fsck命令在Linux操作系统中,fsck是一个常用的文件系统自动修复工具。
fsck命令可以对文件系统进行检查和修复。
它能够扫描文件系统的数据结构,纠正错误并恢复文件系统的一致性。
unix基础知识题库100道及答案(完整版)

unix基础知识题库100道及答案(完整版)1. Unix 操作系统的创始人是?A. 肯·汤普森和丹尼斯·里奇B. 比尔·盖茨和保罗·艾伦C. 史蒂夫·乔布斯和史蒂夫·沃兹尼亚克D. 拉里·佩奇和谢尔盖·布林答案:A2. 在Unix 中,用于查看当前工作目录的命令是?A. cdB. pwdC. lsD. mkdir答案:B3. 以下哪个命令用于创建新目录?A. cdB. rmdirC. mkdirD. touch答案:C4. 在Unix 中,删除文件的命令是?A. delB. eraseC. rmD. remove答案:C5. 要列出当前目录下所有文件和子目录(包括隐藏文件),使用以下哪个命令?A. lsB. ls -aC. ls -lD. ls -R答案:B6. 以下哪个命令用于改变文件的所有者?A. chmodB. chownC. chgrpD. groupadd答案:B7. Unix 中用于显示文件内容的命令是?A. catB. moreC. lessD. 以上都是答案:D8. 要将标准输出和标准错误输出都重定向到一个文件,使用以下哪个符号?A. >B. <C. 2>D. &>答案:D9. 以下哪个命令用于查找文件?A. findB. grepC. locateD. 以上都是答案:D10. 在Unix 中,用于复制文件的命令是?A. cpB. mvC. scpD. rsync答案:A11. 要查看系统进程信息,使用以下哪个命令?A. psB. topC. killD. pidof答案:A12. 以下哪个命令用于给文件或目录设置权限?A. chmodB. chownC. umaskD. su答案:A13. Unix 中用于压缩文件的命令是?B. bzip2C. zipD. 以上都是答案:D14. 要解压缩gzip 格式的文件,使用以下哪个命令?A. gunzipB. gzip -dC. 以上都是D. 以上都不是答案:C15. 以下哪个命令用于切换用户?A. useraddB. userdelC. suD. passwd答案:C16. 在Unix 中,用于创建用户的命令是?A. useraddB. adduserC. 以上都是D. 以上都不是答案:C17. 要修改用户密码,使用以下哪个命令?A. passwdB. passwordC. changepwdD. newpasswd答案:A18. 以下哪个命令用于查看系统内核版本?A. uname -rB. uname -aC. cat /proc/versionD. 以上都是答案:D19. Unix 中用于挂载文件系统的命令是?A. mountB. umountD. fdisk答案:A20. 要卸载已挂载的文件系统,使用以下哪个命令?A. mountB. umountC. unmountD. remove答案:B21. 以下哪个命令用于查看磁盘使用情况?A. dfB. duC. fdiskD. parted答案:A22. 在Unix 中,用于查看文件系统类型的命令是?A. mountB. file -sC. fsckD. mkfs答案:B23. 要格式化磁盘分区为ext4 文件系统,使用以下哪个命令?A. mkfs.ext4B. format.ext4C. fdformat.ext4D. 以上都不是答案:A24. 以下哪个命令用于设置计划任务?A. atB. cronC. 以上都是D. 以上都不是答案:C25. Unix 中用于网络配置的命令是?A. ifconfigB. ipC. netstatD. 以上都是答案:D26. 要查看网络连接状态,使用以下哪个命令?A. ifconfigB. netstatC. tcpdumpD. traceroute答案:B27. 以下哪个命令用于跟踪数据包的路由路径?A. tracerouteB. pingC. routeD. arp答案:A28. 在Unix 中,用于测试网络连通性的命令是?A. tracerouteB. pingC. netstatD. ifconfig答案:B29. 要查看本地ARP 缓存,使用以下哪个命令?A. arpB. ifconfig -aC. netstat -rD. route -n答案:A30. 以下哪个命令用于查看系统启动日志?A. dmesgB. syslogC. lastlogD. messages答案:A31. Unix 中用于发送邮件的命令是?A. mailB. sendmailC. postfixD. exim答案:A32. 要查看系统登录记录,使用以下哪个命令?A. lastB. whoC. wD. 以上都是答案:D33. 以下哪个命令用于显示系统负载情况?A. uptimeB. topC. loadavgD. 以上都是答案:D34. 在Unix 中,用于进程管理的信号中,“终止进程”对应的信号是?A. SIGTERMB. SIGKILLC. SIGSTOPD. SIGCONT答案:A35. 要强制终止一个进程,使用以下哪个信号?A. SIGTERMB. SIGKILLC. SIGSTOPD. SIGCONT答案:B36. 以下哪个命令用于显示进程的树状结构?A. pstreeB. ps -efC. topD. killall答案:A37. Unix 中用于管道操作的符号是?A. |B. >C. <D. &答案:A38. 要将一个命令的输出作为另一个命令的输入,使用以下哪种方式?A. 重定向C. 后台运行D. 以上都不是答案:B39. 以下哪个命令用于在后台运行进程?A. nohupB. &C. bgD. 以上都是答案:D40. 在Unix 中,用于查看命令历史记录的命令是?A. historyB. cat ~/.bash_historyC. 以上都是D. 以上都不是答案:C41. 要重复执行上一条命令,使用以下哪个快捷键?A.!!B. ^C. EscD. Ctrl + R答案:A42. 以下哪个命令用于编辑文本文件?A. viB. vimC. nanoD. 以上都是答案:D43. Unix 中用于查找文本内容的命令是?A. grepB. findC. awkD. sed答案:A44. 要替换文本中的字符串,使用以下哪个命令?A. grepB. sedC. awk答案:B45. 以下哪个命令用于按列提取文本内容?A. cutB. pasteC. joinD. sort答案:A46. 在Unix 中,用于对文本进行排序的命令是?A. sortB. uniqC. wcD. tr答案:A47. 要统计文本的行数、单词数和字符数,使用以下哪个命令?A. wcB. countC. statD. size答案:A48. 以下哪个命令用于去除文本中的重复行?A. sort -uB. uniqC. distinctD. remove_duplicates答案:B49. Unix 中用于文本转换的命令是?A. trB. iconvC. 以上都是D. 以上都不是答案:C50. 要将大写字母转换为小写字母,使用以下哪个命令?A. tr 'A-Z' 'a-z'B. tr 'a-z' 'A-Z'C. lowerD. upper答案:A51. 以下哪个命令用于比较两个文件的差异?A. diffB. cmpC. md5sumD. sha1sum答案:A52. 在Unix 中,用于计算文件的校验和(如MD5)的命令是?A. md5sumB. sha1sumC. cksumD. 以上都是答案:D53. 要创建硬链接,使用以下哪个命令?A. lnB. linkC. hardlinkD. create_link答案:A54. 以下哪个命令用于创建符号链接?A. ln -sB. symlinkC. softlinkD. create_symlink答案:A55. Unix 中用于设置环境变量的命令是?A. exportB. setC. envD. declare答案:A56. 要查看所有环境变量,使用以下哪个命令?A. envB. printenvC. 以上都是D. 以上都不是答案:C57. 以下哪个命令用于查看系统时间?A. dateB. timeC. clockD. timer答案:A58. 在Unix 中,用于设置系统时间的命令是?A. date -sB. settimeC. timeconfigD. 以上都不是答案:A59. 要暂停一个正在运行的进程,使用以下哪个信号?A. SIGSTOPB. SIGCONTC. SIGTSTPD. SIGUSR1答案:C60. 以下哪个命令用于恢复被暂停的进程?A. SIGCONTB. fgC. bgD. 以上都是答案:D61. Unix 中用于查看进程资源使用情况的命令是?A. topB. ps -auxC. vmstatD. 以上都是答案:D62. 要查看系统内存使用情况,使用以下哪个命令?A. freeB. meminfoC. topD. vmstat答案:A63. 以下哪个命令用于查看系统CPU 信息?A. lscpuB. cpuinfoD. vmstat答案:A64. 在Unix 中,用于查看系统交换分区使用情况的命令是?A. swapon -sB. swapinfoC. free -mD. 以上都是答案:D65. 要启用交换分区,使用以下哪个命令?A. swaponB. enable_swapC. start_swapD. activate_swap答案:A66. 以下哪个命令用于禁用交换分区?A. swapoffB. disable_swapC. stop_swapD. deactivate_swap答案:A67. Unix 中用于查看文件系统inode 使用情况的命令是?A. df -iB. stat -fC. dumpe2fsD. tune2fs答案:A68. 要扩展文件系统的大小,使用以下哪个命令?A. resize2fsB. extendfsC. growfsD. expandfs答案:A69. 以下哪个命令用于检查和修复文件系统?A. fsckB. e2fsckC. xfs_repairD. 以上都是70. 在Unix 中,用于设置文件或目录的访问时间的命令是?A. touch -aB. touch -mC. touch -tD. touch -c答案:A71. 要设置文件或目录的修改时间,使用以下哪个命令?A. touch -aB. touch -mC. touch -tD. touch -c答案:B72. 以下哪个命令用于创建空文件?A. touchB. newfileC. create_fileD. make_file答案:A73. Unix 中用于分割文件的命令是?A. splitB. csplitC. 以上都是D. 以上都不是答案:C74. 要合并分割后的文件,使用以下哪个命令?A. catB. pasteC. joinD. merge答案:A75. 以下哪个命令用于计算文件的行数?A. wc -lB. count_linesC. line_countD. lines答案:A76. 在Unix 中,用于计算文件的字节数的命令是?A. wc -cB. sizeC. byte_countD. file_size答案:A77. 要计算文件的单词数,使用以下哪个命令?A. wc -wB. word_countC. count_wordsD. words答案:A78. 以下哪个命令用于将多个文件的内容按行合并到一个文件?A. catB. pasteC. joinD. merge答案:A79. Unix 中用于提取文件特定行的命令是?A. sedB. awkC. headD. tail答案:A80. 要查看文件的前几行内容,使用以下哪个命令?A. headB. topC. firstD. begin答案:A81. 以下哪个命令用于查看文件的后几行内容?A. tailB. bottomC. lastD. end答案:A82. 在Unix 中,用于将文件内容以列的形式显示的命令是?A. columnB. fmtC. prD. 以上都是答案:D83. 要对文件内容进行分页显示,使用以下哪个命令?A. moreB. lessC. pageD. 以上都是答案:D84. 以下哪个命令用于在文件中查找特定模式的行,并显示前后几行的内容?A. grep -AB. grep -BC. grep -CD. 以上都是答案:D85. Unix 中用于按照特定字段对文件内容进行排序的命令是?A. sort -kB. sort_by_fieldC. field_sortD. ordered_by_field答案:A86. 要对文件内容进行去重操作,同时保留唯一的行,使用以下哪个命令?A. sort -uB. uniq -uC. distinctD. unique答案:B87. 以下哪个命令用于在文件中查找并替换特定的字符串?A. sedB. awkC. grepD. find答案:A88. 在Unix 中,用于计算文件中特定字符串出现的次数的命令是?A. grep -cB. wc -lC. countD. frequency答案:A89. 要将文件中的制表符转换为空格,使用以下哪个命令?A. expandB. unexpandC. tab_to_spaceD. space_to_tab答案:A90. 以下哪个命令用于将文件中的空格转换为制表符?A. expandB. unexpandC. tab_to_spaceD. space_to_tab答案:B91. Unix 中用于将文件编码从一种格式转换为另一种格式的命令是?A. iconvB. convert_encodingC. encoding_convertD. change_encoding答案:A92. 要在文件中统计特定字符的个数,使用以下哪个命令?A. tr -dcB. count_charC. char_countD. number_of_char答案:A93. 以下哪个命令用于在文件中删除重复的相邻行?A. uniqB. sort -uC. distinct_linesD. remove_adjacent_duplicates答案:A94. 在Unix 中,用于将文件按照指定的分隔符分割成字段的命令是?A. cutB. splitC. field_splitD. divide_by_delimiter答案:A95. 要将多个文件按照相同的字段进行合并,使用以下哪个命令?A. joinB. mergeC. combineD. unite答案:A96. 以下哪个命令用于在文件中查找不匹配特定模式的行?A. grep -vB. not_matchC. mismatchD. no_match答案:A97. Unix 中用于在文件中查找并打印匹配行的上下文信息的命令是?A. grep -CB. context_grepC. grep_contextD. print_context答案:A98. 要在文件中查找以特定字符串开头的行,使用以下哪个正则表达式?A. ^stringB. string$C..*stringD. string.*答案:A99. 在Unix 中,用于在文件中查找包含特定字符串的行,不论其位置的正则表达式是?A. ^stringB. string$C..*string.*D. string答案:C100. 要在文件中查找以特定字符串结尾的行,使用以下正则表达式?A. ^stringB. string$C..*stringD. string.*答案:B。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UNIX系统管理-第九章:修复文件系统
目标
完成这一章,你将能做以下事情:
理解文件系统是如何进行更新操作的
理解sync是如何预防文件系统错误
列出文件系统错误的三个原因
使用fsck检查和修补文件系统
文件系统的维护
日常的维护
-检查文件系统的一致性
-执行文件系统备份
-监控磁盘的使用情况
系统管理员的一个主要的职责就是保护用户的数据的安全。
由于UNIX中数据通过文件系统的方式存储,系统会强制性检查文件系统的存储环境是否出现问题。
文件系统的完整性十分重要,系统管理员可以做许多工作来保护文件系统的完整性。
这一章,我们会学习如何使用fsck工具来检查和维护文件系统的完整性。
在开始之前,我们需要了解文件系统的更新是如何发生的。
文件系统的更新
当一个文件系统装载后,它的超级块被拷贝到内存中。
当拷贝完成之后,文件系统的标记被置为“dirty”。
所有的对超级块的更改首先要去更改这个拷贝。
当一个SYNC的系统调用使用的时候,磁盘上的拷贝才会被更新。
当一个文件系统被卸载的时候,所有的在内存中的数据会被写回到磁盘上,文件系统的标记被置为“clean"。
所有的对metadata进行的修改首先是修改其在内存中的拷贝,然后才会被写到磁盘上去。
一些metadata的修改是立即写到磁盘上,其它的则是在调用sync的时候才会被写到磁盘上。
举一个例子:rm myfile命令会引起以下的一些改变:
1.myfile的目录的条目被清除。
2.用来描述myfile的inode被释放
3.用来索引剩余数据块和剩余inode的映射图被更新
4.超级块中的剩余数据块的数量和inode的数量被更新
不幸的是,不是所有的metadata数据都是连续地存储在磁盘上的,所以它会进行一系列的写操作来完成这些处理过程,如果在进行这些过程中系统突然崩溃,就会使metadata数据产生不一致。
例如:如果myfile的目录条目已经被清除,但是inode还没有被释放,结果就是一个inode有一个链接,但是并没有目录结构指向这个inode。
这就是不一致的metadata。
内存缓冲区
用户写数据的时候,实际上并不立即发生写磁盘的动作,数据会被拷贝到一个内存的缓冲区里。
这个操作非常快,数据同inode信息一起,会在以后的一些时间被写到磁盘上,通常是在缓冲区满的时候和新需要清除一下缓冲空间的时候。
如果系统在还没有将缓冲区中的信息写到磁盘上去之前,系统关闭。
文件系统的一致性就会被破坏。
如果你察觉文件系统已经被破坏,你应该停止当前的工作。
使用缓冲区的优点和缺点:
使用缓冲区可以对磁盘进行均匀的存取,因为内核不需要知道磁盘I/O的产生的原因,内核只会将缓冲区中的数据写到磁盘,而不用去关心缓冲区数据的组成。
从磁盘I/O的观点来看,使用缓冲区,系统的设计会更简单。
通过使用缓冲区,应用程序会很容易地移植到其它的UNIX系统上去,因为不同的UNIX机器的磁盘I/O也许会不同,但是程序不需要了解这些。
它们只是写到缓冲区,而不用去考虑磁盘的设置方式。
使用缓冲区可以减少对磁盘的读写,这会提高整个系统的响应时间,换句话说,系统运行更快了。
重复利用缓冲区中的数据文件也能够加速系统的响应。
刷新缓冲区
sync
将缓冲区的内容写到磁盘
保持文件系统为最新
通常是通过syncer守护进程来激活
syncer
syncer是在系统启动的过程中自动启动。
syncer程序的语法为:
syncer[seconds]
数据在写磁盘上之前会先写被到一个缓冲区里。
而缓冲区写到磁盘会有一个延迟,直到:
系统需要缓冲区进行其它的操作
最后的块被修改
文件系统被卸载
sync命令被执行
系统关闭或者重启动
syncer
syncer通常是在系统启动的时候,在/sbin/init.d/syncer脚本文件中启动的,它的职责就是定时刷新缓冲区。
你不需要手工执行syncer命令,它会在系统启动的时候,自动通过/sbin/init.d/syncer 脚本执行。
sync
sync执行sync这个系统调用。
执行这个命令会刷新还没有写到磁盘上的系统缓冲区数据,包括修改的超级块,修改过的inode,和延迟的块I/O,这会确保在执行一个关键的操作如系统关闭之前,所有的文件修改都会被写到磁盘上去。
而你可以在任何时候手工执行这个命令。
sync会自动执行syncer守护进程周期执行的所有操作。
介绍fsck
为什么要运行fsck?
检查文件系统metadata的完整性
在需要的时候修补metadata数据的损坏
什么时候执行fsck?
在系统异常关闭的时候,会自动运行这个命令。
系统管理员怀疑文件系统被破坏的时候,也可以手工运行这个命令。
当操作系统非正常关闭的时候,文件系统的更改可能会丢失或者未完成。
fsck工具在系统崩溃或者未正常关闭的时候会自动运行,它会验证你的文件系统的完整性。
这个工具会试图修改任何能够识别的数据错误。
fsck在系统非正常关闭时会自动运行,但是你也可以在怀疑文件系统有错误的时候手工运行这个命令。
运行fsck
例子:在/dev/vg01/myfs2下运行fsck
1.mount -v
2.umount /dev/vg01/myfs2
3.fsck -F hfs /dev/vg01/rmyfs2
4 mount /dev/vg01/myfs2
5. 恢复任何被破坏的文件:
问题
fsck删除任何文件吗?
fsck重新连接任何文件吗?
运行fsck要进行的步骤:
1.mount -v
使用这个命令来判断每一个一个文件系统装载的目标。
和文件系统的类型,因为你在运行fsck的时候必须要知道文件类型。
2.umount /dev/vg01/myfs1
umount /dev/vg01/myfs2
fsck必须在一个静态的文件系统上运行,因此在执行命令之前要卸载文件系统.
3.fsck -F vxfs /dev/vg01/rmyfs1
fsck -F hfs /dev/vg01/rmyfs2
在运行fsck的时候,你必须要指明你要检查的文件系统的类型。
为了达到最优的性能,你也可以指明包含文件系统的逻辑卷或者磁盘的裸设备文件名。
如果fsck检查到一个文件系统不完整,它会报告这个问题,然后询问是否对其进行修复。
如果你回答”yes”,fsck会试图修正这个问题。
如果你回答“no”,fsck会忽略这个问题,继续进行检查。
一般都要选择"yes",让系统自动修复发现的问题。
4.mount /dev/vg01/myfs1
mount /dev/vg01/myfs2
在fsck完成之后,重新装载这个文件系统。
5.恢复任何被破坏的文件
为了修正文件系统的错误,fsck会删除一个或者多个文件,观察fsck输出的”REMOVE"的信息,确保从磁带上恢复受影响的文件。
fsck会重新链接孤儿文件。
如果和看到任何重链接的信息,检查文件系统的lost+found目录。
下一节会讨论lost+found目录的细节。
检查lost+found
存在每一个文件系统中
fsck会拷贝孤儿文件到这些目录下去。
在每一次fsck完成之后应该检查这个文件
在每一个文件系统的root目录下,都应该有一个lost+found目录。
这个目录是newfs命令创建的。
在使用fsck 命令检查这个文件系统的时候,你应该检查这个目录是否存在,如果不存在,你可以通过/usr/sbin/mklost_found 命令来重新创建这个目录。
fsck将所有检查有问题的文件放在lost+found目录下。
在fsck完成之后,你应该检查这个目录的内容。
这个目录中的文件可以被移动回它们原始的目录。
文件名是以inode号来命名,所以判断文件实际上是属于哪个文件十分困难。
但是你应该试图找到文件的属主。
对这个文件运行file命令。
如果这个文件包含文本,查看文本的内容来确定文件的属主。
如果文件包含可执行代码,你可检查是否有SCCS确认字符串,如果有,使用what命令可以列出SCCS信息。
如果这个文件没有SCCS字符串,你可以使用strings命令来查看文件的字符。
这些字符能帮助确认文件属主。
不要试图通过执行在lost+found目录中的可执行文件来找出这个文件是什么文件,因为它可能就是是破坏这个磁盘的文件。
例子:
# cd /myfs2/lost+found
# ls -l \#1743
# file /#1743
# strings \#1743
# move \#1743 new_file_name。