最近我买了新的 sshd 来替换笔记本上的旧 sshd,但我遇到了问题。我在新电脑上安装了 Ubuntu 15.10,然后把旧的放在我有的 USB 盒上,但是 USB 上的磁盘没有分区(我尖叫了 5 分钟,因为我不能丢失数据)。
因此,我将旧磁盘移回磁盘托架内,并将新磁盘放入 USB 盒中,我的所有数据都完好无损,但 USB 上的磁盘显示没有分区。
USB 情况下的两个磁盘都正确显示型号和工厂,但不显示分区。情况良好,使用没有 GPT/EFI 分区的旧硬盘进行测试。
如何安装外部磁盘以便传输文件?
命令输出:
$ sudo blkid /dev/sdb
/dev/sdb: PTTYPE="PMBR"
$ sudo parted /dev/sdb print
Error: /dev/sdb: unrecognised disk label
Model: ST1000LM 014-1EJ164 (scsi)
Disk /dev/sdb: 1000GB Sector size (logical/physical): 4096B/4096B
Partition Table: unknown Disk Flags:
$ sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.0
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: not present
答案1
尝试谷歌搜索恢复丢失的分区。一种产品是http://findandmount.com/。它说即使主引导记录丢失了分区,它也可以找到文件系统。我还记得使用过的产品http://www.ultimatebootcd.com/做同样的事情。我只是不记得是哪个产品了。
答案2
尝试这个命令
sudo apt-get install exfat-fuse exfat-utils
答案3
注意这部分:
Sector size (logical/physical): 4096B/4096B
该磁盘能够使用 4KiB 块。我猜测笔记本电脑中的 USB 外壳和内部 SATA 控制器正在使用不同的策略来处理此问题:一种将它们转换为传统的 512 字节块,另一种可以本地使用新的块大小。
我猜测当磁盘位于笔记本电脑的磁盘托架中时,您将得到以下输出:
Sector size (logical/physical): 512B/4096B
对于 GPT 分区方案,这成为一个问题:GPT 规范规定分区表应从块 #1 开始。块 #0 保留用于“保护性 MBR”,仅允许旧系统识别正在使用的磁盘,即使它们只理解 MBR 样式的分区。
但是,如果您使用模拟 512 字节块对磁盘进行分区,然后切换到本机模式(例如,通过将磁盘从内部控制器移动到 4 KiB 感知 USB),则 512 字节块 #1 将成为 4 的第二个八分之一。 KiB 块#0。
分别地,如果您在对磁盘进行分区时最初使用本机 4 KiB 块,然后切换到模拟 512 字节块,则 GPT 分区表现在从块 #8 开始。
不幸的是,在不重新分区的情况下解决您的情况的唯一方法是找到一个旧的外部 USB HDD 适配器,专门用于不能使用 4 KiB 块,因此它会触发磁盘的内置 512 字节扇区模拟,就像笔记本电脑的内部 SATA 控制器一样。
使用 Linux 内核版本 4.14 或更高版本(或者使用具有这个补丁向后移植),可以切换逻辑块大小。如果您还有一个losetup
版本这个补丁,您可以将磁盘插入现有的 USB 适配器,然后说:
losetup -P -b 512 /dev/loop0 /dev/sdb
允许您/dev/sdb
通过/dev/loop0
使用不同的逻辑块大小进行访问。分区将显示为/dev/loop0pN
N 为分区号,或者如果您的发行版尚不支持该方案,您可以省略该-P
选项并使用kpartx
device-mapper-multipath 包中的工具:
kpartx -a /dev/loop0
...自动为循环设备上的每个分区创建映射,命名为/dev/mapper/loop0pN
.
然后,您可以像往常一样安装这些分区设备,只是使用不同的设备名称。
卸载分区设备后,撤消此设置的过程是:
kpartx -d /dev/loop0 # only if the use of kpartx was needed
losetup -d /dev/loop0