Articles of linux

Linux QoS:空闲时间批量数据传输

如果某个低优先级的数据stream能够达到X Mbps的带宽,但是只有当这个接口上的所有stream/类的总带宽不超过X时,我该怎么做QoS设置? 同时,其他数据stream/类别不能限制为X. 用例是ISP通过计算5分钟间隔内的带宽平均值并logging最大值来loggingstream量。 我希望将最大使用量保持在最低限度(即在接口繁忙时间中终止批量传输),但是在闲置/低通信量时间内获取数据。 看看经常使用的有类调度程序CBQ,HTB和HSFC,我看不出一个简单的方法来实现这一点。

无需密码查询即可远程重新启动encryption系统

有没有任何标准的解决scheme来重新启动encryption系统,而不需要在下次启动时input密码? 有问题的系统是用LUKS根分区和未encryption的启动分区encryption的Ubuntu。 我能想象的唯一方法是添加一个随机生成的第二个密钥,该密钥基于启动分区上的一个文件,并在系统启动时使用启动脚本将其删除。 上述方法是否有效? 还是有一个不需要手动方法的默认选项? 我能想到的唯一的安全隐含是,如果系统在启动第一个服务之前确实启动失败。

启用超线程 – 在Ubuntu Precise 64位上导致qthread创build错误

我们最近设置了一台HP ProLiant DL360p服务器,用于一些繁重的工作。 出于某种原因,我们在系统BIOS中禁用了超线程 。 作为一个双CPU 8核心系统,这给了我们16个硬件线程。 32 GB RAM。 我们正在运行的Ubuntu 12.04 64位。 大部分工作是由VHDL“合成器”或编译器完成的。 这是一个QT应用程序,但通常以命令行模式(无GUI)运行。 这个编译器在过去几周运行良好,由一个持续集成系统(Jenkins)启动。 今天,我们重新启用了超线程来访问所有32个硬件线程。 然而,现在这个编译器在每个我可以devise的情况下都会挂起下面的错误: QThread::start: Thread creation error: Resource temporarily unavailable 这个过程似乎是停滞的,不占用任何CPU,并且ctrl-c中断它。 我做了一些在线search,这似乎可能与操作系统的最大线程限制相关,但我不知道如何去改变这一点。 无论如何,默认情况下大约有800个线程,对于仅运行less量(可能是2?)的编译器来说,这应该足够了。 同时,我将不得不禁用超线程,但我想知道这是否是运行64位Linux的高端服务器的已知问题? 有没有已知的解决方法? 或者更可能是该特定应用程序的问题?

iptables:build立一个防止滥用DNS放大攻击的规则集

我一直在build立规则集来检测和阻止DNS放大攻击。 我卡住了,希望能在这里find帮助。 我会在这里发布我所拥有的(bash脚本,涉及DNS的部分): IPTABLES='/sbin/iptables -v' SERVERIP=abcd echo '################ Previously initiated and accepted exchanges bypass rule checking #' $IPTABLES –append INPUT -m state –state ESTABLISHED,RELATED –jump ACCEPT echo '################################################ Allow unlimited outbound traffic #' $IPTABLES –append OUTPUT -m state –state NEW,ESTABLISHED,RELATED –jump ACCEPT echo '################################################################## Rules for DNS #' # DIG ANY ISC.ORG attack preventer. # […]

如何为特定版本创buildRHEL回购协议

我已经在CentOS工作了一段时间了,我已经习惯了回购的pipe理方式。 最近一个新的专有应用程序要求该公司获得RHEL许可证,回购pipe理已成为一场噩梦。 同步RHEL回购意味着下载几乎15K的包(对于V5),我真的想限制我的镜像提供基于特定版本(即5.8,5.9)的软件包。 我已经search了几天,我找不到任何相关的东西。 任何想法如何在CentOS中实现? 我忘记补充说,我已经使用mrepo进行系统configuration的repo sync和cobbler。

停止Tomcat后SSH无响应,许多ksoftirqd CPU使用率

