我已经知道我需要做什么来解决这个问题;我只是不知道该怎么做。我希望有一些现成的工具可以自动执行此操作 - 但找不到任何工具。我接受 Rod 的回答,因为尽管没有直接解决我的问题,但它为扇区大小问题提供了非常好的背景,并使我相信该问题确实是分区对齐和寻址。对于那些遇到同样问题的人,在做任何事情之前,请彻底仔细地阅读它,包括评论。
我有一台电脑,需要更多空间,我买了一个新的 500GB 驱动器和一个 USB 外壳。很快我就注意到,如果我对机箱上的驱动器进行分区并将其移动到计算机上,它就无法识别这些分区(反之亦然)。我认为这是外壳的问题,并没有担心。
美好的一天,我的电脑决定不再打开。结果发现主板(没有品牌,只是上面印着一个很大的 MADE IN CHINA)已经死了。我一直将它用作文件服务器,而那个 500GB 的驱动器现在充满了我不能丢失的数据。我现在破产了,买不起新电脑,所以我唯一的希望是“有缺陷的”USB 外壳。
配备了几个 Linux 发行版、一台笔记本电脑、VirtualBox 和机箱,我对这个问题进行了取证分析。dmesg 报告分区大小超出驱动器末端。所以我查看了硬盘数据表,从头开始计算扇区数,用 dd 手动测试驱动器边界,一切看起来都很好,直到我启动 fdisk 并说:
Note: Sector size is 4096 (not 512).
Run Code Online (Sandbox Code Playgroud)
多么谦虚的fdisk。这个“笔记”是所有问题的根源。经过一番折腾,得出了以下结论:
USB 外壳没有缺陷。
至少现在已经死了的主板上的 SATA 控制器是一个“奇怪的”控制器。它没有向操作系统报告 4096 字节的扇区,因此操作系统愉快地使用 512 字节的扇区地址创建了 MBR。
现在,当我尝试访问分区时,操作系统会尝试在 4096 字节的扇区驱动器上使用基于 512 字节的地址,当然,这是行不通的。
那么,除了在十六进制编辑器上手动编辑 MBR 之外,如何更正 MBR 中的地址,使它们在 4096 字节扇区大小上有效,以及
分区未针对 4096 字节扇区对齐。除了复制进出另一个驱动器之外,还有一些工具可以用来对齐它们吗?(我没有备用驱动器),或者我是否需要创建一些工具将数据一次“转移”到一边一小块?分区是ext3。
谢谢!
我发现有一种聪明的方法可以使用 dd 在这个问题中就地移动分区:How to move a partition in GNU/Linux? …
我在硬盘上安装了 Windows 8,使用 UEFI 作为引导。HDD 具有以下 GPT 表:
DISKPART> list partition
Partizione ### Tipo Dim. Offset
--------------- ---------------- ------- -------
Partizione 1 Ripristino 300 Mb 1024 Kb
Partizione 2 Sistema 100 Mb 301 Mb
Partizione 3 Riservato 128 Mb 401 Mb
Partizione 4 Primario 390 Gb 529 Mb
Partizione 5 Primario 540 Gb 390 Gb
Run Code Online (Sandbox Code Playgroud)
(我很抱歉它是意大利语,但翻译很简单)。
我最近买了一个 SSD 驱动器,连接它并安装了一个新的 Windows 8。现在我有一个工作双引导,但 UEFI 分区在 HDD 上而不是 SSD 上。这是SSD分区列表:
Partizione ### Tipo Dim. Offset
--------------- ---------------- ------- -------
Partizione 1 Riservato 128 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 parted 调整分区大小,但它没有可用的“调整大小”命令
gchain@archbogchain@archbook:~$ sudo parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found …
Run Code Online (Sandbox Code Playgroud) 我有一个 LUKS 加密分区,它不属于 LVM 卷管理器。它位于硬盘驱动器的末尾,其大小为 250 GB,但我想再添加 50 GB。
我通常会使用 GParted 进行此类操作,但它不允许我对 LUKS 分区执行任何操作,甚至不能移动。
我怎样才能做到这一点而不丢失我的数据?(我没有其他地方可以备份)
这是我的(GUID)分区表:
GPT fdisk (gdisk) version 0.8.8
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): D630E573-66C0-4902-A4A2-A9D56AE54544
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 2048-sector …
Run Code Online (Sandbox Code Playgroud) hard-drive ×3
partitioning ×3
linux ×2
arch-linux ×1
ext4 ×1
gpt ×1
luks ×1
mbr ×1
ssd ×1
uefi ×1
windows-8 ×1