我遇到了一些电气问题,主要是几个月突然断电,尽管 ups 主要解决了这个问题。
但我仍然担心文件系统损坏和数据丢失。
当计算机关机、崩溃或其他文件系统问题时,xfs 是否比 ext3 更糟糕或更不可靠?
有一个 ups 和一个好的备份策略(我有一个 1.5 tb 的磁盘,我想用来备份所有关键数据)就足够了,我不应该担心吗?
我一直在读到当电源关闭时 xfs 将数据归零(尽管我认为这已经解决了),并且诸如 XFS 之类的东西对于防止数据损坏是不安全的。
启用写入屏障并正确调整 xfs,并具有 ups 和备份,xfs 可能与 ext3 一样可靠,或者至少可以接受?
如果我将 xfs 用于 / 和 /home 以获得更高的性能(主要是大文件),与使用 xfs 相比,我将承担更多的数据风险吗?
我有一个块大小为 64k 的 XFS 分区。但是当块大小为 4k 的默认值时,我只能在 Ubuntu 10.10 中安装它。如何挂载块大小较大的分区?
这有效:
sudo mkfs.xfs /dev/sdb1 -b size=4k -d agcount=32 -l size=128m -f
sudo mount /dev/sdb1 /mnt/media
Run Code Online (Sandbox Code Playgroud)
这不起作用:
sudo mkfs.xfs /dev/sdb1 -b size=64k -d agcount=32 -l size=128m -f
sudo mount /dev/sdb1 /mnt/media
mount: Function not implemented
Run Code Online (Sandbox Code Playgroud) 我计划在 XFS 文件系统上使用 RAID 0+1(或 RAID 10、RAID 5)的 Maildir 存储,并且 XFS 将使用 RAID 将使用的条带单元和宽度创建。
我还没有确定 RAID 条带大小,但我的 RAID 系统中的默认值是 128KB。如果我为 Maildir 存储使用 128KB 条带大小,是否会为小于条带大小的文件浪费空间?
我认为 Maildir 中文件的平均大小是 10KB,那么对于这种环境,条带大小最好是多少?
我在 Amazon EC2 上结合使用 mdadm、lvm2 和 XFS。
到目前为止,我已经成功运行了由多个 EBS 卷构建的 RAID 5 卷。附加 EBS 卷并与 mdadm 一起使用以创建 RAID 5。然后,我使用 LVM 将生成的 RAID 呈现为单个物理卷和单个逻辑卷。
过去,我可以通过添加新的 EBS 卷、附加它,然后运行以下过程来扩展文件系统。
mdadm --add /dev/md0 /dev/xvdi
# grow the raid... (could take a while for a large disk!)
mdadm --grow /dev/md0 --raid-devices=4
# grow the LVM physical volume
pvresize /dev/md0
# grow the LVM logical volume ... fairly certain
# -l100%PVS will make the extents use as much space
# as possible on physical disks (and …Run Code Online (Sandbox Code Playgroud) 我们在集群上运行了一个 14TB XFS 文件服务器,并希望添加配额支持。这是在 CentOS 6.3 (Final) 下运行 3.9.2-1.el6.elrepo.x86_64 内核。
问题是当我们卸载 XFS RAID 并重新挂载它以添加配额支持时,挂载命令挂起。服务器响应并且无法访问XFS 挂载点。恢复我们在 /etc/fstab 中的更改以删除配额选项不会挂载挂载。
我怀疑在重新安装时,XFS 会在 14TB RAID 上运行配额检查。我的问题是:如何禁用初始配额检查,以便它可以正确安装并在后台运行配额检查?
/etc/fstab 入口:
/dev/sdb /w1 xfs defaults,noatime,usrquota,grpquota 1 2
Run Code Online (Sandbox Code Playgroud)
/var/log/messages 输出:
Jun 6 11:37:43 nas-2-1 kernel: XFS (sdb): Mounting Filesystem
Jun 6 11:37:43 nas-2-1 kernel: XFS (sdb): Ending clean mount
Jun 6 11:37:43 nas-2-1 kernel: XFS (sdb): Quotacheck needed: Please wait.
Run Code Online (Sandbox Code Playgroud)
我不介意挂载点处于活动状态时 CPU 使用率高或性能低,但让它不可用不是我们想要坚持的选项。我怀疑对 14TB 运行配额检查大约需要一个完整的工作日。
我正在使用带有选项的 rsync
-r for recursive
-l copy symlinks as symlinks
-t preserve modification time
-D preserve devices and specials
-v verbose
--prune-empty-dirs
Run Code Online (Sandbox Code Playgroud)
源文件系统是 ext4,目标文件系统是 XFS。我复制了几百个文件夹,范围在几百个演出到几 TB 之间,它们都在小于 1GB 的大小差异内。然而,这个特定的文件夹在源上是 264GB,一旦我 rsync 它跨它是 286GB。这是一个巨大的差异,我不知道它有什么问题。
如果源 ext4 FS 有一些损坏,它是否可能没有报告正确的磁盘使用情况?我正在使用'du -skh'。
我已经删除了整个内容并重新启动了 3 次,它产生了相同的结果。
Btrfs 是否可以仅将 SSD 用于元数据并将批量数据保留在成本较低的存储(例如 HDD)上?我参考了这个页面Using_Btrfs_with_Multiple_Devices并且找不到解决方案。
谢谢!
我试图使用如何将磁盘空间从 centos-home 移动到 centos-root 中的步骤重新分配未使用的磁盘空间/dev/mapper/centos-home(1.2Tb/dev/centos/root)。
跑完后...
$ umount /dev/mapper/centos-home
$ lvreduce -L 1200G /dev/mapper/centos-home
Run Code Online (Sandbox Code Playgroud)
当我尝试重新安装驱动器时,出现“无法读取超级块”错误。
$ mount /dev/mapper/centos-home
mount: /dev/mapper/centos-home: can't read superblock
Run Code Online (Sandbox Code Playgroud)
在开始之前,我仔细检查以确保在运行“lvreduce”命令之前有足够的可用空间(物理空间)(有 2Tb 可用空间) - 但假设我的错误不是按照中的建议运行命令来首先缩小文件系统LVM 逻辑卷分区在 lvreduce 之后损坏,但也了解到这不能在 XFS 系统上完成,但无法找到具体细节。
我尝试恢复使用,
$ xfs_repair /dev/mapper/centos-home
Run Code Online (Sandbox Code Playgroud)
但结果说
Sorry, could not find valid secondary superblock; Exiting now.
Run Code Online (Sandbox Code Playgroud)
我也尝试过恢复LV的大小
$ lvextend -L 1200G /dev/mapper/centos-home
Run Code Online (Sandbox Code Playgroud)
结果,
New size (307200 extents) matches existing size (307200 extents)
Run Code Online (Sandbox Code Playgroud)
superblock read但在尝试驱动器时遇到了同样的错误$ mount。
我不确定此时我给自己挖的坑有多深,所以这是我的问题。
从中恢复的最佳方法是什么?或者,如果我无法恢复和安装损坏的驱动器,我是否只需将其删除并创建一个同名的新驱动器?这是否可能,即我需要重新安装 CentOS …
我们正在构建一个可能会生成非常大的 XFS 卷的产品,我正在尝试发现在给定架构的情况下我们可能遇到的扩展瓶颈。
当我们操作文件时,它们被放置在 XFS 卷上的目录中。由于我们处理的文件数量,文件数量肯定在数千万,并且在发布后不久可能会达到数亿。我们知道这一点是因为我们当前的产品是这样运行的,所以我们有理由期待我们的下一个产品也有类似的表现。
因此,正确的早期工程是有序的。
本周的文件基于以下粗略布局:
$ProjectID/$SubProjectID/[md5sum chunked into groups of 4]/file
Run Code Online (Sandbox Code Playgroud)
这给出了看起来有点像的目录:
0123456/001/0e15/a644/8972/19ac/b4b5/97f6/51d6/9a4d/file
Run Code Online (Sandbox Code Playgroud)
分块 md5sum 的原因是为了避免“一个目录中的大堆文件/目录”问题。由于 md5sum 分块,这意味着 1 个文件会导致创建 8 个目录。这对 inode 的影响非常明显,但我不清楚一旦我们达到规模,这些影响将对 XFS 产生什么影响。
有哪些影响?
顺便说一下,这是使用内核 2.6.32,目前是 CentOS 6.2(如果需要,可以更改)。
在测试中,我使用默认值创建了 xfs 卷,并且没有使用任何挂载选项。这是为了尽早解决问题。noatime很简单,因为我们不需要它。总体 XFS 调整是我需要解决的另一个问题,但现在我担心我们现在设计的元数据乘数效应。
我已经知道更好的解决方案是什么,我只是不知道我是否有理由推动改变。
由于 md5sums 的前几个数字非常独特,并且单个子项目很少超过 500 万个文件,在我看来,我们只需要前两个块。这将产生如下布局:
0123456/001/0e15/a644/897219acb4b597f651d69a4d/file
Run Code Online (Sandbox Code Playgroud)
一个完整的第一级和第二级在每个第一级目录中将有 2 16个一级目录和 2 16个二级目录,卷上总共有 2 32 个目录。
因此,假设的 500 万个文件子项目将有 2 16个一级目录,每个目录中大约有 76 (+/- 2) 个二级目录,每个二级目录中有一个或两个第三级目录。
这种布局的元数据效率更高。我只是不知道是否值得努力改变现在的情况。
我正在对基于SuperMicro E300-8D的小型服务器盒进行基准测试。我已经安装了带有最新更新的最新 CentOS 7.5、64GB DDR4-2100 RAM 和三星 970 EVO 1TB NVMe SSD。操作系统安装在 USB 记忆棒上的内部 USB 端口中,因此除了在我的基准测试期间,SSD 完全没有使用。
受ScyllaDB使用的基准测试方法的启发,我的测试目标是找到此 SSD 的最佳并发级别。为此,我使用了diskplorer,它在内部用于fio探索并发与 IOPS 和延迟之间的关系。它会生成如下所示的方便图表。在所有情况下,我都使用 4K 随机读取工作负载。
问题是我得到的结果毫无意义。这是第一个结果:
/dev/nvme0n1$ sudo ./diskplorer.py --device=/dev/nvme0n1 --filesize=256G
Run Code Online (Sandbox Code Playgroud)
这是太棒了!三星自己的规格表声称读取 IOPS 为 500K,20 次并发读取时,我得到了近 600K。右边的轴是以纳秒为单位的读取延迟,红线是平均延迟,误差线是 5% 和 95% 的延迟。所以看起来这个 SSD 的理想并发级别是大约 20 次并发读取,产生极好的延迟 < 100us。
那只是原始SSD。我会将 XFS 放在上面,它针对异步 I/O 进行了优化,而且我确信它不会增加任何显着的开销......
/dev/nvme0n1$ sudo mkfs.xfs /dev/nvme0n1
$ sudo mount /dev/nvme0n1 /mnt
$ sudo ./diskplorer.py --mountpoint=/mnt --filesize=256G
Run Code Online (Sandbox Code Playgroud)
什么!?这是 …