linux系统升级指南
本文是假设您已经使用 Linux 一段时间,随着硬件的升级或空间不足,必须要升级 Linux 系统,抑或是想提供更多的网络服务给用户,因应这个需求而编写的。一、调整虚拟内存:
在 Linux 上是使用 swap 技术将硬盘空间挪用为虚拟内存,当服务器建置完成使用一段日子以后,有可能会扩充硬件,其中又以扩充主存储器来改善执行效能最为普遍,在这种情形下,就需要增加 swap 虚拟内存的容量。
由于 swap 跟 LVM 机制一样能将多块磁盘分割区虚拟成一块,因此我们并不需要将旧的 swap 扇区先移除,或是直接修改 swap 扇区大小,而是可以采用追加 swap 扇区的方式来配置。做法如下:
mkswap /dev/hdx2(将新扇区格式化为 swap)
swapon /dev/hdx2(立即启用新的 swap 扇区)
修改 /etc/fstab 加入下面这一行
/dev/hdx2 swap swap defaults 0 0
如果硬盘已经没有剩余空间,而且无法加装新的硬盘,这种情况下,我们没办法变更 swap 扇区来满足需求,但是可以挪用已经挂载的分割区一部分空间,以档案的形式来追加 swap 虚拟内存的容量:
dd if=/dev/zero of=/swapfile bs=1024 count=65536(建立 /swapfile 档案,单位为 KB,所以这是 64MB)
mkswap /swapfile(将该档案空间格式化为 swap)
swapon /swapfile(立即启用新的 swap 档案)
修改 /etc/fstab 加入下面这一行
/swapfile swap swap defaults 0 0
Linux 并没有办法搬移 swap 扇区,如果想要把 swap 作成单一一个扇区,必须先将旧 swap 扇区移除,再加入新的 swap 扇区,如果先加入新扇区,则新旧扇区会联合运作,造成旧扇区无法移除的现象。移除 swap 扇区的方法如下:
swapoff /dev/hdx2(关闭 swap 功能)
修改 /etc/fstab 移除 /dev/hdx2 那一行
二、加载硬盘与档案系统转换:
当硬盘不敷使用时,需要加挂新的硬盘到系统上,加挂硬盘的做法很简单,先使用 fdisk 或 parted 将扇区分割好,接着使用 mkfs 指令来格式化硬盘,最后修改 /etc/fstab 让系统重开机后能自动挂载新的硬盘。fdisk 的使用方法如下:
#> fdisk /dev/hdb(假设要加挂的硬盘,是接在第一条排线的第二个位置)
The number of cylinders for this disk is set to 2498.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., LILO)2) booting and partitioning software from other OSs(e.g., DOS FDISK, OS/2 FDISK)Command (m for help): mCommand actionabcdmnopqstuvwx toggle a bootable flagedit bsd disklabeltoggle the dos compatibility flagdelete a partitionlist known partition typesprint this menuadd a new partitioncreate a new empty DOS partition tableprint the partition tablequit without saving changescreate a new empty Sun disklabelchange a partition's system idchange display/entry unitsverify the partition tablewrite table to disk and exitextra functionality (experts only)Command (m for help):
先用 l 指令列出所有已分割好的扇区,你可以使用 d 指令将不要的扇区删除,或使用 t 指令将扇区的档案系统改为 Linux 用的 82(swap) 或 83(ext2,ext3),假如硬盘是空的尚未分割任何扇区,这时候请用 n 指令建立扇区,所有需要的修改完成后,输入 w 指令将设定储存起来,然后重开机让修改生效,以便进行后续动作。
扇区分割好了以后,必须针对每个不同档案系统将扇区格式化,swap 扇区格式化的方法前面已经提过,而作为一般用途的扇区,建议直接格式化为 ext3:
/sbin/mkfs -t ext3 /dev/hdb1(将空白扇区格式化为 ext3)
ext3 是从 ext2 改良而来,主要是挪用 ext2 一些 inode 拿来做成日志文件(.journal),因此它与 ext2 只有些微不同,两种系统也可以很容易互相转换(转换完仍需自行修改 /etc/fstab 组态):
/sbin/mke2fs /dev/hdb1(将空白扇区格式化为 ext2)
/sbin/tune2fs -j /dev/hdb1 (将 ext2 转为 ext3,转换时顺便建立日志文件)
当新扇区格式化好了之后,就可以将它挂载上来,您可以直接指定要挂载的扇区型态:
/sbin/mount -t ext3 /dev/hdb1 /mount/point(指定挂载 ext3 扇区到 /mount/point 目录)
或先修改 /etc/fstab 然后再挂载,修改 /etc/fstab 的方法是插入下面这一行:
/dev/hdb1 /mount/point ext3 defaults 0 0
接着挂载时不需指定扇区型态及装置名称,指令如下:
/sbin/mount /mount/point
已经格式化为 ext3 的扇区,如果要挂载到 6.X版以前的系统上使用,必须将格式改回 ext2,变更方法如下:
/sbin/tune2fs -O ^has_journal /dev/hdb1 (通知 kjournald 关闭日志文件功能)
mount -t ext2 /dev/hdb1 /mount/point(将 ext3 挂载为 ext2)
rm -f .journal(删除日志文件)
将 ext2 转换成 ext3 有许多好处,包括速度快、安全、高可用性、修复省时......等等优点。简单的讲,所谓 journal 就是把文件读写动作逐项纪录下来,当硬盘未正常关机(unclean shutdown)时,不需要检查硬盘(e2fsck)直接可以挂载(mount),如果以 fsck 强制修复硬盘,则直接从日志文件读取需要修复的扇区资料,而不需要整颗硬盘都检查。由于这些优点,我们也建议不要再使用旧的 ext2 格式。
挂载好后,如需进行数据移转,可以使用 cp -Rp 指令,参数 R 表示连子数据夹一起备份,参数 p 表示要保留所有档案权限设定,例如:cp -Rp /home /home1
三、升级磁盘系统:
LVM 逻辑扇区
事实上新版 Linux 由于提供 LVM (Logical Volume Manager)功能,可以将多个扇区组合成一个 VG(Volume Group),然后将一个 VG 挂载成单一一个目录,这样就可以做到扇区合并的效果,省掉转移资料的麻烦,要使用这项功能,首先在安装 Linux 时,必须先将可能会事后扩充的扇区做成 LVM 扇区型态(代号是 8e),如果您在安装时没有启用这项功能想要事后补做,那样可行不通,因为修改扇区型态将会造成所有资料遗失!
如果是新硬盘上的扇区,请用 fdisk 修改好扇区型态后,利用以下指令来做起始化的动作,在底下的例子里,我们会把新硬盘上的三个扇区合并成一个,并在稍后加入第四个扇区以扩充容量(透过这些步骤,可以了解当初 Linux 安装程序帮我们装 LVM 时,到底做了哪些事情):
/sbin/pvcreate /dev/hdb1
/sbin/pvcreate /dev/hdb2
/sbin/pvcreate /dev/hdb3
然后需建立 VG,建立好的 VG 将被视为一个装置名称,事后可以用 /dev/VG_name 来引用它:
/sbin/vgcreate new_home /dev/hdb1 /dev/hdb2 /devhdb3
对于 VG 这种装置来说,仍必须进一步在上面分割逻辑扇区才能使用,我们不妨把 VG 想象成是一个外挂的 SCSI 磁盘阵列,对主机板来说,他被视为单一一颗硬盘(LVM 并不是真正的 RAID 系统,因为它只能实作 RAID0,事实上 2.4.x 版的 kernel 另外还提供 softRAID 功能,在后面说明)。既然它是一种装置,当然无法直接挂载使用,必须先进一步作虚拟分割及格式化的动作, 下面的例子里,我们仅分割单一一个扇区:
/sbin/lvcreate -L 30g new_home(将 new_home 虚拟装置中的 30 GB 空间割成一个虚拟延伸扇区)
使用 lvcreate 指令除了可以分割l逻辑延伸扇区(所谓延伸是指可以动态变大,当然变小也是可以,但应该没有人会这么做),还可以分割一种称为快照的扇区,这可以用来自动备份某块逻辑延伸扇区,而这种备份是 自动进行的,并不需要人力介入管理。
一但逻辑扇区分割好了,依照惯例仍然得先将扇区格式化,一般是格式化成 ext3:
/sbin/mkfs -t ext3 /dev/new_home/lvol1(由于当初分割扇区时未使用 -n 参数来指定名称,因此系统会自动编号)
格式化好的扇区就可以直接挂载使用:
mkdir /home2
mount -t ext3 /dev/new_home/lvol1 /home2
接下来进行文件转移:
cp -Rp /home /home2(将使用者文件从实体扇区拷贝到 lvm 扇区)
以光盘片开机进入 rescue mode
rm -rf /home (将 /home 删除)
mkdir /home (建立挂载点)
mount -t ext3 /dev/new_home/lvol1 /home (重新将 /dev/new_home/lvol1 挂载到 /home)
rmdir /home2(删除挂载点)
紧接着修改 /etc/fstab 来挂载这个新作好的逻辑扇区:
/dev/new_home/lvol1 /home ext3 defaults 0 0
重开机后,系统会尝试挂载该虚拟扇区,如果挂载失败,请在 /etc/rc.d/rc.local 加入以下指令:
vgchange -a y new_home
mount /dev/new_home/lvol1 /home
假如使用一段时间后, /home 的空间不足,这时我们可以动态加入新的实体扇区(以 /dev/hdb4 为例)来扩充空间:
以 fdisk 修改 /de