public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Damien Le Moal <dlemoal@kernel.org>
To: Christoph Hellwig <hch@lst.de>, Carlos Maiolino <cem@kernel.org>
Cc: "Darrick J. Wong" <djwong@kernel.org>,
	Hans Holmberg <hans.holmberg@wdc.com>,
	linux-xfs@vger.kernel.org
Subject: Re: support for zoned devices v4
Date: Tue, 4 Mar 2025 14:37:46 +0900	[thread overview]
Message-ID: <b6055154-4d72-4e8a-a6c0-21e01e68329d@kernel.org> (raw)
In-Reply-To: <20250226185723.518867-1-hch@lst.de>

On 2/27/25 03:56, Christoph Hellwig wrote:
> Hi all,
> 
> this series adds support for zoned devices:
> 
>     https://zonedstorage.io/docs/introduction/zoned-storage
> 
> to XFS. It has been developed for and tested on both SMR hard drives,
> which are the oldest and most common class of zoned devices:
> 
>    https://zonedstorage.io/docs/introduction/smr
> 
> and ZNS SSDs:
> 
>    https://zonedstorage.io/docs/introduction/zns
> 
> It has not been tested with zoned UFS devices, as their current capacity
> points and performance characteristics aren't too interesting for XFS
> use cases (but never say never).
> 
> Sequential write only zones are only supported for data using a new
> allocator for the RT device, which maps each zone to a rtgroup which
> is written sequentially.  All metadata and (for now) the log require
> using randomly writable space. This means a realtime device is required
> to support zoned storage, but for the common case of SMR hard drives
> that contain random writable zones and sequential write required zones
> on the same block device, the concept of an internal RT device is added
> which means using XFS on a SMR HDD is as simple as:
> 
> $ mkfs.xfs /dev/sda
> $ mount /dev/sda /mnt
> 
> When using NVMe ZNS SSDs that do not support conventional zones, the
> traditional multi-device RT configuration is required.  E.g. for an
> SSD with a conventional namespace 1 and a zoned namespace 2:
> 
> $ mkfs.xfs /dev/nvme0n1 -o rtdev=/dev/nvme0n2
> $ mount -o rtdev=/dev/nvme0n2 /dev/nvme0n1 /mnt
> 
> The zoned allocator can also be used on conventional block devices, or
> on conventional zones (e.g. when using an SMR HDD as the external RT
> device).  For example using zoned XFS on normal SSDs shows very nice
> performance advantages and write amplification reduction for intelligent
> workloads like RocksDB.
> 
> Some work is still in progress or planned, but should not affect the
> integration with the rest of XFS or the on-disk format:
> 
>  - support for quotas
>  - support for reflinks - the I/O path already supports them, but
>    garbage collection currently isn't refcount aware and would unshare
>    them, rendering the feature useless
>  - more scalable garbage collection victim selection
>  - various improvements to hint based data placement
> 
> To make testing easier a git tree is provided that has the required
> iomap changes that we merged through the VFS tree, this code and a
> few misc patches that make VM testing easier:
> 
>     git://git.infradead.org/users/hch/xfs.git xfs-zoned
> 
> The matching xfsprogs is available here:
> 
>     git://git.infradead.org/users/hch/xfsprogs.git xfs-zoned

I ran this several times doing short runs and a long run over the weekend on a
30TB SMR HDD, doing random sized buffered writes, read and readwrite IOs to
randomly sized files.

Working great for me. So:

Tested-by: Damien Le Moal <dlemoal@kernel.org>

