[zfs-discuss] SEEK_HOLE returns the whole sparse file size?

2011-04-18 Thread jeff.liu
Hello List,

I am trying to fetch the data/hole info of a sparse file through the 
lseek(SEEK_HOLE/SEEK_DATA)
stuff, the result of fpathconf(..., _PC_MIN_HOLE_SIZE) is ok, so I think this 
interface is supported
on my testing ZFS, but SEEK_HOLE always return the sparse file total size 
instead of the desired
first hole start offset.

The whole process was shown as following, Could anyone give any hints?

Create a sparse file(sparse2) as below, SEEK_HOLE should returns *ZERO* and 
SEEK_DATA should
returns 40960 IMHO:
bash-3.00@ python -c f=open('sparse2', 'w'); f.seek(40960); f.write('BYE'); 
f.close()

A tiny program to examine the hole start offset of file sparse2.
#include stdio.h
#include string.h
#include fcntl.h
#include sys/stat.h
#include sys/types.h
#include unistd.h
#include errno.h

int
main(int argc, char *argv[])
{
int ret = 0, fd;
off_t data_pos, hole_pos;
const char *filename = NULL;

if (argc != 2) {
fprintf(stderr, Usage: %s file\n, argv[0]);
return 1;
}

filename = strdup(argv[1]);
if (!filename) {
perror(strdup);
return -1;
}

fd = open(filename, O_RDONLY);
if (fd  0) {
perror(open);
ret = -1;
goto out;
}

if (fpathconf(fd, _PC_MIN_HOLE_SIZE)  0) {
fprintf(stderr, The underlying filesystem does not support 
SEEK_HOLE.\n);
goto out;
}

hole_pos = lseek(fd, (off_t)0, SEEK_HOLE);
if (hole_pos  0) {
if (errno == EINVAL || errno == ENOTSUP) {
fprintf(stderr, SEEK_HOLE does not support on OS or 
filesystem.\n);
goto out;
}

perror(lseek);
ret = -1;
goto out;
}

if (hole_pos == 0)
fprintf(stderr, Oh, no!! hole start at offset 0?\n);

if (hole_pos  0)
fprintf(stderr, detected a real hole at: %d.\n, hole_pos);

out:
free(filename);
lseek(fd, (off_t)0, SEEK_SET);

return 0;   
}

My test env:

bash-3.00# uname -a
SunOS unknown 5.10 Generic_142910-17 i86pc i386 i86pc

man zfs(1):
SunOS 5.10  Last change: 11 Jun 2010

bash-3.00# zfs list
NAMEUSED  AVAIL  REFER  MOUNTPOINT
...
...
rpool/export/home   120K   139G   120K  /export/home
...

sparse2 located at /export/home:
bash-3.00# zdb -dd rpool/export/home
Object  lvl   iblk   dblk  dsize  lsize   %full  type
104116K  40.5K  40.5K  40.5K  100.00  ZFS plain file
264   bonus  ZFS znode
dnode flags: USED_BYTES USERUSED_ACCOUNTED
dnode maxblkid: 0
path/sparse2
uid 0
gid 0
atime   Mon Apr 18 14:50:46 2011
mtime   Mon Apr 18 14:50:46 2011
ctime   Mon Apr 18 14:50:46 2011
crtime  Mon Apr 18 14:50:46 2011
gen 497
mode100600
size40963
parent  3
links   1
xattr   0
rdev0x
Indirect blocks:
0 L0 0:1960ce000:a200 a200L/a200P F=1 B=497/497

segment [, a200) size 40.5K

bash-3.00# zdb -R rpool/export/home 0:1960ce000:a200
.
009ff0:      
00a000:  00455942    BYE.
00a010:      

...

Any comments are appreciated!

Thanks,
-Jeff
___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


Re: [zfs-discuss] SEEK_HOLE returns the whole sparse file size?

2011-04-18 Thread Victor Latushkin

On Apr 18, 2011, at 11:22 AM, jeff.liu wrote:

 Hello List,
 
 I am trying to fetch the data/hole info of a sparse file through the 
 lseek(SEEK_HOLE/SEEK_DATA)
 stuff, the result of fpathconf(..., _PC_MIN_HOLE_SIZE) is ok, so I think this 
 interface is supported
 on my testing ZFS, but SEEK_HOLE always return the sparse file total size 
 instead of the desired
 first hole start offset.
 
 The whole process was shown as following, Could anyone give any hints?
 
 Create a sparse file(sparse2) as below, SEEK_HOLE should returns *ZERO* and 
 SEEK_DATA should
 returns 40960 IMHO:
 bash-3.00@ python -c f=open('sparse2', 'w'); f.seek(40960); f.write('BYE'); 
 f.close()

