Solaris 11 APM letiltása merevlemezekre

 ( wowbagger | 2012. augusztus 5., vasárnap - 23:49 )

Kedves Fórumozók!

Adott egy gépem, amiből házi "storage"-ot szeretnék építeni, iSCSI és FC target móddal, NFS-sel Solaris 11 (x86) alapokon.
A problémám az, hogy a magas diszk árak miatt Samsung HD204UI típusú diszkekből éptettem RAIDZ1-es poolt.
Ez a típus az energiatakarékos családba tartozik, ami amellett, hogy 5900 (?) RPM-mel forog, némi inaktivitás után leparkolja a fejet, és leállítja a tányérok forgását is. Ilyenkor a következő hozzáféréskor kb 3-5 másodperbe telik, mire ismét üzemkész állapotba kerül a diszk, addig pedig minden az IO-ra vár. Ez a viselkedés ezeknél a diszkeknél a firmware-be van építve, ezért az OS alól csak nehezen szabályozható. (A Samsung saját merevlemez util programjánál csak a hangerőszabályozást (AAM) lehet állítani, azt APM-et nem lehet letiltani.)
Solaris 11 alá tudtommal nem is nagyon van a hdparm-hoz hasonló segédprogram, amivel a diszkek beállításait lehetne módosítani.

Szerencsére találtam egy blogbejegyzést, aminek a szerzője írt két faék egyszerűségű segédprogramot, ami egy diszk APM és AAM (zajszint) beállításainak módosítását teszi lehetővé Solaris alatt. A forrás eredetileg Solaris 10 alá készült, de szerencsére Solaris 11 alatt is lefordult, így reménykedek benne, hogy ha ennek segítségével letiltom az APM-et a kötet diszkjein, akkor felhagynak a fentebb leírt viselkedéssel.
(Ehhez hozzájön még ez a bug ennél a diszktípusnál.)

A program egy diszk eszköz device fájlját és egy APM szintet vár paraméterként.
A problémám az, hogy alapból nincsen olyan eszközfájl a rendszeren, ami csak a diszket önmagát hivatkozná, hanem csak a partíciókra/sliceokra hivatkozó fájlok vannak ott a /dev alatt.
Mégis milyen fájlt kellene ennek a programnak megadni?

Az iostat kimenetében levő sdN fájlok nem léteznek, a format kimenetén levő cXtYdZ nevű fájlok szintén nem léteznek, és ha az ugyanott szereplő, pl. "/pci@0,0/pci103c,1609@11/disk@2,0" elérési utat adom meg, akkor is azt kapom, hogy "Failed to open device: No such file or directory".

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

/devices alatt van a '/pci@...'

igaz, de...

root@space:/home/janos# ./setapm
Usage: ./setapm  
 where APM-Level = [0..254] (0=Disable APM)
root@space:/home/janos# ./setapm '/devices/pci@0,0/pci103c,1609@11/disk@2,0' 0
Failed to open device: Is a directory
root@space:/home/janos# ls "/devices/pci@0,0/pci103c,1609@11/disk@2,0"
root@space:/home/janos# ls -ld "/devices/pci@0,0/pci103c,1609@11/disk@2,0"
drwxr-xr-x   2 root     sys            2 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0

-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.37 | 2.6.39.3-janos

ls -l /devices/pci@0,0/pci103c,1609@11/disk@2,0*

Csak a partíciókra mutató device blokkos és karakteres fájlokat listázza ki, illetve a diszk nevével fémjelzett könyvtárat, ami üres:

