我最近开始在某些服务器上对大于 1 TB 的硬盘驱动器使用 LVM。它们很有用、可扩展且非常易于安装。但是,我找不到任何关于 LVM 的危险和警告的数据。
使用 LVM 的缺点是什么?
我最近研究了用于数据冗余和可用性的高级文件系统(Btrfs、ZFS),并对它们提供的附加功能感兴趣,尤其是它们针对数据损坏的“自我修复”功能。
但是,我认为我需要退后一步,尝试了解与传统的 mdadm-Raid1 + 相比,对于一般家庭/SMB 使用而言,这种好处是否超过了它们的缺点(Btrfs 错误和未解决的问题以及 ZFS 可用性和性能影响) Ext4 解决方案。无论哪种方式都可以使用镜像备份。
假设我有几个文件服务器用于存档目的并且资源有限,但是有 ECC 内存和稳定的电源。
在用于数据库的单个磁盘上禁用写入缓存的建议很常见,否则某些磁盘将确认尚未写入磁盘表面的写入。
这意味着某些磁盘在写入磁盘表面之前不会确认写入(更新:或者当被要求刷新缓存时它们会准确报告。我在哪里可以找到这样的磁盘,或者我可以在哪里查找权威信息在哪里可以找到这样的磁盘?
我正在设置一些可以从使用写入缓存中真正受益的数据库服务器,但该应用程序对价格敏感,我不想将某些缓存 RAID 控制器的磁盘子系统的成本增加一倍,因为我没有足够的信息知道我是否可以信任每个驱动器中的缓存。
在像 btrfs 这样的文件系统上,您可以执行清理,这将遍历所有数据以查看数据是否仍然与文件系统校验和匹配。
我想在备份前检查 ext4 上的数据是否正确。
题
ext4 没有文件系统校验和,但是可以做类似的事情吗?
有没有办法检查 PostgreSQL 数据库的完整性和一致性?我了解 SQL ServerDBCC CHECKDB并想知道是否有类似于 PostgreSQL 的东西。
我使用许多 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 导出,但这仍然会失败法新社短时间分享。
有没有更好的办法?
我遇到了一些电气问题,主要是几个月突然断电,尽管 ups 主要解决了这个问题。
但我仍然担心文件系统损坏和数据丢失。
当计算机关机、崩溃或其他文件系统问题时,xfs 是否比 ext3 更糟糕或更不可靠?
有一个 ups 和一个好的备份策略(我有一个 1.5 tb 的磁盘,我想用来备份所有关键数据)就足够了,我不应该担心吗?
我一直在读到当电源关闭时 xfs 将数据归零(尽管我认为这已经解决了),并且诸如 XFS 之类的东西对于防止数据损坏是不安全的。
启用写入屏障并正确调整 xfs,并具有 ups 和备份,xfs 可能与 ext3 一样可靠,或者至少可以接受?
如果我将 xfs 用于 / 和 /home 以获得更高的性能(主要是大文件),与使用 xfs 相比,我将承担更多的数据风险吗?
我一直对验证备份到可移动媒体的数据有些偏执,所以在将内容复制到 USB 闪存驱动器或便携式硬盘后,我总是卸载驱动器,重新安装它并将存储的文件与原始文件进行 diff -q。
几年前我发现(至少在我拥有的设备上),我看到了 1bit/GByte 数量级的位错误。不知何故(我忘记了细节)我发现解决方法是,在写入任何数据之前,先做
echo 64 > /sys/block/sda/device/max_sectors
Run Code Online (Sandbox Code Playgroud)
(当然,假设媒体显示为 sda)。只要我记得这样做,我就从来没有遇到任何问题。(我相信默认max_sectors值是 128)。
我的问题是:
这只是我吗?我已经看到各种闪存驱动器、便携式硬盘驱动器、主板和笔记本电脑的问题(但从未对所有组合进行详尽的测试,看看我是否有任何真正可靠的组合)。与 windows 一起使用的媒体,以及双引导 windows 的机器,似乎没有类似的问题,所以它似乎是特定于 linux 的。
究竟是什么导致了这个问题?是否不符合标准的媒体、芯片组、电缆?
有什么我可以在我的系统 (Debian Lenny) 上配置的东西,它会自动设置max_sectors? (一些 HAL 脚本或 sysctl 调整?更全局的 /sys 参数?)。大概默认的 128 在内核中的某个地方,但是自定义内核似乎有点激烈。
感谢您的任何建议
据说(例如,请参阅此处的有关它的问题),对于启用 NCQ 的驱动器,驱动器写入缓存应该是安全的,因为它不会对操作系统说谎,即当数据未提交到盘片时. 我试图弄清楚需要哪些设置才能使这成为现实。
我正在使用diskchecker.pl来确认是否所有块都在拔下电源插头后幸存下来。服务器配置如下:
如果我关闭写缓存 ( hdparm -W0),那么它就可以工作(性能损失巨大)。所以看起来上层是有能力的。
我试过在 libata 中启用 FUA(通过传递fua=1给模块加载,并通过 确认dmesg),这没有帮助。
关于如何进行这项工作的任何建议?
编辑:找到原因(见我的回答);关于如何至少恢复部分性能的任何建议?
一家小型专业公司的两个合伙人联系了我。他们担心他们的另一个合作伙伴,并希望采取一些措施来绝对确保公司的数据和系统免受“任何可能发生的情况”的影响。
他们有一台用作文件和打印服务器(所有重要文件都在服务器上)的服务器 (Windows 2003),即 Exchange 2003 Server,它运行一些构成他们财务系统的应用程序。我对他们的设置了解不多,因为我还没有机会进去。与我打交道的两个人不想让另一个合作伙伴知道他们有人在查看他们的系统,所以我需要尽量减少我在做任何事情时留下的足迹。
我意识到我需要加快速度的一件事是物理工具到虚拟工具。我想将服务器转换为 VM,然后我可以在其他地方使用它。如果合法的东西变得丑陋,他们可能无法进入建筑物,或者如果情况变得非常糟糕,另一个人可能会离开服务器。
到目前为止,我正在计划的事情是:
进入并记录服务器硬件和软件配置,目标是在必要时能够从头开始重新创建服务器。
作为上述的一部分,请确保他们拥有所有原始安装磁盘或文件并制作它们的副本
做一堆备份:
前三个备份的原因是我希望他们能够访问服务器映像之外的文件及其应用程序数据,以防他们需要快速找到一些东西。我无法为此设置重复性作业,但我可能会每周左右进行一次新的完整备份,并且可能每月进行一次文件/数据库/邮箱的另一次备份。
在查看他们的帐户之前,我不确定我会做什么,但我会创建另一个管理员帐户,或者让合作伙伴的帐户成为管理员或类似的东西 - 想法是拥有一些帐户) 另一个合作伙伴不知道成为管理员。
验证他们的 PC 是否都设置为在服务器上存储文件。
寻找其他合作伙伴可能安装的可能危及系统的任何东西。根据我被告知的情况,这不太可能,这很好,因为我不确定从哪里开始寻找恶意软件......
我的问题是:我错过了什么重要的东西吗?有人建议做哪些其他事情?
data-integrity ×10
linux ×5
filesystems ×3
backup ×2
cache ×2
raid ×2
sata ×2
checksum ×1
database ×1
debian ×1
ext4 ×1
hard-drive ×1
lvm ×1
mac-osx ×1
mdadm ×1
postgresql ×1
rsnapshot ×1
storage ×1
time-machine ×1
usb ×1
xfs ×1