Ok, so let me explain this situation a bit. The overall setup is pretty complicated but most of it you can ignore, just remember this is a problem with iscsi enterprise target. Please read all of this before commenting, thanks!
The setup is as follows:
Ubuntu Server 13.10 running on bare metal, X58 system, i7 980, 24GB of RAM
I am running iet version 1.4.20.3 and ZoL version 0.6.2, both the latest stable.
Linux Kernel version 3.11.0-12
Problem started after 'do-system-upgrade' from Ubuntu Server 13.04 to 13.10.
I am using ZFSonLinux on this machine. I am using the PPA method of installing, so typically updates are pretty much automatic, ie whenever I get a new kernel version or ZoL version, all the kernel modules are automatically rebuilt and everything is happy schlappy. Note: I have upgraded this machine from 12.04 -> 12.10 -> 13.04 -> 13.10. Every upgrade in the past has been fine.
So I have ZFS setup with a single 6 disk raidz2 vdev, and on top of that I have a single large ZVOL which takes up basically all the space. ZVOL essentially spits out a block device that is sitting on top of the ZFS storage that you can do whatever with. It is much like mdadm spits out /dev/md0, etc. If you aren't familiar with ZFS then don't worry about it, just remember I am using a block device.
So now my ietd.conf has a single target with a single LUN which is the ZVOL block device from above.
I have a windows 2008R2 box that has the MS iSCSI initiator on it, and this box mounts up the drive. The volume is rather large (~7TB) and thus has a GPT partition table on it, and then a large NTFS partition with all my data on it.
Ok, if you have gotten this far, thank you.
My problem is that on the windows box, when I mount up the iSCSI drive, it shows up as un-initialized, as if the partition table is corrupt. Now, The thing is I KNOW the partition table is fine, and the data is also fine because I can mount the same volume locally on the linux box using ntfs-3g and see all the data just fine. I can load up the partition table with parted and see everything just fine. I see the proper additional block devices in linux for the whole drive, and each partition. (There are 2 total partitions because there is a hidden windows partition before the NTFS data partition.)
As part of my testing this I have uninstalled and reinstalled the iscsitarget kernel module, (which includes rebuilding the module from source). I also happen to have a 30GB SSD in the linux box that isn't currently being used for anything, so I changed my ietd.conf to have this 'spare' ssd be my target, and initially I was having problems with making that work, but after I rebuilt the iscsitarget kernel modules I was able to get that ssd to work just fine as an iscsi target. I was able to mount it up on the windows box, create a partition, format it, and copy and read data back off the drive. But when I switch the ietd.conf back to my ZFS ZVOL, window still says that the disk is un-initialized. But as I said before I know that the volume is indeed intact, as I have mounted it and read data just fine locally on the linux machine.
As a note I do run monthly scrubs on the ZFS pool as well. It has always shown zero errors, and never had any data integrity problems,
What the heck can I do? The data on here IS backed up, but I would much rather not having to pull it all down from crashplan unless I have to. Plus, all of my TV Shows (~3TB worth) are not backed up so I would have to download them again as well. It wouldn't be the end of the world but I definitely want to avoid it.
Should I attempt to delete the partition table and re-create it in-place?
Is this maybe a bug with the version of iscsitarget I am using? Or maybe a bug with ZoL?
I am kind of running out of ideas at this point. I mean I could just mount the drive locally using ntfs-3g and then share it over NFS/samba but I really would rather not do that...
The setup is as follows:
Ubuntu Server 13.10 running on bare metal, X58 system, i7 980, 24GB of RAM
I am running iet version 1.4.20.3 and ZoL version 0.6.2, both the latest stable.
Linux Kernel version 3.11.0-12
Problem started after 'do-system-upgrade' from Ubuntu Server 13.04 to 13.10.
I am using ZFSonLinux on this machine. I am using the PPA method of installing, so typically updates are pretty much automatic, ie whenever I get a new kernel version or ZoL version, all the kernel modules are automatically rebuilt and everything is happy schlappy. Note: I have upgraded this machine from 12.04 -> 12.10 -> 13.04 -> 13.10. Every upgrade in the past has been fine.
So I have ZFS setup with a single 6 disk raidz2 vdev, and on top of that I have a single large ZVOL which takes up basically all the space. ZVOL essentially spits out a block device that is sitting on top of the ZFS storage that you can do whatever with. It is much like mdadm spits out /dev/md0, etc. If you aren't familiar with ZFS then don't worry about it, just remember I am using a block device.
So now my ietd.conf has a single target with a single LUN which is the ZVOL block device from above.
I have a windows 2008R2 box that has the MS iSCSI initiator on it, and this box mounts up the drive. The volume is rather large (~7TB) and thus has a GPT partition table on it, and then a large NTFS partition with all my data on it.
Ok, if you have gotten this far, thank you.
My problem is that on the windows box, when I mount up the iSCSI drive, it shows up as un-initialized, as if the partition table is corrupt. Now, The thing is I KNOW the partition table is fine, and the data is also fine because I can mount the same volume locally on the linux box using ntfs-3g and see all the data just fine. I can load up the partition table with parted and see everything just fine. I see the proper additional block devices in linux for the whole drive, and each partition. (There are 2 total partitions because there is a hidden windows partition before the NTFS data partition.)
As part of my testing this I have uninstalled and reinstalled the iscsitarget kernel module, (which includes rebuilding the module from source). I also happen to have a 30GB SSD in the linux box that isn't currently being used for anything, so I changed my ietd.conf to have this 'spare' ssd be my target, and initially I was having problems with making that work, but after I rebuilt the iscsitarget kernel modules I was able to get that ssd to work just fine as an iscsi target. I was able to mount it up on the windows box, create a partition, format it, and copy and read data back off the drive. But when I switch the ietd.conf back to my ZFS ZVOL, window still says that the disk is un-initialized. But as I said before I know that the volume is indeed intact, as I have mounted it and read data just fine locally on the linux machine.
As a note I do run monthly scrubs on the ZFS pool as well. It has always shown zero errors, and never had any data integrity problems,
What the heck can I do? The data on here IS backed up, but I would much rather not having to pull it all down from crashplan unless I have to. Plus, all of my TV Shows (~3TB worth) are not backed up so I would have to download them again as well. It wouldn't be the end of the world but I definitely want to avoid it.
Should I attempt to delete the partition table and re-create it in-place?
Is this maybe a bug with the version of iscsitarget I am using? Or maybe a bug with ZoL?
I am kind of running out of ideas at this point. I mean I could just mount the drive locally using ntfs-3g and then share it over NFS/samba but I really would rather not do that...
Last edited: