我有一个 Debian 系统,它是在很久以前安装的,使用安装程序建议的默认分区大小。结果发现 root 和 /usr 分区太小,不符合我的需要。例如,我没有足够的空间来安装新内核。
磁盘布局如下:
# df|grep sdb
/dev/sdb1 264445 235155 15637 94% /
/dev/sdb9 472007120 292643816 155386696 66% /home
/dev/sdb8 381138 27042 334418 8% /tmp
/dev/sdb5 4806904 4276636 286084 94% /usr
/dev/sdb6 2885780 845500 1893692 31% /var
# fdisk -l /dev/sdb
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c26ca
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 34 273073+ 83 Linux
/dev/sdb2 35 60801 488110927+ 5 Extended
/dev/sdb5 35 642 4883728+ 83 Linux
/dev/sdb6 643 1007 2931831 83 Linux
/dev/sdb7 1008 1053 369463+ 82 Linux swap / Solaris
/dev/sdb8 1054 1102 393561 83 Linux
/dev/sdb9 1103 60801 479532186 83 Linux
我想缩小 /home 分区(位于磁盘的“末尾”),方法是从开头切出大约 10 GB,然后给根分区和 /usr 各 5 GB。这意味着移动 /dev/sdb[2-8] 以便为根分区和 /usr 腾出更多空间。
该系统仅用于控制台。
有没有办法进行这些更改而不丢失 root、/usr、/var 和 /home 上的数据?
答案1
您的分区布局类似于此(如果我错了请纠正我):
| root | usr | var | tmp | home |
| extended |
要想做你想做的事,你必须:
- 将 /home 缩小到 10GB(或者可能向右移动 10GB);
- 向右移动10GB /var、/tmp 和 /usr;
- 将 /usr 扩大至 5GB;
- 将逻辑分区缩小至5GB;
- 增长 / 5GB
我不会说这是不可能的,但我发现有很多方法可能会出错。
我遇到了类似的情况,决定将所有内容备份到外部磁盘并重新创建所有内容。如果您有足够的资源,我建议您这样做,因为这样可以大大降低数据丢失的风险,并且可以节省大量时间(移动/缩小分区可能需要一些时间)。
如果你无法像我一样在终端系统中运行,我认为最好的工具是parted
。它允许你调整分区大小和移动分区。
笔记:如果您选择重新创建所有内容,我强烈建议您使用 LVM。在这种情况下,就无需移动分区,并且扩展/缩小会更加容易和安全。
编辑
正如 bodhi 所说,如果你可以使用带有 gparted(包含在 Ubuntu 中)的 Live CD/USB,那么你的任务将变得容易得多。GParted 允许你通过拖动来调整分区大小和移动分区。