我正在尝试缩小一个分区以匹配另一个驱动器上的另一个分区的大小。我听说我必须先缩小文件系统才能匹配。我正尝试使用 来执行此操作resize2fs
,但如果我使用 中的值
cat /proc/partitions
major minor #blocks name
202 0 178257920 xvda
202 1 178249871 xvda1
202 32 47185920 xvdc
202 33 47184896 xvdc1
像这样
ubuntu@asdf:~$ sudo resize2fs /dev/xvda1 47184896
我明白了
resize2fs 1.42.13 (17-May-2015)
The containing partition (or device) is only 44562467 (4k) blocks.
You requested a new size of 47184896 blocks.
我在使用时遇到了类似的问题parted
。
$ sudo parted /dev/xvda
GNU Parted 3.2
Using /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) resizepart 1 94371839
Error: The location 94371839 is outside of the device /dev/xvda.
resizepart 1 94371839
如果我尝试对 '/dev/xvda1'执行,parted
我会得到Error: The location 94371839 is outside of the device /dev/xvda1.
它显然在设备的块范围内,如下图所示
sudo fdisk -l
Disk /dev/xvda: 170 GiB, 182536110080 bytes, 356515840 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
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/xvda1 * 16065 356515806 356499742 170G 83 Linux
这让我很抓狂。如何获取与 和 一起使用的文件系统大小和分区大小的正确resize2fs
值parted
?
答案1
resize2fs
没有误读块数。它只是使用 4k 块,而/proc/partitions
报告的是 1k 块。
356499742 x 512B 扇区 = 178249871 x 1K 块 = 44562467 x 4K 块
使用parted
,您可以配置要使用的单位。它似乎parted
默认使用 MB,因此您要求将 170GB 分区的大小调整为 94TB,它理所当然地拒绝了。
以下是正确做法之一:
parted /dev/sdb GNU Parted 3.2 使用 /dev/sdb 欢迎使用 GNU Parted!输入“help”查看命令列表。 (parted)帮助单元 unit UNIT 将默认单位设置为 UNIT UNIT 是以下之一:s、B、kB、MB、GB、TB、compact、cyl、chs、%、kiB、MiB、 GiB、TiB (分手)单位kiB (分开)打印 型号:ATA VBOX HARDDISK (scsi) 磁盘 /dev/sdb:524288kiB 扇区大小(逻辑/物理):512B/512B 分区表:msdos 磁盘标志: 编号 起始 结束 大小 类型 文件系统 标志 1 1024KB 205824千字节 204800kiB 主 ext3 2 205824kiB 410624kiB 204800kiB 主 ext3 (分手)调整大小部分 1 200000 警告:缩小分区可能会导致数据丢失,您确定要 继续? 是/否? 是 (分开)打印 型号:ATA VBOX HARDDISK (scsi) 磁盘 /dev/sdb:524288kiB 扇区大小(逻辑/物理):512B/512B 分区表:msdos 磁盘标志: 编号 起始 结束 大小 类型 文件系统 标志 1 1024KB 200000kiB 198977kiB 主 ext3 2 205824kiB 410624kiB 204800kiB 主 ext3