一台装 Windows XP 的 Asus 1005HA 上网本,启动 Windows 系统十多分钟,打开磁盘操作等数分钟,D盘(FAT32分区)属性显示0字节。D盘上有重要数据。
用 CDlinux 0.9.6.1 U盘系统加 CDL_AMOUNT=no (不自动挂载分区)参数启动上网本。手动挂载D盘(/dev/sda5),执行 df 命令,D盘显示 I/O 错误。但是 cd 命令进入D盘可以查看到数据,用 cp 命令将重要数据通过网络拷到其它机器备份。
卸载掉D盘,用 gparted 程序修复错误不行;fdisk 命令下删除此分区,重建vfat分区重启后,用mkfs.vfat 格式化此分区不行;
进入 Windows 下修复分区错误不行(据一位数据修复经验丰富的朋友曾讲,重要数据出错后不能对磁盘进行任何写入操作,包括Windows下的磁盘错误检测与修复程序!);
重新进入 CDlinux 下,用mkfs.ntfs 命令把D盘格式化 NTFS 格式成功,格式化时显示的是首先将D盘写零初始化(Initializing device with zeroes)。把备份的数据拷回D盘。
重新启动进入 Windows 下,用 Windows 自带的磁盘检测与修复程序对D盘进入检查没有问题(我曾经碰到过用 linux 下的磁盘查错程序 fsck 纠正 windows 下的分区把windows下正常的文件报告为出错的情况,可能跟我挂载磁盘的参数有关 http://www.learndiary.com/home/space-1-do-blog-id-3134.html 。所以虽然是在Linux下成功创建了 NTFS 分区并拷贝了数据,我仍然觉得在 Windows 下有必要重新再检测一下)。
删除备份在其他机器上的文件。将电脑交到朋友的手上时给他说电脑工作时不要剧烈振动,常备份重要数据,如备份到台式机(个人认为台式机比常常移动的上网本之类出故障的几率小一些)。
CDlinux 在这里起的作用是确认了D盘数据错误、拷贝出了其中的数据、格式化并创建了 NTFS 分区。虽然我觉得 Windows 的问题最好是用 Windows 的工具尤其是 Windows 系统自带的工具,但是在保证数据安全的情况下,用 Linux 系统来维护 Windows 系统也是一个可选项。如果你在碰到此类的情况用 Windows 的方法不能解决的话,在保证数据安全的情况下(不要写操作是基本要求吧)可以试一试 Linux 系统来维护。
竟然忘了在 mkfs.ntfs 格式化 ntfs 分区之前用 fdisk 把分区类型设为NTFS的,即分区类型为7(原为fat32分区的b)。虽然不知道这分区类型设错了究竟有什么妨害,而且,我发现好像用 fdisk 改变已有分区的类型Id不会对现有分区的数据造成损害。不过这些都是没有认真研究的。还是要把朋友的电脑里的那个分区类型改过来才行。改之前备份好这个分区的数据就是了。