With default settings you'll get single-block file without any holes from ZFS 
perspective.

Try somewhat bigger sparse file like this:

dd if=/dev/urandom of=test.file count=1 bs=128k oseek=1024


 
 A tiny program to examine the hole start offset of file sparse2.
 #include stdio.h
 #include string.h
 #include fcntl.h
 #include sys/stat.h
 #include sys/types.h
 #include unistd.h
 #include errno.h
 
 int
 main(int argc, char *argv[])
 {
   int ret = 0, fd;
   off_t data_pos, hole_pos;
   const char *filename = NULL;
 
   if (argc != 2) {
   fprintf(stderr, Usage: %s file\n, argv[0]);
   return 1;
   }
 
   filename = strdup(argv[1]);
   if (!filename) {
   perror(strdup);
   return -1;
   }
 
   fd = open(filename, O_RDONLY);
   if (fd  0) {
   perror(open);
   ret = -1;
   goto out;
   }
 
   if (fpathconf(fd, _PC_MIN_HOLE_SIZE)  0) {
   fprintf(stderr, The underlying filesystem does not support 
 SEEK_HOLE.\n);
   goto out;
   }
 
   hole_pos = lseek(fd, (off_t)0, SEEK_HOLE);
   if (hole_pos  0) {
   if (errno == EINVAL || errno == ENOTSUP) {
   fprintf(stderr, SEEK_HOLE does not support on OS or 
 filesystem.\n);
   goto out;
   }
 
   perror(lseek);
   ret = -1;
   goto out;
   }
 
   if (hole_pos == 0)
   fprintf(stderr, Oh, no!! hole start at offset 0?\n);
 
   if (hole_pos  0)
   fprintf(stderr, detected a real hole at: %d.\n, hole_pos);
 
 out:
   free(filename);
   lseek(fd, (off_t)0, SEEK_SET);
   
   return 0;   
 }
 
 My test env:
 
 bash-3.00# uname -a
 SunOS unknown 5.10 Generic_142910-17 i86pc i386 i86pc
 
 man zfs(1):
 SunOS 5.10  Last change: 11 Jun 2010
 
 bash-3.00# zfs list
 NAMEUSED  AVAIL  REFER  MOUNTPOINT
 ...
 ...
 rpool/export/home   120K   139G   120K  /export/home
 ...
 
 sparse2 located at /export/home:
 bash-3.00# zdb -dd rpool/export/home
 Object  lvl   iblk   dblk  dsize  lsize   %full  type
 104116K  40.5K  40.5K  40.5K  100.00  ZFS plain file
 264   bonus  ZFS znode
 dnode flags: USED_BYTES USERUSED_ACCOUNTED
 dnode maxblkid: 0
 path/sparse2
 uid 0
 gid 0
 atime   Mon Apr 18 14:50:46 2011
 mtime   Mon Apr 18 14:50:46 2011
 ctime   Mon Apr 18 14:50:46 2011
 crtime  Mon Apr 18 14:50:46 2011
 gen 497
 mode100600
 size40963
 parent  3
 links   1
 xattr   0
 rdev0x
 Indirect blocks:
 0 L0 0:1960ce000:a200 a200L/a200P F=1 B=497/497
 
 segment [, a200) size 40.5K
 
 bash-3.00# zdb -R rpool/export/home 0:1960ce000:a200
 .
 009ff0:      
 00a000:  00455942    BYE.
 00a010:      
 
 ...
 
 Any comments are appreciated!
 
 Thanks,
 -Jeff
 ___
 zfs-discuss mailing list
 zfs-discuss@opensolaris.org
 http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


Re: [zfs-discuss] SEEK_HOLE returns the whole sparse file size?

