分享
 
 
 

linux系统升级指南

王朝system·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

本文是假设您已经使用 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 修改 /dev/hdb4 的扇区类型为 8e

/sbin/pvcreate /dev/hdb4 (逻辑扇区起始化)

/sbin/vgextend new_home /dev/hdb4(将实体扇区加入到虚拟装置上)

/sbin/lvextend -L +10g /dev/new_home/lvol1 /dev/hdb4(从该实体扇区扩充 10GB 空间至逻辑扇区)

完成以上步骤后,现在的 /home 空间容量已经变成 40GB!然而使用 df 指令去查看 inode,却发现空间没有增加,经过测试后发现必须重新mkfs才能使用新的空间,这个缺点让 LVM 有点美中不足。

SoftRAID 软件磁盘阵列

使用软件磁盘阵列应该在安装 Linux 时,直接透过 Disk-Druid 来设定比较方便,如果事后想要手动加上去,步骤比较繁杂,首先和 LVM 系统一样,你必须先使用 fdisk 将预先割好要作磁盘阵列的分割区改为 fd 类型,千万不要拿已经有资料的 Linux ext2 或 swap 来改,否则资料会全部遗失,修改方法请自行参考前面的解说。特别要注意的是,要作磁盘阵列的分割区其容量必须一致,不可以有大有小!

改好扇区类型后,请用底下指令建立软件磁盘阵列组态文件:

touch

/etc/raidtab

该档案内容如下:

raiddev /dev/md0 //定义磁盘阵列的装置名称

raid-level 1 //定义磁盘阵列的等级,RAID 1 就是 Mirror

nr-raid-disks 2 //定义磁盘阵列是由多少实体分割区组成的

chunk-size 64k //定义 chunk 大小,由于是软件数组所以是使用系统主存储器来进行 chunk,这个数值设大一点虽然对磁盘阵列效能有帮助,但却会耗掉系统资源,建议使用默认值就好了

persistent-superblock 1//启用 superblock,这是用来作磁盘寻址,它能帮助 kernel 在侦测 RAID 磁盘时不会误判

nr-spare-disks 0 //定义备用的扇区

device /dev/hda1 //定义组成 RAID 的第一块实体分割区

raid-disk 0

device /dev/hdc1 //定义组成 RAID 的第二块实体分割区

raid-disk 1

以上面这个例子来说,作好的磁盘阵列在写入数据时,两个实体分割区都会写入数据,读取资料时,则只要其中一个扇区能正常读取即可,这样就可以充分利用磁盘阵列的好处来进行数据保全。做好组态设定以后,接下来请以下列指令开始制作磁盘阵列:

mkraid

/dev/md0

磁盘阵列一但制作好了,依然得先将扇区格式化,一般是格式化成 ext3:

/sbin/mkfs -t ext3 /dev/md0

格式化好的扇区就可以直接挂载使用:

mkdir /secure_data

mount -t ext3 /dev/md0 /secure_data

资料保全测试:

使用 fdisk 将 RAID 磁盘阵列其中一个实体分割区删除后,重新开机,发现 RAID 激活时出现错误讯息,警告我们有部分磁盘损毁,但储存的资料仍然具全没有遗失。

如果开机讯息闪得太快没有看清楚,可以使用底下指令来观察:

lsraid -a /dev/md0

将该分割区重新分割并修改格式为 fd 后,进行资料复原工作:

raidhotadd /dev/md0 /dev/hdc1(将空白扇区 /dev/hdc1 加入 RAID 中并复原资料)

完成以上步骤后,再使用 lsraid 指令来观察,发现 RAID 装置已经恢复正常。

四、工作管理进程:

Linux 提供四种自动执行程序的机制,包含:cron、anacron、at 和 batch。使用时机分述如下:

cron 主要用来做周期性工作的管理进程,会根据系统时间来判断程序是否该执行,万一系统时间设定不正确将会造成进程错乱。

anacron 和 cron 一样也是用来做周期性工作的管理进程,但是它不检查系统时间,而改以读取时间戳记来计算间隔日数,依间隔日数判断是否该执行,适用于每天、每周或每月只执行一次的工作。

