我使用许多 OSX 客户端机器,这些机器通过TimeMachine备份到 Ubuntu Linux 文件服务器上的 AFP 共享,由 netatalk/afpd 导出。这些客户端每天在任意时间备份。服务器上还有其他重要的非 TimeMachine AFP 共享。
在服务器上,TimeMachine 备份表示为sparsebundles——一种涉及许多“带”的数据存储格式——存储在标准的 EXT4 文件系统上。在这个 sparsebundle 中埋藏着 TimeMachine 使用的带有 HFS+ 文件系统的磁盘映像,但从服务器端来看,它只是带文件和一些顶级元数据的集合。
rsnapshot在服务器上每 4 小时运行一次,并将 sparsebundle 带文件和元数据备份到可移动媒体上(用于异地存储)。因此 rsnapshot 也在一天中的任意时间备份这些 sparsebundle 频带。rsnapshot 使用 rsync 来执行复制。
问题是,如果 rsnapshot 在客户端机器安装了 sparsebundle 时运行,我担心 rsnapshot 可能会捕获 sparsebundle 的不一致状态,因为在备份过程中频段可能会发生变化。显然这不利于保证可恢复的备份!
我正在努力想办法解决这个问题。在 rsnapshot 尝试进行备份时未安装 sparsebundle 似乎很重要。从服务器端,我目前能看到的唯一方法是关闭 aftp 守护进程,也许是在等待 OSX 客户端卸载 sparsebundle 之后。这样做的缺点是它也使其他非 TimeMachine AFP 导出也脱机,这对用户来说是不可接受的。据我所知,afpd 没有提供(轻松)添加或删除导出的方法 - 尽管一个选项可能是自动重写 afpd 的配置文件以在 rsnapshot 备份期间禁用 TM 导出,但这仍然会失败法新社短时间分享。
有没有更好的办法?
我们最近为一些繁重的工作设置了一台 HP ProLiant DL360p 服务器。出于某种原因,我们在设置时禁用了系统 BIOS 中的超线程。作为双 CPU 8 核系统,这为我们提供了 16 个硬件线程。32 GB 内存。我们正在运行 Ubuntu 12.04 64 位。
大部分工作是由 VHDL“合成器”或编译器完成的。它是一个 QT 应用程序,但通常以命令行模式(无 GUI)运行。这个编译器在过去几周一直运行良好,由持续集成系统 (Jenkins) 启动。
今天,我们重新启用了超线程以访问所有 32 个硬件线程。但是现在这个编译器在我可以设计的每种情况下都挂起以下错误:
QThread::start: Thread creation error: Resource temporarily unavailable
该进程似乎已停止,不占用任何 CPU,并且 ctrl-c 中断它。
我在网上做了一些搜索,看起来这可能与操作系统最大线程限制有关,但我不确定如何更改它。无论如何,默认值应该是大约 800 个线程,这对于仅运行少量(可能是 2 个?)的编译器来说应该绰绰有余。
与此同时,我将不得不禁用超线程,但我想知道这是否是运行 64 位 Linux 的高端服务器的已知问题?有已知的解决方法吗?或者它更可能是该特定应用程序的问题?
我有一台运行 Jenkins(端口 8080 上的 HTTP)的 Linux 服务器,并且同一台服务器也在运行 Docker 1.12.1。我使用了一些 iptables 规则(根据 Jenkins 官方安装文档)将端口 8080 重定向到主机的端口 80,这样默认 HTTP 将适用于 Jenkins(即http://myserver而不是http://myserver:8080):
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Run Code Online (Sandbox Code Playgroud)
然而,这些规则破坏了 Docker 在docker build命令期间通过 HTTP 下载正确资源的能力。例如,RUN apt-get update由于多个“无法下载”错误而失败。这样做wget http://www.google.com的容器内返回该詹金斯主要页面的HTML。来自主机的 HTTP GET 工作正常。删除 iptables 规则会导致RUN apt-get update再次工作。所以我认为那些 iptables 规则正在干扰 docker 的网络机制。
这样的端口重定向可以和Docker共存吗?如果是这样,如何编写 …