Ogólne

    Kwantowa obudowa w stanie spl?tanym

    Zamówi?em sobie obudow? do starego dysku 2,5 cala z interfacem ATA. W?a?nie le?y przede mn? niepozorne pude?ko i boj? si? otworzy?, bo niczym kot Schroedingera który jest zarówno martwy i ?ywy i dopiero otwarcie pude?ka definiuje w jakim jest stanie, moje pude?ko w zale?no?ci w jakim j?zyku mówimy (lub my?limy) definiuje jak? dostan? obudow?.

    Kwantowa obudowa

    No i co? Otworzyliby?cie? Jak otworz? kiwaj?c g?owa na boki (czyli bu?garskie TAK) i my?l?c „To je p?ípad ATA!” (google translate ;) i krzycz?c „To je pouzdro ATA! (napis na pude?ku) i b?dzie ATA to OK, ale je?li obudowa nie da si? oszuka? i wyjdzie jednak SATA to otwartego pude?ka ju? nie oddam…

    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Job / Praca

    NetBSD + CCD = du?o miejsca z ma?ych dysków

    Dzisiaj zajmiemy si? fajn? funkcj? kernela NetBSD jak? jest CCD czyli Concatenated Disk Device (Powi?zane Urz?dzenie Dyskowe). S?u?y ona do ??czenia kilku fizycznych dysków (wd,sd) w jeden logiczny wolumen (ccd). Ca?o?? opisz? na przyk?adzie w?asnym wykonanym na serwerze IBM x346 z kontrolerem SCSI AIC-7902. Serwer ten jest do?? mocno wykorzystywany poniewa? dzia?a na nim IDS SNORT i niestety bardzo szybko ko?czy mu si? miejsce na /var gdzie przechowywane s? alerty. Co nam b?dzie potrzebne. Oprócz serwera i dysków, CCD w kernelu. Je?li u?ywasz GENERIC to CCD jest ju? tam domy?lnie. Przed modyfikacj? posiada? on dwa dyski SCSI po 70 GB:

    sd0 at scsibus1 target 0 lun 0: disk fixed
    sd0: 70006 MB, 65494 cyl, 3 head, 729 sec, 512 bytes/sect x 143374000 sectors
    sd0: sync (6.25ns offset 80), 16-bit (320.000MB/s) transfers, tagged queueing
    sd1 at scsibus1 target 1 lun 0:
    disk fixed
    sd1: 70006 MB, 65494 cyl, 3 head, 729 sec, 512 bytes/sect x 143374000 sectors
    sd1: sync (6.25ns offset 80), 16-bit (320.000MB/s) transfers, tagged queueing

    i wygl?da? tak:

    Serwer z dwoma dyskami 70 GB
    Serwer z dwoma dyskami 70 GB

    Do?o?y?em 4 dyski (po uprzednim dokupieniu ramek co nie jest takie proste w przypadku dwuletniego serwera) 17 GB, które od jakiego? czasu le?akowa?y po wyj?ciu z AS400 (lub eserver iseries, a nawet ostatnio i5, IBM i te jego zmiany nazw…). Tutaj drobny offtopic. Akurat to, ?e dyski uprzednio by?y w ASie jest do?? istotne poniewa? przysparza to troch? k?opotów. Po przygotowaniu i w?o?eniu dysków:

    Nowe dyski, tylko jeszcze \"klik\" i ju? dzia?aj?

    kernel zaraportowa? tylko:

    Komunikaty po w?o?eniu dysków
    Komunikaty po w?o?eniu dysków

    Po restarcie dyski niby zosta?y wykryte, ale przy normalnych komunikatach kernela pojawi?o si? co? jeszcze:

    sd2 at scsibus1 target 2 lun 0: disk fixed
    sd2(ahd1:0:2:0): preposterous sector size: 0x20a. Defaulting to 512 bytes.
    sd2: 16742 MB, 29550 cyl, 2 head, 580 sec, 512 bytes/sect x 34287616 sectors
    sd2: sync (12.50ns offset 63), 16-bit (160.000MB/s) transfers, tagged queueing
    ses0 at scsibus1 target 8 lun 0: processor fixed
    ses0: SAF-TE Compliant Device
    ses0: async, 8-bit transfers
    sd2(ahd1:0:2:0): preposterous sector size: 0x20a. Defaulting to 512 bytes.
    sd2(ahd1:0:2:0): generic HBA error
    sd2: dos partition I/O error
    sd2(ahd1:0:2:0): generic HBA error
    findroot: unable to read block 64
    sd2(ahd1:0:2:0): generic HBA error

    I tak x4 dyski. Oczywi?cie o disklabelowaniu i stworzeniu dzia?aj?cego CCD nie by?o mowy. Kilka osób sugerowa?o:

    20:10 lama_: mhm, albo jakos specjalnei je trzeba przygotowac, albo netbsd ich nie lubi/tego kontroloera/ cos jeszcze trzeba tam ustawic itp.
    15:08 lama_: kontrolera moze? ale watpie, to raczej kwestia firmware lub pogrzebania z nimi w AS ?
    13:20 lama_: to jest cos na lini sprzet/kernel z urzadzeniami wedlug mnie, a nie z disklabel
    13:17 lama_: to popatrz jeszcze po tasmach itp
    13:12 lama_: jest to zdecydowanie problem na innym poziomie niz disklabel

    20:08 < @emet> po wnikliwej analizie stwierdzam ?e co? jest spierdolone.

    20:13 < @gavroche> cancer^, MAsz napisane.
    20:13 < @gavroche> sd2(ahd1:0:2:0): generic HBA error
    20:13 < @gavroche> :)
    20:13 < @gavroche> Pewnie kontroler masz spierdolony.
    20:14 < @lama_> to by dyski 1-2 nie dzialaly ok
    20:14 < @gavroche> Mo?e by? jeden kana? spierdolony.
    20:14 < @gavroche> Na przyk?ad.
    20:15 < @gavroche> Wtedy by dzia?a?y.

    20:18 < @lama_> host bus adapter
    20:19 < @lama_> poszukaj jeszcze jakis firmware/bios updatow
    20:20 < @lama_> i kable badaj/polaczenia/zworki/ustawienia itp. pierwsze co musisz wlasnie wyeliminowac to na 100% ze to nie jest jakis sprzetowy problem

    20:28 < @gavroche> No, chyba, ?e masz za nowy sprz?t ?eby na nim NetBSD uruchomi?.
    20:28 < @gavroche> To wtedy gorzej. :< 20:33 <@majkel> re
    20:44 < @cancer^> gavroche: x346 ibm
    20:44 < @cancer^> 2 latek
    20:47 < @gavroche> No niestety. Przyjdzie Ci zaczeka? na NetBSD 7.0. ;/
    20:47 < @gavroche> Nie rozumiem Was, ?e u?ywacie NetBSD do celów innych ni? edukacyjne.

    Na szcz??cie mimo czarnowidztwa kolegów, nic nie okaza?o si? spierdolone, nie musia?em szuka? biosów ani firmware do dysków i kontrolera, oszcz?dzone zosta?o mi tak?e oczekiwanie na NetBSD 7.0 zw?aszcza, ?e mój zak?ad o NetBSD 5.0 vs Windows 7 nadal trwa :) NetBSD oprócz swoich walorów edukacyjnych b?dzie pe?ni? tak?e dotychczasow? rol? jako IDS oraz kilka innych zada? :)

    A wszystko dlatego, ?e po wywiadzie na grupach dotycz?cych AS’a400 okaza?o si?, ze IFS (system plików ASowy) modyfikuje dysk na tyle, ?e NetBSD nie umie sobie z nim poradzi? – z t?d te? komunikat: sd2(ahd1:0:2:0): preposterous sector size: 0x20a. preposterous = absurdalny :)

    Lekarstwem na t? „absurdaln?” wielko?? sektora by? lowlevel format wykonany z poziomu BIOS’a kontrolera. Po kilkunastu minutach i milionie potwierdze?, dyski odzyska?y nie tak absurdaln? wielko?? sektora jak? jest 512 bajtów zamiast 522 :)

    Czy na pewno, na 100% jeste? pewny ?e chcesz lowlevel format zrobi?? Tak! A czy aby na pewno?...
    Czy na pewno, na 100% jeste? pewny ?e chcesz lowlevel format zrobi?? Tak! A czy aby na pewno?...
    Czy na pewno, na 100% jeste? pewny ?e chcesz lowlevel format zrobi?? Tak! A czy aby na pewno?...
    Czy na pewno, na 100% jeste? pewny ?e chcesz lowlevel format zrobi?? Tak! A czy aby na pewno?...

    Wracaj?c do sedna postu. Mamy dzia?aj?ce dyski i kernel ju? sobie z nimi radzi. Wszystko pozapinane (literalnie ;) na ostatni zatrzask wi?c do dzie?a :)

    Ca?o?? pozapinana
    Ca?o?? pozapinana

    Szybka kontrola, wszystko tym razem wed?ug oczekiwa?, ?adnych HBA error, ?adnych absurdalnych sektorów (to naprawd? mi si? podoba :), oraz ?adnych I/O errorów w dosowych partycjach (a to ju? by?o wogóle od czapy :).

    sd0 at scsibus1 target 0 lun 0: disk fixed
    sd0: 70006 MB, 65494 cyl, 3 head, 729 sec, 512 bytes/sect x 143374000 sectors
    sd0: sync (6.25ns offset 80), 16-bit (320.000MB/s) transfers, tagged queueing
    sd1 at scsibus1 target 1 lun 0:
    disk fixed
    sd1: 70006 MB, 65494 cyl, 3 head, 729 sec, 512 bytes/sect x 143374000 sectors
    sd1: sync (6.25ns offset 80), 16-bit (320.000MB/s) transfers, tagged queueing
    sd2 at scsibus1 target 2 lun 0: disk fixed
    sd2: 17501 MB, 29550 cyl, 2 head, 606 sec, 512 bytes/sect x 35843670 sectors
    sd2: sync (12.50ns offset 63), 16-bit (160.000MB/s) transfers, tagged queueing
    sd3 at scsibus1 target 3 lun 0:
    disk fixed
    sd3: 17501 MB, 29550 cyl, 2 head, 606 sec, 512 bytes/sect x 35843670 sectors
    sd3: sync (12.50ns offset 63), 16-bit (160.000MB/s) transfers, tagged queueing
    sd4 at scsibus1 target 4 lun 0:
    disk fixed
    sd4: 17501 MB, 29550 cyl, 2 head, 606 sec, 512 bytes/sect x 35843670 sectors
    sd4: sync (12.50ns offset 63), 16-bit (160.000MB/s) transfers, tagged queueing
    sd5 at scsibus1 target 5 lun 0:
    disk fixed
    sd5: 17501 MB, 29550 cyl, 2 head, 606 sec, 512 bytes/sect x 35843670 sectors
    sd5: sync (12.50ns offset 63), 16-bit (160.000MB/s) transfers, tagged queueing

    Po pierwsze patrzymy na disklabel:

    disklabel sd2
    # /dev/rsd2d:
    type: SCSI
    disk: DRVS18D
    label: fictitious
    flags:
    bytes/sector: 512
    sectors/track: 606
    tracks/cylinder: 2
    sectors/cylinder: 1212
    cylinders: 29550
    total sectors: 35843670
    rpm: 10040
    interleave: 1
    trackskew: 0
    cylinderskew: 0
    headswitch: 0 # microseconds
    track-to-track seek: 0 # microseconds
    drivedata: 0

    4 partitions:
    # size offset fstype [fsize bsize cpg/sgs]
    a: 35843670 0 4.2BSD 0 0 0 # (Cyl. 0 - 29573*)
    d: 35843670 0 unused 0 0 # (Cyl. 0 - 29573*)
    disklabel: boot block size 0
    disklabel: super block size 0

    Tak wygl?da standardowy disklabel czystego dysku, modyfikujemy go do u?ycia przez CCD. Potrzebujemy jeden ca?y slice c (d w nomenklautrze NetBSD to ca?y dysk, a c to wszystkie slice NetBSD) minus 1x sectors/cylinder oraz typ systemu ccd. Czyli po szybkim przeliczeniu

    bc
    35843670-1212
    35842458

    disklabel dla pierwszego dysku u?ytego w ccd b?dzie wygl?da? tak:

    disklabel sd2
    # /dev/rsd2d:
    type: SCSI
    disk: DRVS18D
    label: fictitious
    flags:
    bytes/sector: 512
    sectors/track: 606
    tracks/cylinder: 2
    sectors/cylinder: 1212
    cylinders: 29550
    total sectors: 35843670
    rpm: 10040
    interleave: 1
    trackskew: 0
    cylinderskew: 0
    headswitch: 0 # microseconds
    track-to-track seek: 0 # microseconds
    drivedata: 0

    4 partitions:
    # size offset fstype [fsize bsize cpg/sgs]
    c: 35842458 1212 ccd # (Cyl. 1 - 29573*)

    Do edycji disklabela u?ywamy komendy disklabel z opcj? -e. Ca?? operacj? powtarzamy tyle razy ile mamy dysków odpowiednio przeliczaj?c offset (no chyba, ?e macie wszystkie dyski takie same).

    Dopisujemy nasze slice do konfiga ccd:

    cat /etc/ccd.conf
    #ccd ileave flags component devices
    ccd0 0 none /dev/sd2c /dev/sd3c /dev/sd4c /dev/sd5c

    oraz inicjujemy ccd:

    ccdconfig -C -f /etc/ccd.conf
    ccdconfig: /dev/sd5c: No such file or directory

    Tutaj jeszcze drobna poprawka, trzeba stworzy? urz?dzenia w /dev bo jako? same si? nie zrobi?y:

    Tworzymy i sprawdzamy czy jest ok:

    ./MAKEDEV sd5

    ll /dev/sd5*
    brw-r----- 1 root operator 4, 40 Jan 9 10:43 /dev/sd5a
    brw-r----- 1 root operator 4, 41 Jan 9 10:43 /dev/sd5b
    brw-r----- 1 root operator 4, 42 Jan 9 10:43 /dev/sd5c
    brw-r----- 1 root operator 4, 43 Jan 9 10:43 /dev/sd5d
    brw-r----- 1 root operator 4, 44 Jan 9 10:43 /dev/sd5e
    brw-r----- 1 root operator 4, 45 Jan 9 10:43 /dev/sd5f
    brw-r----- 1 root operator 4, 46 Jan 9 10:43 /dev/sd5g
    brw-r----- 1 root operator 4, 47 Jan 9 10:43 /dev/sd5h
    brw-r----- 1 root operator 4, 524328 Jan 9 10:43 /dev/sd5i
    brw-r----- 1 root operator 4, 524329 Jan 9 10:43 /dev/sd5j
    brw-r----- 1 root operator 4, 524330 Jan 9 10:43 /dev/sd5k
    brw-r----- 1 root operator 4, 524331 Jan 9 10:43 /dev/sd5l
    brw-r----- 1 root operator 4, 524332 Jan 9 10:43 /dev/sd5m
    brw-r----- 1 root operator 4, 524333 Jan 9 10:43 /dev/sd5n
    brw-r----- 1 root operator 4, 524334 Jan 9 10:43 /dev/sd5o
    brw-r----- 1 root operator 4, 524335 Jan 9 10:43 /dev/sd5p

    Wygl?da na ok. Inicjujemy ccd jeszcze raz. Po poprawnym zainicjowaniu nie dostajemy ?adnego komunikatu, ale za to w /dev pojawiaja nam si? urz?dzenia ccd :)

    ccdconfig -C -f /etc/ccd.conf

    ls -la /dev/ccd*
    brw-r----- 1 root operator 16, 0 Feb 22 2008 /dev/ccd0a
    brw-r----- 1 root operator 16, 1 Feb 22 2008 /dev/ccd0b
    brw-r----- 1 root operator 16, 2 Feb 22 2008 /dev/ccd0c
    brw-r----- 1 root operator 16, 3 Feb 22 2008 /dev/ccd0d
    brw-r----- 1 root operator 16, 4 Feb 22 2008 /dev/ccd0e
    brw-r----- 1 root operator 16, 5 Feb 22 2008 /dev/ccd0f
    brw-r----- 1 root operator 16, 6 Feb 22 2008 /dev/ccd0g
    brw-r----- 1 root operator 16, 7 Feb 22 2008 /dev/ccd0h
    brw-r----- 1 root operator 16, 524288 Feb 22 2008 /dev/ccd0i
    brw-r----- 1 root operator 16, 524289 Feb 22 2008 /dev/ccd0j
    brw-r----- 1 root operator 16, 524290 Feb 22 2008 /dev/ccd0k
    brw-r----- 1 root operator 16, 524291 Feb 22 2008 /dev/ccd0l
    brw-r----- 1 root operator 16, 524292 Feb 22 2008 /dev/ccd0m
    brw-r----- 1 root operator 16, 524293 Feb 22 2008 /dev/ccd0n
    brw-r----- 1 root operator 16, 524294 Feb 22 2008 /dev/ccd0o
    brw-r----- 1 root operator 16, 524295 Feb 22 2008 /dev/ccd0p

    Skoro ju? mamy ccd jako urz?dzenie, sprawdzamy jego disklabel:

    # rccd0d:
    type: ccd
    disk: ccd
    label: fictitious
    flags:
    bytes/sector: 512
    sectors/track: 2048
    tracks/cylinder: 1
    sectors/cylinder: 2048
    cylinders: 70004
    total sectors: 143369832
    rpm: 3600
    interleave: 1
    trackskew: 0
    cylinderskew: 0
    headswitch: 0 # microseconds
    track-to-track seek: 0 # microseconds
    drivedata: 0

    4 partitions:
    # size offset fstype [fsize bsize cpg/sgs]
    a: 143369832 0 4.2BSD 0 0 0 # (Cyl. 0 - 70004*)
    d: 143369832 0 unused 0 0 # (Cyl. 0 - 70004*)

    ?e tak powiem, automagicznie idealnie. Size jest sum? czterech dysków z ccd.conf. Po przeliczeniu mamy 67 GB do wykorzystania. Pozosta?o jeszcze tylko za?o?y? system plików:

    newfs /dev/rccd0a
    /dev/rccd0a: 70004.8MB (143369832 sectors) block size 16384, fragment size 2048
    using 380 cylinder groups of 184.23MB, 11791 blks, 23296 inodes.
    super-block backups (for fsck_ffs -b #) at:
    32, 377344, 754656, 1131968, 1509280, 1886592, 2263904, 2641216, 3018528, 3395840, 3773152, 4150464, 4527776, 4905088,
    ......

    i podmontowa? w wybranym miejscu:

    mkdir /usr/home/storage
    mount /dev/ccd0a /usr/home/storage/

    Sprawdzamy czy wszystko gra:

    df -h
    Filesystem Size Used Avail Capacity Mounted on
    /dev/sd0a 1.9G 37M 1.8G 1% /
    /dev/sd0f 29G 12G 15G 44% /var
    /dev/sd0e 19G 16G 2.0G 89% /usr
    /dev/sd0g 13G 3.6G 9.2G 27% /usr/home
    tmpfs 781M 48K 781M 0% /tmp
    kernfs 1.0K 1.0K 0B 100% /kern
    procfs 4.0K 4.0K 0B 100% /usr/pkg/emul/linux/proc
    /dev/sd1e 67G 49G 15G 76% /backup
    /dev/ccd0a 67G 2.0K 64G 0% /usr/home/storage

    Wygl?da na to, ?e wszystko w jak najlepszym porz?dku, mo?emy przetestowa? wydajno?? naszego nowego ccd:

    dd if=/dev/zero of=file_1GB bs=1m count=1k
    1024+0 records in
    1024+0 records out
    1073741824 bytes transferred in 19.476 secs (55131537 bytes/sec)

    Imponuj?ce :)

    Je?li jeste? zadowolony ze swojego setupu, ostatni? rzecz? jest dopisanie ccd=YES do rc.conf oraz do fstaba punktu montowania:

    echo ccd=YES >> /etc/rc.conf
    echo "/dev/ccd0a /usr/home/storage ffs rw,softdep 1 1" >> /etc/fstab

    Ostatni restart, aby zobaczy? czy wszystko gra i je?li po restarcie masz podmontowany ccd tam gdzie powinien by? to gratulacje – ccd skonfigurowany i dzia?a :)

    Jeszcze uwaga na koniec – FFS w NetBSD obs?uguj? partycj? do wielko?ci 2 TB. Zatem je?li chcesz po??czy? dyski w wi?cej ni? 2 TB, niestety trzeba zrobi? kilka ccd, np, mój serwer backupowy dla userów posiada 4 TB w dwóch ccd:

    /dev/ccd0a 1.8T 1.5T 189G 89% /usr/home/bacula
    /dev/ccd1a 1.8T 1.0T 683G 60% /usr/home/bacula2




    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Job / Praca

    Wolny dysk? Sprawd? ?rubki mocuj?ce!

    Zauwa?y?e? ostatnio spadek wydajno?ci operacji dyskowych? Nie kupuj od razu nowych dysków, lub szybszego kontrolera. By? mo?e winna jest tylko… ?rubka mocuj?ca dysk. Brendan Gregg z SUN’a odkry? i zademonstrowa? jak wibracje mog? wp?ywa? na ograniczenie parametrów odczytu i czasu dost?pu do dysków. Klasyczne dyski (nie SSD) jak wiadomo ci?gle s? w ruchu, ruch ko?owy ich talerzy wywo?uje wibracje, wystarczy zatem z?e mocowanie, aby ca?y dysk wpad? w rezonans. Dok?adne wykresy na blogu Brendana, a poni?ej film ze „stresowania” dysków krzykiem :)

    W swojej karierze zawodowej widzia?em od ?rodka i z?o?y?em setki dysków twardych. Spotka?em si? z niejednym w?tpliwym rozwi?zaniem, np. dysk do góry nogami, trzymaj?cy si? tylko na szelce IDE, zamontowany w kieszeni 5,25 z jednej strony itp. Warto zwróci? uwag? w jaki sposób zmontowany jest nasz PC :)




    Related Posts with Thumbnails

    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Add your widget here