rt_sigtimedwait() 使用示例

问题

用户反映某备份软件要花费4-7分钟才能连接上,然后从 strace 中看到 rt_sigtimedwait 这个系统调用耗用了将近3分钟。

777   09:28:20.256729 rt_sigtimedwait([INT QUIT TERM XCPU XFSZ PWR], NULL, NULL, 8 <unfinished ...>
777   09:30:55.672016 < ... rt_sigtimedwait resumed> ) = 2 &lt;155.415104>

为什么 rt_sigtimedwait 会消耗大量时间呢?
继续阅读“rt_sigtimedwait() 使用示例”

在RHEL6搭建 LVS Load Balancer

环境

简单的LVS架构 来源: redhat.com

feichashao_RHEL610_real-server-0 192.168.122.152
feichashao_RHEL610_real-server-1 192.168.122.9
feichashao_RHEL610_lvs_router 192.168.122.146

VIP: 192.168.122.108

在这个环境中,有一个 LVS router 和两个 Real Server. LVS Router 负责把流量转发到 Real Server 中, Real Server 是真正处理请求的。
继续阅读“在RHEL6搭建 LVS Load Balancer”

存储进行迁移,Linux层面需要做什么?

背景

系统使用了 Multipath + LVM 给应用提供存储。现在存储方面需要做迁移,要把 LUNs 迁移到其他阵列上。存储层面会通过做 Mirror 的方式,在新的位置创造出数据一致的 LUNs.

这种情况下,Linux 操作系统层面需要做哪些操作来配合? 应用可以down,但是系统不允许重启。

步骤

因为不能重启,为了尽可能减少风险,需要首先从文件系统,LVM, multipath 层面进行清理原有磁盘,存储层面迁移后,再重新扫描新的磁盘、multipath、LVM.
继续阅读“存储进行迁移,Linux层面需要做什么?”

通过">"重定向日志,每次写入日志时会不会先把已有日志读入内存,然后再追加?

疑问

1. 假设有程序不断地输出日志到 /var/log/example.log

# ./test.sh > /var/log/example.log

2. 假设这个程序会运行一年,日志量可能到达5GB.

3. 程序在每次写入新日志的时候,“>”会不会先将 /var/log/example.log 的已有数据读入内存,再追加新的日子? 如果是这样,内存会被大量占用而影响系统性能。
继续阅读“通过">"重定向日志,每次写入日志时会不会先把已有日志读入内存,然后再追加?”

怎样把文件清零,使得vmware能回收存储空间?

正常情况下,在系统中删除一个文件,只会在文件系统层面把文件相应的 inode 信息删除,实际上数据仍存在于磁盘中。

在vmware环境中,vmware实际上可以回收磁盘未被使用的空间,把空间留给其他虚拟机使用。

所以,在删除文件的时候,可以将文件的数据清零,使vmware可以把空间回收。
继续阅读“怎样把文件清零,使得vmware能回收存储空间?”