我已经知道我需要做什么来解决这个问题;我只是不知道该怎么做。我希望有一些现成的工具可以自动执行此操作 - 但找不到任何工具。我接受 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