The Mirages

樱桃沟夹事

如何做到:

  1. 部署容易: 做好部署脚本,包含各种不同的应用的部署脚本

  2. 易维护:错误列表需要做好,各种安装文档作好。

  3. 更安全:做好安全协议和各种安全措施

运维体系面临的问题 系统部分

  1. 系统多样性: windows, linux, freebsd各种操作系统,而且很多时候运行于上面的程序也会各不相同。

  2. 应用多样性: web前端, master db, slave db, ha以及各种不同应用程序。

  3. 人员更替频繁: 操作流程要做好。

网络部分

  1. 应用复杂: 每个项目都需要不同的架设方式

  2. 各种协议问题

阅读全文 »

虽然我本人不用C2C,就是类似taobao这样的,但是我一直上B2C购买物品。 在china-pub, dangdang, joyo都是最高级别会员了,所以对这些网站也算比较了解了。所以就随便对比下。 以前看过amazon的评价,据说亚马逊的订单下去2个小时后就能把物品送到你家中,太厉害了,他们的物流是怎么做到这些的?而我们国内的能在第2天送上门我已经是非常满意了。网站做的好的就是一个售后系统和物流了。 china- pub是上的最早的,因为学计算机的缘故,china-pub以前是计算机图书最多的了,价格也是比较便宜的,一般有个73者,送货费比较贵,一般是需要 7元送货费,所以如果买100以内是绝对不合算的。但是送货还是比较快,从1天到4天都是有的,如果你的书在苏州书库里有的话那估计一到2天就可以到了,如果在北京的话就要4天了。 dangdang是上面随便什么都有,类似百货商店了,最早是在上面买过手表,是精工的表,但是走时还真是差阿,基本需要1个礼拜就要调一次。dangdang的送货费有时候会免费,有时候2元,有时候要5元,价格基本就是如此了。现在价格上跟china- pub比较多,但是评论没有china-pub多,而且枪手也比较多。不过似乎枪手都转到douban上去了。说个问题,现在dangdang的送货实在是慢的可以,基本都是需要1个星期左右,我就不知道这些快递公司外面的评论那么差,可dangdang还是委托他们。同时dangdang即使送货出来也不会通知你,不会告诉你快递公司的电话,除非你打他们的客服电话。客服电话的处理时间是2个工作日,我一个单子需要打2次电话,要是很着急的单子大家自己想想吧。 joyo,现在应该叫amazon中国了,自从被amazon收购后我来这个网站的时间就多了。joyo现在送货费都是免费的了,价格上也比较便宜,跟dangdang基本会产生比较,dangdang便宜它也跟着便宜。joyo的售后还是比较不错的。你单子下去后,首先他们会发 email给你,让你知道有这个事情。其次的话等单子发出后他也会发个email给你说明单子已经发出,同时会告诉你快递公司的名字和快递公司的电话给你。这些其实是很人性话的。china-pub以前也就是会发短消息给你说单子已经发送出来。joyo的东西也并没有dangdang多,但是 dangdang的店中店是比较麻烦的。

磁盘限额,也就是quote,它分为v1和v2两个版本,网上的教程一般都是针对v1的quote 由于要做nis和nfs,所以要对用户的主目录进行磁盘限额,这里的测试帐号为test 对用户主目录:/home限制,修改/etc/fstab文件,重新启动计算机 A.编辑/etc/fstab文件,重新启动计算机,使限额功能生效 ```c

vi /etc/fstab 把 LABEL=/home /home ext3 defaults 1 2 修改为: LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 touch quota.user touch quota.group chmod 666 quota.user chmod 666 quota.group reboot

```c
1
2
3
4
5
6
7
8
9
10
11

cd /home convertquota /home //这个就是v2的quote必须做的,它会把quota.userh和quota.group转换为aquota.user和aquota.group。如果没有这步下面会报错的。 quotacheck -avug quotaon -a
``` B.限额配置文件的修改 ```c

edquota test//为用户test设置磁盘配额
``` 系统会自动打开配额文件,如下: Disk quotas for user test (uid 1008): Filesystem blocks soft hard inodes soft hard /dev/sda4 1244 0 0 13 0 0 #注: #第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数,单位为KB。随后的两列用来设置用户在该文件系统上的软硬块限度。 inodes 列显示了用户当前使用的i节点数量。最后两列用来设置用户在该文件系统上的软硬i节点限度.硬限是用户或组群可以使用的磁盘空间的绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为过渡期(grace period),默认七天的超越。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果以上值中的任何一个被设置为 0,那个限度就不会被设置。 C.要校验用户的配额是否被设置,我们可以使用以下命令: ```c