root@space:~# ls -l /devices/pci@0,0/pci103c,1609@11/disk@2,0*
brw-r-----   1 root     sys       28, 192 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:a
crw-r-----   1 root     sys       28, 192 Aug  5 20:30 /devices/pci@0,0/pci103c,1609@11/disk@2,0:a,raw
brw-r-----   1 root     sys       28, 193 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:b
crw-r-----   1 root     sys       28, 193 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:b,raw
brw-r-----   1 root     sys       28, 194 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:c
crw-r-----   1 root     sys       28, 194 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:c,raw
brw-r-----   1 root     sys       28, 195 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:d
crw-r-----   1 root     sys       28, 195 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:d,raw
brw-r-----   1 root     sys       28, 196 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:e
crw-r-----   1 root     sys       28, 196 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:e,raw
brw-r-----   1 root     sys       28, 197 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:f
crw-r-----   1 root     sys       28, 197 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:f,raw
brw-r-----   1 root     sys       28, 198 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:g
crw-r-----   1 root     sys       28, 198 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:g,raw
brw-r-----   1 root     sys       28, 199 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:h
crw-r-----   1 root     sys       28, 199 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:h,raw
brw-r-----   1 root     sys       28, 200 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:i
crw-r-----   1 root     sys       28, 200 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:i,raw
brw-r-----   1 root     sys       28, 201 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:j
crw-r-----   1 root     sys       28, 201 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:j,raw
brw-r-----   1 root     sys       28, 202 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:k
crw-r-----   1 root     sys       28, 202 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:k,raw
brw-r-----   1 root     sys       28, 203 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:l
crw-r-----   1 root     sys       28, 203 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:l,raw
brw-r-----   1 root     sys       28, 204 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:m
crw-r-----   1 root     sys       28, 204 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:m,raw
brw-r-----   1 root     sys       28, 205 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:n
crw-r-----   1 root     sys       28, 205 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:n,raw
brw-r-----   1 root     sys       28, 206 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:o
crw-r-----   1 root     sys       28, 206 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:o,raw
brw-r-----   1 root     sys       28, 207 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:p
crw-r-----   1 root     sys       28, 207 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:p,raw
brw-r-----   1 root     sys       28, 208 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:q
crw-r-----   1 root     sys       28, 208 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:q,raw
brw-r-----   1 root     sys       28, 209 Aug  5 20:28 /devices/pci@0,0/pci103c,1609@11/disk@2,0:r
crw-r-----   1 root     sys       28, 209 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:r,raw
brw-r-----   1 root     sys       28, 210 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:s
crw-r-----   1 root     sys       28, 210 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:s,raw
brw-r-----   1 root     sys       28, 211 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:t
crw-r-----   1 root     sys       28, 211 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:t,raw
brw-r-----   1 root     sys       28, 212 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:u
crw-r-----   1 root     sys       28, 212 Aug  5 21:51 /devices/pci@0,0/pci103c,1609@11/disk@2,0:u,raw

/devices/pci@0,0/pci103c,1609@11/disk@2,0:
total 0
root@space:~# 

-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.37 | 2.6.39.3-janos

A diszk maga, és a partíciók egyike egy és ugyanaz.
SPARC-on az s2 végű (ez lesz a :c), x86-on a p0 végű az egész diszket jelenti. Bizonyos programok megteszik azt a szívességet, hogy ha a cxtxdx-et beírod a végződés nélkül, akkor automatikusan hozzácsapják ezt.

Prtconf-al meg tudod nezni a teljes dev_path-ot minden diskhez.Az is ugyanezt az utat adja vissza?

$ /usr/sbin/prtconf -v | more
Memory size: 32640 Megabytes
System Peripherals (Software Nodes):

SUNW,SPARC-Enterprise-T5220
.
.
.
location: /dev/chassis/SUN-Storage-J4400.0918QAKA24/SCSI_Device__2/disk
Device Minor Nodes:
dev=(27,40)
dev_path=/pci@0/pci@0/pci@8/pci@0/pci@a/LSILogic,sas@0/sd@2,0:a
spectype=blk type=minor
dev_link=/dev/dsk/c4t2d0s0
dev_path=/pci@0/pci@0/pci@8/pci@0/pci@a/LSILogic,sas@0/sd@2,0:a,raw
spectype=chr type=minor
dev_link=/dev/rdsk/c4t2d0s0
Device Minor Layered Under:
mod=zfs accesstype=blk
dev_path=/pseudo/zfs@0
Minor properties:
name='Nblocks' type=int64 items=1 dev=(27,40)
value=0000000074702c8f
name='Size' type=int64 items=1 dev=(27,40)
value=000000e8e0591e00
.
.
.

