如何让 mkntfs 将 ssd 识别为块设备?

如何让 mkntfs 将 ssd 识别为块设备?

我正在尝试做什么

我正在尝试使用 Ubuntu Desktop 14.04 LTS 上的 GParted 将分区从一个设备克隆到另一个较新的设备(如果包括我正在使用的设备,则总共有三个设备在运行)。我可以正常使用终端,但命令不正确。较新的设备比我要克隆的这个分区有更多空间,并且我创建了一个 msdos 分区表,因此我需要做的就是创建一个新的 ntfs 分区。

问题

GParted(repo 中的版本:0.18.0)无法将 ssd 识别为块设备。 不是块设备

我尝试了sudo mkntfs -Q -v -L -F "win7" /dev/sdb1uis 所说的加上 -F 来强制执行,但它回复说,Cannot understand the number of sectors '/dev/sdb1'.如果没有专家的帮助,我不太习惯在 CLI 中执行磁盘分区命令,而且我不确定强制执行是否正确。

信息/研究

其他问题

这个问题讨论了格式化驱动器的所有主要方法。这似乎是一个线索,但在阅读完文档后,我发现的主要内容是我可能能够使用 -F 强制写入非块设备,但我不确定这是否会按预期进行,因为据我所知,新的 SSD 实际上是一个块设备。

磁盘布局:

  • /dev/sda:这对于这个问题来说并不重要,只是它是我进行所有操作的主要 SSD 驱动器。
  • /dev/sdb:新 SSD;空,带有 msdos 分区表。我希望新的 ntfs 分区覆盖整个驱动器,以便以后可以将sudo ntfsclone -f --rescue --overwrite /dev/sdb1 /dev/sdc1旧的 ntfs 分区克隆到这个新分区。值得注意的是,这是暂时插入我的 DVD 驱动器使用的 SATA 电缆。我很确定这只是意味着速度变慢了,但其实是一样的,但我可能搞错了。完成后,我会切换 SATA 端口,但我对这部分、BIOS 和 GRUB 刷新很满意,所以我预计那时不会再出现问题。此外,其他分区没有备份,因此无需考虑。
  • /dev/sdc:这是我的旧磁盘硬盘。它速度不是很快,而且 ntfs 分区已经满了。我需要在更快的驱动器上创建一个更大的分区,然后停用它。

fdisk 输出:

dan@dan-box:~$ sudo fdisk -l

Disk /dev/sda: 256.1 GB, 256060514304 bytes
255 heads, 63 sectors/track, 31130 cylinders, total 500118192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007d2fd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   483571711   241784832   83  Linux
/dev/sda2       483573758   500117503     8271873    5  Extended
/dev/sda5       483573760   500117503     8271872   82  Linux swap / Solaris

Disk /dev/sdb: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d9497

   Device Boot      Start         End      Blocks   Id  System

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b8aef

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *        2048   184322047    92160000    7  HPFS/NTFS/exFAT
/dev/sdc2       184322048   245762047    30720000   83  Linux
/dev/sdc3       245764094  1953523711   853879809    5  Extended
/dev/sdc5       245764096   261386239     7811072   82  Linux swap / Solaris
/dev/sdc6       261388288  1953523711   846067712   83  Linux

ls -l /dev/sdb?

brw-rw---- 1 root disk 8, 17 Sep 28 07:15 /dev/sdb1

apt-缓存策略 ntfs-3g

dan@dan-box:~$ sudo apt-cache policy ntfs-3g
[sudo] password for dan: 
ntfs-3g:
  Installed: 1:2013.1.13AR.1-2ubuntu2
  Candidate: 1:2013.1.13AR.1-2ubuntu2
  Version table:
 *** 1:2013.1.13AR.1-2ubuntu2 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
        100 /var/lib/dpkg/status

解决方案

以下被接受的答案是我的解决方案:我格式化为 EXT4。它修复了 NTFS 驱动程序无法修复的问题,因此当我删除 EXT4 分区时,我能够格式化为 NTFS。

奖励材料

不幸的是,我现在正在进行克隆步骤,大约 25 分钟后,我已经有大约 50 个无法读取的扇区。我可能会在旧驱动器上启动 Windows,制作恢复 DVD,启动新 SSD,运行检查和修复等,然后快乐的乐趣就开始了。我将编写一个开源 Python 应用程序来解析我混乱的悲伤扇区中的文件名!:)

答案1

这个错误很奇怪。当然,这是一个块设备。也许只是一点小问题。

这听起来像个笑话,但说真的;您是否尝试过将其关闭然后再次打开?

检查 的输出。它应该以块设备ls -l /dev/sdb?开头。b

不过我可以告诉你为什么命令行调用失败。

mkntfs(来自手册页)的正确语法是:

mkntfs [options] device [number-of-sectors]

与您的调用进行比较

mkntfs -Q -v -L -F "win7" /dev/sdb1

得出的结果/dev/sdb1number-of-sectors

参数的顺序很重要!

因为我猜win7应该是分区标签,所以你需要转身-L -F

mkntfs -Q -v -F -L "win7" /dev/sdb1

尽管我不确定是否要强制执行它,但如果设备文件有问题。

顺便一提克隆兹拉是一款功能非常完备的磁盘映像、恢复和克隆工具。它可以自动为您完成所有您想做的事情。

相关内容