从前有一个故事:

令和2年6月24日,白泠与往常一样回到家,坐在电脑桌前打开电脑,插上移动硬碟,准备开始晚上的工作。
白泠插上2TB硬碟之后,发现不能往磁盘里复制东西,整个磁盘变成了只读。

「这是小case」白泠心里这样子想。
因为他已经身经百战了,之前玩发霉派的时候也是这样,ntfs磁盘挂不上去,这个看上去非常好搞。

「只要把这块NTFS磁盘umount掉再重新mount一下就可以了吧」

于是白泠在计算机上输入sudo umount /media/user/2tbDisk,然后又输入sudo mount /dev/sdb /media/user/2tbDisk
结果计算机屏幕上刷地出现半屏幕的西洋字母,什么error、什么Warning、什么read-only balabala的。
白泠一下子就慌了,他心里想,总不会是ntfs-3g的锅吧??
于是他又输入sudo apt install ntfs-3g,将ntfs-3g安装好之后,又重新试着挂载了一下:sudo mount -t ntfs-3g /dev/sdb /media/user/2tbDisk

还是不行,依然报错。

白泠定睛一看,看到了其中有一行写着Failed to mount '/dev/sdb': Input/output error
他一搜,就搜到了csdn上的答案,然后胡乱复制粘贴了一通。结果还是不行,说要用什么chkdskbalabala的。
这就很奇怪了,chkdsk可是Windows下面的指令,Ubuntu上怎么可能有呢?

那没有办法了,只能把Windows平板拿来,插上去看看是怎么回事儿。
但这时候,更诡异的事情发生了,原来只有一个2TB大分区的磁盘,变成了大小不等的4个分区,里面的文件也全没了。

白泠酱慌了,他赶紧把磁盘拔了下来放一边,然后从冰箱里拿了一瓶果汁喝了一口冷静了一下。


果汁喝完后,白泠酱冷静下来分析了一下目前的状况:

1、一块NTFS磁盘插在Ubuntu上变成了只读
2、尝试用ntfs-3g挂载没用
3、尝试用ntfsfix修复没用
4、不知怎么搞的磁盘分区被改变了,里面的数据全部没了

白泠酱决定先从最紧迫的问题开始,把数据先弄回来。
他思考了一下,磁盘是在发现数据丢失的第一时间就被拔了下来,没有做任何操作了,
在这个分区被改变的时候也应该没有对磁盘抹零或者填充什么的(如果有这些操作电脑就不会执行得这么快了)
所以应该只要把分区表弄回来就可以了。

要弄回分区表,白泠酱决定用testdisk
testdisk是一个开源的免费软件,毕竟用这玩意儿不像DiskGenius那样又要破解,又要注册之类的。
他在键盘上输入sudo apt install testdisk && sudo testdisk,片刻之后,tstdisk就启动起来了。

控制台上出现了这样的画面:

TestDisk 7.1, Data Recovery Utility, July 2019
Christophe GRENIER <[email protected]>
https://www.cgsecurity.org


TestDisk is free data recovery software designed to help recover lost
partitions and/or make non-booting disks bootable again when these symptoms
are caused by faulty software, certain types of viruses or human error.
It can also be used to repair some filesystem errors.

Information gathered during TestDisk use can be recorded for later
review. If you choose to create the text file, testdisk.log , it
will contain TestDisk options, technical information and various
outputs; including any folder/file names TestDisk was used to find and
list onscreen.

Use arrow keys to select, then press Enter key:
>[ Create ] Create a new log file
 [ Append ] Append information to log file
 [ No Log ] Don't record anything

白泠选择了第一个Create,在新弹出来的一个界面里,他选择了刚才丢了数据的2t磁盘,然后又出现了这样的画面:

TestDisk 7.1, Data Recovery Utility, July 2019
Christophe GRENIER <[email protected]>
https://www.cgsecurity.org


Disk /dev/sdb - 2000 GB / 1862 GiB - WD My Passport 0820

Please select the partition table type, press Enter when done.
>[Intel  ] Intel/PC partition
 [EFI GPT] EFI GPT partition map (Mac i386, some x86_64...)
 [Humax  ] Humax partition table
 [Mac    ] Apple partition map (legacy)
 [None   ] Non partitioned media
 [Sun    ] Sun Solaris partition
 [XBox   ] XBox partition
 [Return ] Return to disk selection



