在 Hyper-V (VHDX) 中优化 Linux 客户机上的 XFS

Gab*_*ger 5 virtualization linux xfs storage hyper-v

在我们公司,我们使用 Hyper-V (Windows Server 2012) 管理程序和 VM 来组织我们数据中心的公司内部服务。我应该为我们的主数据库 (Postgresql) 设置 Ubuntu 12.04 LTS 来宾。我的系统管理员给了我一个 SSH 连接做 VM(Ubuntu 已经存在)。磁盘是可动态调整大小的 VHDX 文件。XFS 文件系统有很多创建和挂载选项。我已经阅读了很多关于 XFS 可能性的材料,但它们基本上是所谓的裸机指南(取决于 RAID 和磁盘参数以及物理布局)。我真的不知道哪一个与我的情况相关。特别是有两件事困扰着我:

  • 分区对齐在 VM 环境中重要吗?我应该向我的系统管理员询问物理 RAID 参数(磁盘数量、条带大小)吗?并根据它们设置我的 XFS?
  • 分配组 (AG) 和 xfs 并行 I/O 功能。据我了解这个概念:我们将文件系统分成几部分,如果它们进入两个不同的 AG,FS 可以尝试并行执行两个写入。我真的可以使用可动态调整大小的 VHDX 来实现这一点,因为它不是具有实际空间可划分的物理设备吗?

由于虚拟化,在我看来它确实是云计算。我无法保证 VHDX 驻留在何处以及存在多长时间(这是我的管理程序管理员的工作)。因此,就在 Hyper-V 环境中为 DB 设置存储而言,也许我正在考虑完全错误的问题?如果是这样,您能否向我推荐我应该查看的主题

eww*_*ite 2

我了解您的后备存储可能会发生变化,并且您可能不了解底层硬件。在虚拟化环境中,以下内容对我来说非常安全:

今天,我的 XFS 创建和安装选项如下所示:

mkfs.xfs -f -l size=256m,version=2 -s size=4096 /dev/sdX
Run Code Online (Sandbox Code Playgroud)

其中“sdX”是设备名称。这是一个 256 MB 的日志和 4k 扇区大小。

安装选项通常有:

noatime,logbufs=8,logbsize=256k,nobarrier
Run Code Online (Sandbox Code Playgroud)

这些是没有访问时间、没有写障碍和修改的日志缓冲区/块大小。

使用现代操作系统,确保分区对齐。使用fdisk,将显示单位更改为扇区。请注意警告:

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Run Code Online (Sandbox Code Playgroud)

RHEL6 下正确对齐的分区:

Disk /dev/zd32: 644.2 GB, 644245094400 bytes
13 heads, 12 sectors/track, 8065969 cylinders, total 1258291200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 8192 bytes
I/O size (minimum/optimal): 8192 bytes / 8192 bytes
Disk identifier: 0x04d26b4d

     Device Boot      Start         End      Blocks   Id  System
/dev/zd32p1            2048  1258291199   629144576   83  Linux
Run Code Online (Sandbox Code Playgroud)