我有一个奇怪的问题。 每当我停止Tomcat,SSH变得非常缓慢,几乎完全没有响应。 SSH需要一分钟甚至更多时间才能接受任何命令。 当我终于使Tomcat重新开始时,一切都恢复正常。 这发生在一个非常繁忙的服务器上。 问题是我需要经常停止Tomcat,因为应用程序升级。 升级通常需要几秒钟的时间,但这需要将近10分钟,因此我们正在经历不必要的停机时间。 我看到的一件事是,当我停止Tomcat top显示了100%CPU的ksoftirqd/X进程。 这可能是问题吗? 内核版本是: 2.6.18-308.11.1.el5 红帽版本是: Red Hat Enterprise Linux Server release 5.9 (Tikanga) 任何想法为什么发生这种情况?

调整RAID1磁盘arrays中的openSUSE 12.3 GPT ext4分区

我有一个软件RAIDconfiguration(/ dev / md2),它已经从两个3TB磁盘(sda和sdb)分配了分区sda3和sdb3。 分区types是GPT而不是LVM,文件系统是ext4。 现在,根分区占用1TB,主分区(在RAID / dev / md3上的sda4和sdb4)占用1.8TB,我想调整根分区的大小,使其只占用250GB,并将可用空间分配给主分区。最终在md2中为250GB,在家中为2.5TB。 为了做到这一点,我读了使用mdadm和resize的数组卷将实现,但问题是,它只调整了md2设备,但sda3和sdb3中的可用空间未使用,我无法将其分配给sda4和sdb4,所以我可以在md3中使用额外的空间,所以我有: At the beginning: /dev/md2 with ext4, mounting / with quota of 1000GB sda3: 1000GB with ext4 using the full 1000GB sdb3: 1000GB with ext4 using the full 1000GB /dev/md3 with ext4, mounting /home with quota of 1800GB sda4: 1800GB with ext4 using the full […]

如何可靠映射vSphere磁盘< – > Linux设备

任务在手 将虚拟磁盘添加到vSphere 5上的Linux VM之后,我们需要识别这些磁盘以自动执行LVM存储设置。 虚拟磁盘可能驻留在不同的数据存储区(例如sas或flash),尽pipe它们的大小可能相同,但其速度可能会有所不同。 所以我需要一种将vSphere磁盘映射到Linux设备的方法。 思路 通过vSphere API,我可以获取设备信息: Data Object Type: VirtualDiskFlatVer2BackingInfo Parent Managed Object ID: vm-230 Property Path: config.hardware.device[2000].backing Properties Name Type Value ChangeId string Unset contentId string "d58ec8c12486ea55c6f6d913642e1801" datastore ManagedObjectReference:Datastore datastore-216 (W5-CFAS012-Hybrid-CL20-004) deltaDiskFormat string "redoLogFormat" deltaGrainSize int Unset digestEnabled boolean false diskMode string "persistent" dynamicProperty DynamicProperty[] Unset dynamicType string Unset eagerlyScrub boolean […]

中断mdadm –grow操作是否安全?

我最近将RAID5中的磁盘从3x2TB更改为3x3TB。 我也想把块大小从默认的512k改为128k。 我已经添加了所有新的设备arrays,我运行: mdadm /dev/md1 –grow –backup-file=/boot/md1_grow_backup_file –chunk=128 –backup-file选项是必需的,因为块大小发生了变化,而且由它指定的文件位于不同的块设备上。 我不得不closures服务器来物理移动它,但重塑操作比我预期的要慢得多,所以我想知道是否可以中断进程并在重新启动后继续进行。 这个联机手册提供了一些关于中断/重塑过程的信息,但是在我看来,这是为了覆盖一些灾难性的情况 – 断电,服务器locking等等。 是否有可能优雅地停止mdadm数组重塑? 如果是这样,如何停止arrays以及如何恢复启动后的重塑? 备份文件是必要的吗?

为什么mount是强迫我指定-t ext4为一个分区,但不是另一个?

我有两个非常相似的分区,/ dev / sdb1(标有'bigb')和/ dev / sdc1(标有'bigc')。 我以前可以使用mount -n -L bigX /mnt/donottouch/localX ( X是b或c )来挂载它们。 然而,mount最近开始要求我指定-t ext4 但是只在bigc上 。 bigb坐骑很好: # mount -n -L bigb /mnt/donottouch/localb -vvv mount: fstab path: "/etc/fstab" mount: mtab path: "/etc/mtab" mount: lock path: "/etc/mtab~" mount: temp path: "/etc/mtab.tmp" mount: UID: 0 mount: eUID: 0 mount: spec: "/dev/sdb1" mount: node: "/mnt/donottouch/localb" […]