-- 
Damien Le Moal
Western Digital Research

      parent reply	other threads:[~2025-03-04  5:37 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-26 18:56 support for zoned devices v4 Christoph Hellwig
2025-02-26 18:56 ` [PATCH 01/44] xfs: reflow xfs_dec_freecounter Christoph Hellwig
2025-02-26 18:56 ` [PATCH 02/44] xfs: generalize the freespace and reserved blocks handling Christoph Hellwig
2025-02-26 19:21   ` Darrick J. Wong
2025-02-26 18:56 ` [PATCH 03/44] xfs: support reserved blocks for the rt extent counter Christoph Hellwig
2025-02-26 18:56 ` [PATCH 04/44] xfs: trace in-memory freecounter reservations Christoph Hellwig
2025-02-26 18:56 ` [PATCH 05/44] xfs: fixup the metabtree reservation in xrep_reap_metadir_fsblocks Christoph Hellwig
2025-02-26 18:56 ` [PATCH 06/44] xfs: make metabtree reservations global Christoph Hellwig
2025-02-26 18:56 ` [PATCH 07/44] xfs: reduce metafile reservations Christoph Hellwig
2025-02-26 18:56 ` [PATCH 08/44] xfs: factor out a xfs_rt_check_size helper Christoph Hellwig
2025-02-26 18:56 ` [PATCH 09/44] xfs: add a rtg_blocks helper Christoph Hellwig
2025-02-26 18:56 ` [PATCH 10/44] xfs: move xfs_bmapi_reserve_delalloc to xfs_iomap.c Christoph Hellwig
2025-02-26 18:56 ` [PATCH 11/44] xfs: skip always_cow inodes in xfs_reflink_trim_around_shared Christoph Hellwig
2025-02-26 18:56 ` [PATCH 12/44] xfs: refine the unaligned check for always COW inodes in xfs_file_dio_write Christoph Hellwig
2025-02-26 18:56 ` [PATCH 13/44] xfs: support XFS_BMAPI_REMAP in xfs_bmap_del_extent_delay Christoph Hellwig
2025-02-26 18:56 ` [PATCH 14/44] xfs: add a xfs_rtrmap_highest_rgbno helper Christoph Hellwig
2025-02-26 18:56 ` [PATCH 15/44] xfs: define the zoned on-disk format Christoph Hellwig
2025-02-26 18:56 ` [PATCH 16/44] xfs: allow internal RT devices for zoned mode Christoph Hellwig
2025-02-26 18:56 ` [PATCH 17/44] xfs: export zoned geometry via XFS_FSOP_GEOM Christoph Hellwig
2025-02-26 18:56 ` [PATCH 18/44] xfs: disable sb_frextents for zoned file systems Christoph Hellwig
2025-02-26 18:56 ` [PATCH 19/44] xfs: disable FITRIM for zoned RT devices Christoph Hellwig
2025-02-26 18:56 ` [PATCH 20/44] xfs: don't call xfs_can_free_eofblocks from ->release for zoned inodes Christoph Hellwig
2025-02-26 18:56 ` [PATCH 21/44] xfs: skip zoned RT inodes in xfs_inodegc_want_queue_rt_file Christoph Hellwig
2025-02-26 18:56 ` [PATCH 22/44] xfs: parse and validate hardware zone information Christoph Hellwig
2025-02-26 18:56 ` [PATCH 23/44] xfs: add the zoned space allocator Christoph Hellwig
2025-02-26 19:19   ` Darrick J. Wong
2025-02-26 18:56 ` [PATCH 24/44] xfs: add support for zoned space reservations Christoph Hellwig
2025-02-26 18:56 ` [PATCH 25/44] xfs: implement zoned garbage collection Christoph Hellwig
2025-02-26 18:56 ` [PATCH 26/44] xfs: implement buffered writes to zoned RT devices Christoph Hellwig
2025-02-26 18:56 ` [PATCH 27/44] xfs: implement direct " Christoph Hellwig
2025-02-26 18:57 ` [PATCH 28/44] xfs: wire up zoned block freeing in xfs_rtextent_free_finish_item Christoph Hellwig
2025-02-26 18:57 ` [PATCH 29/44] xfs: hide reserved RT blocks from statfs Christoph Hellwig
2025-02-26 18:57 ` [PATCH 30/44] xfs: support growfs on zoned file systems Christoph Hellwig
2025-02-26 18:57 ` [PATCH 31/44] xfs: allow COW forks on zoned file systems in xchk_bmap Christoph Hellwig
2025-02-26 18:57 ` [PATCH 32/44] xfs: support xchk_xref_is_used_rt_space on zoned file systems Christoph Hellwig
2025-02-26 18:57 ` [PATCH 33/44] xfs: support xrep_require_rtext_inuse " Christoph Hellwig
2025-02-26 18:57 ` [PATCH 34/44] xfs: enable fsmap reporting for internal RT devices Christoph Hellwig
2025-02-26 18:57 ` [PATCH 35/44] xfs: disable reflink for zoned file systems Christoph Hellwig
2025-02-26 18:57 ` [PATCH 36/44] xfs: disable rt quotas " Christoph Hellwig
2025-02-26 18:57 ` [PATCH 37/44] xfs: enable the zoned RT device feature Christoph Hellwig
2025-02-26 18:57 ` [PATCH 38/44] xfs: support zone gaps Christoph Hellwig
2025-02-26 18:57 ` [PATCH 39/44] xfs: add a max_open_zones mount option Christoph Hellwig
2025-02-26 18:57 ` [PATCH 40/44] xfs: support write life time based data placement Christoph Hellwig
2025-02-26 18:57 ` [PATCH 41/44] xfs: wire up the show_stats super operation Christoph Hellwig
2025-02-26 18:57 ` [PATCH 42/44] xfs: export zone stats in /proc/*/mountstats Christoph Hellwig
2025-02-26 18:57 ` [PATCH 43/44] xfs: contain more sysfs code in xfs_sysfs.c Christoph Hellwig
2025-02-26 18:57 ` [PATCH 44/44] xfs: export max_open_zones in sysfs Christoph Hellwig
2025-03-04  5:37 ` Damien Le Moal [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b6055154-4d72-4e8a-a6c0-21e01e68329d@kernel.org \
    --to=dlemoal@kernel.org \
    --cc=cem@kernel.org \
    --cc=djwong@kernel.org \
    --cc=hans.holmberg@wdc.com \
    --cc=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox