Articles of linux

开发,testing,分期和生产模型

我正在用Postgres数据库开发一个运行django的网站。 我在本地开发,并有3台VPS服务器用于testing,分期和生产。 每个VPS运行自己的Linux / Apache / Python / Postgres堆栈,并拥有自己的数据库。 我已经开始发现,通过使用git进行连续部署,暂存实际上变得多余(从分段到生产需要交换需要重新启动VPS的IP地址)。 我唯一能做的就是有助于进行复杂的数据库迁移,即使这样,在分区和生产过程中的Postgres数据库也不会镜像,那么在迁移之间input的数据就会丢失。 我的问题是我应该在分期和生产之间镜像Postgres吗? (如果是这样,怎么样?)我做对了吗? 我无法find有关Web应用程序部署最佳实践的任何地方的文档。

如何知道谁是连接到我的屏幕上,他在屏幕上的位置?

我使用屏幕,有时我被迫分享。 我如何能够pipe理我的屏幕的活动连接? 我想监视连接和用户连接,他们在哪里,他们做什么。 我也希望能够把它们踢出去。 这可能吗? 谢谢。

每次更改文件时自动运行一个命令

每次我对文件进行一些更改并保存时,我都想要一个命令来运行。 我可以设置一个Ruby脚本来监视文件并运行命令,但是我发现应该有一些简单的Unix方法来执行此操作。 在那儿? 我在Ubuntu 8.10,稍微不太模糊。 编辑: incron被build议,看起来不错。 但我无法正常工作(编辑:当我将文件保存在指定目录中,或者我的命令有问题时,该命令似乎不运行)。 我安装incron,并使用incrontab设置我的用户的incron表,并将用户添加到允许列表。 我的具体情况是编辑一个TeX文件。 我希望命令将其呈现为PDF格式,以便每次编辑和保存TeX文件时运行。 所以这是我提出的incron表条目: /home/ehsanul/Documents/latex IN_CLOSE_WRITE echo $@/$# | grep \\.tex$ | xargs xelatex 我究竟做错了什么?

你可以设置一个最小的Linux磁盘缓冲区大小?

我有一台相当老的Linux机器,内存为2GB,没有交换,而且工作得很好,系统使用每一块未使用的内存进行caching,效果很好。 但是,当我接近强调内存(例如,> 1950MB分配)时,它会慢慢爬行; 我怀疑这是因为没有剩余的磁盘缓冲区。 我知道OOM杀手很快就会生效,但通常不会到达目的地 – 速度变得非常慢,以至于到30-40的时候,没有任何进程取得进展(因此不会分配更多的内存),以及我必须重新启动它。 当我试图杀死一个进程来让机器响应,例如通过去控制台(通过Alt-F1,login,只是做一个“killall badprocess”),它通常工作,除了我必须等待在用户/密码和获得提示之间~10分钟 – 所有这些都是磁盘活动。 再次,没有交换,所以它不交换 – 这只是颠簸,因为它没有缓冲区。 我专门为磁盘缓冲区专门设置了100MB左右的磁盘缓冲区,这会稍早触发OOM杀手(毕竟,程序的内存要less一些),但另一方面会使机器始终处于响应状态。 有没有办法做到这一点? 我一直没能find/ proc / kernel或/ sys / vm条目来做这种事情。

PostgreSQL 8.4.4中的大连接查询性能不佳,尽pipe有足够的内存来完全caching

题 我怎样才能使这个post中描述的查询更快,尤其是通过使用可用的RAM来制作PostgreSQL? – 请注意,我试图适当地configurationeffective_cache_size和shared_buffers。 见下文。 背景 我必须定期join一个约2.6亿行表(coreg_master),并附带新的数据。我已经对表进行分区,以允许每个分区适合内存。 我当然也有适当的索引。 但是,将分区表分别与其他(小得多)表连接时,会在磁盘上执行完全随机的IO操作。 这是由于在大型表上嵌套循环索引扫描,由于我们没有很好的磁盘设置,所以速度很慢。 我希望它使用所有可用的内存来caching大的分区表,我知道应该由Linux内核/文件系统本身来完成。 但它仍然不会将表加载到RAM中,尽pipe它适合。 我想这是因为访问模式是不连续的,因此不会触发caching? 我不知道。 查询计划和configuration参数如下。 表结构 这是我的大桌子coreg_master的分区之一。 分区表被命名为coreg_a,coreg_b等。 \d coreg_a Table "public.coreg_a" Column | Type | Modifiers ————-+——————-+———————————————————– id | integer | not null default nextval('coreg_master_id_seq'::regclass) first_name | character varying | last_name | character varying | phone | character varying | city | character varying […]

