服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

RAID如何处理不一致的数据?

RAID 1和RAID 5(及其兄弟10和50)分别通过镜像和奇偶校验来实现数据冗余。 这允许RAIDarrays在磁盘(或整个磁盘)上的扇区变得不可读时仍然访问数据。 RAID 6(或60)使用额外的检查来允许出现双重故障。 但是,RAIDarrays如何处理不完全不可读的数据,却显然不一致呢? 如果出现一些错误,例如磁盘上的条带数据被改变,但是这个改变不会传播到另一个磁盘上,那么整个条带就会变得不一致。 如果在一个镜像集中,一个磁盘表示“这个位是0”,而另一个磁盘表示“这个位是1”,RAID控制器怎么知道哪一个是对的? 同样的推理可以应用到RAID-5条带,增加了复杂性,你不能容易地知道在条带中哪个扇区实际上是错误的。 此外,RAID 6是否可以通过双重caching来缓解这个问题,或者当数据实际可读时,它仍然可以从数据损坏中恢复,但在某些地方是错误的,特别是当RAID 6arrays倾向于拥有大量磁盘时? 这在理论上可以通过校验和来解决,以确保哪个数据副本(或奇偶校验)是正确的; 但是任何RAID控制器实际上是否实现了这种校验和(这当然会占用额外的空间)? 或者是否需要在操作系统级别进行处理,大多数文件系统可以并将对其内容进行校验? 如果是这种情况,那么RAID控制器的一般方法是如何从底层存储层抽象操作系统,如何告诉RAID控制器“在条带Z上的磁盘Y上的扇区X上的数据是错误的”可能?

如何禁止Docker守护进程将主机的根文件系统挂载到容器中

我有以下容器安装程序。 在裸机服务器上有两个Docker Daemon安装并运行。 主Docker Daemon运行我的应用程序容器,暴露80/443到外面的世界。 插件Docker Daemon运行客户提供的一些容器,通过80/443与我的应用程序进行通信。 我想让客户访问插件Docker守护程序的API(2376),以便客户可以部署/启动/停止自己的容器。 客户只能访问API,而不能访问主机(SSH)。 我目前面临的问题是,如果客户运行一个容器,如docker run -v /:/host/root ubuntu rm -rf /host/root ,那该怎么办? 我的问题是我能做些什么来防止插件Docker守护进程挂载root /或/home/user/之外的任何其他目录, 在/home/user/启动Docker Daemon是否是一个选项? 我可以使用一些LSM(Linux安全模块SELinux / Apparmor)魔术来防止docker守护进程挂载除home用户或var / docker / libs之外的部分或全部主机path吗? 可以–userns-remap帮助我实现我的目标吗? 除虚拟机之外,还有其他选项吗? 服务器完全属于单个客户。 所以安全或数据泄漏并不是我最关心的问题。 我真正想要阻止的是Plugin Daemon中的某个人正在做一些愚蠢的事情,这会影响在Docker Daemon中运行的容器。 我想保持精益,坚持docker工作的唯一工作stream程,不会为虚拟机创build设置额外的工作stream程。

如何检查RAM是否在ECC模式下运行?

我更新了这个post,因为我更换了处理器,但是我的问题的核心(不幸的是结果也一样)。 我build立了我的第一个FreeNAS盒子,并且想要使用ECC RAM,因为我想存储关键数据。 因为我正处于预算之内,所以我希望能够买到仍然支持ECC RAM的最经济实惠的解决scheme。 经过一番研究,我发现,我需要一个支持ECC的主板,内存和CPU。 我select的主板是具有C232芯片组,DDR4和LGA1151插槽的“Gigabyte X150M-Pro ECC”。 我还购买了由Kingston制造的型号为“KVR21E15S8K2 / 8”( 规格表 )的两个DIMM套件。 Gigabyte发布了一系列经过testing的内存模块,而我的模块似乎也支持ECC( 支持的模块列表 )。 由于我在预算中,我需要一个支持ECC的经济实惠的Skylake CPU。 据英特尔赛扬G3900支持ECC,所以我去了那一个。 在构build计算机之后,我想确认我的系统是否正在运行ECC内存,然后进入主板的BIOS。 从各种互联网网站,我发现一些主板有一个特殊的部分 ,应该告诉ECC是否工作,但我的主板似乎没有。 我检查了所有的菜单,我找不到类似的部分。 在做了一些更多的研究之后 ,在Unix和Linux的stackexchange上发现了一个没有解决我的问题的post 。 我尝试了最新的memtest86+ ,从我可以告诉,甚至没有显示“ECC”的价值。 我尝试了Puget系统使用的显示“ECC:off”的较旧的4.20版本。 然而,在阅读之前提到的post之后,我怀疑它说的是实话(也许这就是为什么该function被删除?)。 这两个版本也没有读出DIMM的正确速度和延迟,这增加了我对memtest86+怀疑。 如果ECC正在工作,另一个stream行的方法是发出dmidecode -t memory命令并读出Total Width和Data Width 。 我的结果分别是128 Bits和64 Bits 。 输出的一部分显示了具有Error Correction Type: Single-bit ECC的键 – 值对的存储器arrays的细节。 我预计Total Width为72 bits ,所以我认为它可能与双通道有关,并将内存模块移到两个相邻的插槽中,以防止双通道,但结果是一样的。 这是dmidecode -t […]

在小型Linux NFS4客户端/服务器系统上延迟

我们是一所小型大学的计算机科学系,使用NFS4和Fedora 24客户端(大约40台客户机,大约150个用户 – 很less并发)运行RHEL 7服务器。 我们遇到了延迟问题,并且在排除故障/试图找出问题所在。 症状的例子: Emacs大约需要2分钟才能启动/使用。 GUIpopup快速,但如果您尝试在启动时打开文件应用程序挂起。 如果您尝试打开emacs , 然后尝试打开文件,应用程序将挂起两分钟。 大约两分钟后,您可以创build文件,读取文件等,没有问题。 编辑:在本地文件(如/tmp/test.out)上运行emacs没有延迟问题。 而且,使用idle3或gedit打开networking文件也没有问题。 使用svn + ssh在命令行检出一个项目对于一台Linux客户机/台式机来说是非常慢的,大约3分钟。 如果你签出项目,使用另一台机器上的svn + ssh,checkout需要3 秒钟 。 您不能configuration空闲。 当你点击configuration菜单时,应用程序挂起。 更新:这似乎是idle3中的一个bug,在Fedora 24中没有修复,但我们能够应用修复。 当您在应用程序(例如,emacs,Eclipse)中单击“打开/浏览”或打开文件pipe理器时,应用程序将在检索文件时挂起一段时间。 从命令行使用ls和cd是很快的。 经过长时间的延迟,你可以阅读/编辑/创build文件没有问题。 我发现这些应用程序唯一的共同点是它们使用隐藏的configuration文件( .emacs.d , .idle , .eclipse ,…)。 我似乎无法find任何文件隐藏文件将被处理不同。 任何build议表示赞赏!