quota test
``` 用以下命令显示磁盘配额使用状态: ```c

repquota -a

01年的老文了,但是还是很经典,转载来 创建时间:2001-07-05 文章属性:原创 文章来源:http://xfocus.org/ 文章提交:inburst (inburst_at_263.net) 用rsync对网站进行镜像备份 by inburst http://xfocus.org 对系统管理员来说,平时的工作重心应该集中在维护系统正常运转,能够正常提供服务上,这里往往牵涉到一个数据备份的问题,在我所了解的情况中,有80%的系统管理员不是太关心自己服务器的安全性,但往往对备分镜像的技术相当感兴趣,但由于商业产品的软硬件价格都相当高昂,因此往往会选择自由软件。这里准备介绍的rsync就是这样的软件,它可以满足绝大多数要求不是特别高的备份需求。 一、特性简介 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下: 1、可以镜像保存整个目录树和文件系统。 2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。 3、无须特殊权限即可安装。 4、优化的流程,文件传输效率高。 5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 6、支持匿名传输。 二、使用方法 rsync的使用方法很简单,我就举自己使用的例子来说明吧。 1、系统环境 rsync支持大多数的类unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。我的系统环境为: server: FreeBSD 4.3 ip: 192.168.168.52 client: Solaris 8 ip: 192.168.168.137 rsync 版本 2.4.6(可以从http://rsync.samba.org/rsync/获得最新版本) 2、配置server端的/etc/rsyncd.conf文件 bash-2.03# cat /etc/rsyncd.conf uid = nobody gid = nobody use chroot = no # 不使用chroot max connections = 4 # 最大连接数为4 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log # 日志记录文件 [inburst] # 这里是认证的模块名,在client端需要指定 path = /home/inburst/python/ # 需要做镜像的目录 comment = BACKUP CLIENT IS SOLARIS 8 E250 ignore errors # 可以忽略一些无关的IO错误 read only = yes # 只读 list = no # 不允许列文件 auth users = inburst # 认证的用户名,如果没有这行,则表明是匿名 secrets file = /etc/inburst.pas # 认证文件名 [web] path = /usr/local/apache/htdocs/ comment = inburst.org web server 3、在server端生成一个密码文件/etc/inburst.pas bash-2.03# cat /etc/inburst.pas inburst:hack 出于安全目的,文件的属性必需是只有属主可读。 4、在server端将rsync以守护进程形式启动 bash-2.03# rsync –daemon 如果要在启动时把服务起来,有几种不同的方法,比如: a、加入inetd.conf 编辑/etc/services,加入rsync 873/tcp,指定rsync的服务端口是873 编加/etc/inetd.conf,加入rsync stream tcp nowait root /bin/rsync rsync –daemon b、加入rc.local 在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时rsync –daemon加载进去。 5、从client端进行测试 下面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。–progress是指显示 出详细的进度情况,–delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。后面的inburst@ip中, inburst是指定密码文件中的用户名,之后的::inburst这一inburst是模块名,也就是在/etc/rsyncd.conf中自定义的名称。最后的/tmp是备份 到本地的目录名。 在这里面,还可以用-e ssh的参数建立起加密的连接。可以用–password-file=/password/path/file来指定密码文件,这样就可以在脚本中使 用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。 bash-2.03# rsync -vzrtopg –progress –delete inburst@192.168.168.52::inburst /tmp/ Password: receiving file list … done ./ 1 785 (100%) 1.py 4086 (100%) 2.py 10680 (100%) a 0 (100%) ip 3956 (100%) ./ wrote 190 bytes read 5499 bytes 758.53 bytes/sec total size is 19507 speedup is 3.43 6、创建更新脚本 如果有比较复杂的工作,利用一些常见的脚本语言可以有帮助。比如: bash-2.03# cat /usr/local/bin/rsync.sh #!/bin/sh DATE=`date +%w` rsync -vzrtopg –progress –delete inburst@192.168.168.52::inburst /home/quack/backup/$DATE –password-file=/etc/rsync.pass > /var/log/rsync.$DATE 7、修改/etc/crontab做好定时 比如: bash-2.03# echo “15 4 * * 6 root rsync.sh”>>/etc/crontab 三、FAQ Q:如何通过ssh进行rsync,而且无须输入密码? A:可以通过以下几个步骤 1. 通过ssh-keygen在server A上建立SSH keys,不要指定密码,你会在/.ssh下看到identity和identity.pub文件 2. 在server B上的home目录建立子目录.ssh 3. 将A的identity.pub拷贝到server B上 4. 将identity.pub加到[user b]/.ssh/authorized_keys 5. 于是server A上的A用户,可通过下面命令以用户B ssh到server B上了 e.g. ssh -l userB serverB 这样就使server A上的用户A就可以ssh以用户B的身份无需密码登陆到server B上了。 Q:如何通过在不危害安全的情况下通过防火墙使用rsync? A:解答如下: 这通常有两种情况,一种是服务器在防火墙内,一种是服务器在防火墙外。 无论哪种情况,通常还是使用ssh,这时最好新建一个备份用户,并且配置sshd仅允许这个用户通过RSA认证方式进入。 如果服务器在防火墙内,则最好限定客户端的IP地址,拒绝其它所有连接。 如果客户机在防火墙内,则可以简单允许防火墙打开TCP端口22的ssh外发连接就ok了。 Q:我能将更改过或者删除的文件也备份上来吗? A:当然可以: 你可以使用如:rsync -other -options -backupdir = ./backup-2000-2-13 …这样的命令来实现。 这样如果源文件:/path/to/some/file.c改变了,那么旧的文件就会被移到./backup-2000-2-13/path/to/some/file.c,这里这个目录需要自己 手工建立起来 Q:我需要在防火墙上开放哪些端口以适应rsync? A:视情况而定 rsync可以直接通过873端口的tcp连接传文件,也可以通过22端口的ssh来进行文件传递,但你也可以通过下列命令改变它的端口: rsync –port 8730 otherhost:: 或者 rsync -e ‘ssh -p 2002’ otherhost: Q:我如何通过rsync只复制目录结构,忽略掉文件呢? A:rsync -av –include ‘/‘ –exclude ‘‘ source-dir dest-dir Q:为什么我总会出现”Read-only file system”的错误呢? A:看看是否忘了设”read only = no”了 Q:为什么我会出现‘@ERROR: invalid gid’的错误呢? A:rsync使用时默认是用uid=nobody;gid=nobody来运行的,如果你的系统不存在nobody组的话,就会出现这样的错误,可以试试gid = nogroup或者其它 Q:绑定端口873失败是怎么回事? A:如果你不是以root权限运行这一守护进程的话,因为1024端口以下是特权端口,会出现这样的错误。你可以用–port参数来改变。 Q:为什么我认证失败? A:从你的命令行看来: 你用的是: > bash$ rsync -a 144.16.251.213::test test > Password: > @ERROR: auth failed on module test > > I dont understand this. Can somebody explain as to how to acomplish this. > All suggestions are welcome. 应该是没有以你的用户名登陆导致的问题,试试rsync -a max@144.16.251.213::test test 四、一些可借鉴的脚本 这里这些脚本都是rsync网站上的例子: 1、每隔七天将数据往中心服务器做增量备份 #!/bin/sh # This script does personal backups to a rsync backup server. You will end up # with a 7 day rotating incremental backup. The incrementals will go # into subdirectories named after the day of the week, and the current # full backup goes into a directory called “current” # tridge@linuxcare.com # directory to backup BDIR=/home/$USER # excludes file - this contains a wildcard pattern per line of files to exclude EXCLUDES=$HOME/cron/excludes # the name of the backup machine BSERVER=owl # your password on the backup server export RSYNC_PASSWORD=XXXXXX ######################################################################## BACKUPDIR=`date +%A` OPTS=”–force –ignore-errors –delete-excluded –exclude-from=$EXCLUDES –delete –backup –backup-dir=/$BACKUPDIR -a” export PATH=$PATH:/bin:/usr/bin:/usr/local/bin # the following line clears the last weeks incremental directory [ -d $HOME/emptydir ] || mkdir $HOME/emptydir rsync –delete -a $HOME/emptydir/ $BSERVER::$USER/$BACKUPDIR/ rmdir $HOME/emptydir # now the actual transfer rsync $OPTS $BDIR $BSERVER::$USER/current 2、备份至一个空闲的硬盘 #!/bin/sh export PATH=/usr/local/bin:/usr/bin:/bin LIST=”rootfs usr data data2” for d in $LIST; do mount /backup/$d rsync -ax –exclude fstab –delete /$d/ /backup/$d/ umount /backup/$d done DAY=`date “+%A”` rsync -a –delete /usr/local/apache /data2/backups/$DAY rsync -a –delete /data/solid /data2/backups/$DAY 3、对vger.rutgers.edu的cvs树进行镜像 #!/bin/bash cd /var/www/cvs/vger/ PATH=/usr/local/bin:/usr/freeware/bin:/usr/bin:/bin RUN=`lps x | grep rsync | grep -v grep | wc -l` if [ “$RUN” -gt 0 ]; then echo already running exit 1 fi rsync -az vger.rutgers.edu::cvs/CVSROOT/ChangeLog $HOME/ChangeLog sum1=`sum $HOME/ChangeLog` sum2=`sum /var/www/cvs/vger/CVSROOT/ChangeLog` if [ “$sum1” = “$sum2” ]; then echo nothing to do exit 0 fi rsync -az –delete –force vger.rutgers.edu::cvs/ /var/www/cvs/vger/ exit 0 4、利用find的一种巧妙方式 rsync -avR remote:’`find /home -name “*.[ch]“`‘ /tmp/ 可以用这种方法列出需要备份的文件列表——这种方法似乎比较少人用到。 五、参考资料: 1、http://rsync.samba.org/ 2、rsync examples 3、rsync FAQ

