From owner-freebsd-questions@freebsd.org Sun Apr 17 16:33:43 2016 Return-Path: Delivered-To: freebsd-questions@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A7B65B12E4D for ; Sun, 17 Apr 2016 16:33:43 +0000 (UTC) (envelope-from wblock@wonkity.com) Received: from wonkity.com (wonkity.com [67.158.26.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "wonkity.com", Issuer "wonkity.com" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 5887619B6 for ; Sun, 17 Apr 2016 16:33:43 +0000 (UTC) (envelope-from wblock@wonkity.com) Received: from wonkity.com (localhost [127.0.0.1]) by wonkity.com (8.15.2/8.15.2) with ESMTPS id u3HGXft0044724 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sun, 17 Apr 2016 10:33:41 -0600 (MDT) (envelope-from wblock@wonkity.com) Received: from localhost (wblock@localhost) by wonkity.com (8.15.2/8.15.2/Submit) with ESMTP id u3HGXfF4044721; Sun, 17 Apr 2016 10:33:41 -0600 (MDT) (envelope-from wblock@wonkity.com) Date: Sun, 17 Apr 2016 10:33:40 -0600 (MDT) From: Warren Block To: "Steve O'Hara-Smith" cc: Matthias Apitz , freebsd-questions@freebsd.org Subject: Re: tool for mapping away bad blocks on an external disk In-Reply-To: <20160417093957.0b1acb4c37d7c15a4b06af88@sohara.org> Message-ID: References: <20160417072641.GA2358@c720-r292778-amd64> <20160417093957.0b1acb4c37d7c15a4b06af88@sohara.org> User-Agent: Alpine 2.20 (BSF 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (wonkity.com [127.0.0.1]); Sun, 17 Apr 2016 10:33:41 -0600 (MDT) X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Apr 2016 16:33:43 -0000 On Sun, 17 Apr 2016, Steve O'Hara-Smith wrote: > On Sun, 17 Apr 2016 09:26:41 +0200 > Matthias Apitz wrote: > >> >> Hello, >> >> I have an older external disk, connected through USB, which has bad >> blocks: > > The tool you're looking for is badsect - I'm moderately surprised > it's still around, the last time I used it was on FreeBSD 1.1.5.1 but it is > still in FreeBSD 10.3. > > It doesn't do the analysis though - you'll have to do that with the > filesystem unmounted and just used dd conv=noerror if= of=/dev/null > to read the whole device and pull the duff sectors out of the error > messages. That won't remap them, though. > However it's been a *long* time since this was worth doing except > perhaps as a last ditch data recovery exercise, drives have had internal > sector remapping for a long time now and when that stops working they are > well and truly banjaxed. True. But this is not (yet :) a data recovery problem, just a desire to make the disk usable again. Bad blocks are only remapped on a write. I think that a SMART long test (smartctl -tlong) writes every block and will do remapping as a side effect, but have not verified it. The even more brute-force method would be to just manually write every block on the disk with dd. A bs= of 64K or 128K or more will help speed that up. Retries on bad writes might slow it down again. The drive could use up all available spares during that process, or continue to grow new bad blocks. That makes the decision to scrap it easy. If it successfully maps out the bad blocks and does not appear to be creating new ones, then using it becomes a judgement call. As they say, choose wisely.