2011-04-18 Thread jeff.liu
Victor Latushkin wrote:
 On Apr 18, 2011, at 11:22 AM, jeff.liu wrote:
 
 Hello List,

 I am trying to fetch the data/hole info of a sparse file through the 
 lseek(SEEK_HOLE/SEEK_DATA)
 stuff, the result of fpathconf(..., _PC_MIN_HOLE_SIZE) is ok, so I think 
 this interface is supported
 on my testing ZFS, but SEEK_HOLE always return the sparse file total size 
 instead of the desired
 first hole start offset.

 The whole process was shown as following, Could anyone give any hints?

 Create a sparse file(sparse2) as below, SEEK_HOLE should returns *ZERO* 
 and SEEK_DATA should
 returns 40960 IMHO:
 bash-3.00@ python -c f=open('sparse2', 'w'); f.seek(40960); f.write('BYE'); 
 f.close()
 
 With default settings you'll get single-block file without any holes from ZFS 
 perspective.
 
 Try somewhat bigger sparse file like this:
 
 dd if=/dev/urandom of=test.file count=1 bs=128k oseek=1024
Thanks for your quick response! It works for me now.

Regards,
-Jeff

 
 
 A tiny program to examine the hole start offset of file sparse2.
 #include stdio.h
 #include string.h
 #include fcntl.h
 #include sys/stat.h
 #include sys/types.h
 #include unistd.h
 #include errno.h

 int
 main(int argc, char *argv[])
 {
  int ret = 0, fd;
  off_t data_pos, hole_pos;
  const char *filename = NULL;

  if (argc != 2) {
  fprintf(stderr, Usage: %s file\n, argv[0]);
  return 1;
  }

  filename = strdup(argv[1]);
  if (!filename) {
  perror(strdup);
  return -1;
  }

  fd = open(filename, O_RDONLY);
  if (fd  0) {
  perror(open);
  ret = -1;
  goto out;
  }

  if (fpathconf(fd, _PC_MIN_HOLE_SIZE)  0) {
  fprintf(stderr, The underlying filesystem does not support 
 SEEK_HOLE.\n);
  goto out;
  }

  hole_pos = lseek(fd, (off_t)0, SEEK_HOLE);
  if (hole_pos  0) {
  if (errno == EINVAL || errno == ENOTSUP) {
  fprintf(stderr, SEEK_HOLE does not support on OS or 
 filesystem.\n);
  goto out;
  }

  perror(lseek);
  ret = -1;
  goto out;
  }

  if (hole_pos == 0)
  fprintf(stderr, Oh, no!! hole start at offset 0?\n);

  if (hole_pos  0)
  fprintf(stderr, detected a real hole at: %d.\n, hole_pos);

 out:
  free(filename);
  lseek(fd, (off_t)0, SEEK_SET);
  
  return 0;   
 }

 My test env:
 
 bash-3.00# uname -a
 SunOS unknown 5.10 Generic_142910-17 i86pc i386 i86pc

 man zfs(1):
 SunOS 5.10  Last change: 11 Jun 2010

 bash-3.00# zfs list
 NAMEUSED  AVAIL  REFER  MOUNTPOINT
 ...
 ...
 rpool/export/home   120K   139G   120K  /export/home
 ...

 sparse2 located at /export/home:
 bash-3.00# zdb -dd rpool/export/home
 Object  lvl   iblk   dblk  dsize  lsize   %full  type
 104116K  40.5K  40.5K  40.5K  100.00  ZFS plain file
 264   bonus  ZFS znode
 dnode flags: USED_BYTES USERUSED_ACCOUNTED
 dnode maxblkid: 0
 path/sparse2
 uid 0
 gid 0
 atime   Mon Apr 18 14:50:46 2011
 mtime   Mon Apr 18 14:50:46 2011
 ctime   Mon Apr 18 14:50:46 2011
 crtime  Mon Apr 18 14:50:46 2011
 gen 497
 mode100600
 size40963
 parent  3
 links   1
 xattr   0
 rdev0x
 Indirect blocks:
 0 L0 0:1960ce000:a200 a200L/a200P F=1 B=497/497

 segment [, a200) size 40.5K

 bash-3.00# zdb -R rpool/export/home 0:1960ce000:a200
 .
 009ff0:      
 00a000:  00455942    BYE.
 00a010:      
 
 ...

 Any comments are appreciated!

 Thanks,
 -Jeff
 ___
 zfs-discuss mailing list
 zfs-discuss@opensolaris.org
 http://mail.opensolaris.org/mailman/listinfo/zfs-discuss
 

___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


Re: [zfs-discuss] SEEK_HOLE returns the whole sparse file size?