:)
Köszönöm, hogy te is jöttél segíteni.
Itt most egy i86pc-s gépről van szó, itt kicsit máshogy néz ki a prtconf kimenete:

 disk, instance #2
                System software properties:
                    name='ddi-devid-registrant' type=int items=1
                        value=00000001
                Driver properties:
                    name='inquiry-serial-no' type=string items=1 dev=none
                        value='S2H7JD1B401777'
                    name='pm-components' type=string items=5 dev=none
                        value='NAME=spindle-motor' + '0=stopped' + '1=standby' + '2=idle' + '3=active'
                    name='pm-hardware-state' type=string items=1 dev=none
                        value='needs-suspend-resume'
                    name='ddi-failfast-supported' type=boolean dev=none
                    name='ddi-kernel-ioctl' type=boolean dev=none
                    name='fm-ereport-capable' type=boolean dev=none
                    name='pm-capable' type=int items=1 dev=none
                        value=00030006
                    name='device-nblocks' type=int64 items=1 dev=none
                        value=00000000e8e088b0
                    name='device-blksize' type=int items=1 dev=none
                        value=00000200
                Hardware properties:
                    name='devid' type=string items=1
                        value='id1,sd@SATA_____SAMSUNG_HD204UI_______S2H7JD1B401777'
                    name='inquiry-device-type' type=int items=1
                        value=00000000
                    name='inquiry-revision-id' type=string items=1
                        value='1AQ10001'
                    name='inquiry-product-id' type=string items=1
                        value='HD204UI'
                    name='inquiry-vendor-id' type=string items=1
                        value='SAMSUNG'
                    name='class' type=string items=1
                        value='scsi'
                    name='sata-phy' type=int items=1
                        value=00000001
                    name='compatible' type=string items=4
                        value='scsiclass,00.vATA.pSAMSUNG_HD204UI.r0001' + 'scsiclass,00.vATA.pSAMSUNG_HD204UI' + 'scsiclass,00' + 'scsiclass'
                    name='lun' type=int items=1
                        value=00000000
                    name='target' type=int items=1
                        value=00000001
                    name='device-type' type=string items=1
                        value='scsi'
               Device Minor Nodes:
                    dev=(28,128)
                        dev_path=/pci@0,0/pci103c,1609@11/disk@1,0:a
                            spectype=blk type=minor
                            dev_link=/dev/dsk/c3t1d0s0
                        dev_path=/pci@0,0/pci103c,1609@11/disk@1,0:a,raw
                            spectype=chr type=minor
                            dev_link=/dev/rdsk/c3t1d0s0
                        Minor properties:
                            name='lba-access-ok' type=boolean dev=(28,128)
                            name='Nblocks' type=int64 items=1 dev=(28,128)
                                value=0000000000000000
                            name='Size' type=int64 items=1 dev=(28,128)
                                value=0000000000000000
                    dev=(28,129)
                        dev_path=/pci@0,0/pci103c,1609@11/disk@1,0:b
                            spectype=blk type=minor
                            dev_link=/dev/dsk/c3t1d0s1
                        dev_path=/pci@0,0/pci103c,1609@11/disk@1,0:b,raw
                            spectype=chr type=minor
                            dev_link=/dev/rdsk/c3t1d0s1
                        Minor properties:
                            name='Nblocks' type=int64 items=1 dev=(28,129)
                                value=0000000000000000
                            name='Size' type=int64 items=1 dev=(28,129)
                                value=0000000000000000
...
...
...

Itt aztán szépen felsorolja az összes partícióra mutató blokkos és karakteres eszközöket, de magára a diszkre nézve nem tartalmaz path-ot.
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.37 | 2.6.39.3-janos

Solarisba ugye a slice 2 mutat az egesz diskre. Ha annak az utvonalat adod meg neki?
szerk.: Mar semmi, latom megoldodott.

PC-s partíciós tábla esetén a p0 partíció mutat az egész diszkre.
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.37 | 2.6.39.3-janos

Jogos, en is sparchoz vagyok szokva.

Jaj, a régi szép emlékek. :)
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.37 | 2.6.39.3-janos

Nade Urak! Nemám visszavágyódunk.

Nem, max csak a társaság hiányzik. :)
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.37 | 2.6.39.3-janos