如何获得Linux udev与Hyper-V IC合成networking驱动程序的兼容性

我设法让Debian 6.0.1与Microsoft Hyper-V合成驱动程序一起工作,这要归功于这个问题 。 但是,如果我在每次启动时都不从/etc/udev/rules.d/70-persistent-net.rules删除合成以太网卡的条目,那么下次虚拟机将不会启动,因为有kernel BUG at mm/mmap.c:2129 (recursion故障) – last sysfs file: /sys/devices/vmbus_0_0/vmbus_0_3/net/eth0/uevent 我该如何解决? 编辑 : 75-persistent-net-generator.rules看起来像这样: # These rules generate rules to keep network interface names unchanged # across reboots and write them to /etc/udev/rules.d/70-persistent-net.rules. # variables used to communicate: # MATCHADDR MAC address used for the match # MATCHID bus_id used for […]

磁盘升级后,Linux无法重新组装RAIDarrays

我有一个带有4个SATA磁盘的Ubuntu(9.10)机器。 每个磁盘的分区都是相同的,前几个GB用于引导卷的RAID 1arrays( /dev/md0 ),其余用于RAID 5( /dev/md1 )。 最近,我根据这里的说明,通过反复故障和卸下驱动器升级到更大的驱动器,将其replace为更大的驱动器,将其分割并重build。 这一切都成功完成。 但是,升级后第一次重新启动,Ubuntu踢我到一个initfsshell,声称它找不到根设备。 在检查/proc/mdstat ,我发现它以某种方式将整个驱动器( /dev/sda , /dev/sdb等)组装到/dev/md1下的单个RAID 5卷中,而不是将分区组装到它们自己的arrays中。 做mdadm –stop /dev/md1; mdadm –assemble –scan mdadm –stop /dev/md1; mdadm –assemble –scan修复它,并且两个卷都正确组装(并且无需挂载)。 出了什么问题,我该如何解决?

在EXT4 linux系统上模拟丢失的超级块错误

我正在为一个每年停电几次,影响他们的Linux服务器的朋友编写参考资料。 这个人对linux系统pipe理并不熟悉,所以我想包含屏幕截图和相当全面的描述,以及如何回应。 其中一个比较常见的问题就是如何从根文件系统中的损坏或丢失的超级块中恢复数据(每年几次;他们处于闪电发生的区域)。 我有关于如何解决这个问题的文档,但是假设你有一个熟悉linux和基于控制台的系统pipe理的知识。 我想要做的是在我的服务器上设置一个KVM,有意识地破坏根文件系统,然后截取最初的发现以及要恢复的步骤。 我似乎无法触发丢失/损坏的超级块问题。 我一直在尝试这样的事情: (/ dev / sda2是根LVM分区所在的地方)dd if = / dev / zero of = / dev / sda2 bs = 1024 count = 1 seek = 1 (/ dev / mapper / vg_sys-lv_root是根LVM分区)dd if = / dev / zero of = / dev / mapper / vg_sys -v_root bs = […]

Possbile将KVM虚拟机移植到Amazon EC2?

我们目前有我们自己的有多个KVM客人的服务器。 如果我们决定迁移到Amazon EC2,是否可以简单地复制VM镜像,或者是否需要在云上重新configuration新的VM? (这可能听起来很愚蠢,但我仍然在掌握所有虚拟化/云的东西)

为什么我看到DRBD有很大的性能?

我看到DRBD的性能比用户手册说的要大得多。 我正在使用DRBD 8.3.7(Fedora 13 RPMs)。 我已经设置了DRBDtesting,并测量了没有DRBD的磁盘和networking的吞吐量: dd if=/dev/zero of=/data.tmp bs=512M count=1 oflag=direct 536870912 bytes (537 MB) copied, 4.62985 s, 116 MB/s /是我正在testing的磁盘上的逻辑卷,安装时没有DRBD iperf的: [ 4] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec 根据吞吐量开销的预期 ,瓶颈将是较慢的,networking或磁盘和DRBD应该有3%的开销。 在我的情况下,networking和I / O似乎相当匹配。 这听起来像我应该能够达到100 MB /秒左右。 所以,用原始的drbd设备,我得到了 dd if=/dev/zero of=/dev/drbd2 bs=512M count=1 oflag=direct 536870912 bytes (537 MB) copied, 6.61362 s, 81.2 MB/s […]