我在 Debian 上有一个大型(> 100TB)ZFS (FUSE) 池,它丢失了两个驱动器。由于驱动器出现故障,我用备件替换它们,直到我可以安排停机并物理更换坏磁盘。
当我关闭系统并更换驱动器时,池开始按预期重新同步,但是当它完成大约 80% 时(这通常需要大约 100 小时),它再次重新启动。
我不确定一次更换两个驱动器是否会造成竞争条件,或者由于池的大小,重新同步器花费的时间太长以至于其他系统进程正在中断它并导致它重新启动,但是在“zpool status”的结果或指向问题的系统日志。
从那以后,我修改了我如何布置这些池以提高重新同步性能,但对让此系统重新投入生产的任何线索或建议表示赞赏。
zpool 状态输出(自上次检查以来,这些错误是新的):
pool: pod
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://www.sun.com/msg/ZFS-8000-8A
scrub: resilver in progress for 85h47m, 62.41% done, 51h40m to go
config:
NAME STATE READ WRITE CKSUM
pod ONLINE 0 0 2.79K
raidz1-0 ONLINE 0 0 …Run Code Online (Sandbox Code Playgroud) 我有 4 台带有 Debian Wheezy 操作系统的服务器。我安装了 Apticron,它会通知我有关更新的信息。Debian 更新是如此频繁,以至于当我完成更新 4 个服务器中的最后一个时,我会收到有关第一台服务器上新更新的新电子邮件。我在收到通知时尝试更新所有服务器,但我不知道是否需要重新启动服务器。我已经读过,如果目录"/var/run"包含文件,"reboot-required"我必须重新启动服务器。但我从未在"/var/run". 我怎么知道什么时候需要重启?如果不需要,我不希望每次安装新更新时都重新启动服务器。
我知道如果我更新 PHP 或 MySQL 等,我不需要重新启动服务器,但更新通常包含许多“lib ...”。
以下是 9 个更新(我本周收到了)。
krb5-locales 1.10.1+dfsg-5+deb7u3
libdbus-1-3 1.6.8-1+deb7u6
libgssapi-krb5-2 1.10.1+dfsg-5+deb7u3
libk5crypto3 1.10.1+dfsg-5+deb7u3
libkrb5-3 1.10.1+dfsg-5+deb7u3
libkrb5support0 1.10.1+dfsg-5+deb7u3
libruby1.8 1.8.7.358-7.1+deb7u2
libxml2 2.8.0+dfsg1-7+wheezy3
ruby1.8 1.8.7.358-7.1+deb7u2
Run Code Online (Sandbox Code Playgroud)
我不知道什么是“libkrb、libgssapi”等。如何检测是否需要重新启动?请不要建议安装 UnattendedUpgrades 来让服务器自动更新,因为如果更新不正确,这可能会导致网站脱机。
接管运行 MySQL 的 Debian Etch Web 服务器。
我通常使用以下命令启动、停止和重新启动 msyql:
/etc/init.d/mysql 重启
由于某种原因,我得到以下信息:
:~# /etc/init.d/mysql 停止
停止 MySQL 数据库服务器:mysqld 失败!
mysql进程运行良好:
:~# ps aux | grep mysql
root 2045 0.0 0.1 2676 1332 ? S Jun25 0:00 /bin/sh /usr/bin/mysqld_safe
mysql 2082 0.6 10.7 752544 111188 ? Sl Jun25 18:49 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root 2083 0.0 0.0 1568 504 ? S Jun25 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root 11063 0.0 0.0 2856 716 …Run Code Online (Sandbox Code Playgroud) 我想查看哪些软件包可用于更新/升级而不实际更改任何文件,因为有些软件包我不想更新。那么是否可以在例外情况下进行 apt-get update 。
我正在设置一个 Debian 机器作为 4 个子网的路由器。为此,我在连接 LAN 的 NIC 上定义了 4 个虚拟接口 ( eth1)。
eth1 Link encap:Ethernet HWaddr 94:0c:6d:82:0d:98
inet addr:10.1.1.1 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::960c:6dff:fe82:d98/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6026521 errors:0 dropped:0 overruns:0 frame:0
TX packets:35331299 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:673201397 (642.0 MiB) TX bytes:177276932 (169.0 MiB)
Interrupt:19 Base address:0x6000
eth1:0 Link encap:Ethernet HWaddr 94:0c:6d:82:0d:98
inet addr:10.1.2.1 Bcast:10.1.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:19 Base address:0x6000
eth1:1 Link encap:Ethernet HWaddr …Run Code Online (Sandbox Code Playgroud) Debian 和衍生产品 (Ubuntu) 不使用 php 会话垃圾收集器
session.gc_probability = 0
Run Code Online (Sandbox Code Playgroud)
相反,他们使用 cron /etc/cron.d/php5
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete
Run Code Online (Sandbox Code Playgroud)
为什么 Debian 选择这样做?
我已经重新阅读了关于这个的文档以及这里的其他帖子,这对我来说仍然很不清楚。我一直在测试各种事物理解之间的区别alias_maps,并virtual_alias_maps和我没有看到后缀使用这2个单独的设置。这是我到目前为止发现的(注意 - 我在与我的 Web 服务器相同的服务器中使用 postfix 作为空客户端来仅发送电子邮件):
1) /etc/aliases 文件:
root: me@somedomain.com
Run Code Online (Sandbox Code Playgroud)
当我将上述内容添加到alias_maps. 但是,我也注意到一些其他服务(如mail命令)不尊重这一点,并尝试将电子邮件直接发送到不存在的 root@mydomain.com(我认为myorigin这是添加@mydomain.com的后缀设置) . 为了解决这个问题,我然后添加了virtual_alias_maps
2) /etc/postfix/virtual
root me@someotherdomain.com
Run Code Online (Sandbox Code Playgroud)
添加上述内容后,所有服务都使用此虚拟别名电子邮件。我还注意到,一旦我添加了上述内容,即使fail2ban 也开始忽略我在/etc/aliases/文件中的初始设置并开始遵循虚拟文件中给出的电子邮件地址。
现在这让我更加困惑——
/etc/aliases/当虚拟别名映射中的电子邮件似乎覆盖它时,为什么我们需要?
拥有这两个单独的别名映射的目的是什么,我们何时决定何时使用什么?
为什么fail2ban(配置为发送到root@localhost)首先遵循alias_maps(/etc/aliases/) 中给出的电子邮件地址,然后决定忽略virtual_alias_maps添加过的那个地址?
为什么并非所有服务都读取 /etc/aliases 中提到的电子邮件别名,而它们仅在将电子邮件别名添加到虚拟别名映射中时才起作用?
从昨天开始,我已经花了几个小时,但仍然不确定。有人可以帮我清除我的困惑吗?
编辑:
这是使用mail root命令将电子邮件发送到 root 时的邮件日志。在 /etc/aliases/ 中提到了 root 的别名电子邮件。但是直到我将此根别名电子邮件从 移动aliases_maps到virtual_aliases_maps
在提及根电子邮件别名时记录/etc/aliases/:
Nov 14 16:39:27 Debian postfix/pickup[4339]: 0F12643432: uid=0 from=<root> …Run Code Online (Sandbox Code Playgroud) 这个星期五我看到我在运行时由于某种原因有2个被阻止的包apt-get upgrade,所以我很自然地做了任何没有经验的系统管理员都会做的事情并卸载了这些包,希望我可以简单地重新安装它们并解决问题。
我不知道,我只是让情况变得更糟。当我尝试重新安装时openjdk-8-jre-headless,我得到了这个:
$ apt-get install openjdk-8-jre-headless
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
openjdk-8-jre-headless : Depends: ca-certificates-java …Run Code Online (Sandbox Code Playgroud) 我尝试将文件的所有者 chown 为 root,但我不能。我正在以 root 身份执行此操作。我收到以下消息:
chown: changing ownership of `ps': Operation not permitted
Run Code Online (Sandbox Code Playgroud) 对于那些已经在运行配置管理工具的人来说,这可能是一个简单的问题。诸如 Puppet 或 Chef 之类的配置管理工具是否是使已安装的软件包保持最新的正确方法?
假设我运行了许多服务器,主要基于 Debian 和 Ubuntu。当安全更新或错误修复出现时,配置管理工具是否可以更轻松地更新从存储库安装的包?
我目前运行“无人值守升级”以让系统自动安装安全更新,但我仍然需要连接到服务器并aptitude update && aptitude safe-upgrade经常运行。当然,服务器越多,这就会变得无聊、乏味且容易出错。
诸如 Puppet 或 Chef 之类的工具是否是使安装的软件包保持最新的正确方法?你们中有人使用这些工具来避免aptitude在 15 台服务器上手动运行或等效吗?我很确定这些问题的答案是“是的,当然!”
但是在哪里可以找到有关此特定用例的更多信息?我还没有时间深入研究 Puppet 或 Chef,示例食谱或课程仅展示了安装特定软件包(例如 ssh)的或多或少的琐碎示例。除了官方文档之外,您还有其他资源可以推荐吗(当然,一旦我知道哪些工具适合我,我就会研究文档)。