我继承了一台机器,ext4
其驱动器上的文件系统为无分区(没有其他花哨的东西,没有 LVM 等)。
是否可以在此驱动器上创建分区表和保留现有的 ext4 文件系统吗? — 即,以某种方式稍微缩小分区,移动超级块,然后创建分区表?
(显然,调整大小可能存在风险,导致数据丢失等——这主要是一个学术问题。)
$ lsblk /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdc 8:32 0 54.6T 0 disk /data
$ tune2fs -l /dev/sdc
...
First block: 0
...
$ fdisk -l /dev/sdc
Disk /dev/sdc: 54.57 TiB, 60001666203648 bytes, 117190754304 sectors
Disk model: LOGICAL VOLUME
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 262144 bytes / 786432 bytes
$
答案1
这是非常棘手的,最好的建议是在尝试此类操作之前备份驱动器。通过复制驱动器上的所有内容,然后在分区后将其复制回来,这样做会容易得多。
如果您必须以这种方式尝试,那么从较高的层面来看,您需要:
- 使用 resize2fs 调整现有文件系统的大小。缩小现有分区将在以下位置创建额外的空间结尾(不是开始)
- 将整个文件系统移至右侧 - 远离驱动器的开头。 GPT 分区表至少需要 17k,但也许 1mb 更安全。 ddrescue 可以做到这一点。尽管如果新位置与旧位置重叠,请务必小心。您可能会不小心丢弃您的数据。
- 使用您选择的分区工具(例如:cfdisk)在您在步骤 2 中放置数据的位置创建一个分区。请勿格式化该分区!
同样,这是不可取的,我故意不给出命令指令,因为我不能确定你不会搞砸你的数据。