如何在 debian linux 中扩展根分区(不是使用 LVM 创建的)

如何在 debian linux 中扩展根分区(不是使用 LVM 创建的)

我读过这个问题我可以在不卸载并重新安装 Linux(或丢失数据)的情况下调整根分区的大小吗?在我问之前。但我在创建根分区时没有使用 LVM,因此我不确定链接问题的解决方案是否适用于我的问题。

我使用的是 Debian Linux 发行版,名为CrunchBang,以下是我的笔记本电脑的主要信息,可能会有所帮助。
*@*:~$ uname -a
Linux * 3.2.0-4-686-pae #1 SMP Debian 3.2.60-1+deb7u1 i686 GNU/Linux
*@*:~$ sudo df -h
[sudo] password for *: 
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                  323M  259M   48M  85% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   294M  636K  294M   1% /run
/dev/disk/by-uuid/da3f8ae3-c79f-4025-accb-1f64bf59ba84  323M  259M   48M  85% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   1.8G   43M  1.7G   3% /run/shm
/dev/sda9                                               442G   15G  404G   4% /home
/dev/sda8                                               368M   11M  339M   3% /tmp
/dev/sda5                                               8.3G  6.8G  1.1G  87% /usr
/dev/sda6                                               2.8G  500M  2.2G  19% /var

*@*:~$ sudo fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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: 0x0005d608

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      684031      340992   83  Linux
/dev/sda2          686078   976771071   488042497    5  Extended
/dev/sda5          686080    18262015     8787968   83  Linux
/dev/sda6        18264064    24121343     2928640   83  Linux
/dev/sda7        24123392    36278271     6077440   82  Linux swap / Solaris
/dev/sda8        36280320    37058559      389120   83  Linux
/dev/sda9        37060608   976771071   469855232   83  Linux


*@*:~$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=217630,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=300952k,mode=755)
/dev/disk/by-uuid/da3f8ae3-c79f-4025-accb-1f64bf59ba84 on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1817380k)
/dev/sda9 on /home type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
/dev/sda8 on /tmp type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
/dev/sda5 on /usr type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
/dev/sda6 on /var type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
gvfs-fuse-daemon on /home/min/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)

*@*:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=da3f8ae3-c79f-4025-accb-1f64bf59ba84 /               ext4    errors=remount-ro 0       1
# /home was on /dev/sda9 during installation
UUID=a832e353-d0fc-4e87-81fa-d08c77f84e81 /home           ext4    defaults        0       2
# /tmp was on /dev/sda8 during installation
UUID=5f3e0eab-4f75-44a1-81af-c450d4ff301d /tmp            ext4    defaults        0       2
# /usr was on /dev/sda5 during installation
UUID=b4c895ff-cb26-4c65-bcd7-3f6cd986756e /usr            ext4    defaults        0       2
# /var was on /dev/sda6 during installation
UUID=8bedb184-389f-4295-9612-c28a94c81b1e /var            ext4    defaults        0       2
# swap was on /dev/sda7 during installation
UUID=976ec3fe-7b8e-436b-8c52-05be582f4e32 none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
#/dev/sdb4       /media/usb0     auto    rw,user,noauto  0       0

*@*:~$ sudo vgdisplay
  No volume groups found
*@*:~$ sudo lvdisplay
  No volume groups found

希望有人能给我一些建议或者资料供我参考,谢谢~

答案1

您的根文件系统似乎位于 /dev/sda1 上(尽管在您提供的信息转储之间,关于哪个分区具有 UUID da3f8ae3-c79f-4025-accb-1f64bf59ba84 的有用信息不可用。它可能完全位于另一张光盘上)。

在你的情况下,扩展是相当困难的,因为你有一个扩展分区直接跟随它。你可以做的是:

  1. 缩小 /home 文件系统
  2. 删除并使用相同的起始块重新创建/dev/sda9( /home) 以便为新分区腾出足够的空间
  3. 创建分区,创建 ext4 文件系统并从/dev/sda1那里复制所有内容
  4. 更新位于该分区上的 etc/fstab 并更新该分区的 UUID ,/然后update-grub重新启动并尝试选择新条目

另一种可能不太容易出错(因为不涉及调整大小)的路线是合并 sda1 和 sda5 的数据并制作 sda1 /boot

  1. 从CD启动
  2. 将 sda5 安装在 /tmp/sda5 上并执行以下操作:

    mkdir /tmp/sda5/usr
    mv /tmp/sda5/* /tmp/sda5/usr
    

    (这当然会抱怨无法移动usr到自身)

  3. 安装 sda1/tmp/sda1并复制从/tmp/sda1到 的所有内容/tmp/sda5,除了/tmp/sda1/boot

  4. 删除/tmp/sda1boot目录及其内容之外的所有内容
  5. /usr从 中删除条目并为(在 sda1 上)fstab创建一个条目。/boot
  6. /更新fstab 中的条目
  7. 运行update-grub,检查 boot.cfg 中的菜单项并重新启动

无论哪种情况,都不要在未对系统进行完整转储(使用dd)的情况下启动任何此操作,以便您可以恢复当前情况

购买新光盘并在其上创建分区布局(具有更大的sda1)、创建文件系统、复制各个分区内容并调整 fstab 和boot.cfg.

IMO 还应该尝试找出以这种方式设置此系统的人,并确保他们悔改自己的错误。

答案2

您可以扩展根分区吗?是的。但您无法在线执行*,您需要从 Live CD 或 USB 记忆棒启动。任何发行版都可以,debian、fedora、kali 等。

*:技术上可以做到,但可能会变得复杂;

当然,要做到这一点,你需要找到一些空间。如果不使用 LVM,您需要在根分区之后立即找到磁盘上的空白空间(sda1?sda8?sda9?从您共享的信息来看,这并不明显,因为 root 是通过 UUID 而不是通过 sd* 引用安装的 -- blkid可以向您展示此映射)。

您有两种选择: - 要么在扩展分区中找到空间并将根分区移至新分区,要么; - 使用备用磁盘,您可以在其中重新创建新的分区方案并将所有数据移入其中;

这样做有很多陷阱,因此我建议在尝试使其工作时保留磁盘的克隆。如果失败,您可以随时返回到开始的地方。

我知道这是相当高的水平,但你的问题可以通过多种方式解决。

相关内容