Feature #2665
closedsd.conf should be able to override physical-block-size
100%
Description
PSARC 2008/769 advertised the ability to override the physical-block-size by using the sd-config-list. Unfortunately this portion of the project was not implemented. This feature proposes to implement this missing functionality. This would allow administrators to update sd.conf by adding a simple VID/PID tuple in the sd-config-list. An example would look like this:
sd.conf:
sd-config-list = "DGC RAID", "physical-block-size:4096"; The format of the VID/PID tuple uses the following format: "012345670123456789012345" "|-VID--||-----PID------|"
This example overrides the physical-block-size for all DGC RAID devices to use 4K. ZFS would be able to consume this value to determine the proper ashift value for its vdevs.
Related issues
Updated by Eric Schrock almost 11 years ago
- Status changed from New to Resolved
changeset: 13680:2bd022a765e2
tag: tip
user: George Wilson <gwilson@delphix.com>
date: Thu May 03 05:49:19 2012 -0700
description:
2665 sd.conf should be able to override physical-block-size
2671 zpool import should not fail if vdev ashift has increased
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Eric Schrock <eric.schrock@delphix.com>
Reviewed by: Richard Elling <richard.elling@richardelling.com>
Reviewed by: Gordon Ross <gwr@nexenta.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Approved by: Richard Lowe <richlowe@richlowe.net>
modified:
usr/src/cmd/zpool/zpool_main.c
usr/src/uts/common/fs/zfs/vdev.c
usr/src/uts/common/io/scsi/targets/sd.c
Updated by Albert Lee about 10 years ago
For future reference, this command can be used to retrieve the vendor and product ID strings for all sd devices:
echo "::walk sd_state | ::grep '.!=0' | ::print struct sd_lun un_sd | ::print struct \\ scsi_device sd_inq | ::print struct scsi_inquiry inq_vid inq_pid" | mdb -k
Updated by Albert Lee almost 10 years ago
Remember, you need to pad the vendor, product string to the length shown with spaces.
Padding is actually not necessary. Extra spaces (not tabs!) are ignored.
Asterisks have special meaning if they appear at the beginning and end of the ID string only. sd searches the product ID (not the vendor ID) for the substring enclosed by asterisks.Examples:
- "*ST9320*" will match any vendor ID and product ID "ST9320423AS".
- "**" will match any vendor ID and product ID.
Updated by Jens Elkner almost 10 years ago
Albert Lee wrote:
... command can be used to retrieve the vendor and product ID strings for all sd devices ...
http://iws.cs.uni-magdeburg.de/~elkner/s11/etc/sdprops.sh may also help to check/lookup current settings.
NOTE: As usual the script requires {man,log}.kshlib from http://iws.cs.uni-magdeburg.de/~elkner/s11/etc/ to be in the same dir or anywhere else in the $PATH
Updated by Jose Mestre almost 9 years ago
- Status changed from Resolved to Feedback
Hi,
I'm currently using a Gigabyte motherboard with 2 LSI HBA SAS/SATA cards (LSI SAS 3041E-R).
I'm using 2TB hard drives WD20EARX and WD20EFRX
I tweaked sd.conf, and when I create a pool, ashift is set to 12 when the drives are connected to the Z68 SATA connectors, but not when connected to the HBA.
The first entry is an SDD with the OS, the next 4 are connected to the Z68 chipset, and all the others connected to 2 LSI HBA.
2 disks are currently not used on my ZFS pool, they are spares
# echo ::sd_state |mdb -k | grep phy_blocksize un_phy_blocksize = 0x200 un_phy_blocksize = 0x1000 un_phy_blocksize = 0x1000 un_phy_blocksize = 0x1000 un_phy_blocksize = 0x1000 un_phy_blocksize = 0x200 un_phy_blocksize = 0x200 un_phy_blocksize = 0x200 un_phy_blocksize = 0x200 un_phy_blocksize = 0x200 un_phy_blocksize = 0x200 un_phy_blocksize = 0x200 # echo "::walk sd_state | ::grep '.!=0' | ::print struct sd_lun un_sd | ::print struct scsi_device sd_inq | ::print struct scsi_inquiry inq_vid inq_pid" | mdb -k inq_vid = [ "ATA " ] inq_pid = [ "Corsair Force 3 " ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EARX-00P" ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EARX-00P" ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EARX-00P" ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EARX-00P" ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EARX-00P" ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EARX-00P" ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EARX-00P" ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EZRX-00D" ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EZRX-00D" ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EZRX-00D" ] inq_vid = [ "ATA " ] inq_pid = [ "WDC WD20EZRX-00D" ] # echo '::spa -c' | mdb -k | grep 'devid' devid='id1,sd@SATA_____WDC_WD20EARX-00P_____WD-WMAZA7992741/a' devid='id1,sd@SATA_____WDC_WD20EARX-00P_____WD-WCAZAD087469/a' devid='id1,sd@SATA_____WDC_WD20EARX-00P_____WD-WMAZA7958395/a' devid='id1,sd@SATA_____WDC_WD20EARX-00P_____WD-WMAZA7958380/a' devid='id1,sd@n50014ee206d094a5/a' devid='id1,sd@n50014ee25c259da5/a' devid='id1,sd@n50014ee25ed12ec7/a' devid='id1,sd@n50014ee25ed1774e/a' devid='id1,sd@n50014ee2097c05d8/a' devid='id1,sd@SATA_____Corsair_Force_3_122779100000148602E1/a' # cfgadm -al Ap_Id Type Receptacle Occupant Condition c6 scsi-sas connected configured unknown c6::dsk/c6t0d0 disk connected configured unknown c6::dsk/c6t1d0 disk connected configured unknown c6::dsk/c6t2d0 disk connected configured unknown c8 scsi-sas connected configured unknown c8::dsk/c8t0d0 disk connected configured unknown c8::dsk/c8t1d0 disk connected configured unknown c8::dsk/c8t2d0 disk connected configured unknown c8::dsk/c8t3d0 disk connected configured unknown sata2/0::dsk/c1t0d0 disk connected configured ok sata2/1 sata-port empty unconfigured ok sata2/2::dsk/c1t2d0 disk connected configured ok sata2/3::dsk/c1t3d0 disk connected configured ok sata2/4::dsk/c1t4d0 disk connected configured ok sata2/5::dsk/c1t5d0 disk connected configured ok # grep -v '#' /kernel/drv/sd.conf name="sd" class="scsi" target=0 lun=0; name="sd" class="scsi" target=1 lun=0; name="sd" class="scsi" target=2 lun=0; name="sd" class="scsi" target=3 lun=0; name="sd" class="scsi" target=4 lun=0; name="sd" class="scsi" target=5 lun=0; name="sd" class="scsi" target=6 lun=0; name="sd" class="scsi" target=7 lun=0; name="sd" class="scsi" target=8 lun=0; name="sd" class="scsi" target=9 lun=0; name="sd" class="scsi" target=10 lun=0; name="sd" class="scsi" target=11 lun=0; name="sd" class="scsi" target=12 lun=0; name="sd" class="scsi" target=13 lun=0; name="sd" class="scsi" target=14 lun=0; name="sd" class="scsi" target=15 lun=0; name="sd" class="scsi-self-identifying"; ddi-devid-registrant=1; sd-config-list = "ATA WDC WD20EARX-00P", "physical-block-size:4096", "ATA WDC*", "physical-block-size:4096", "ATA WDC WD20EZRX-00D", "physical-block-size:4096";
I tried with and without this line: "ATA WDC*", "physical-block-size:4096"
I'm currently using a modified zpool binary to forece ashift as mentioned here : https://www.illumos.org/issues/453#note-3
Updated by Yuri Pankov over 8 years ago
- Status changed from Feedback to Resolved
- % Done changed from 0 to 100
- Tags deleted (
needs-triage)
Updated by serum korea grosir kosmetik over 7 years ago
Karena banyaknya serum korea kw murah dan berdampak buruk pada wajah maka kami membuat perbedaan serum korea ori dan kw. Ciri-ciri Serum Korea ASLI dibawah ini mohon selalu dijadikan acuan dalam membeli Serum Korea karena ada banyak orang yang memalsukan atau membuat Serum Korea oplosan karena serum ini sangat berkhasiat dan laku dipasaran.
semoga dengan adanya artikel perbedaan antara serum korea asli dan palsu ini tidak ada lagi custumer yang tertipu oleh serum korea kw/tiruan. serum korea [[http://www.flickr.com/people/133449474@N04/]]