xref: /freebsd/sys/contrib/openzfs/man/man8/zpool-remove.8 (revision b64c5a0ace59af62eff52bfe110a521dc73c937b)
1.\"
2.\" CDDL HEADER START
3.\"
4.\" The contents of this file are subject to the terms of the
5.\" Common Development and Distribution License (the "License").
6.\" You may not use this file except in compliance with the License.
7.\"
8.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9.\" or https://opensource.org/licenses/CDDL-1.0.
10.\" See the License for the specific language governing permissions
11.\" and limitations under the License.
12.\"
13.\" When distributing Covered Code, include this CDDL HEADER in each
14.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15.\" If applicable, add the following below this CDDL HEADER, with the
16.\" fields enclosed by brackets "[]" replaced with your own identifying
17.\" information: Portions Copyright [yyyy] [name of copyright owner]
18.\"
19.\" CDDL HEADER END
20.\"
21.\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
22.\" Copyright (c) 2012, 2018 by Delphix. All rights reserved.
23.\" Copyright (c) 2012 Cyril Plisko. All Rights Reserved.
24.\" Copyright (c) 2017 Datto Inc.
25.\" Copyright (c) 2018 George Melikov. All Rights Reserved.
26.\" Copyright 2017 Nexenta Systems, Inc.
27.\" Copyright (c) 2017 Open-E, Inc. All Rights Reserved.
28.\"
29.Dd March 16, 2022
30.Dt ZPOOL-REMOVE 8
31.Os
32.
33.Sh NAME
34.Nm zpool-remove
35.Nd remove devices from ZFS storage pool
36.
37.Sh SYNOPSIS
38.Nm zpool
39.Cm remove
40.Op Fl npw
41.Ar pool Ar device Ns …
42.Nm zpool
43.Cm remove
44.Fl s
45.Ar pool
46.
47.Sh DESCRIPTION
48.Bl -tag -width Ds
49.It Xo
50.Nm zpool
51.Cm remove
52.Op Fl npw
53.Ar pool Ar device Ns …
54.Xc
55Removes the specified device from the pool.
56This command supports removing hot spare, cache, log, and both mirrored and
57non-redundant primary top-level vdevs, including dedup and special vdevs.
58.Pp
59Top-level vdevs can only be removed if the primary pool storage does not contain
60a top-level raidz vdev, all top-level vdevs have the same sector size, and the
61keys for all encrypted datasets are loaded.
62.Pp
63Removing a top-level vdev reduces the total amount of space in the storage pool.
64The specified device will be evacuated by copying all allocated space from it to
65the other devices in the pool.
66In this case, the
67.Nm zpool Cm remove
68command initiates the removal and returns, while the evacuation continues in
69the background.
70The removal progress can be monitored with
71.Nm zpool Cm status .
72If an I/O error is encountered during the removal process it will be cancelled.
73The
74.Sy device_removal
75feature flag must be enabled to remove a top-level vdev, see
76.Xr zpool-features 7 .
77.Pp
78A mirrored top-level device (log or data) can be removed by specifying the top-
79level mirror for the
80same.
81Non-log devices or data devices that are part of a mirrored configuration can be
82removed using
83the
84.Nm zpool Cm detach
85command.
86.Bl -tag -width Ds
87.It Fl n
88Do not actually perform the removal
89.Pq Qq No-op .
90Instead, print the estimated amount of memory that will be used by the
91mapping table after the removal completes.
92This is nonzero only for top-level vdevs.
93.El
94.Bl -tag -width Ds
95.It Fl p
96Used in conjunction with the
97.Fl n
98flag, displays numbers as parsable (exact) values.
99.It Fl w
100Waits until the removal has completed before returning.
101.El
102.It Xo
103.Nm zpool
104.Cm remove
105.Fl s
106.Ar pool
107.Xc
108Stops and cancels an in-progress removal of a top-level vdev.
109.El
110.
111.Sh EXAMPLES
112.\" These are, respectively, examples 15 from zpool.8
113.\" Make sure to update them bidirectionally
114.Ss Example 1 : No Removing a Mirrored top-level (Log or Data) Device
115The following commands remove the mirrored log device
116.Sy mirror-2
117and mirrored top-level data device
118.Sy mirror-1 .
119.Pp
120Given this configuration:
121.Bd -literal -compact -offset Ds
122  pool: tank
123 state: ONLINE
124 scrub: none requested
125config:
126
127         NAME        STATE     READ WRITE CKSUM
128         tank        ONLINE       0     0     0
129           mirror-0  ONLINE       0     0     0
130             sda     ONLINE       0     0     0
131             sdb     ONLINE       0     0     0
132           mirror-1  ONLINE       0     0     0
133             sdc     ONLINE       0     0     0
134             sdd     ONLINE       0     0     0
135         logs
136           mirror-2  ONLINE       0     0     0
137             sde     ONLINE       0     0     0
138             sdf     ONLINE       0     0     0
139.Ed
140.Pp
141The command to remove the mirrored log
142.Ar mirror-2 No is :
143.Dl # Nm zpool Cm remove Ar tank mirror-2
144.Pp
145At this point, the log device no longer exists
146(both sides of the mirror have been removed):
147.Bd -literal -compact -offset Ds
148  pool: tank
149 state: ONLINE
150  scan: none requested
151config:
152
153        NAME        STATE     READ WRITE CKSUM
154        tank        ONLINE       0     0     0
155          mirror-0  ONLINE       0     0     0
156            sda     ONLINE       0     0     0
157            sdb     ONLINE       0     0     0
158          mirror-1  ONLINE       0     0     0
159            sdc     ONLINE       0     0     0
160            sdd     ONLINE       0     0     0
161.Ed
162.Pp
163The command to remove the mirrored data
164.Ar mirror-1 No is :
165.Dl # Nm zpool Cm remove Ar tank mirror-1
166.Pp
167After
168.Ar mirror-1 No has been evacuated, the pool remains redundant, but
169the total amount of space is reduced:
170.Bd -literal -compact -offset Ds
171  pool: tank
172 state: ONLINE
173  scan: none requested
174config:
175
176        NAME        STATE     READ WRITE CKSUM
177        tank        ONLINE       0     0     0
178          mirror-0  ONLINE       0     0     0
179            sda     ONLINE       0     0     0
180            sdb     ONLINE       0     0     0
181.Ed
182.
183.Sh SEE ALSO
184.Xr zpool-add 8 ,
185.Xr zpool-detach 8 ,
186.Xr zpool-labelclear 8 ,
187.Xr zpool-offline 8 ,
188.Xr zpool-replace 8 ,
189.Xr zpool-split 8
190