作为一个系统管理员,对于操作系统底层的熟悉是我们相对于软件工程师优势所在,所以一些基础的东西我 可是还要好好加深哦,而系统管理员不光是要学会对系统软件的配置和优化,这些东西所有人经过一段时间的是都能会的,有些时候我们必须自己写些程序实现点小 功能,这些就是跟人家的区别和优势了,当然我自己还有我自己的方向的。

转自:http://www.cnscn.org(CNS电脑与英语学习网)

  1. BIOS自检
  2. 启动Grub/Lilo
  3. 加载内核
  4. 执行init进程
  5. 通过/etc/inittab文件进行初始化
  6. 登陆Linux

1)BIOS自检
a)POST(Power On Self Test),对硬件进行检测
计算机在通电后首先由BIOS进行自检,即所谓的POST(Power On Self Test),对硬件进行检测
依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入”引导块”
在PC中,Linux是从BIOS中的地址0xFFFF0处开始的
BIOS的第一个步骤是加电自检(POST),对硬件进行检测
第二个步骤是进行本地设备的枚举和初始化
BIOS由两部分组成: POST代码和运行时服务
当POST完成后,它从内存中清理出来,但BIOS运行时服务依然保留在内存中,目标操作系统可以使用这些服务
要引导一个操作系统,BIOS运行时会按照CMOS的设置的顺序来搜索处于活动状态并可引导的设备:软盘、CD-ROM、硬盘上的分区、网络上的某个设备、USB(通常Linux是从硬盘引导的
主引导记录MBR中包含主引导加载程序。MBR是一个512字节大小的扇区,位于磁盘上的第一个扇区中(0道0柱面1扇区))当MBR被加载到RAM中之后,BIOS会把控制权交给MBR

