在尝试格式化我的 USB 密钥时,我意外选择了 /dev/sda 并继续格式化磁盘。幸运的是,当 GParted 注意到驱动器当前已安装时,格式化被中断。但是,我再也看不到分区了(即使我重新启动 GParted,我仍然看到此信息):
我还没有重启,因为我害怕重启。目前,我可以正常使用我的文件系统,但我担心如果重启可能会发生一些不好的事情。我该怎么做才能解决这个问题?重启安全吗?
更新:
我尝试为 Windows 7 创建可启动的 USB 密钥,因此我单击了设备/创建分区表并选择“msdos”。然后,我尝试创建一个主分区 (NTFS),但由于 /dev/sda 已挂载,因此出现错误。我不确定在哪里可以找到确切的日志。以下是输出sudo fdisk -l
:
➜ ~ sudo fdisk -l
[sudo] password for olalonde:
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001db65
Device Boot Start End Blocks Id System
/dev/sda1 1 60801 488384001 7 HPFS/NTFS
Disk /dev/sdb: 7998 MB, 7998537728 bytes
255 heads, 63 sectors/track, 972 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005e98c
Device Boot Start End Blocks Id System
/dev/sdb1 1 972 7807558+ 7 HPFS/NTFS
正如我所说,我的文件系统已正确安装,因此我可以备份所有文件,但如果重新启动是安全的或者在重新启动之前有办法解决这个问题,我宁愿不经历那么漫长的过程......
更新2:
mount
和的输出cat /proc/mounts
:
➜ ~ mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
/home/olalonde/.Private on /home/olalonde type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_sig=ee352762b400fa23,ecryptfs_fnek_sig=70e5eee62e053b1b,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
gvfs-fuse-daemon on /home/olalonde/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=olalonde)
/dev/sda1 on /mnt type ext4 (rw)
➜ ~ cat /proc/mounts
rootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
none /proc proc rw,nosuid,nodev,noexec,relatime 0 0
none /dev devtmpfs rw,relatime,size=2005108k,nr_inodes=501277,mode=755 0 0
none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
/dev/disk/by-uuid/bbf66c3f-ae71-4389-9f83-282e95ce6ee9 / ext4 rw,relatime,errors=remount-ro,barrier=1,data=ordered 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0
none /var/run tmpfs rw,nosuid,relatime,mode=755 0 0
none /var/lock tmpfs rw,nosuid,nodev,noexec,relatime 0 0
none /lib/init/rw tmpfs rw,nosuid,relatime,mode=755 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
/home/olalonde/.Private /home/olalonde ecryptfs rw,relatime,ecryptfs_fnek_sig=70e5eee62e053b1b,ecryptfs_sig=ee352762b400fa23,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs 0 0
gvfs-fuse-daemon /home/olalonde/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0
/dev/sda1 /mnt ext4 rw,relatime,errors=remount-ro,barrier=1,data=ordered 0 0
更新 3:
我正在尝试使用testdisk
。有人能确认我做的是否正确吗?我是否应该单击那个看起来很吓人的“写入”?
(选定 N)
答案1
我无法复制您的场景——如果分区已挂载,无论是显式挂载(fstab/mount),还是隐式挂载(通过 Nautilus 等),GParted 不允许你在卸载之前在父设备上创建分区表。
我怀疑 GParted 已成功覆盖 /dev/sda 上的 MBR/分区表。重新启动将导致内容无法访问,因此暂时不要这样做。如果您做好准备,我相信 testdisk 应该能够恢复分区表。
应该有一种方法可以获取内存(内核)分区表布局 - 这就是您仍然可以访问内容的方式 - 但我记不起有简单的方法来做到这一点。
与此同时,至少备份关键的内容也许是个好主意......
答案2
我刚刚在虚拟机中使用fdisk
而不是重现了您的问题gparted
。
之前我有:
Device Boot Start End Blocks Id System
/dev/sda1 * 1 18 144553+ 83 Linux
/dev/sda2 19 2450 19535040 83 Linux
/dev/sda4 2451 2610 1285200 82 Linux swap / Solaris
然后我fdisk
删除了分区 4、2 和 1,并创建了一个覆盖整个磁盘的新主分区。然后我将类型更改为 NTFS (07) 并将其写入磁盘。
fdisk -l /dev/sda
然后报道:
Device Boot Start End Blocks Id System
/dev/sda1 1 2610 20964793+ 7 HPFS/NTFS
然后我运行“testdisk /dev/sda”,它几乎立即给出了一个分区列表,写入时报告为:
Device Boot Start End Blocks Id System
/dev/sda1 * 1 18 144553+ 83 Linux
/dev/sda2 19 2450 19535040 83 Linux
/dev/sda3 2451 2610 1285200 82 Linux swap / Solaris
唯一的区别是它移到/dev/sda4
了/dev/sda3
。虚拟机已成功重启。
对于您来说,由于 mount 显示您只有一个分区,/dev/sda1
所以testdisk
应该能够毫无问题地恢复它。
无论如何,testdisk
它都会为您提供是否将其结果写出来的选项,这样您就不会因为运行它而失去它。显然,您可能需要这样做sudo apt-get install testdisk
。
当然,如果可能的话,备份所有关键内容可能是明智之举。
答案3
你能做到吗:
sudo fdisk -l /dev/sda
这样您应该能够看到它是否仍然可以识别分区,例如:
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1171455 584704 83 Linux
/dev/sda2 1171456 3125247 976896 82 Linux swap / Solaris
/dev/sda3 3127294 15611903 6242305 5 Extended
/dev/sda5 3127296 13869483 5371094 83 Linux
/dev/sda6 13871104 15611903 870400 83 Linux
这是我在系统上得到的。如果它不再正确识别您的文件系统,那么我不确定您是否可以做更多的事情。
在这种情况下,我建议备份所有最重要的文件,因为您可能能够使用fdisk
或cfdisk
设置分区类型,然后用来fsck
检查文件系统。
但我不确定它是否还能修复你的分区。这样的事情真的很糟糕,我无意中输入了rm -rf /tmp /
一次,在我按下的瞬间,CTRL+C
我的 /bin 的一半已经被删除了,我不得不重新安装。
我希望我的建议能够为您指明正确的方向,并且您能够修复您的系统。
如果你遇到任何事情请告诉我。
更新 3 的答案:
我相信写入是可行的方法。它应该将分区类型和标志恢复为 gparted 之前的状态。但是我无法说明备份有多重要,以防万一出现问题。
'testdisk' 完成后再次运行'fdisk -l /dev/sda' 并发布输出。