====== ZFS Failed Disk Replacement ====== **Hot Spares**: https://docs.oracle.com/cd/E19120-01/open.solaris/817-2271/gcvcw/index.html **Hot Spares**: https://docs.oracle.com/cd/E53394_01/html/E54801/gpegp.html https://docs.joyent.com/private-cloud/troubleshooting/disk-replacement http://docs.oracle.com/cd/E19253-01/819-5461/gbcet/index.html http://docs.oracle.com/cd/E19082-01/817-2271/ghzvx/index.html Identify the problem drive and location **exactly** before replacing! **Power the server off when manipulating disk drives**, if at all possible. This can go a long way towards eliminating self inflicted wounds! The normal replacement procedure involves fixing the pool first, then removing the failed drive. Replace in-place if you must. ===== Napp-IT ===== Replace with spare: **Degraded -> Offline -> Replace** Replace in-place drive: **Degraded -> Offline -> Remove -> Pull Bad Drive -> Install New Drive -> Initialize -> Add to VDEV** Wait for the **resilvering** to finish then run a **scrub** job. ===== CLI ===== ==== Replace a Failed Drive ==== https://www.thegeekdiary.com/solaris-zfs-how-to-offline-online-detach-replace-device-in-a-storage-pool/ Use ''zpool replace'' to replace a failed drive. It is safest to replace a failed drive with another existent drive **in another slot**. zpool replace To replace a failed drive by replacing it **in-place**, it is best to shut down the server, remove and replace the failed drive, then use ''zpool replace'' specifying only the drive being replaced. zpool replace After initializing a new replacement drive in-place using Napp-IT on OmniOS, this is the command that Napp-IT uses when replacing a drive. zpool replace -f "poolname" c0t5000C500418A83B3d0 c0t5000C500836A90C7d0 ''zpool detach'' will remove a drive from a VDEV, turning a mirrored VDEV into a single drive VDEV. Use ''zpool attach'' to recreate the mirror. In general, **do not use these commands to replace a failed drive**. ==== Replace Old Drives With New or Bigger ==== https://www.thegeekdiary.com/solaris-zfs-how-to-offline-online-detach-replace-device-in-a-storage-pool/ It is safest to ''zpool attach'' an additional mirror to a mirrored VDEV (which adds redundancy) then remove the drive being upgraded afterwards. zpool attach # Wait for it to resilver, which adds redundancy, then zpool detach ==== Spares ==== Usually a spare can replace a faulted disk but **remains a spare**. The idea behind this is that you replace the faulted disk, then replace the spare with the new and the spare remains a spare. If you want to remove the spare property, first remove then replace. ===== Pool Expansion ===== https://tomasz.korwel.net/2014/01/03/growing-zfs-pool/ https://docs.oracle.com/cd/E36784_01/html/E36835/gazgm.html ==== CLI ==== You can expand a ZFS pool by replacing redundant drives on replacing them **one at a time**. **Be sure to wait for the resilvering to finish before replacing the next drive!** Shut down the server to physically replace drives. If you have hotswap capability, you can use ''zpool offline '' to tell ZFS to ignore the device being replaced. # Set the autoexpand property so the new disk space is recognized zpool set autoexpand=on # Verify everything is online before replacing a disk zpool status # Take the old, smaller disk offline before removing it zpool offline ##### Physically replace the disk with the new larger disk ##### zpool online # Optionally kick off the autoexpand of each new larger device zpool online -e