A társaság tényleg jó volt ott. Egy hétre visszamennék bármikor.GDF nélkül nem élet az élet :D

Nemtom elírás-e, de itt érdekes lehet:
cXtYdZ-hez még egy (illetve két, 1-1) fontos paraméter kapcsolódhat:
- vagy cX(tY)dZpW, ebben az esetben az fdisk oartíciókra hivatkozunk, a p0 a teljes lemez, 1-től a partíciók (tehát az első 1-es, NEM 0!!!)
- vagy slice-okra hivatkounk, ebben az esetben cX(tY)dZsW a jelőlés, és az s2 a "backup", azaz a teljes "lemez" (azaz x86-on az összes slice-ot tartalmazó patíció maga; sparc-on kicsit másképp van, de (sajnos) azzal nem sokat foglalkozhattam)

A /dev/dsk-ban meg meg tudod nézni, hogy a cX(tY)dZp0, vagy a cX(tY)dZs2 hova mutat a /devices-ben.

HTH
<-------
You can't grep on dead trees.

sajna még megy az erőlködés az msdos meg gpt "fő" partíciós tábla mellett is, hogy megmaradjon a solaris2 partíciós tábla. Nekem szimpatikusabb a sparcon használt megoldás, most meg megy a taknyolás a "wrapper" partíciós táblákkal.
Mindesetre nekem a prtvtoc ugyanazt adja eredményül, akár a 0. partíciót (.../diskX,0:q,raw) , akár a sokkal kisebb solaris2 partíción belüli 0. sclice-t (.../diskX,0:a,raw) hivatkozom meg.

mondjuk igen, ez jogos...

root@space:/home/janos# ./setapm /dev/rdsk/c3t2d0p0
Usage: ./setapm  
 where APM-Level = [0..254] (0=Disable APM)
root@space:/home/janos# ./setapm /dev/rdsk/c3t2d0p0 0
root@space:/home/janos#

-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.37 | 2.6.39.3-janos

A dolog működik, igaz nem a fentebb előforduló nullás értékkel.
Ez alapján a 254-es értéket megadva kikapcsolható a spindown, és valóban!
Hurrá!
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.37 | 2.6.39.3-janos

Solaris 11 alá tudtommal nem is nagyon van a hdparm-hoz hasonló segédprogram, amivel a diszkek beállításait lehetne módosítani.

A format parancsnak van expert menüje, abban vannak érdekes dolgok, pl. SCSI paraméter táblákat tuti lehetett vele tekergetni.
Talán -e opcióval lehet engedélyezni, de a man format majd megmondja.

Megpróbáltam, de a témhoz egyedül talán csak a "Control Mode Page"-nek lehet köze, azt viszont kiolvasni sem sikerült.

scsi> help


SCSI MENU:
        p                   - display a mode sense page
        p b  [~]  - change a byte and issue mode select
        b  [~]       - add an operation to the mode select list
                                     for the current page

                where:  p specifies the page with page code 
                        b specifies byte  of the page
                         can be one of the following operators:
                             =    (set specified value)
                             |=   (bitwise OR with current value)
                             &=   (bitwise AND with current value)
                         can be a decimal value in the range 0-255,
                        or two hexadecimal digits, in the form 0x.
                        [~] complements the specified value

        apply                  - apply mode select list
        cancel                 - cancel mode select list
        display                - display mode select list
        all                    - display all supported mode sense pages
        default p           - mode select page  to default values
        default all            - mode select all pages to default values
        format                 - format without standard mode selects
        inquiry                - display device's inquiry response
        list                   - list common SCSI-2 mode pages
        !                 - execute  , then return
        quit
scsi> list

Common SCSI-2 pages applicable to direct-access devices:

Page 0x1   - Read-Write Error Recovery Page
Page 0x2   - Disconnect-Reconnect Page
Page 0x3   - Format Device Page
Page 0x4   - Rigid Disk Geometry Page
Page 0x7   - Verify Error Recovery Page
Page 0x8   - Caching Page
Page 0xA   - Control Mode Page

scsi> p0xA

Page 0xa:
default:     failed
current:     failed
saved:       failed
changeable:  failed

scsi>

-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.37 | 2.6.39.3-janos