linux磁盘修复
⑴ 磁盘修复命令
linux磁盘修复相关命令:
badblocks
功能说明:检查磁盘装置中损坏的区块。
语 法:badblocks [-svw][-b ][-o ][磁盘装置][磁盘区块数][启始区块]
补充说明:执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。
参 数:
-b 指定磁盘的区块大小,单位为字节。
-o 将检查的结果写入指定的输出文件。
-s 在检查时显示进度。
-v 执行时显示详细的信息。
-w 在检查时,执行写入测试。
[磁盘装置] 指定要检查的磁盘装置。
[磁盘区块数] 指定磁盘装置的区块总数。
[启始区块] 指定要从哪个区块开始检查。
--------------------------------------------------------------------------------
cfdisk
功能说明:磁盘分区。
语 法:cfdisk [-avz][-c -h -s ][-P ][外围设备代号]
补充说明:cfdisk是用来磁盘分区的程序,它十分类似DOS的fdisk,具有互动式操作界面而非传统fdisk的问答式界面,您可以轻易地利用方向键来操控分区操作。
参 数:
-a 在程序里不用反白代表选取,而以箭头表示。
-c 忽略BIOS的数值,直接指定磁盘的柱面数目。
-h 忽略BIOS的数值,直接指定磁盘的磁头数目。
-P 显示分区表的内容,附加参数"r"会显示整个分区表的详细资料,附加参数"s"会依照磁区的顺序显示相关信息,附加参数"t"则会以磁头,磁区,柱面的方式来显示资料。
-s 忽略BIOS的数值,直接指定磁盘的磁区数目。
-v 显示版本信息。
-z 不读取现有的分区,直接当作没有分区的新磁盘使用。
--------------------------------------------------------------------------------
dd
功能说明:读取,转换并输出数据。
语 法:dd [bs=][cbs=][conv=][count=][ibs=][if=][obs=][of=][seek=][skip=][--help][--version]
补充说明:dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。
参 数:
bs= 将ibs( 输入)与obs(输出)设成指定的字节数。
cbs= 转换时,每次只转换指定的字节数。
conv= 指定文件转换的方式。
count= 仅读取指定的区块数。
ibs= 每次读取的字节数。
if= 从文件读取。
obs= 每次输出的字节数。
of= 输出到文件。
seek= 一开始输出时,跳过指定的区块数。
skip= 一开始读取时,跳过指定的区块数。
--help 帮助。
--version 显示版本信息。
--------------------------------------------------------------------------------
e2fsck(ext2 file system check)
功能说明:检查ext2文件系统的正确性。
语 法:e2fsck [-acCdfFnprsStvVy][-b ][-B ][-l ][-L ][设备名称]
补充说明:e2fsck执行后的传回值及代表意义如下。
0 没有任何错误发生。
1 文件系统发生错误,并且已经修正。
2 文件系统发生错误,并且已经修正。
4 文件系统发生错误,但没有修正。
8 运作时发生错误。
16 使用的语法发生错误。
128 共享的函数库发生错误。
参 数:
-a 不询问使用者意见,便自动修复文件系统。
-b 指定superblock,而不使用预设的superblock。
-B 指定区块的大小,单位为字节。
-c 一并执行badblocks,以标示损坏的区块。
-C 将检查过程的信息完整记录在file descriptor中,使得整个检查过程都能完整监控。
-d 显示排错信息。
-f 即使文件系统没有错误迹象,仍强制地检查正确性。
-F 执行前先清除设备的缓冲区。
-l 将文件中指定的区块加到损坏区块列表。
-L 先清除损坏区块列表,再将文件中指定的区块加到损坏区块列表。因此损坏区块列表的区块跟文件中指定的区块是一样的。
-n 以只读模式开启文件系统,并采取非互动方式执行,所有的问题对话均设置以"no"回答。
-p 不询问使用者意见,便自动修复文件系统。
-r 此参数只为了兼容性而存在,并无实际作用。
-s 如果文件系统的字节顺序不适当,就交换字节顺序,否则不做任何动作。
-S 不管文件系统的字节顺序,一律交换字节顺序。
-t 显示时间信息。
-v 执行时显示详细的信息。
-V 显示版本信息。
-y 采取非互动方式执行,所有的问题均设置以"yes"回答。
-------------------------------分页栏-------------------------------
ext2ed(ext2 file system editor)
功能说明:ext2文件系统编辑程序。
语 法:ext2ed
补充说明:ext2ed可直接处理硬盘分区上的数据,这指令只有Red Hat Linux才提供。
参 数:
一般指令
setdevice[设备名称] 指定要处理的设备。
disablewrite 将ext2ed设为只读的状态。
enablewrite 将ext2ed设为可读写的状态。
help[指令] 显示个别指令的帮助。
next 移至下一个单位,单位会依目前所在的模式而异。
prev 移至前一个单位,单位会依目前所在的模式而异。
pgup 移至下一页。
pgdn 移至上一页。
set 修改目前的数据,参数会依目前所在的模式而异。
writedata 在执行此指令之后,才会实际修改分区中的数据。
ext2进入3种模式的指令
super 进入main superblock,即Superblock模式。
group 进入指定的group,即Group模式。
cd 在inode模式下,进入指定的目录或文件,即Inode模式。
Superblock模式
go 进入指定的superblock备份。
setactive 将目前所在的superblock,复制到main superblock。
Group模式
blockbitmap 显示目前groupo的区块图。
inode 进入目前group的第一个inode。
inodebitmap 显示目前group的inode二进制码。
Inode模式
dir 进入目录模式。
file 进入文件模式。
--------------------------------------------------------------------------------
fdisk
功能说明:磁盘分区。
语 法:fdisk [-b ][-uv][外围设备代号] 或 fdisk [-l][-b ][-uv][外围设备代号...] 或 fdisk [-s ]
补充说明:fdisk是用来磁盘分区的程序,它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。
参 数:
-b 指定每个分区的大小。
-l 列出指定的外围设备的分区表状况。
-s 将指定的分区大小输出到标准输出上,单位为区块。
-u 搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址。
-v 显示版本信息。
--------------------------------------------------------------------------------
fsck.ext2(file system check-second filesystem)
功能说明:检查文件系统并尝试修复错误。
语 法:fsck.ext2 [-acdfFnprsStvVy][-b ][-B ][-C ][-I ][-l/L ][-P ][外围设备代号]
补充说明:当ext2文件系统发生错误时,可用fsck.ext2指令尝试加以修复。
参 数:
-a 自动修复文件系统,不询问任何问题。
-b 指定分区的第一个磁区的起始地址,也就是Super Block。
-B 设置该分区每个区块的大小。
-c 检查指定的文件系统内,是否存在有损坏的区块。
-C 指定反叙述器,fsck.ext2指令会把全部的执行过程,都交由其逆向叙述,便于排错或监控程序执行的情形。
-d 详细显示指令执行过程,便于排错或分析程序执行的情形。
-f 强制对该文件系统进行完整检查,纵然该文件系统在慨略检查下没有问题。
-F 检查文件系统之前,先清理该保存设备块区内的数据。
-I 设置欲检查的文件系统,其inode缓冲区的区块数目。
-l 把文件中所列出的区块,视为损坏区块并将其标示出来,避免应用程序使用该区块。
-L 此参数的效果和指定"-l"参数类似,但在参考损坏区块文件标示损坏区块之前,会先将原来标示成损坏区块者统统清楚,即全部重新设置,而非仅是加入新的损坏区块标示。
-n 把欲检查的文件系统设成只读,并关闭互动模式,否决所有询问的问题。
-p 此参数的效果和指定"-a"参数相同。
-P 设置fsck.ext2指令所能处理的inode大小为多少。
-r 此参数将忽略不予处理,仅负责解决兼容性的问题。
-s 检查文件系统时,交换每对字节的内容。
-S 此参数的效果和指定"-s"参数类似,但不论该文件系统是否已是标准位顺序,一律交换每对字节的内容。
-t 显示fsck.ext2指令的时序信息。
-v 详细显示指令执行过程。
-V 显示版本信息。
-y 关闭互动模式,且同意所有询问的问题。
--------------------------------------------------------------------------------
fsck(file system check)
功能说明:检查文件系统并尝试修复错误。
语 法:fsck [-aANPrRsTV][-t ][文件系统...]
补充说明:当文件系统发生错误四化,可用fsck指令尝试加以修复。
参 数:
-a 自动修复文件系统,不询问任何问题。
-A 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统。
-N 不执行指令,仅列出实际执行会进行的动作。
-P 当搭配"-A"参数使用时,则会同时检查所有的文件系统。
-r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。
-R 当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查。
-s 依序执行检查作业,而非同时执行。
-t 指定要检查的文件系统类型。
-T 执行fsck指令时,不显示标题信息。
-V 显示指令执行过程。
原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/170/11412170.shtml
⑵ Linux中怎样备份、破坏、修复MBR扇区故障
实验环境:
MBR引导记录位于物理硬盘的第一个扇区(512个字节),该扇区又称为主引导扇区(MBR扇区),除了包含系统引导程序的部分数据外,还包含了整个硬盘的分区表记录。当主引导扇区发生故障时,将可能无法进入引导菜单,或者因无法找到正确的分区位置而无法加载系统,通过该硬盘引导主机时很可能进入黑屏状态。下面我们就模拟实际环境对MBR扇区进行备份、破坏、修复过程。
详细步骤:
备份MBR扇区数据
1.由于MBR扇区中包含了整个硬盘的分区表记录,因此要把MBR备份到其他存储设备中,这里我们就添加另一块硬盘hdb进行备份。
2.在命令提示符下输入以下命令,进行备份操作。
[root@localhost
~]#mkdir
/backup
//创建挂载hdb1文件夹
[root@localhost
~]#mount
/dev/hdb1
/backup
//把hdb1挂载到backup文件夹下
[root@localhost
~]#dd
if=/dev/hdb1
of=/backup/hda.mar.bak
bs=512
count=1
//使用dd命令进行备份
模拟MBR扇区故障
这里仍然使用dd命令,认为地将MBR扇区记录覆盖。
[root@localhost
~]#dd
if=/dev/zero
of=/dev/hda
bs=512
count=1
//从空设备文件zero中读取512字节的数据,将其覆盖到第一块硬盘(hda),从而破坏MBR扇区中的数据。
从备份文件中恢复MBR扇区数据
1.把系统光盘放入光驱,重启linux系统。系统启动时按F2键,在boot:提示符下输入linuxrescue后回车,进入急救模式引导光盘中的linux系统。之后依次按回车键接收默认的语言、键盘格式,提示是否配置网卡是一般选择NO,然后系统会自动查找硬盘中的linux分区并尝试将其挂载到/mnt/sysimage目录(选择Continue确认并继续)。接下来需要特别注意:当出现是否初始化磁盘的警告窗口时,一定要选择NO,以免对硬盘数据造成进一步损坏。最后选择OK确认后将进入到带sh-3.1#提示符的Bash
Shell环境。
2.在提示符下输入以下命令:
⑶ linux中检测、修复磁盘的命令是啥
chkdsk。
chkdsk的全称是checkdisk,就是磁盘检查的意思。这个东西是当你的系统崩溃或者非法关机的时候由系统来调用检查磁盘的,也可以由手工通过命令行调用来检查某一个磁盘分区。
该工具基于被检测的分区所用的文件系统,创建和显示磁盘的状态报告。Chkdsk 还会列出并纠正磁盘上的错误。如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。
(3)linux磁盘修复扩展阅读
chkdsk检查适用情况:
1、windows7系统进入到欢迎界面,无法输入用户密码,即键盘没反应,但键盘操作bios、F8功能键等进入欢迎界面之前的操作都正常,可以进入安全模式;
2、系统启动过程中蓝屏,即蓝底白字屏幕显示,低端显示stop:0x???????字样,即蓝屏代码。
3、磁盘分区变成ram格式。
4、突然断电,重启电脑无法进入系统;
5、电脑运行速度非常慢,磁盘指示灯非常忙,杀毒软件检测不到病毒。
⑷ 【badblocks】Linux上使用badblocks命令检测、修复硬盘坏道
使用badblocks命令检测、修复硬盘坏道
https://blog.51cto.com/pynliu/1617921
badblocks检测磁盘坏道
https://www.cnblogs.com/itfenqing/p/7536623.html
badblocks 检查硬盘是否有坏道
https://blog.csdn.net/dapeng0112/article/details/37971923
⑸ linux操作系统故障处理-ext4文件系统超级块“can't read superblock”损坏修复
前几天在广州参加植物病毒学会议,一边听会一边开着TeamViewer远程连接实验室装有linux系统的工作站跑程序干活。有一天下午发现TeamViewer显示服务器离线,原来是因为施工导致停电。Anyway, 不重要,发微信让小青儿给我重启服务器,结果发现重启不了,大概就是这个界面。
怎么着都进不去图形界面,简而言之,工作站重启不了了。索性不管了,好好听报告,心想回到福州再收拾工作站。回到福州第一件事就是坐下来重启工作站,发现无论怎么折腾都进不去系统。
虽然图形界面进不去,好在还能够在命令行下进行操作。当看到 /bioinfor ,这个存放目录的路径下啥都没有的时候,这可是我所有的数据啊!如果这个盘里的数据没了,各个合作者还不得把我手撕了。想到这里,冷汗差点下来了。
于是开始寻找解决方法。
首先得想办法进入系统,在反复地 sudo reboot 都无法进入系统之后,通过 df -h 也看不到/dev/sda(也就是挂载到/bioinfor路径的磁盘)信息。然后猜测是不是因为磁盘以及分区表之类出现了错误导致不能进入系统。通过 sudo vi /etc/fstab 将除了系统安装盘之外的所有硬盘的挂载信息全部注释掉,再 reboot , 这时候果然可以进入图形界面系统了。但依然看不到 /bioinfor 盘下的数据。能够开机就让我放心了很多。通过 gparted 工具,能够看到/dev/sda硬盘里used space大概是1.7T,还剩下1.9T左右,这就表示我的数据还在。试图通过 sudo umount /dev/sda 先取消挂载,再重新 sudo mount /dev/sda /bioinfor 挂载到/bioinfor路径,结果报错。
报错信息显示:
搜索网页发现,有一个哥们经历了跟我一样的遭遇, 意外断电造成mount挂载硬盘报错 。所以,这次事故是因为意外断电,基本实锤了。
但到底什么是superblock呢?
继续搜索,直到读到一篇技术文章 linux操作系统故障处理,ext4文件系统超级快损坏修复 。本文可以忽略,但这篇技术文章得认真读读。里面讲解了磁头,磁道,柱面,扇区,以及硬盘容量等等概念,以及最重要的inode和block,Superblock(超级块)概念。
既然报错提示Superblock出了问题,那我们就应该从这里入手。linux系统提供了一个磁盘命令 fsck 来尝试对设备进行修复。但可惜,用这个命令的时候,都会提醒你,应该安装最新的 fsck 工具包。
提示如下:
根据这篇文章 E2FSCK: how to handle the “metadata_csum” error by advancing the e2fsck version beyond default installed version 的提示,需要安装1.43X的 e2fsck , 安装方法小结如下。
检验一下是否更新成功:
能够看到已经更新到1.43.5版本。
安装完之后,开始对磁盘进行修复,命令如下:
一般都能修复完毕,然后可以再进行取消挂载或者重新挂载的操作。看到数据都还完好无缺地在电脑上,还处于后怕的我赶紧掏出移动硬盘进行原始数据的备份。
本次debug结束
这篇技术日志对读者可参考性并不高,是因为应用场合实在是少,(试想谁会天天断电呢),但还是有一些体会和感悟:
⑹ 在windows中把linux的磁盘顶替了,还能恢复吗
之前遇到类似问题,我重装了win10系统后,发现linux系统进不去了,分区变成了空闲空间。
问题原因:linux引导文件被覆盖
解决方案:
使用之前制作linux(ubuntu举例)的引导盘,在bios中设置从引导盘启动。
启动后可以选择修复ubuntu这个选项中,有一个选项可以进入grub模式。或者直接选择ubuntu进入后,选择试用ubuntu,使用ctrl+alt+F3进入。
在grub rescue命令行下利用ls命令查看盘符情况。(hd0) (hd0,GTP1) (hd0,GTP2) 这样的,在这里可以清楚的看到有一个分区是你的ubuntu引导即efi挂载分区。
第三步若找不到可以通过 ls (hd0,GTP1)/grub 命令分别寻找,如果打印出一些文件信息,说明找到;如果没有,会报找不到文件的错误,需要继续试下一个盘符。
确定boot分区所在盘符后进行环境变量设置。在grub rescue命令行下输入:
set boot=(hd0,msdos8)
set prefix=(hd0,msdos8)/grub
insmod normal
normal
输入normal后,会进入ubuntu的引导
进入系统后需要进行grub设置
sudo update-grub
sudo grub-install /dev/sda
最后,先不要急着重启进入windows,再输下列指令进行更新
sudo update-grub
sudo apt-get update