<![CDATA[Snooda]]> http://www.trreps.com/index zh-cn http://www.trreps.com/read/335 <![CDATA[openvz和kvm同机部v安装QdebianQ]]> snooda <admin@snooda.com> Sun, 23 Feb 2014 10:28:28 +0000 http://www.trreps.com/read/335
    搜了下方案,果然有个proxmox的发行版是解册个需求的。看了下文档Q集成了一堆面板啥的,东西多bugp多。还是自己diy一个?br/>
    ׃openvz是需要打qpatch的内核运行,而kvm则需要kvm和kvm_intel内核模块的加载(amd的就是kvm_amd)。所以难点就是这个的兼容。其他用h的q程如果有冲H啥的都好解冟?br/>
    首先选用debian7Q我喜欢debianQ,发现需要用openvz的源Q源里用的openvz内核?.6.32。而debian7的内核目前是3.2。风险比较大。从源里拖了openvz内核deb包下来看Q发现居?2位的内核不带kvm模块Q?4位的才有。哭了。不知道他们咋搞的。于?4位系l搞赗结果发现kvm_intel加蝲不进厅R报input/output err。用-f强制加蝲后报{֐被拒l。估计编译的时候哪里错了,虽然有内核源码和.configQ不q还是不自己~译了,太折腾?br/>
    q是用debian6。debian6的官Ҏ里已l包含openvz了。内核版本也?.6,32pd。跟debian6默认内核版本相同。这个感觉靠谱。装上重启进入openvz内核。modprobe加蝲kvm内核模块。okQ成功了?br/>


     下一步就是进E和|络上的调整了。都不是大问题?br/>


     l论是:openvz目前q是用debian6官方源里的包。兼Ҏ好?br/>Tags - , , ]]>
http://www.trreps.com/read/331 <![CDATA[linuxpȝ更新正在q行q程的可执行文g需要注意的/text file busy的原因及解决Ҏ]]> snooda <admin@snooda.com> Fri, 25 Oct 2013 03:24:00 +0000 http://www.trreps.com/read/331

    U上替换一个正在运行进E的文gӞ包括二进制、动态库、需要读取的资源文g{)。应避免使用cp/scp操作。而需要用mv/rsync作ؓ替代?br/>
    原因Qcp是将源文件截断然后写入新内容。也是说正在打开q个文g的进E可以立L知到修改。修Ҏ件内容很可能DE序逻辑错误甚至崩溃。而mv则是标记”删除“老文Ӟ然后放一个新的同名文件过厅R也是说老文件和新文件其实是两个不同文gQinode不同Q,只是名字一栯已。正在打开老文件的q程不会受到影响。如果进E用了mmap打开某文Ӟ比如载入soQ,如果目标文g被用cp覆盖q且长度变小。那么读取差额部分的地址Ӟ在新文g中其实已l不存在了)Q会DSIGBUS信号。ɘq程崩溃?br/>



    至于可执行文件本w。倒是不怕cpD崩溃。。因为cp时会报”text file busy"。压根cp不了。这时候也应该使用mvcL作。替换完成后重启q程。执行的是新的可执行文件了?br/>





Tags - ]]>
http://www.trreps.com/read/329 <![CDATA[linux内核扩展模块~译tun.ko-源码版本不匹配问题解决]]> snooda <admin@snooda.com> Fri, 05 Jul 2013 17:32:13 +0000 http://www.trreps.com/read/329
    先去扑ֈ了当前内核的config文g。打开了tun支持。下一步就是去扑ֆ核的源码。找了半天。发现没有完全一L。于是找了个版本相近的,~译完蝲入。显然加载不了。提Cinsmod: error inserting 'tun.ko': -1 Invalid module format。在dmesg里提Ctun: no symbol version for module_layout?br/>
    很多资料在这里提C没有Module.symvers云云。但我的~译目录是有q个文g的。所以不是这个问题?br/>
    ׃内核源码版本和当前内核版本ƈ不完全一致。所以尝试关闭CONFIG_MODVERSIONS。编译后加蝲?br/>
    insmod依旧提示invalid module format。dmesg里改为提Cversion magic 'xxxxxxxxxxxxxxxxxxxxxx' should be 'xxxxx'?br/>

    modprobe是可以强制忽略version magic的。即--force-vermagic参数Q用后成功载入tun.ko。由于内核源码非常相q。故工作正常?br/>    查阅了一?.4内核源码中对CONFIG_MODVERSIONS的说明,该参数有四种可能。即内核是否开启与要加载的扩展是否开?*2。经观察发现?时代内核上这个特性跟之前的文档不太一致。由于时间关pL有详l研I?br/>
    modprobeq有个参敎ͼ?-force-modversion。是在编译时开启了CONFIG_MODVERSIONS的情况下忽略接口不一致的。这个参数没有实验?br/>

    也就是说如果想给一个内核编译扩展。最好的方式当然是找到当时编译的环境。或者编译一个新内核+扩展l系l装上。但现实中往往无法q样做。这时找到相q的源码~译。最后强制蝲入也p了。(生环境不推荐)



    happyQtun可以用了?br/>Tags - , ]]>