2011-04-18 Thread Joerg Schilling
jeff.liu jeff@oracle.com wrote:

 Hello List,

 I am trying to fetch the data/hole info of a sparse file through the 
 lseek(SEEK_HOLE/SEEK_DATA)
 stuff, the result of fpathconf(..., _PC_MIN_HOLE_SIZE) is ok, so I think this 
 interface is supported
 on my testing ZFS, but SEEK_HOLE always return the sparse file total size 
 instead of the desired
 first hole start offset.

Maybe you did not create the file correctly.

If you like to create a file of a specific size that only contains one single 
hole, there is a way to do this using star:

mkfile size some-file # create a file of the desired size
star -c f=xx.tar -meta some-file# archive the meta data only
rm some-file# remove original file
star -x -xmeta -force-hole f=xx.tar # let star create an empty file of the 
# same size

This will try to create a file that has one hole but no data in case the 
filesystem supports to do this.

For UFS, such a file e.g. needs to be a multiple of 8k in size. This is because 
holes in UFS need to be aligned at 8k boundaries and need to be a multiple of 
8k in size.


A recent star can be found in the schily source consolidation:

ftp://ftp.berlios.de/pub/schily/


star is part of Schillix-ON (a free OpenSolaris fork).

Jörg

-- 
 EMail:jo...@schily.isdn.cs.tu-berlin.de (home) Jörg Schilling D-13353 Berlin
   j...@cs.tu-berlin.de(uni)  
   joerg.schill...@fokus.fraunhofer.de (work) Blog: 
http://schily.blogspot.com/
 URL:  http://cdrecord.berlios.de/private/ ftp://ftp.berlios.de/pub/schily
___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


Re: [zfs-discuss] [storage-discuss] zfs over iscsi not recovering from timeouts

2011-04-18 Thread Bing Zhao

 Hi Tuomas:

Before you run zpool clear, please make sure that the os device name 
exists in the output of 'iscsiadm list target -S'.


#iscsiadm list target -S
Target: iqn.1986-03.com.sun:02:test
Alias: -
TPGT: 1
ISID: 402a
Connections: 1
LUN: 0
 Vendor:  SUN
 Product: COMSTAR
 OS Device Name: 
/dev/rdsk/c0t600144F008002797ACDE4CCBC0480001d0s2 OS device name



Regards,
Bing

On 04/17/11 16:55, Tuomas Leikola wrote:

Hei,

I'm crossposting this to zfs as i'm not sure which bit is to blame here.

I've been having this issue that i cannot really fix myself:

I have a OI 148 server, which hosts a log of disks on SATA
controllers. Now it's full and needs some data moving work to be done,
so i've acquired another box which runs linux and has several sata
enclosures. I'm using solaris iscsi on static-config to connect the
device.

Normally, when everything is fine, no problems. I can even restart the
iet daemon and theres just a short hiccup in the IO-stream.

Things go bad when i turn the iscsi target off for a longer period
(reboot, etc). The solaris iscsi times out, and responds these as
errors to zfs. zfs increases error counts (loses writes maybe) and
eventually marks all devices as failed and the array halts
(failmode=wait).

When in this state, there is no luck returning to running state. The
failed condition doesn't purge itself after the target becomes online
again. I've tried zpool clear but it still reports data errors and
devices as faulted. zpool export hangs.

how i see this problem is that
a) iscsi initiator reports timeouts as permanent
b) zfs handles them as such
c) there is no timeout never to be chosen as far as i can see

What I would like is a mode equivalent to nfs hard mount - wait
forever for the device to become available (but ability to kick the
array from cmdline if it is really dead).

Any clues?





___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


Re: [zfs-discuss] SEEK_HOLE returns the whole sparse file size?

2011-04-18 Thread Jeff liu

在 2011-4-18,下午6:03, Joerg Schilling 写道:

 jeff.liu jeff@oracle.com wrote:
 
 Hello List,
 
 I am trying to fetch the data/hole info of a sparse file through the 
 lseek(SEEK_HOLE/SEEK_DATA)
 stuff, the result of fpathconf(..., _PC_MIN_HOLE_SIZE) is ok, so I think 
 this interface is supported
 on my testing ZFS, but SEEK_HOLE always return the sparse file total size 
 instead of the desired
 first hole start offset.
 
 Maybe you did not create the file correctly.
 
 If you like to create a file of a specific size that only contains one single 
 hole, there is a way to do this using star:
 
 mkfile size some-file   # create a file of the desired 
 size
 star -c f=xx.tar -meta some-file  # archive the meta data only
 rm some-file  # remove original file
 star -x -xmeta -force-hole f=xx.tar   # let star create an empty file of the 
   # same size
 
 This will try to create a file that has one hole but no data in case the 
 filesystem supports to do this.
 
 For UFS, such a file e.g. needs to be a multiple of 8k in size. This is 
 because 
 holes in UFS need to be aligned at 8k boundaries and need to be a multiple of 
 8k in size.
 
 
 A recent star can be found in the schily source consolidation:
 
 ftp://ftp.berlios.de/pub/schily/
 
 
 star is part of Schillix-ON (a free OpenSolaris fork).

