如何调整磁盘映像设备的大小?

end*_*ith 2 dd ntfs ntfs-3g ddrescue

我正在尝试减小备份驱动器映像的大小。原始磁盘有以下分区:

Model: ST916082 1A (scsi)
Disk /dev/sde: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
 1      32.3kB  65.7GB  65.7GB  primary   ntfs         boot
 2      65.7GB  160GB   94.4GB  extended               lba
 5      65.7GB  160GB   94.4GB  logical   ntfs
Run Code Online (Sandbox Code Playgroud)

图像是使用命令从逻辑分区创建的

> sudo ddrescue /dev/sde5 datapartition logfile

Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued:         0 B,  errsize:       0 B,  errors:       0
Current status
rescued:    94368 MB,  errsize:       0 B,  current rate:   23068 kB/s
   ipos:    94368 MB,   errors:       0,    average rate:   28839 kB/s
   opos:    94368 MB,     time from last successful read:       0 s
Finished
Run Code Online (Sandbox Code Playgroud)

ntfsresize -i -f datapartition 说:

ntfsresize v2012.1.15AR.5 (libntfs-3g)
Device name        : datapartition
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 26999992832 bytes (27000 MB)
Current device size: 94368605184 bytes (94369 MB)
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 26107 MB (96.7%)
Collecting resizing constraints ...
You might resize at 26106810368 bytes or 26107 MB (freeing 893 MB).
Please make a test run using both the -n and -s options before real resizing!
Run Code Online (Sandbox Code Playgroud)

所以看起来我已经调整了文件系统的大小以适应数据,但没有调整设备的大小?(这是 2 年前,我忘记了。)我需要使用 fdisk 调整设备大小,对吗?但是 fdisk 无法识别分区:

> fdisk -lu datapartition 

Disk datapartition: 94.4 GB, 94368605184 bytes
255 heads, 63 sectors/track, 11472 cylinders, total 184313682 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: 0x69205244

This doesn't look like a partition table
Probably you selected the wrong device.

        Device Boot      Start         End      Blocks   Id  System
datapartition1   ?   218129509  1920119918   850995205   72  Unknown
datapartition2   ?   729050177  1273024900   271987362   74  Unknown
datapartition3   ?   168653938   168653938           0   65  Novell Netware 386
datapartition4      2692939776  2692991410       25817+   0  Empty

Partition table entries are not in disk order
Run Code Online (Sandbox Code Playgroud)

cfdisk 也没有:

> cfdisk datapartition 

FATAL ERROR: Bad primary partition 1: Partition begins after end-of-disk
                      Press any key to exit cfdisk
Run Code Online (Sandbox Code Playgroud)

不过,我可以挂载分区并从中复制文件。如何调整设备大小?

Sté*_*las 5

如果只是分区的转储,则没有分区表。分区就是文件,你只需要缩小文件:

truncate -s 27000832000 datapartition
Run Code Online (Sandbox Code Playgroud)

(为了安全起见,27000832000 是 26999992832 向上舍入到下一个 MiB,例如,您是否希望将其压缩为某种qcow2格式或任何其他可安装的压缩格式)