最佳技术支持

作者:Staff

备份缓慢

我将我们的 Samba 服务器 (Red Hat 7.3, PII) 迁移到了一台新 PC (Red Hat 9, P4) 上。我设置了一个 cron 任务,使用 smbtar 从共享目录创建每日备份。我已经使用 up2date 安装了所有最新的补丁。问题:这个备份脚本在新配置上的运行速度比旧配置慢得多。有什么想法可以解释这是为什么吗?


Zoltan Sutto


sutto.zoltan@rutinsoft.hu

我的第一个猜测是 Ethernet 驱动程序。确保它们是最新的。我也遇到过 Ethernet 自动协商速度的问题。确保您处于 100BT/全双工模式。


Christopher Wingert


cwingert@qualcomm.com

如果您真的想分析问题,您应该首先运行开启跟踪的 smbtar 脚本(bash 的 -x 选项)。这是因为 smbtar 是一个 shell 脚本。然后,您可以目测查看哪些命令花费了很长时间。您也可以(更深入地)编辑脚本的副本,在外部命令调用之间插入调用以获取时间戳(相对的和绝对的)。这些可以写入性能分析文件,或者简单地使用 logger 命令发送到系统日志。您可以使用像这样的 shell 表达式

START_TIME="$(date +%s)"; REL_TIME="$START_TIME"
REL_TIME="$(( $(date +%s) - $REL_TIME ))"
...

来获取当前时间(自 1970 年 epoch 以来的秒数)。因此,脚本的总运行时间将是当前时间减去您在脚本第一行设置的 $START_TIME。

还要考虑您的配置差异可能会引入一些奇怪的网络名称服务延迟,例如,如果您的旧 /etc/hosts 文件有一些条目使反向 DNS 查询工作,而新安装未能保留这些条目,或者如果您的旧 /etc/nsswitch.conf 仅检查本地文件,而新的配置文件以某种方式查询 NIS、LDAP 或 winbind (MS Windows 域) 源。由于 winbind 在 7.3 之后的较新 Red Hat 系统中,它可能是罪魁祸首。

性能调优是一个进行测量(性能分析)以查找瓶颈(分析)并在可能的情况下消除这些瓶颈(调优)的过程。通常,消除瓶颈涉及找到系统正在执行对您的应用程序不必要的工作的情况,例如,查询基于网络的目录服务,而不是简单地使用本地文件。

有时您应该考虑完全不同的方法来处理手头的任务。在这种情况下,我会认真考虑不使用 smbtar 来备份这些 Samba 共享。您可以简单地使用 rsync 将选定的(共享的)目录树同步到系统上带有磁带驱动器的一个大型保存磁盘。然后,直接备份到磁带。


Jim Dennis


jimd@starshine.org

可能是您的新系统没有获得应有的硬盘吞吐量。我假设您使用的是 IDE 硬盘。某些 Linux 发行版的默认安装不一定默认启用 DMA;它必须在安装后显式启用。您可以使用 hdparm 来验证/测试您的驱动器(在我的情况下,我的系统在 /dev/hda 上)

[root@hamtop ~]# hdparm /dev/hda

/dev/hda:
multcount    = 16 (on)
IO_support   =  0 (default 16-bit)
unmaskirq    =  0 (off)
using_dma    =  1 (on)
keepsettings =  0 (off)
readonly     =  0 (off)
readahead    =  8 (on)
geometry     = 3648/255/63, sectors = 58605120, start = 0

检查 using_dma 条目。如果您的设置为 0,这可以解释这个问题。尝试将其设置为hdparm -d1 /dev/hdX,其中 X 是您的驱动器盘符。然后测试它

[root@hamtop ~]# hdparm -tT /dev/hda

/dev/hda:
Timing buffer-cache reads:   128 MB in  0.82 seconds = 156.10 MB/sec
Timing buffered disk reads:  64 MB in  2.68 seconds = 23.88 MB/sec