Thanks for your info!
Actually, I'd like to create a sparse file with both data and holes to test a 
patch I am working on, it was wrote for Coreutils to optimize sparse file 
reading, especially for cp(1).

I had took a look at the source code of Star before, and I was wondering of  
comments at start/hole.c: sparse_file(fp, info) at that time,
line: 1240if (pos = info-f_size) {  /* Definitely not 
sparse */ 

Now, I am still not sure why the returned 'pos' could  larger than 
'info-f_size' in some cases, I guess it should be equal to the f_size if the 
target file is not sparse, Am I missing something here?

For the sparse file I created via python -c f=open('sparse', 'w'); 
f.seek(40960); f.write('BYE'); f.close(),  IMHO,  it is a right way to create 
a sparse file conventionally, but it is too small to spanning across
multiple blocks, so ZFS allocate it as an non-sparse single block file just as 
Victor's response. 


Regards,
-Jeff


 
 Jörg
 
 -- 
 EMail:jo...@schily.isdn.cs.tu-berlin.de (home) Jörg Schilling D-13353 Berlin
   j...@cs.tu-berlin.de(uni)  
   joerg.schill...@fokus.fraunhofer.de (work) Blog: 
 http://schily.blogspot.com/
 URL:  http://cdrecord.berlios.de/private/ ftp://ftp.berlios.de/pub/schily



___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


[zfs-discuss] Bootable root pool?

2011-04-18 Thread Darren Kenny
Hi,

As I understand it there were restrictions on a bootable root pool where it
cannot be defined to use whole-disk configurations for a single disk, or
multiple disks which are mirrored.

Does it still apply that you need to define such pools as using slices, ie. by
either defining a partition (if non-SPARC) and then a slice 0? i.e.

   zpool create mirror c1t0d0 c1t1d0# not bootable

while

   zpool create mirror c1t0d0s0 c1t1d0s0# IS bootable

Is it possible to use cache and log devices in a root pool? If so, does this
restriction on the use of a slice rather than just the disk device also apply
here? i.e. would the following be supported:

   zpool create mirror c1t0d0s0 c1t1d0s0 cache c2t0d0 log c2t1d0

Thanks,

Darren.
___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


Re: [zfs-discuss] Bootable root pool?

2011-04-18 Thread Cindy Swearingen

Hi Darren,

Yes, a bootable root pool must be created on a disk slice.

You can use a cache device, but not a log device, and the cache device
must be a disk slice.

See the output below.

Thanks,

Cindy

# zpool add rpool log c0t2d0s0
cannot add to 'rpool': root pool can not have multiple vdevs or separate 
logs

# zpool add rpool cache c0t3d0
cannot label 'c0t3d0': EFI labeled devices are not supported on root pools.
# zpool add rpool cache c0t3d0s0
# zpool status rpool
  pool: rpool
 state: ONLINE
 scan: none requested
config:

NAMESTATE READ WRITE CKSUM
rpool   ONLINE   0 0 0
  c0t0d0s0  ONLINE   0 0 0
cache
  c0t3d0s0  ONLINE   0 0 0

errors: No known data errors



On 04/18/11 10:22, Darren Kenny wrote:

Hi,

As I understand it there were restrictions on a bootable root pool where it
cannot be defined to use whole-disk configurations for a single disk, or
multiple disks which are mirrored.

Does it still apply that you need to define such pools as using slices, ie. by
either defining a partition (if non-SPARC) and then a slice 0? i.e.

   zpool create mirror c1t0d0 c1t1d0# not bootable

while

   zpool create mirror c1t0d0s0 c1t1d0s0# IS bootable

Is it possible to use cache and log devices in a root pool? If so, does this
restriction on the use of a slice rather than just the disk device also apply
here? i.e. would the following be supported:

   zpool create mirror c1t0d0s0 c1t1d0s0 cache c2t0d0 log c2t1d0

Thanks,

Darren.
___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


Re: [zfs-discuss] zpool scrub on b123

2011-04-18 Thread Karl Rossing
So i figured out after a couple of scrubs and fmadm faulty that drive 
c9t15d0 was bad.


I then replaced the drive using

-bash-3.2$  pfexec /usr/sbin/zpool offline vdipool c9t15d0
-bash-3.2$  pfexec /usr/sbin/zpool replace vdipool c9t15d0 c9t19d0

The drive resilvered and I rebooted the server, just to make sure 
everything was clean.


After the reboot, zfs resilvred the same drive again(which took 7hrs)

My pool now looks like this:
NAME   STATE READ WRITE CKSUM
vdipoolDEGRADED 0 0 2
  raidz1   DEGRADED 0 0 4
c9t14d0ONLINE   0 0 1  512 resilvered
spare  DEGRADED 0 0 0
  c9t15d0  OFFLINE  0 0 0
  c9t19d0  ONLINE   0 0 0  16.1G resilvered
c9t16d0ONLINE   0 0 1  512 resilvered
c9t17d0ONLINE   0 0 5  2.50K resilvered
c9t18d0ONLINE   0 0 1  512 resilvered
spares
  c9t19d0  INUSE currently in use

I'm going to replace c9t15d0 with a new drive.

I find it odd that zfs needed to resilver the drive after the reboot. 
Shouldn't the resilvered information be kept across reboots?


Thanks
Karl

On 04/15/2011 03:55 PM, Cindy Swearingen wrote:

Yes, the Solaris 10 9/10 release has the fix for RAIDZ checksum errors
if you have ruled out any hardware problems.

cs
On 04/15/11 14:47, Karl Rossing wrote:
Would moving the pool to a Solaris 10U9 server fix the random RAIDZ 
errors?


On 04/15/2011 02:23 PM, Cindy Swearingen wrote:

D'oh. One more thing.

We had a problem in b120-123 that caused random checksum errors on 
RAIDZ configs. This info is still in the ZFS troubleshooting guide.


See if a zpool clear resolves these errors. If that works, then I would
upgrade to a more recent build and see if the problem is resolved
completely.

If not, then see the recommendation below.

Thanks,

Cindy

On 04/15/11 13:18, Cindy Swearingen wrote:

Hi Karl...

I just saw this same condition on another list. I think the poster
resolved it by replacing the HBA.

Drives go bad but they generally don't all go bad at once, so I would
suspect some common denominator like the HBA/controller, cables, and
so on.

See what FMA thinks by running fmdump like this:

# fmdump
TIME UUID SUNW-MSG-ID
Apr 11 16:02:38.2262 ed0bdffe-3cf9-6f46-f20c-99e2b9a6f1cb ZFS-8000-D3
Apr 11 16:22:23.8401 d4157e2f-c46d-c1e9-c05b-f2d3e57f3893 ZFS-8000-D3
Apr 14 15:55:26.1918 71bd0b08-60c2-e114-e1bc-daa03d7b163f ZFS-8000-D3

This output will tell you when the problem started.

Depending on what fmdump says, which probably indicates multiple drive
problems, I would run diagnostics on the HBA or get it replaced.

Always have good backups.

Thanks,

Cindy


On 04/15/11 12:52, Karl Rossing wrote:

Hi,

One of our zfs volumes seems to be having some errors. So I ran 
zpool scrub and it's currently showing the following.


-bash-3.2$ pfexec /usr/sbin/zpool status -x
  pool: vdipool
 state: ONLINE
status: One or more devices has experienced an unrecoverable 
error.  An
attempt was made to correct the error.  Applications are 
unaffected.
action: Determine if the device needs to be replaced, and clear 
the errors
using 'zpool clear' or replace the device with 'zpool 
replace'.

   see: http://www.sun.com/msg/ZFS-8000-9P
 scrub: scrub in progress for 3h10m, 13.53% done, 20h16m to go
config:

NAME STATE READ WRITE CKSUM
vdipool  ONLINE   0 0 0
  raidz1 ONLINE   0 0 0
c9t14d0  ONLINE   0 012  6K repaired
c9t15d0  ONLINE   0 013  167K repaired
c9t16d0  ONLINE   0 011  5.50K repaired
c9t17d0  ONLINE   0 020  10K repaired
c9t18d0  ONLINE   0 015  7.50K repaired
spares
  c9t19d0AVAIL

errors: No known data errors


I have another server connected to the same jbod using drives 
c8t1d0 to c8t13d0 and it doesn't seem to have any errors.


I'm wondering how it could have gotten so screwed up?

Karl





CONFIDENTIALITY NOTICE:  This communication (including all 
attachments) is
confidential and is intended for the use of the named addressee(s) 
only and
may contain information that is private, confidential, privileged, 
and
exempt from disclosure under law.  All rights to privilege are 
expressly

claimed and reserved and are not waived.  Any use, dissemination,
distribution, copying or disclosure of this message and any 
attachments, in
whole or in part, by anyone other than the intended recipient(s) 
is strictly
prohibited.  If you have received this communication in error, 
please notify
the sender immediately, delete this communication from all data 
storage

devices and destroy all hard copies.

Re: [zfs-discuss] zpool scrub on b123

2011-04-18 Thread Roy Sigurd Karlsbakk
 I'm going to replace c9t15d0 with a new drive.
 
 I find it odd that zfs needed to resilver the drive after the reboot.
 Shouldn't the resilvered information be kept across reboots?

the iostat data, as returned from iostat -en, are not kept over a reboot. I 
don't know if it's possible to keep them in zfs or otherwise.

Vennlige hilsener / Best regards

roy
--
Roy Sigurd Karlsbakk
(+47) 97542685
r...@karlsbakk.net
http://blogg.karlsbakk.net/
--
I all pedagogikk er det essensielt at pensum presenteres intelligibelt. Det er 
et elementært imperativ for alle pedagoger å unngå eksessiv anvendelse av 
idiomer med fremmed opprinnelse. I de fleste tilfeller eksisterer adekvate og 
relevante synonymer på norsk.
___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


Re: [zfs-discuss] zpool scrub on b123

2011-04-18 Thread Edward Ned Harvey
 From: zfs-discuss-boun...@opensolaris.org [mailto:zfs-discuss-
 boun...@opensolaris.org] On Behalf Of Karl Rossing
 
 So i figured out after a couple of scrubs and fmadm faulty that drive
 c9t15d0 was bad.
 
 My pool now looks like this:
  NAME   STATE READ WRITE CKSUM
  vdipoolDEGRADED 0 0 2
raidz1   DEGRADED 0 0 4
  c9t14d0ONLINE   0 0 1  512 resilvered
  spare  DEGRADED 0 0 0
c9t15d0  OFFLINE  0 0 0
c9t19d0  ONLINE   0 0 0  16.1G resilvered
  c9t16d0ONLINE   0 0 1  512 resilvered
  c9t17d0ONLINE   0 0 5  2.50K resilvered
  c9t18d0ONLINE   0 0 1  512 resilvered
  spares
c9t19d0  INUSE currently in use

Um...  Call me crazy, but ...  If c9t15d0 was bad, then why do all those
other disks have checksum errors on them?

Although what you said is distinctly possible (faulty disk behaves so badly
that it causes all the components around it to also exhibit failures), it
seems unlikely.  It seems much more likely that a common component (hba,
ram, etc) is faulty, which could possibly be in addition to c9t15d0.
Another possibility is that the faulty hba (or whatever) caused a false
positive on c9t15d0.  Maybe c9t15d0 isn't any more unhealthy than all the
other drives on that bus, which may all be bad, or they may all be good
including c9t15d0.  (It wouldn't be the first time I've seen a whole batch
of disks be bad, from the same mfgr with closely related serial numbers and
mfgr dates.)

I think you have to explain the checksum errors on all the other disks
before drawing any conclusions.

And the fact that it resilvered immediately after it resilvered...  Only
lends more credence to my suspicion in your bad-disk-diagnosis.

BTW, what OS and what hardware are you running?  How long has it been
running, and how much attention do you give it?  That is - Can you
confidently say it was running without errors for 6 months and then suddenly
started exhibiting this behavior?  If this is in fact a new system, or if
you haven't been paying much attention, I would not be surprised to see this
type of behavior if you're running on unsupported or generic hardware.  And
when I say unsupported or generic I mean ... Intel, Asus, Dell, HP, etc,
big name brands count as unsupported and generic.  Basically anything
other than sun hardware and software fully updated and still in support
contract, if I'm exaggerating to the extreme.

___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss