8.8 fsck:检查并修复Linux文件系统

  fsck命令用于检查并修复文件系统中的错误,即针对有问题的系统或磁盘进行修复,类似的命令还有e2fsck命令。有关fsck的使用需要特别注意的是:

1)文件系统必须是卸载状态,否则可能会出现故障。
2)不要对正常的分区使用fsck,在不加参数的情况下,fsck会根据/etc/fstab进行文件系统检查,这相当于fsck -As参数的功能。
1)在fsck命令及后面的选项和文件系统里,每个元素之间都至少要有一个空格。
2)filesys可以是一个设备名(例如:/dev/sdal、/dev/sdb2)、一个挂载点(例如:/、/usr、/home)或一个文件系统的磁盘标签,也可以是UUID指定符(例如:UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd或LABEL=root)。

fsck 命令的参数选项及说明

-a    自动修复文件系统,不询问任何问题
-s    按顺序检查多个文件系统
-t    指定要检查的分区的文件系统类型
-A    依服/etc/fstab配置文件的内容,检查文件内所列的全部文件系统
-N    不执行指令,仅列出实际执行会进行的动作 
必须卸载文件系统后才能对其进行检查,否则可能会出现错误。平时没有必要使用这个命令检查磁盘,只有当系统开机显示磁盘错误时,才需要执行。 
系统开机通过fsck自检。 
Linux在开机过程中系统会自动调用fsck命令对需要自检的磁盘进行自检(如图8-3所示)。
系统开机之所以会通过fsck自检,就是因为系统开机过程中会优先读取/etc/fstab文件,当最后一列设置为1或2时,这个磁盘在开机时就会调用fsck进行自检,fstab的文件(man fstab看帮助)信息如下:
[root@cs6 ~]# cat /etc/fstab#
# /etc/fstab
# Created by anaconda on Sun May  5 23:10:33 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_cs6-lv_root /                       ext4    defaults        1 1
UUID=b7b58ad5-f612-4132-9e1f-5d55af6a9a58 /boot                   ext4    defaults        1 2
/dev/mapper/vg_cs6-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sdb1              /mnt                     ext4       defaults     0  0 

提示:管理员增加硬盘规划分区,一般最后一列都设置为0,即开机过程中不对磁盘检查,如果真有问题,可以在启动系统后人为进行检查。
Linux 断电后重启故障修复案例。 
当Linux系统遭遇突然断电等非正常关机操作时,很容易导致文件系统数据损坏,造成系统不能重新启动,此时,屏幕出现的提示可能是如下内容:
此时根据系统提示输入root用户的密码,注意而不是直接按Control-D继续,会再重启。
当输入正确的密码之后,正常会出现下面的提示:
(Repair filesystem)1 
此时就可以输入fsck或者fsck -A对磁盘进行修复检查,执行后可能出现一堆询问,按yes即可。 
(Repair filesystem) 1   # fsck -A #<==可能会等种一段时间或 fsck
(Repair filesystem) 2   # <=修复完毕会返回到这个提示符,此时就可以试着重启系统,看故障是否修复了。 
1)除了按照开机的提示进行修复外,也可以利用系统盘进入教援模式或单用户模式对系统故障进行修复。
2)千万不要在开机正常工作的情况下执行fsck来检查磁盘,因为这样有可能会导致正常的磁盘发生故障。
3)/etc/fstab中的最后一列数字为1或2时,当系统开机时就会读取fsck对这些系统磁盘进行自检。
4)不要在已经挂载的文件系统上执行fsck等磁盘修复命令,因为这样可能会导致故障。 

8.9 dd:转换或复制文件

dd命令具有复制文件、转换文件和格式化文本的功能。 

dd命令的参数选项及说明

if=<输入文件>    从指定文件中读取,全称为input file
of=<输出文件>    写入到指定文件,全称为output file
bs=<字节数>      一次读写的字节数,全称为block size
count=<块数>     指定复制block块的个数
ibs=<字节数>     一次读的字节,默认是512
obs=<字节数>     一次写的字节,默认是512
conv=<格式>     格式转换ucase把字母由小写转换为大写lcase把字母由大写转换为小写

将/dev/sda1分区复制(备份)到文件中

[root@cs6 ~]# dd if=/dev/sdb1 of=dev_sdb1.img  #<==使用if从/dev/sdb1中读取数据,使用of指定输出到当前日录的dev_sdb1.img。
835317+0 records in
835317+0 records out
427682304 bytes (428 MB) copied, 13.3079 s, 32.1 MB/s[root@cs6 ~]# ll -h dev_sdb1.img
-rw-r--r--. 1 root root 408M May 11 15:20 dev_sdb1.img 

删除/dev/sdb1分区数据

下面的实验很危险,请使用虚拟机操作,并提前做好快照。
从/dev/zero设备读取数据,写入或覆盖/dev/sdb1的数据:
[root@cs6 ~]# dd if=/dev/zero of=/dev/sdb1         #<==/dev/zero是一个特殊的设备,相当于什么都没有。
dd: writing to `/dev/sdb1': No space left on device    #<==提示写满了。
835318+0 records in
835317+0 records out
427682304 bytes (428 MB) copied, 1.77188 s, 241 MB/s#/dev/zero是0字符设备,可产生连续不断的特殊数据流,生成的文件为特殊格式的数据文件(二进制)。[root@cs6 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_cs6-lv_root26G  1.3G   24G   5% /
tmpfs                 931M     0  931M   0% /dev/shm
/dev/sda1             477M   28M  424M   7% /boot
/dev/sdb1              16Z   16Z  389M 100% /mnt/data1
[root@cs6 ~]# ls /mnt/data1可以看到,上面的/mnt/data1分区被清空了,此时系统已经遭到破坏。这种情况千万不要重启系统,/mnt/data1分区受损是无法启动系统的,应该继续下面的恢复操作。

用范例8-19的备份恢复范例8-20删除的分区数据。
[root@cs6 ~]# dd if=dev_sdb1.img of=/dev/sdb1
835317+0 records in
835317+0 records out
427682304 bytes (428 MB) copied, 1.6525 s, 259 MB/s
[root@cs6 ~]# ls /mnt/data1
1.html  2.html  3.html  4.html  5.html  lost+found

要特别注意if、of参数,如果位置写反了,就会出大问题。

生成任意大小的测试文件

[root@cs6 ~]# dd if=/dev/zero of=test.data bs=1M count=2    #<= 从/dev/zero读取数据写入到test,dita,生成文件test,data的大小为bs*count=1M*2=2M;
2+0 records in
2+0 records out
2097152 bytes (2.1 MB) copied, 0.11628 s, 18.0 MB/s
[root@cs6 ~]# ll -h test.data
-rw-r--r--. 1 root root 2.0M May 11 15:27 test.data

制作Linux系统的ISO镜像

在Windows系统里制作光盘的ISO镜像,还需要安装其他软件。但在Linux系统中只需要dd命令就足够了。
在做实验时,如果需要将CentOS的完整系统镜像上传到Linux系统中,一般使用winSCP或Xshell等工具,但这是通过网络传输的方式,上传速度受限于网络带宽。此时可以使用dd命令,将从光驱读取的镜像复制到系统中,相当于光驱与磁盘对拷。
将光盘放入光驱之后,需要确保光驱可以正常读取,然后执行如下命令即可实现将光盘复制到Linux硬盘的操作:
[root@cs6 ~]# ls /dev/cdrom
/dev/cdrom
[root@cs6 ~]# dd if=/dev/cdrom of=centos6_10.iso
831488+0 records in
831488+0 records out
425721856 bytes (426 MB) copied, 49.5612 s, 8.6 MB/s
#<==传输速度取决于光驱与磁盘之间的读写速度,可以看到这种方式的传输速度远远大于网络传输速度。
[root@cs6 ~]# ll -h centos6_10.iso
-rw-r--r--. 1 root root 406M May 11 15:32 centos6_10.iso

使用dd复制文件并进行格式转换的例子。

[root@cs6 ~]# cat test.txt
I love linux www.wenyule.top
[root@cs6 ~]# dd if=test.txt conv=ucase of=test.test_u
0+1 records in
0+1 records out
29 bytes (29 B) copied, 0.00036375 s, 79.7 kB/s
[root@cs6 ~]# cat test.test_u
I LOVE LINUX WWW.WENYULE.TOP 

8.8-9 fsck、dd相关推荐

  1. HTML的dl、dt、dd标记制作表格对决Table制作表

    不但让网站降低了开发和维护的成本,而且代码也更语义化了.但是,并不是说table从此消失了,它仍然被很多人用来作为网页中数据表现的必需品,比如个人信息数据列表等.事实上,使用HTML的dl.dt.dd ...

  2. html中td,dd属性,HTML的dl、dt、dd标记制作表格对决Table制作表过

    html中,dl和dd和dt标签是什么意思,什么时候需要用定义列表的意思 一般用在图文并排的时候 应网友提问. html中,dl,dt,dd怎么使用 1,定义: 是一组合标签,使用了dt dd最外层就 ...

  3. Linux笔记 No.19---(swap分区、dd命令、mail发送邮件、定时计划任务at和crontab)

    文章目录 一.swap分区 (一)查看Swap分区大小 (二)交换分区的创建 1.以分区形式创建 2.以文件形式创建 (三)swap分区的启动与关闭 (四)swap 优先级 二.dd命令 三.利用ma ...

  4. 小猿圈web前端讲解dl、dt、dd标签

    于web前端工作者以及正在学习前端的同学来说dl.dt.dd标签一定不陌生的,今天小猿圈web前端讲师就给大家讲解一下dl.dt.dd标签用途等问题. dd.dt标签是是列表用的. 我们平时常用的是& ...

  5. linux umount swap,挂载、卸载、free查看内存情况、创建交换分区、回环设备、dd命令、自动挂载、fuser...

    挂载.卸载 分区.格式化创建了文件系统后就可以挂载了 挂载:将新的文件系统关联至当前根文件系统 卸载:将某文件系统与当前根文件系统的关联关系移除 mount挂载 使用方法: mount 设备 挂载点 ...

  6. 解决kindeditor在线编辑器 过滤dl、dd、dt的两种方法

    <div id="operate"> <dl> <dt>数字遗产保险箱操作方式</dt> <dd>数字遗产保险箱是一个具 ...

  7. Linux文件处理命令 file、mkdir、grep、dd、mv、diff

     file 1.  作用 file通过探测文件内容判断文件类型,使用权限是所有用户. 2.  格式 file [options]  文件名 3.  [options]  主要参数 -v:   在标准输 ...

  8. 9、HTML:有序列表(ol),无序列表(ul),描述列表(dl、dt、dd)详解

    1.什么是列表 什么是列表? 什么是有序列表? 什么是无序列表? 上面写的 3 句话就是一个列表,你懂得... 2.有序列表 有序列表:英文叫做 ordered list,所以标签也是取这个词组的首字 ...

  9. 保姆级swap分区详解!手把手带你创建swap分区(两种方式,建议收藏)涉及fdisk、gdisk、df、parted、partprobe、mkswap、swapon、free、dd、od等命令

    Swap分区的详解 && 创建 什么是swap分区? 方法一:使用物理分区创建Swap分区 1. 利用fdisk / gdisk在磁盘上划出一个分区 1.1 lsblk -- 查看本机 ...

最新文章

  1. valorant服务器维护啥情况,valorant连不上服务器怎么办 valorant连不上服务器解决方法介绍...
  2. SSM-Spring+SpringMVC+MyBatis整合案例从0到1
  3. css中光标的设置,CSS Cursors(光标)
  4. [js高手之路]从原型链开始图解继承到组合继承的产生
  5. percona-toolkit工具包安装
  6. 三、Vue组件化开发学习笔记——组件化的基本步骤、全局组件和局部组件、父组件和子组件、注册组件的语法糖、模板分离写法、组件的数据存放
  7. (2)PCIE简介(学无止境)
  8. 为什么需要消息队列(MQ)
  9. DNF怎么查看服务器状态,dnf显示服务器读取中进不去怎么办 dnf显示服务器读取中进不去解决方法...
  10. 12. Window alert() 方法
  11. 入行GIS圈N年,看看资深GISer如何进行场景绘制?
  12. 98点人脸关键点检测算法
  13. 微信开放平台第三方解密失败
  14. 大学生搭建自己的web项目服务器心得
  15. 一剪梅·红藕香残玉簟秋
  16. 爬虫爬评书吧_历史故事爬虫
  17. flashfxp连接失败,flashfxp连接失败怎么办
  18. python 解析excel模板_python 解析Excel
  19. const的意义及作用
  20. Sundot实习项目——高考志愿填报系统

热门文章

  1. python闭包的原理_web前端:js 闭包原理
  2. pythonos模块使用方法_python os模块使用方法
  3. pc 图片预览放大 端vue_移动端Vue.js的图片预览组件,支持放缩、滑动功能!
  4. Matplotlib入门
  5. nginx安装配置http、tcp代理
  6. 十七、Pytorch的安装和使用
  7. 自然语言处理之词向量模型(三)
  8. WOC?老板让我从Word中复制出1000张图片?
  9. 带你玩转Pandas
  10. 他来阿里 4 年,刻苦奋斗、稳扎稳打终于爬到 P7 ,他说一定要感谢这几个公众号的指导!...