at 让指定程序在某个时间点到达时自动执行,适用于只执行一次的工作。

batch 指定工作在系统闲置时执行,可用来避开高负载时段。

使用 cron 前请先确定管理程序是否已经执行,可以使用以下指令来查看:

/sbin/service crond status

虽然 cron 允许使用者自行安排自己的工作,以方便在结束联机后,程序能自动运作,但这类工作对于已经提供多种网络服务的服务器来说负担太大,因此建议不要教使用者使用它,本文也不讨论这类的事情,毕竟我们的服务器只是 PC,不是 main frame。

cron 的主要设定档 /etc/crontab 内容如下:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

前面几行是定义 cron jobs 执行时的环境,我们不需要去修改它,底下四行是用来定义工作管理进程,上面看到的是系统管理进程的定义区分为七个字段,分别代表:分、时、日、月、星期、执行时的身分、要执行的 script,而一般的工作则只区分为六个字段,前五个字段与系统管理进程相同,最后一个字段则是要执行的工作。

字段 有效数值

分 0~59, * 代表每分钟都要执行,1-4 是指前四分钟各要执行一次,如果执行的时间不是连续的,可以用逗号来区隔,例如:5,10,15,20 代表第五分钟、第十分钟、第十五分钟、第二十分钟时要执行,如果每隔五分钟要执行一次,可以简写为 */5。

时 采用 24 时制,有效数值为 0~23,可以使用 * - , / 等通配字符,意义同上。

日 1~31,如果使用 30,则每逢二月会跳过不执行,如果使用 31,会变成大月时才执行,因此对于每月都得执行一次的工作,请安排在 28 日以前执行。当月份有指定时,必须为有效日期,否则该工作将永远不执行。通配字符使用方式同上。

月 1~12,也可以直接用英文缩写:jan、feb......等。 通配字符使用方式同上。

星期 0~7,其中 0 和 7 都代表星期天,也可以使用英文缩写:sun、mon......等。 通配字符使用方式同上。

如果要执行的工作是属于每天、每周或每月执行一次,建议改用 anacron 以确保一定会执行,如果是每小时要执行,建议直接在 /etc/cron.hourly 目录内直接新增一个定义文件,语法需与 /etc/crontab 相同。 其它情形则把定义档放置在 /etc/cron.d,这里的定义档将会每分钟都检查一次。

anacron 的设定档位于 /etc/anacrontab,如前所述它是以检查时间间隔的方式来决定是否执行,因此不受系统时间设定的影响,为了要检查时间间隔必须纪录每个工作每次执行时的时间戳记(timestamp),这些档案会放置在 /var/spool/anacron 目录里面。

anacron 设定文件分为间隔周期、执行延迟时间、工作识别名称、 要执行的工作四个字段,说明如下:

字段 使用说明

间隔周期 每次执行工作时应相隔几天,小于一天的请改用 cron

执行延迟时间 当距离上次执行的时间超过时间间隔,这表示中间有执行失败的情形,这种情形下在延迟几分钟后,该工作会再尝试执行一次。

工作识别名称 用来识别不同工作,同一名称不能重复使用。

要执行的工作 通常是一个命令或 script

anacron 的设定档预设内容如下:

SHELL=/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin;/usr/local/sbin;/usr/local/bin

# These entries are useful for a Red Hat Linux system.

1 5 run-parts /etc/cron.daily

7 10 run-parts /etc/cron.weekly

30 15 run-parts /etc/cron.monthly

这个设定可以用来确保 cron job 一定会如期执行。

at 指令用来执行一次性的工作而非周期性的工作,我们可以指定要执行的时间,它和 cron 一样会检查系统时间的设定,因此设定错误会造成工作无法正确执行,设定方式如下:

at 16:00 011503[ ENTER](排定执行时间是 2003年1月15日下午4点)

at> perl /root/backup.pl[Ctrl-D]

我们可以使用 atq 指令来查询现在尚未执行的预定工作。

如果想根据主机负载情形来决定执行时间,必须使用 batch 指令,实际上 batch 指令算是 at 的特殊应用,使用方式如下:

batch[ ENTER](不用指定执行时间)

at> perl /root/backup.pl[Ctrl-D]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有