http://www.trreps.com/read/328 <![CDATA[top/vmstat{cpu iowait值含义]]> snooda <admin@snooda.com> Wed, 05 Jun 2013 15:03:04 +0000 http://www.trreps.com/read/328
    但开启了一个视频{码服务后Qiowait降到很低水^Qusr和sys飙高Qidleq是接近0。但此时发现视频转码和原io操作的服务均正常q行Q未发生性能波动?br/>
    马上感觉到其中的矛盾。cpu不是用完了么Qؓ啥还能承受一个视频{码这Ucpu密集的服务呢Q?br/>
    
    仔细查看了一下iowait的解释。原来它的真实含义是QcpuI闲q且有进E在{待ioqA的时间?br/>
    也就是说如果iowait很高。那么磁盘压力较大。但此时cpu是较为空闲的。此时如果运行诸如视频{码这Ucpu密集型操作。是可以提高cpu利用率的。这一点在服务混布提高利用率上可以做文章?br/>




Tags - , ]]>
http://www.trreps.com/read/327 <![CDATA[linux删除文g的权限误?700一样删的掉]]> snooda <admin@snooda.com> Tue, 28 May 2013 11:44:26 +0000 http://www.trreps.com/read/327    a的文件放在b的目录下Qa不想让b看到Q所以设|了700权限?br/>
   其实q样也是不安全的。b虽然看不到a的文Ӟ但可以把a的文件删掉?br/>
   因ؓlinux里,目录也是一个“文件”,里面记录了它里面有哪些文Ӟq些文g的inode。b的目录里可以攑֕Qb说了,也就是说Q只要将那个目录“文件”里不顺眼的文g删掉,p删掉文gQ而不对那个文g本n有没有权限?br/>
   至于文g是不是真的被删掉了。取决于文g的引用数Q如果没有其他硬铑֭在。文件就真的被删了?br/>
  
   q里有一个特D的目录Qtmp。大安可以往里面写,但只有属d以删掉自q?br/>   可以看下tmp目录的权限,它是root所有,所以对于普通用h_生效的是最后三位:rwt。其实应该是rwxt。t是特D权限,是徏立在x权限上的Q如果删掉x权限Q可以看到t变成了T。即失效了?br/>
   tQSBITQSticky BitQ目前只针对目录有效Q对于目录的作用是:当用户在该目录下建立文g或目录时Q仅有自׃ root才有权力删除?br/>最h代表的就?tmp目录QQ何h都可以在/tmp内增加、修ҎӞ因ؓ权限全是rwxQ,但仅有该文g/目录建立者与 root能够删除自己的目录或文g?br/>



  
Tags - ]]>
http://www.trreps.com/read/323 <![CDATA[Linux服务器安全操作技巧]]> snooda <admin@snooda.com> Wed, 13 Mar 2013 03:52:58 +0000 http://www.trreps.com/read/323
1Q?nbsp; vi的?br/>vi是用很q泛的文本编辑器Q可以让双手在基本不d字母区的情况下完成各U操作。应注意在查看超大文件时Q不能用vi。因为vi会将文g整体载入内存Q打开大文件很Ҏ造成服务器内存耗尽、IO占用率飙升。在q种场景下,推荐使用less命o?br/>2Q?nbsp; 慎用rm
在日常操作用Q应谨慎使用rmQ尤其是-rf参数。对于不需要的文g应先mv到其他位|保留一D|_待磁盘空间占用率较高需要清理文件时再进行清理?br/>3Q?nbsp; 替换文g使用mv而不是cp
在替换文件时Q应先备份原有文Ӟ再用mv操作文件覆盖。对于正在用该文g的进E来Ԍmv操作不会在本ơ用周期内被感知到Q只有重新打开文g时才会生效。而cp则不然。用cp覆盖文gQ特别是覆盖动态链接库Q很ҎD一些进Ecoredump?br/>4Q?nbsp; ~写重要命o时前面加W号#
在编写重?扚w命oӞ应在命o开头处先输入符?Q?在shell中ؓ注释W)。确认无误后再去?Q避免误按回车键D不完整命令执行造成破坏?br/>5Q?nbsp; 保操作所依赖条g成立
对于依赖前面执行l果的操作来Ԍ可以使用&&来连接各条命令,保前面执行都成功后才进行后面操作,避免前一步执行失败仍l箋下一步造成破坏?br/>6Q?nbsp; 使用rsync而不是scp
在拷贝大量文件时Qscp无法查看具体q度Qƈ且一但中断就要从头再来。相比之下rsync功能更ؓ强大一些,支持增量传输Qƈ且还可以随时查看q度?br/>7Q?nbsp; |络操作注意限?br/>对于rsync或wget{网l操作,应注意限速,避免耗尽带宽影响正常服务的通信?br/>8Q?nbsp; 操作前设计好回滚Ҏ
操作l果不符合预期时Q需要将之前的操作回滚。应提前设计好回滚方案,避免到时候手忙脚乱导致操作失误,或操作时未注意备份文件和数据D回滚p|?br/>







]]>
http://www.trreps.com/read/321 <![CDATA[svn速度优化/调优-ext4文gpȝ优势]]> snooda <admin@snooda.com> Thu, 17 Jan 2013 10:45:06 +0000 http://www.trreps.com/read/321
   最q抽旉看了下?br/>
   先strace一下看看时_发现在操作末两个gettimeofday之间夹了个select操作。会d几百ms?s不等Q然后超时?br/>
   W一感觉是最后处理完了可能给服务器发回个什么数据之cȝQ服务器那里哪个规则配的不对Q客Lq不上然后超时了?br/>
   看svn源码Q看不出来末ց了啥|络操作Q封装了好多层,不确定是不是哪一层注册了什么奇奇怪怪的回调函数Q在最后析构时搞一把?br/>
   用gdb单步跑了一下?br/>
   发现svn_io_sleep_for_timestamps函数很可疑?br/>
   查看代码Q发现这是个延时函数。svn通过mtime获取文g修改信息Q所以每ơsvn co操作末尾Qsvn会等待一段旉再返回,svn客户端判断apr_statq回的文件mtime是不?000000整倍数Qstat看到的mtime数点后面是否全?Q,如果?Q那么svn认ؓ该文件系l不支持毫秒U粒度的mtime记录Q就会等待系l时间秒的蟩变,即等待^?.5sQ最?s。如果不?Q那么只{待1ms?br/>  
   ׃svn使用的apr_sleepZ实现较高_ֺ的sleep延时Q用了select来做延时。这是strace中selectpȝ调用的由来?br/>

   q里q有一个问题,是如果文gmtime恰好是整敎ͼ那么svn׃判断pQ进而等待较长的旉。作者认为L每次都等较长的时间好?br/>
   之前用的文gpȝ是ext2Q它只支持秒U精度的mtimeQ而ext4支持更高_ֺ?br/>
   找了一台机器,划了两个同样大小的分区,一个格式化为ext2Q一个格式化为ext4Q用svn co向两个分Zcheckout代码Q前者耗时0.3?s不等Q后者稳定在100ms。性能提升非常明显?br/>





Tags - ]]>
http://www.trreps.com/read/317 <![CDATA[php的pcntl_signal用法及注意事]]> snooda <admin@snooda.com> Wed, 26 Sep 2012 13:43:50 +0000 http://www.trreps.com/read/317
    刚开始发现捕获信h效,无法q入信号处理函数。研I了一下文档,发现要运行一下declare(ticks = 1);看解释说是ؓ了生时钟云云,我的理解qg晶振一栗添加后父进E可以收C号了?br/>
    但是子进E还是无法收CP排查了很久,没看C么异常,子进E是qxd噻socket_accept的,怀疑是不是pȝ调用在这里无法中断,于是Ҏwhile 1循环Q可以顺利进入中断处理函数?br/>
    然后搜烦了一下,原来pcntl默认都是会自动重新启动被中断的系l调用的Q对外表现则是无法中断系l调用的d?br/>
    q时回头看手册,原来pcntl_signalq有W三个参敎ͼ也是一个可选参敎ͼ是让我们决定是否自动重启系l调用,选择不重启即可?br/>




