从 Ubuntu 12.10 升级到 13.10 后,由于/boot
分区只有 54MB 大小,升级过程在启动后立即中止。服务器有 2 个硬盘,每个硬盘有 2 个分区,通过 RAID1 连接。由于服务器位于数据中心,因此无法使用实时系统磁盘启动gparted
。通过网络加载的救援系统不会访问硬盘(fdisk -l
那里是空的)。
问题是:
我怎样才能将/boot
其放大,以便初始 RAM 磁盘可以容纳进去(建议:300MB)?
do-release-upgrade
显示如下:
Not enough free disk space
The upgrade has aborted. The upgrade needs a total of 55.2 M free
space on disk '/boot'. Please free at least an additional 29.2 M of
disk space on '/boot'. Empty your trash and remove temporary packages
of former installations using 'sudo apt-get clean'.
uname -r
显示:3.5.0-47-generic
dpkg -l linux-im*
显示如下:
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-======================================-========================-========================-=================================================================================
un linux-image <none> (no description available)
un linux-image-2.6 <none> (no description available)
un linux-image-2.6.24-16-server <none> (no description available)
un linux-image-2.6.24-23-server <none> (no description available)
un linux-image-2.6.24-24-server <none> (no description available)
un linux-image-2.6.24-25-server <none> (no description available)
un linux-image-2.6.24-28-server <none> (no description available)
rc linux-image-2.6.32-32-generic-pae 2.6.32-32.62 i386 Linux kernel image for version 2.6.32 on x86
rc linux-image-2.6.32-45-generic-pae 2.6.32-45.104 i386 Linux kernel image for version 2.6.32 on x86
rc linux-image-2.6.32-46-generic-pae 2.6.32-46.108 i386 Linux kernel image for version 2.6.32 on x86
rc linux-image-2.6.32-47-generic-pae 2.6.32-47.109 i386 Linux kernel image for version 2.6.32 on x86
rc linux-image-2.6.32-48-generic-pae 2.6.32-48.110 i386 Linux kernel image for version 2.6.32 on x86
rc linux-image-2.6.32-53-generic-pae 2.6.32-53.115 i386 Linux kernel image for version 2.6.32 on x86
rc linux-image-2.6.32-54-generic-pae 2.6.32-54.116 i386 Linux kernel image for version 2.6.32 on x86
rc linux-image-2.6.32-55-generic-pae 2.6.32-55.117 i386 Linux kernel image for version 2.6.32 on x86
un linux-image-3.0 <none> (no description available)
ii linux-image-3.5.0-47-generic 3.5.0-47.71 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-extra-3.5.0-47-generic 3.5.0-47.71 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-generic 3.5.0.47.63 i386 Generic Linux kernel image
ii linux-image-generic-pae 3.5.0.47.63 i386 Transitional package
ls -la /boot
显示如下:
total 26028
drwxr-xr-x 4 root root 2048 Mar 1 14:24 .
drwxr-xr-x 26 root root 4096 Mar 1 14:23 ..
-rw------- 1 root root 2324217 Feb 19 01:28 System.map-3.5.0-47-generic
-rw-r--r-- 1 root root 862198 Feb 19 01:28 abi-3.5.0-47-generic
-rw-r--r-- 1 root root 154687 Feb 19 01:28 config-3.5.0-47-generic
drwxr-xr-x 2 root root 1024 Mar 1 14:23 grub
-rw-r--r-- 1 root root 18016141 Mar 1 14:24 initrd.img-3.5.0-47-generic
drwx------ 2 root root 1024 Jul 30 2011 lost+found
-rw------- 1 root root 5175536 Feb 19 01:28 vmlinuz-3.5.0-47-generic
df -h
显示如下:
Filesystem Size Used Avail Use% Mounted on
/dev/md1 458G 161G 275G 37% /
udev 2.0G 4.0K 2.0G 1% /dev
tmpfs 809M 304K 809M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 2.0G 0 2.0G 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/md0 54M 26M 25M 51% /boot
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: 0x00024aac
Device Boot Start End Blocks Id System
/dev/sda1 * 63 112454 56196 fd Linux raid autodetect
/dev/sda2 112455 2216969 1052257+ 82 Linux swap / Solaris
/dev/sda3 2216970 976768064 487275547+ fd Linux raid autodetect
Disk /dev/sdb: 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: 0x0002518c
Device Boot Start End Blocks Id System
/dev/sdb1 * 63 112454 56196 fd Linux raid autodetect
/dev/sdb2 112455 2216969 1052257+ 82 Linux swap / Solaris
/dev/sdb3 2216970 976768064 487275547+ fd Linux raid autodetect
Disk /dev/md1: 499.0 GB, 498970066944 bytes
2 heads, 4 sectors/track, 121818864 cylinders, total 974550912 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: 0x00000000
Disk /dev/md1 doesn't contain a valid partition table
Disk /dev/md0: 57 MB, 57475072 bytes
2 heads, 4 sectors/track, 14032 cylinders, total 112256 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: 0x00000000
Disk /dev/md0 doesn't contain a valid partition table
cat /proc/mdstat
显示如下:
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
56128 blocks [2/2] [UU]
md1 : active raid1 sdb3[1] sda3[0]
487275456 blocks [2/2] [UU]
unused devices: <none>
lspci -v | grep RAID
显示如下:
01:0e.0 RAID bus controller: Broadcom BCM5785 [HT1000] SATA (Native SATA Mode) (prog-if 05)
答案1
你可以删除当前内核(sudo apt-get purge linux-image-*
),然后,无需重启安装最新内核(sudo apt-get install linux-image-generic
)。这应该工作[1],但如果没有,您将无法启动系统。
另一个解决方案是使用Ksplice 上行轨道,它允许您更新内核而无需重新启动。唯一的问题是免费版本仅支持 Ubuntu Desktop,因此您必须为该服务付费,但可能在服务器上使用桌面版本的方法。
1.“Ubuntu 很高兴地删除了我的(正在运行的)内核”Ubuntuforums.org
答案2
我有一个建议的解决方案,但我强烈建议您在摆弄服务器之前先在本地机器或虚拟机上尝试它,特别是当您无法物理接触它时。
需要注意的是:
- 卸载
/boot
文件系统。 - 禁用交换空间(
sudo swapoff /dev/sda
对于 也同样如此/dev/sdb
)。 - 使用
fdisk
或parted
删除两个交换分区,然后重新创建大小更小、起始点更靠后的分区。“较靠后的起始点”部分至关重要,因为您需要在分区 1 和 2 之间留出间隙。此外,请确保两个磁盘上的起始点相同。 - 使用
fdisk
(不是parted
),删除分区 1/dev/sda
并重新创建起点完全相同以及更晚的终点。这可能有点棘手。两个磁盘上的分区 1 的起始点都是扇区 63,现代工具可能不愿意创建该扇区。因此,您可能需要挖掘旧版本才能fdisk
使其正常工作。 - 在保存更改之前,验证新的第一个分区的起点是否与现在的相同——扇区 63。如果不是,则中止没有保存更改。(您可以
fdisk
通过键入q
或按 Ctrl+c 来执行此操作,但parted
只要您键入命令进行更改,磁盘上就会发生更改,这就是为什么我说用 来执行此操作的原因fdisk
——您可以使用 中止,fdisk
但不能使用parted
。) w
如果您的新的第一个分区从扇区 63 开始,请输入来保存更改fdisk
。- 重复第一个分区的扩展
/dev/sdb
。 - 键入
sudo partprobe
以使内核识别更改的分区。 - 可能需要在这里做一些 RAID 操作才能让 RAID 识别更改的分区,但我对此并不确定。
- 如果
/boot
使用 ext2fs、ext3fs 或 ext4fs,您可以使用它resize2fs
来调整文件系统的大小,以适应其所在分区的新大小。其他文件系统也有类似的工具。 - 在两个磁盘的第二个分区上创建新的交换空间,如下所示
mkswap /dev/sda2
。 - 如果需要,请进行编辑
/etc/fstab
以调整对交换分区的更改。(它们通常通过 UUID 值引用,这些值将会发生变化。使用blkid
来了解新的 UUID 值;或将它们称为/dev/sda2
和/dev/sdb2
。) - 用于
swapon
重新激活您的交换空间。 - 为了进行酸性测试,请重新启动。