您应该看到缓冲磁盘读取速度比在未启用 DMA 的情况下运行相同测试时获得的速度要快得多。在依赖它之前,请彻底测试启用 DMA 的驱动器,因为在极少数情况下,较旧的驱动器在这种设置下表现不佳。如果这确实解决了问题,请阅读有关如何使您的特定发行版在启动时启用此功能的文档。对于 Red Hat,可以通过 /etc/sysconfig/harddisks 进行控制。


Timothy Hamlin


thamlin@zeus.nmt.edu

如何恢复内核 .config 文件?

我已将计算机上的 Linux 内核重新配置为 2.4.22 版本,但在启动屏幕上,我仍然可以选择 2.4.20-8 和 2.4.22 版本。我的问题是我没有 2.4.20-8 内核的 .config 文件,我想知道是否有命令可以生成此文件?


Jan Nicolas Myklebust


jan-nicolas.myklebust@cnes.fr

如果这是默认的 Red Hat 内核,您可以解压缩内核源代码包并从 /usr/src/linux-2.4/configs 目录中获取 .config 文件。


Christopher Wingert


cwingert@qualcomm.com

在 2.4.x 及更早版本中,没有命令可以从内核映像生成 .config 文件。在新的 2.6 内核中,编译时选项支持此功能。


Jim Dennis


jimd@starshine.org

没有历史记录的 bash

2004 年 2 月的 BTS 专栏有一个关于从 bash 历史记录中隐藏错误输入信息的问题。如果您使用以下命令终止您自己的 bash 进程kill -9 $$而不是注销,它不会将历史记录写入磁盘。


Jack Coates


jack@monkeynoodle.org

无法在可用磁盘空间上创建分区

我的 Red Hat 9 系统上的当前分区是

hda1 20GB Windows
hda2  7GB Linux /
hda3 12GB Linux /usr
swap  1GB

我使用 GNU parted 将 hda1 调整为 8GB,从而获得了 12GB 的可用空间。现在我想在未使用的 12GB 上创建一个新的 Linux 分区。问题是,partedmkpart命令只是说无法创建分区并且fdisk n命令说在创建新分区之前删除一个分区.


Hiroshi Iwatani


HGA03630@nifty.ne.jp

听起来您已经有四个主分区了,而最大数量是四个。您需要删除一个分区并添加一个逻辑分区,逻辑分区可以包含更多分区。我建议关闭 swap,删除 swap 分区,添加一个包含所有可用空间的逻辑分区,添加一个新的 swap 分区,运行mkswap,添加并格式化您的数据分区,然后打开 swap。您还应该更新 /etc/fstab 以适应新的 swap 和数据分区。


Christopher Wingert


cwingert@qualcomm.com

快速交叉网络连接

当两台计算机都是 Debian sarge,或者一台是 sarge 而另一台是 Microsoft Windows 时,我如何使用交叉以太网电缆将数据从一台计算机传输到另一台计算机?


Akos Zelei


azelei@freemail.hu

您只需为两台机器中的每一台分配来自同一网络的任意 IP 地址(我建议使用为这些目的保留的 RFC1918 地址块:192.168.x.*——因此将一台称为 192.168.1.1,另一台称为 1982.168.1.2)。如果您明智地选择地址(或遵循我的示例),您可以将子网和广播值保留为默认值。然后您应该能够从另一台 ping 通一台。那时,您还应该能够在该链接上运行任何正常的 TCP/IP 协议。您可以使用 IP 地址或在每台机器的 /etc/hosts 文件中为 left 和 right 添加条目。那时,您可以使用 rsync、scp 或您喜欢的任何协议跨它们进行传输。对于 Windows 系统:您可以手动创建静态 IP 地址配置,并使用其本机文件共享(在 Debian GNU/Linux 系统上配置 Samba)或安装 Cygwin for MS Windows 套件,并使用 rsync over SSH 等。


Jim Dennis


jimd@starshine.org

如果您不想将 Linux 系统设置为 Samba 服务器,请在 Windows 机器上安装 putty (www.chiark.greenend.org.uk/~sgtatham/putty)。或者,如果 Windows 机器已经设置为共享文件,您可以从 Linux 使用 smbclient。


Don Marti


dmarti@ssc.com

加载 Disqus 评论