从这些先前提出的问题中分离出来
我们有一个 HP 3PAR StoreServ 7400,有 170 个虚拟机分布在 38 台主机上。
这是我理解的问题:(另外,我被告知一些信息,我不确定它是否正确,我已经阅读了 HP 3PAR StoreServ 7400 白皮书并且真的找不到任何支持我的存储人员的信息告诉我。因此,如果有人注意到以下任何内容不真实,请告诉我。)
3 PAR 分为 3 个部分,
第 1 层:SSD 用于缓存和快速访问常用文件。
第 2 层:和第 3 层:某种旋转盘,我不确定还有什么以及为什么还有额外的 2 层,但我的假设是第 2 层用于不最常访问但有点访问的数据,第 3 层用于其余的存储。
在 SSD 部分中,正如我在许多文章中所读到的,当数据写入 SSD 块然后删除该块时,直到将新数据写入其中,该块才会归零,因此,当块中的数据被删除时,存储映射的表info 得到更新,然后当新数据写入同一个块时,首先需要将该块归零,然后才能写入。如果驱动器没有经过周期性调整,SSD 中的这个过程可能会导致较低的 w/r 速度。
3PAR LUN 是精简配置的,VM 是急切密集配置的。
根据我的存储专家的说法,3PAR 有一个内置的特殊功能,它允许 SSD 存储没有被用于其他 VM 的需要,这是没有意义的。
事实核查:
厚置备的 VM 是 VMDK 文件,创建 VM 时,您指定 VM 的大小,这会创建 VMDK 文件。在我看来,这告诉我,如果定期访问 VM,则整个 VMDK 文件都将移动到 SDD,他们告诉我的是,即使 VMDK 设置为使用 40GB,也可以使用其中的 40GB其他虚拟机?在我看来,这听起来更像是精简配置的虚拟机而不是厚实的虚拟机。
好的解决问题。
在我们的 Windows 系统上,我们使用 sdelete 来查找和清零未使用的块。
在我们的 Linux Fedora 系统上,我一直在试图弄清楚如何让 fstrim 工作。
我确实尝试了 dd=write-big-file delete-big-file 命令,它通过屋顶发送了磁盘 I/O,这被注意到了,我被告知不要再这样做了。
做了一些研究,在我看来 sdelete 几乎与 dd=write-big-file delete-big-file 做同样的事情,那么为什么磁盘 I/O 在 Windows 系统上没有通过屋顶呢?
所以我想我已经把它缩减为两个解决方案。我都不知道该怎么做。
- 不知何故,无需 v-motion 将 VM 移动到不同的存储阵列,就能够在 SAN 的整个 SSD 部分上运行类似 fstrim 的功能。
旁注:如果我了解我读过的所有内容,fstrim 会查看每个块以查看数据是否存在以及是否需要,如果不需要,则将块清零,因为 sdelete 写入一个巨大的文件,然后将其删除。这就是为什么我要在 3PAR 的整个 SSD 部分中寻找 fstrim 选项的原因。
- Longshot,但我使用 fstrim 得到的错误是:
[root@rhtest ~]# fstrim -v /fstrim: /: 不支持丢弃操作
我已经读到需要在操作系统和数据存储上设置丢弃选项,但我不知道在 3PAR 上的何处或如何设置丢弃选项,我对 3PAR 同时具有 SSH 和 GUI 访问权限。
我已经经历了无数次在操作系统中设置丢弃的演练,无论我以多少不同的方式旋转它,我总是得到同样的错误。
是的,我还研究了其他选项 zerofree 是一个,还有一些其他的选项没有想到,但是它们要么像 zdelete 一样工作,要么我读到它们非常危险,我查看了 hdparam 等。
下面我将提供一些有关操作系统的输出,它们都是相同的。
[root@rhtest ~]# hostnamectl
Static hostname: rhtest.domain.com
Icon name: computer-vm
Chassis: vm
Machine ID: f52e8e75ae704c579e2fbdf8e7a1d5ac
Boot ID: 98ba6a02443d41cba9cf457acf5ed194
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.2:GA:server
Kernel: Linux 3.10.0-327.el7.x86_64
Architecture: x86-64
[root@rhtest ~]# blkid
/dev/block/8:2: UUID="2OHGU8-ir1w-LLGB-6v72-zZqN-CIaX-FjGImJ" TYPE="LVM2_member"
/dev/block/253:1: UUID="ad872f09-5147-4252-af56-aa6244219515" TYPE="xfs"
/dev/block/8:1: UUID="83aac355-a443-4ff9-90fa-9f6da8e31cc2" TYPE="xfs"
/dev/block/253:0: UUID="dbe56f6a-2a4a-42da-82e2-bef9a73caafb" TYPE="swap"
[root@rhtest ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 50G 0 disk
ââsda1 8:1 0 500M 0 part /boot
ââsda2 8:2 0 49.5G 0 part
âârhel_-rhtest-swap 253:0 0 2G 0 lvm [SWAP]
âârhel_-rhtest-root 253:1 0 47.5G 0 lvm /
sdb 8:16 0 50G 0 disk
sr0 11:0 1 1024M 0 rom
[root@rhtest ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel_-rhtest-root 48G 883M 47G 2% /
devtmpfs 991M 0 991M 0% /dev
tmpfs 1001M 0 1001M 0% /dev/shm
tmpfs 1001M 8.5M 993M 1% /run
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
/dev/sda1 497M 124M 374M 25% /boot
tmpfs 201M 0 201M 0% /run/user/0
能够在 / 分区上运行 fstrim 将是最好的解决方案,但是使用它们配置 ESXi 的方式是不可能的。
您需要能够在 VM 和存储设备上启用丢弃。
无法尝试使用 xfs 文件系统减小分区或逻辑卷的大小,这是 fedora 的一个已知错误。如果您对此功能感兴趣,请联系 Red Hat 支持并参考 Red Hat bugzilla 1062667,并提供您需要 XFS 缩减/收缩的用例。
作为在某些环境中可能的解决方法,精简配置的 LVM 卷可以被视为 XFS 文件系统之下的附加层。
如果 VM 渴望厚配置 VMDK,这意味着当您尝试修剪(从技术上讲;SCSI UNMAP)您的卷时,没有什么可回收的。
如果后端存储正在运行精简配置,那么您还需要使用延迟归零的 VMDK 文件以减少存储并使后端能够缓存/删除暖数据。
两种可能的选择:
据我所知,这与 sdelete 做同样的事情,但是它会导致磁盘 I/O 出现峰值并且需要一段时间才能运行。
可以在一夜之间尝试的东西
这两种选择都不是最好的,但重新格式化每个 VM 以获取 ext3 或 ext4 听起来并不可行。
您可以做的是为所有 linux VM 设置关联规则并使用上面的选项 1。
您正在使用急切的厚配置 VMDK,这意味着当您尝试修剪(从技术上讲;SCSI UNMAP)您的卷时,没有什么可以回收的。
如果后端存储正在运行精简配置,那么您还需要使用延迟归零的 VMDK 文件以减少存储并使后端能够缓存/删除暖数据。