在我们的 VM 基础架构中,我们已将主机集群至 SAN。
我想弄清楚的是,删除 Redhat 服务器中的文件时会剩下多少“空白空间”。在 Windows 服务器上,我们使用 sdelete,这可以解决这个问题,但在 Linux 上,我很难找到解决方案。
我将“空白区域”定义为未清零的剩余扇区?SSD 驱动器必须先将其清零,然后才能写入。
我要指出的一点是,当谈到 Linux 时,我知道的足以造成危险,但我并不是超级用户。
查看驱动器和分区:
[root@rhserver1-DATA10 /]# fdisk -l
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0005d52e
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 104857599 51915776 8e Linux LVM
Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/rhel_rhserver1--data10-root: 51.0 GB, 50964987904 bytes, 99540992 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/rhel_rhserver1--data10-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
现在查看磁盘使用情况:
[root@rhserver1-DATA10 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel_rhserver1--data10-root 48G 6.1G 42G 13% /
devtmpfs 906M 0 906M 0% /dev
tmpfs 921M 340K 920M 1% /dev/shm
tmpfs 921M 90M 831M 10% /run
tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/sdb 50G 3.5G 44G 8% /ACMS01Backup
/dev/sda1 497M 210M 288M 43% /boot
tmpfs 185M 20K 185M 1% /run/user/1000
tmpfs 185M 0 185M 0% /run/user/1002
经过几个小时的谷歌搜索后,我发现了这一点,我想它向我展示了有多少“空白”可以清理。
[root@rhserver1-DATA10 /]# parted /dev/sda unit MB print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
1.02MB
[root@rhserver1-DATA10 /]# parted /dev/sda unit '%' print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
0.00%
我认为 497M 分区的输出是合理的。
所以现在我只想在我安装的驱动器上做同样的事情(我认为它已经安装好了)。
parted /dev/mapper/rhel_rhserver1--data10-root unit MB print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
parted /dev/mapper/rhel_rhserver1--data10-root unit '%' print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
它什么也没给我。
我的 /etc/fstab/:
[root@rhserver1-DATA10 /]# cat /etc/fstab
/dev/mapper/rhel_rhserver1--data10-root / xfs defaults 0 0
UUID=2f97a17c-a6d5-4904-ad5c-7c16b4510201 /boot xfs defaults 0 0
/dev/mapper/rhel_rhserver1--data10-swap swap swap defaults 0 0
/dev/disk/by-uuid/be4c45cf-5d72-4b97-b647-2e585947041f /ACMS01Backup auto nosuid,nodev,nofail,x-gvfs-show 0 0
所以我的问题是,我走在正确的道路上吗?
我是否清楚解释过我在寻找什么?
是否有一个术语可以帮助我进行谷歌搜索“空白”?
我发现我可以在根目录上运行“fstrim -v /”,但我真的想知道有多少空间。
另外我想弄清楚,这些生产系统是 fstrim I/O 密集型的,它应该在非高峰时段运行吗?
运行“fstrim -v /”有丢失数据的可能性吗?
答案1
能够在 / 分区上运行 fstrim 将是最好的解决方案,但是由于您的 ESXi 配置方式,这是不可能的。
您需要能够在虚拟机和存储设备上启用丢弃。
尝试使用 xfs 文件系统缩小分区或逻辑卷的大小是无法完成的,这是 Fedora 的一个已知错误。如果您对该功能感兴趣,请联系 Red Hat 支持并参考 Red Hat bugzilla 1062667,并提供需要 XFS 缩小/收缩的用例。
在某些环境中,作为一种可能的解决方法,可以将精简配置的 LVM 卷视为 XFS 文件系统下方的附加层。
如果虚拟机是急切厚配置的 VMDK,这意味着当您尝试修剪(技术上讲;SCSI UNMAP)卷时没有什么可回收的。
如果后端存储正在运行精简配置,那么您还需要使用延迟清零 VMDK 文件以减少存储并使后端能够缓存/重复数据删除热数据。
两种可能的选择:
当存储由远程服务器通过 SAN 提供时,如果存储是精简配置的,则只能丢弃块。
- 将所有虚拟机迁移到不同的数据存储并使用内置的 VMWare 工具
- 使用 SSH 连接到 ESXi 主机
- 导航到虚拟机文件夹
- 使用 du 检查磁盘使用情况
- 运行 vmkfstools -K [磁盘]
- 使用 du 检查磁盘使用情况
dd if=/dev/zero of=BIGFILE bs=1024000 rm -f BIGFILE
据我所知,它的作用与 sdelete 相同,但是它会导致磁盘 I/O 激增,并且需要一段时间才能运行。
过夜可以尝试的东西
任何一个选项都不是最好的,但重新格式化每个虚拟机以获取 ext3 或 ext4 听起来不可行。
您可以做的是为所有 Linux VM 设置亲和性规则并使用上面的选项 1。
答案2
几周前我尝试过做同样的事情,但不知道怎么做。我在 Redhat 支持门户上分享了官方声明。
目前无法使用 xfs 文件系统减小分区或逻辑卷的大小。如果您对此功能感兴趣,请联系 Red Hat 支持并参考 Red Hat bugzilla 1062667,并提供需要减小/缩小 XFS 的用例。作为某些环境中可能的解决方法,精简配置的 LVM 卷可以被视为 XFS 文件系统下的附加层。
祝你好运!!