b)提取MBR的信息
要看MBR的内容,请使用下面的命令
从/dev/sda上读取前512个字节的内容,并将其写入mbr.bin文件中

1
[root@localhost pam.d]# dd if=/dev/sda of=mbr.bin bs=512 count=1
阅读全文 »

画网络图,机柜图,系统结构图,加上以前就一直画的UML和E-R图以及EXCEL图表,我居然成为一个专职的绘画员了,或许以后还可以转行从事绘画呢? 以前用VISIO和Rational Rose以及Project,现在既然在UBUNTU下了,那就用了dia。 dia这个软件还是挺好用的,可dia画的图示居然是链接到本地硬盘文件的,而不是内嵌到dia格式中,如果本地不存在这个文件,那所画的图就无法显示了,而visio中就算是外来图片也会内嵌到文件中。 无奈现在只能保存为PNG,有明白这个问题的朋友希望能给我指条明路。不然保存为PNG对于后来要修改就麻烦了。

NFS在ubuntu7.10下安装 server端: 首先是安装服务器相关软件 ```c

sudo apt-get install nfs-kernel-server vi /etc/exports 添加: /home 172.16.30.211(rw,subtree_check)

man exports172.16.30.211为客户端IP,也可以写成 172.16.30.0/24 这样的网段形式 执行 ```c
1
2
3
4
5
6
7
8

exportfs -rv
``` 用来重新进行同步共享,并显示出来 最后重启下nfs服务器程序就可以了 ```c

sudo /etc/init.d/nfs-kernel-server start
``` client端 在7.10中client端需要安装nfs-common ```c

sudo apt-get install nfs-common 映射服务器端的/home目录 sudo mount -t nfs 172.16.30.189:/home /home

