Skip to contentSkip to conversation

lvm2: zeroing free space

linux-lvm Bryn M. Reeves 5 participants 6 messages Feb 4, 2011 – Feb 8, 2011

lore
Share & tools
lore
#0 lore raw

Hi Folks,

Recently had a query from someone using an array supporting thin provisioning with zero page reclaim[1].

They wanted a method to write zeros to all the unallocated space in a VG to trigger a reclaim of unused regions in the VG's PVs.

My suggestion was to lvcreate a -l100%FREE LV named "filler" and overwrite it from /dev/zero.

It seems like this might something a lot of users want as this functionality gets to be more common.

I wondered if it could be worth adding a script to automate this or even an option to vgchange (e.g. --zero-free-space)?

Didn't have time to try putting anything together yet but it seems such a feature could be useful.

Regards,
Bryn.

[1] http://blogs.hds.com/hu/2009/03/zero-page-reclaim.html

#1 lore raw
Quoted 11 lines · Bryn M. Reeves

Hi Folks,

Recently had a query from someone using an array supporting thin provisioning with zero page reclaim[1].

They wanted a method to write zeros to all the unallocated space in a VG to trigger a reclaim of unused regions in the VG's PVs.

My suggestion was to lvcreate a -l100%FREE LV named "filler" and overwrite it from /dev/zero.

Quoted 8 lines

It seems like this might something a lot of users want as this functionality gets to be more common.

I wondered if it could be worth adding a script to automate this or even an option to vgchange (e.g. --zero-free-space)?

Didn't have time to try putting anything together yet but it seems such a feature could be useful.

Do these HDS arrays also support discard? Would seem to me that issuing discards for the free space would be better (more standard) than writing zeros to accomplish the same.

This variant would be: vgchange --discard-free-space

Mike

#2 lore raw
Quoted 4 lines · Mike Snitzer
Quoted 2 lines · Bryn M. Reeves

They wanted a method to write zeros to all the unallocated space in a VG to trigger a reclaim of unused regions in the VG's PVs.

Probably not directly relevant, but perhaps of interest to those who haven't come across it before.

Zerofree is designed to do this for loopback filesystems; I came across it in the context of union/aufs overlays, via Grml's changelog

http://intgat.tigress.co.uk/rmy/uml/sparsify.html

#3 lore raw
In reply to Mike Snitzer
Quoted 20 lines · Mike Snitzer
Quoted 17 lines · Bryn M. Reeves

Hi Folks,

Recently had a query from someone using an array supporting thin provisioning with zero page reclaim[1].

They wanted a method to write zeros to all the unallocated space in a VG to trigger a reclaim of unused regions in the VG's PVs.

My suggestion was to lvcreate a -l100%FREE LV named "filler" and overwrite it from /dev/zero.

It seems like this might something a lot of users want as this functionality gets to be more common.

I wondered if it could be worth adding a script to automate this or even an option to vgchange (e.g. --zero-free-space)?

Quoted 8 lines
Quoted 2 lines

Didn't have time to try putting anything together yet but it seems such a feature could be useful.

Do these HDS arrays also support discard? Would seem to me that issuing discards for the free space would be better (more standard) than writing zeros to accomplish the same.

This variant would be: vgchange --discard-free-space

There are two variants of reclamation currently supported by external storage products.

The WRITE_SAME/TRIM based explicit discard support is superior when the entire storage stack supports it and I agree it would be good to support this mode of reclaim too (superior in that you lose the zero-write overhead and associated reclaim lag and can get better space utilisation since the host "knows" better which blocks are unused).

Several vendors (at least HDS/EMC that I know of) also support an implicit reclaim mode known as zero page/space reclaim in which the storage de-allocates blocks that are overwritten with zeros.

I suppose the ideal solution would be to detect whether the storage supports one or the other automatically but I don't know that there is a way to achieve this right now (TRIM/WRITE_SAME possibly but I think the zero page stuff is entirely transparent).

Regards,
Bryn.

#4 lore raw
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Bryn" == Bryn M Reeves <[email protected]> writes:

Bryn> I suppose the ideal solution would be to detect whether the Bryn> storage supports one or the other automatically but I don't know Bryn> that there is a way to achieve this right now (TRIM/WRITE_SAME Bryn> possibly but I think the zero page stuff is entirely transparent).

The problem with the zero-detection stuff is that it predates all the thin provisioning goo in SCSI and we have no way of enabling automatically. So it would have to be a manual per-device override.

However, all the vendors I have talked to prefer to use the standards-based way now that it's there. And that's why I removed the "write zeroes" code path before the original TP support went upstream. It was there in the first few iterations of patches.

If people think it's a good idea I'll be happy to wire it back up. I have a new set of TP patches going out shortly.

Signature · 1 line
Martin K. Petersen	Oracle Linux Engineering
#5 lore raw
In reply to Bryn M. Reeves

You might be able to detect at least explicit via the VPD page.

Regards,
Wayne.

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Bryn M. Reeves
Sent: Friday, February 04, 2011 11:37 AM
To: LVM general discussion and development
Cc: Mike Snitzer
Subject: Re: [linux-lvm] lvm2: zeroing free space

Quoted 20 lines · Mike Snitzer
Quoted 17 lines · Bryn M. Reeves

Hi Folks,

Recently had a query from someone using an array supporting thin provisioning with zero page reclaim[1].

They wanted a method to write zeros to all the unallocated space in a VG to trigger a reclaim of unused regions in the VG's PVs.

My suggestion was to lvcreate a -l100%FREE LV named "filler" and overwrite it from /dev/zero.

It seems like this might something a lot of users want as this functionality gets to be more common.

I wondered if it could be worth adding a script to automate this or even an option to vgchange (e.g. --zero-free-space)?

Quoted 8 lines
Quoted 2 lines

Didn't have time to try putting anything together yet but it seems such a feature could be useful.

Do these HDS arrays also support discard? Would seem to me that issuing discards for the free space would be better (more standard) than writing zeros to accomplish the same.

This variant would be: vgchange --discard-free-space

There are two variants of reclamation currently supported by external storage products.

The WRITE_SAME/TRIM based explicit discard support is superior when the entire storage stack supports it and I agree it would be good to support this mode of reclaim too (superior in that you lose the zero-write overhead and associated reclaim lag and can get better space utilisation since the host "knows" better which blocks are unused).

Several vendors (at least HDS/EMC that I know of) also support an implicit reclaim mode known as zero page/space reclaim in which the storage de-allocates blocks that are overwritten with zeros.

I suppose the ideal solution would be to detect whether the storage supports one or the other automatically but I don't know that there is a way to achieve this right now (TRIM/WRITE_SAME possibly but I think the zero page stuff is entirely transparent).

Regards,
Bryn.

_______________________________________________
linux-lvm mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/linux-lvm
read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/