我issue_discards
在lvm.conf
带有 SSD 的计算机上启用了文件,并且我想blkdiscard
在其中一个逻辑卷上执行操作。我可以在不重新启动机器的情况下做到这一点吗?我能够卸载物理卷以及存储在该特定 SSD 上的所有逻辑卷,但我希望避免系统重新启动。
答案1
根据 my 中的默认注释lvm.conf
,该选项仅控制当您运行或issue_discards
时释放的空间会发生什么,没有其他:lvreduce
lvremove
# Configuration option devices/issue_discards.
# Issue discards to PVs that are no longer used by an LV.
# Discards are sent to an LV's underlying physical volumes when the LV
# is no longer using the physical volumes' space, e.g. lvremove,
# lvreduce.
经证实RedHat 的 Mike Snitzer 在 linux-lvm 邮件列表上发布了此消息:
lvm.conf 的 issues_discards 对内核(或底层设备)的丢弃功能没有任何影响。它仅控制 lvm 是否针对某些 lvm 操作(例如删除 LV 时)发出丢弃。
因此,如果底层 SSD 支持 TRIM 或其他丢弃数据的方法,您应该能够使用blkdiscard
它或放置在其上的任何 LV。
也就是说,如果启用issue_discards
,可以通过两种方式实现LV内容的丢弃:
blkdiscard
在LV上运行。例子:
# lvcreate -L 1g vg00 Logical volume "lvol6" created. # blkdiscard -v /dev/vg00/lvol6 /dev/vg00/lvol6: Discarded 1073741824 bytes from the offset 0
- 只需使用
lvremove
,LVM 就会为您丢弃数据。您无需执行任何特殊操作即可使设置生效。
[issue_discards initially disabled] # lvremove /dev/vg00/lvol6 Do you really want to remove active logical volume vg00/lvol6? [y/n]: y Logical volume "lvol6" successfully removed # vi /etc/lvm/lvm.conf [set issue_discards to enabled] # lvcreate -L 1g vg00 Logical volume "lvol6" created. # lvremove /dev/vg00/lvol6 Do you really want to remove and DISCARD active logical volume vg00/lvol6? [y/n]: y Logical volume "lvol6" successfully removed
... and DISCARD ...
请注意命令消息中添加的内容lvremove
。