作者:timo 本文参考:

  1. http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/network-nis.html
  2. http://www.freebsdchina.org/forum/viewtopic.php?t=2778&highlight=ypinit
  3. http://linux-vbird.hillwood.cn/linux_server/0430nis.htm
    44 https://help.ubuntu.com/community/SettingUpNISHowTo

文中粗体为文件中添加的内容,斜体为命令。

服务器端用的是ubuntu7.10server IP地址为:172.16.30.189
客户端使用的是ubuntu7.10desktop IP为172.16.30.203

首先是要在server端/etc/hosts里增加IP映射如:

1
2
3
4
5
 172.16.30.203 zauc-laptop 
``` 接着在/etc/hosts.allow中添加portmap
```bash
portmap ypserv ypbind : 172.16.30.189
portmap ypserv ypbind : 172.16.30.203
阅读全文 »

作者:Timo 对于munin的处理过程的一个思考 munin是一个在国内用的比较少的软件。它有点类似于MRTG,但是安装上比MRTG要简单点。 由于在国内是比较少使用,所以针对这个软件的中文资料是非常少的,网上唯一可以寻找到的就是MUNIN在freebsd下的安装方法,这个也是最近由chinaunix的一个会员发表的。 这次我的问题是无法对于某些munin-node进行绘图,但是有些munin-node却可以显示MRTG这样的曲线图。 在 baidu和google搜索了一通也没有找到合适的资料。于是就上了官方网站找寻相关的资 料,http://munin.projects.linpro.no/ 很好在上面找到了个FAQ和帮助文档,但是本人英文并不是很好,看了半天也找到需要的东西,发现了一个邮件列表,于是抱着试试看的心理给这个邮件列表发了 一封邮件。 发件人:     Timo greycd@gmail.com 收件人:     munin-users@lists.sourceforge.net 主题:     munin no graph 日期:     Mon, 10 Mar 2008 17:54:52 +0800 hi Now I install the munin-node in my freebsd system. But it can not show the graph in the munin-server. I have a lot of munic-node servers, but only this one has no graph. Can you tell how to debug it? 看看我的英文有多么的差了吧,当时只是抱着试验的态度发的,但是结果却有人真的回了。 Nicolai Langfeldt和Bjørn Ruberg这两位作者跟我通了8封邮件,总算是把我的问题给解决了。虽然我的英文不怎么样的。 但是更让我想不到的是,再我谢过这2位后他们给我继续发了邮件。 发件人:     Nicolai Langfeldt janl@linpro.no 收件人:     Timo greycd@gmail.com 抄送:     bjorn@ruberg.no, munin-users@lists.sourceforge.net 主题:     Re: [munin-users] munin no graph 日期:     Tue, 11 Mar 2008 13:02:06 +0100 (20:02 CST) Timo skrev: > Thanks for your FAQ, I have fixed the problem. Very good.  Was the FAQ easier to understand than the other material? If not, how can I fix that do you think? Bjørn wants me to get some better error messages for this condition up in the web-interface.  Unfortunately this will take some time. Nicolai 首 先是他一开始写了个FAQ在WIKI上,然后我第一次并没有看懂那个FAQ,于是他第2次再进行了强调下,后来算是看明白了,问题也就顺利解决了,但是他 们居然还不依不饶的要问我是不是那个FAQ看的不明白有误解呢?呵呵,第一碰到这样的问题,于是我就按照我的理解把我的想法发给了他们。 连想到国内的IT环境,基本上是发什么问题很多都说去google去baidu,对于有些太简单的问题也不屑于回答。其实我这次的这个问题基本也算是很容易的,只是某个单词的深入理解而已。 想想自己在cu上的问题,很少能够完整的给回答完整,太简单的没人回答,太复杂的基本都是只有一半答案。可能我的提问方式也有问题。我一般是把问题的环境,问题产生的日志以及问题的表现方式描述一下,问题一般是需要达到怎么样的结果。

munin还xnix监控中还是一个非常有用的工具,并可以类似MRTG这样的绘图历史数据。 munin的安装手册大家可以随便搜索到的。 但是munin有时候也会出点问题,这时候就比较麻烦了,几乎没有什么中文文档 这是官方的一个帮助文档 http://munin.projects.linpro.no/wiki/faq 近 日就碰到一个问题,munin可以显示配置好的服务器,但是无法进行绘图了,其实这个问题很简单就是由于主机名使用了非法字符,在munin-node中 只能使用字母,数字和点作为标识,而不能使用下划线这样的标识。在munin的faq中只有说inconsistent name,但是也没有具体说明哪些是非法字符。 还有问题的话可以发邮件到以下

[email protected]

0%