启用丢弃 HP 3PAR StoreServ 7400

Ant*_*ito 13 redhat ssd hp-smart-array trim

从这些先前提出的问题中剥离出来

如何从已安装的驱动器 Redhat 7 中获取可用空间

更新 crypttab 要求输入 fstrim 的密码

我们有一个 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 是 Eager 厚配置的。

根据我的存储专家的说法,3PAR 有一个内置的特殊功能,可以根据需要将未使用的 SSD 存储提供给其他 VM,这是没有意义的。

事实核查:

厚置备的 VM 是一个 VMDK 文件,创建 VM 时,您指定 VM 的大小,这将创建一个 VMDK 文件。在我看来,这告诉我,如果 VM 被定期访问,那么整个 VMDK 文件就会移动到 SDD,他们告诉我的是,即使 VMDK 设置为使用 40GB,其中一些 40GB 也可以用于其他虚拟机?对我来说,这听起来更像是精简配置的 VM,而不是厚配置的 VM。

好的解决问题。

在我们的 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 系统上没有通过屋顶?

所以我想我已经把它缩减为两个解决方案。我不知道该怎么做。

  1. 不知何故,无需将虚拟机移动到不同的存储阵列,就能够在 SAN 的整个 SSD 部分运行类似 fstrim 的功能。

旁注:如果我理解我读过的所有内容,fstrim 会查看每个块以查看数据是否存在以及是否需要,如果不需要,则将块清零,其中 sdelete 写入一个大文件,然后将其删除。这就是为什么我要在 3PAR 的整个 SSD 部分寻找 fstrim 选项的原因。

  1. 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
Run Code Online (Sandbox Code Playgroud)

Bri*_*ess 10

能够在 / 分区上运行 fstrim 将是最好的解决方案,但是根据他们的 ESXi 配置方式,这是不可能的。

您需要能够在 VM 和存储设备上启用丢弃。

无法使用 xfs 文件系统尝试减小分区或逻辑卷的大小,这是 Fedora 的一个已知错误。如果您对此功能感兴趣,请联系 Red Hat 支持并参考 Red Hat bugzilla 1062667,并提供您需要 XFS 缩减/缩小的用例。

作为在某些环境中可能的变通方法,可以将精简配置的 LVM 卷视为 XFS 文件系统下方的附加层。

如果 VM 渴望厚置备 VMDK,这意味着当您尝试修剪(从技术上讲;SCSI UNMAP)您的卷时,没有什么可回收的。

如果后端存储正在运行精简配置,那么您还需要使用延迟归零 VMDK 文件以减少存储并使后端能够缓存/删除热数据。

两种可能的选择:

1. When storage is provided by a remote server across a SAN, you can only discard blocks if the storage is thin provisioned.

    1. VMotion all the VM's to a different data store and use the built-in VMWare tools
    2. Connect to the ESXi Host with SSH
    3. Navigate to the Virtual Machine Folder
    4. Verify disk usage with du
    5. Run vmkfstools -K [disk]
    6. Verify disk usage with du

2.  dd if=/dev/zero of=BIGFILE bs=1024000
    rm -f BIGFILE
Run Code Online (Sandbox Code Playgroud)

据我所知,这与 sdelete 的作用相同,但是它会导致磁盘 I/O 出现峰值,并且需要一段时间才能运行。

一夜之间尝试的东西

任一选项都不是最好的,但重新格式化每个 VM 以获得 ext3 或 ext4 听起来不可行。

您可以做的是为所有 linux VM 设置关联规则并使用上面的选项 1。