Tags - ]]>
http://www.trreps.com/read/315 <![CDATA[ubuntu版本升旉到的Could not perform immediate configuration问题]]> snooda <admin@snooda.com> Sat, 28 Jul 2012 19:35:25 +0000 http://www.trreps.com/read/315
    源列表直接更新成12.04的,然后dist-upgradeQ结果出了很多奇奇怪怪问题,主要是python的依赖问题,原来?.6升2.7Q而装2.7又依赖自w,自己~译了一个跑h了,最后遇C一个终极错误:Could not perform immediate configuration python2.7-minimal?搞了半天解决不了Q?br/>
    后来发现原来在apt-get命o里加?o APT::Immediate-Configure=0暂时止查即可?br/>
    另外ubuntu升版本确实问题多多,q遇到很多相x查版本失败的问题。可以通过修改
   /var/lib/dpkg/info/packagename.*相关文g来其返?让相x查强刉过



Tags - ]]>
http://www.trreps.com/read/311 <![CDATA[ssh建立反向代理隧道讉K内网服务器]]> snooda <admin@snooda.com> Sat, 07 Jul 2012 16:02:42 +0000 http://www.trreps.com/read/311
    q行了ssh -Ng -R "*:2222:*:3333" server

    发现在服务器端映端口是成功了,但只是监听在本地。改了半天也不行Q百思不得其解。因Z前用q都是成功的?br/>

    后来发现某些版本的sshd因ؓ安全性考虑Q默认只允许监听在本地?br/>
    需要在/etc/ssh/sshd_config里面加一句:
    GatewayPorts clientspecified


    卛_
Tags - , ]]>
һaƬ_һػƴƬ_ձһػƴƬ <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <֩>| <ı> <ı> <ı> <ı> <ı> <ı>