Hint: None partition table type has been detected.

选择Intel/PC partition

TestDisk 7.1, Data Recovery Utility, July 2019
Christophe GRENIER <[email protected]>
https://www.cgsecurity.org


Disk /dev/sdb - 2000 GB / 1862 GiB - WD My Passport 0820
     CHS 243197 255 63 - sector size=512

>[ Analyse  ] Analyse current partition structure and search for lost partitions
 [ Advanced ] Filesystem Utils
 [ Geometry ] Change disk geometry
 [ Options  ] Modify options
 [ MBR Code ] Write TestDisk MBR code to first sector
 [ Delete   ] Delete all data in the partition table
 [ Quit     ] Return to disk selection





Note: Correct disk geometry is required for a successful recovery. 'Analyse'
process may give some warnings if it thinks the logical geometry is mismatched.

选择Analyse

TestDisk 7.1, Data Recovery Utility, July 2019
Christophe GRENIER <[email protected]>
https://www.cgsecurity.org

Disk /dev/sdb - 2000 GB / 1862 GiB - CHS 243197 255 63
Current partition structure:
     Partition                  Start        End    Size in sectors

 1 * HPFS - NTFS              0  32 33 243197  57 60 3906961408 [2tbDisk]

*=Primary bootable  P=Primary  L=Logical  E=Extended  D=Deleted
>[Quick Search]  [ Backup ]
                            Try to locate partition

白泠酱看到原来的2tbDisk分区出现在屏幕上,心中狂喜,分区表终于找回来啦!
于是他一路回车确定,最后重启电脑,再打开一看,数据都回来了!


这个故事总结出以下道理:

1、白泠酱还是太年轻

以为是小case就瞎搞,搞之前也不先想想是什么问题原因导致的。
比如说这个ntfs磁盘是从ubuntu安装好以来一直都是只读还是之前可以正常读写但是突然就变成了只读
两种情况解决方法完全不同,混淆在一起夏季把搞就不行。

作为没有想清楚就瞎搞的代价就是,磁盘只读的问题不但没有解决,反而还发现成数据丢失这样更严重的问题,,,

嗨呀

2、不要无脑复制粘贴网上给的指令

特别是CSDN和简书这两个大型垃圾场上的。

3、自己输入过什么东西最好记录一下

这个是之前在课上老师说的,今天这个事情过后就特别有感触。刚开始见到分区没了还以为是自己瞎复制粘贴,
把网上的一条ntfsresize指令也贴进去了,导致分区没了。
最后急忙把分区表恢复了之后又仔细回想了一下我就算无脑复制粘贴也不会到看都不看就把ntfsresize这种破坏性指令贴近去运行的程度吧?
然后history | grep ntfs看了一下

ntfs

从头到尾根本就很正常,根本没有什么ntfsresize。

你看,只有回看记录才能知道自己做了什么,没有做什么。
Ubuntu上有history帮你记着你曾经输入了什么,但是在一些比如路由器或者交换机上就没有这种功能,这时候就只能靠自己了。

4、坏习惯不要有……

其实今天这个问题只要把这个磁盘往Windows上一插,然后点一下安全退出,最后再插回Ubuntu就可以解决了…

因为小时候就嫌U盘要去点安全退出太麻烦所以都是直接拔…
这个坏习惯一直持续到现在,再加上今天自信心膨胀,再加上无脑复制粘贴指令最终出事。

平时在ACI看飞机坠机的故事不也是这样的么,飞机检修员偷懒有一点小问题当作没看见不修,飞行员有坏习惯图方便不按照流程操作,最后加上天公不作美,最终导致机毁人亡。

而这灾祸的诱因拆开来单独看的话看起来都是一件件微不足道的事情…


未解之迷:
看记录之后才知道我没有ntfsresize过,那么我的磁盘为什么会无端端变成四个分区呢?
我觉得这个锅最有可能是又ntfsfix来背,但是为什么ntfsfix会动我的分区……
这就想不明白了……

标签: none