Skip to content


Lekcja 4: Pracując z dyskami

W trakcie swojej egzystencji, komputer rzadko kończy swoje życie w takim samym stanie w jakim je zaczął. Zmieniające się z upływem czasu wymagania użytkowników powodują zmiany w liczbie i różnorodności dodanych do czy usuniętych z oryginalnej maszyny komponentów. W przeszłości a w niektórych systemów operacyjnych nawet obecnie, maszyna może zinwentaryzować/zintegrować urządzenia do niej dołączone po opuszczeniu przez niej fabryki tylko w czasie startu systemu operacyjnego. Obecnie, w większości przypadków inwentaryzacja i integracja urządzeń (dyski, adaptery, itp) może być przeprowadzona w każdej chwili i nie wymaga to przeładowania systemu operacyjnego. Polecenie inwentaryzujące maszynę nazywa się ”cfgmgr”. Wydane bez żadnych kwalifikatorów sprawdza ono wszystkie szyny danych (buses) szukając tam adapterów (SCSI/SAA/Ethernet/FC, itp) i połączone z nimi urządzenia. Dzięki zainstalowanym wcześniej sterownikom (software drivers) użytkownik jest w stanie je wykorzystać znalezione urządzenia stosownie do ich przeznaczenia. Zdobyta przez ”cfgmgr” informacja jest przechowywana w bazie danych nazywającej się ODM (Object Database Manager). Warto zauważyć, że ”cfgmgr” jest ograniczone do dodawania informacji o każdym nowo odkrytym urządzeniu. Usuwanie informacji z ODM to zadanie innych komend jak na przykład: odmdelete czy rmdev.
Dwie podstawowe formy egzekucji tego polecenia to niema (cfgmgr) i gadatliwa (cfgmgr –v). Podając odpowiednie określniki można również ograniczyć zasięg poszukiwań tego polecenia do specyficznej szyny (bus) komputera, itp.

Poznjąc Dyski[/lang_pl/
Podstawowe polecenie w tym zakresie to ”lspv” (list physical volumes). Wydane bez żadnych określników (command arguments) tworzy listę wszystkich znanych ODM dysków jak na przykład:

markd:/root>lspv
hdisk0 00c609e0a5ec1460 rootvg active
hdisk1 00c609e037478aad rootvg active
hdisk4 00c03c8a14fa936b wmd_vg active
hdisk2 00c03b1a32e50767 None
hdisk3 00c03b1a32ee4222 None
hdisk5 00c03b1a35cdcdf0 None

Każdy rząd to opis jednego dysku. Nazwa dysku jest podana w pierwszej kolumnie. Towarzyszy jej jego numer identyfikacyjny (PVID) i nazwa grupy (Volume Group), której jest członkiem. Ostatnia kolumna (active) pozwala nam określić czy ta grupa jest w użyciu (”vary on” state) czy nie (”vary off” state). Słowo “None” w ostatnie kolumnie brak przynależności do jakiejkolwiek grupy dysków. Fakt posiadania PVID wskazuje, że dysk może posiadać jakieś dane. Być może został usunięty z jednej i wkrótce zostanie członkiem innej grupy. Jest również możliwe, że on jak i jego grupa oczekują aktywizacji przy pomocy polecenia ”importvg”.

Podając komendzie ”lspv” nazwę dysku zmusza ją do produkcji większej ilości informacji dotyczącej tego urządzenia:

markd:/root>lspv hdisk8
PHYSICAL VOLUME: hdisk8 VOLUME GROUP: mir_vg
PV IDENTIFIER: 00c03b1a35cdfcbc VG IDENTIFIER 00c03b1a00004c000000011b79c502a5
PV STATE: active
STALE PARTITIONS: 0 ALLOCATABLE: yes
PP SIZE: 16 megabyte(s) LOGICAL VOLUMES: 2
TOTAL PPs: 639 (10224 megabytes) VG DESCRIPTORS: 2
FREE PPs: 599 (9584 megabytes) HOT SPARE: no
USED PPs: 40 (640 megabytes) MAX REQUEST: 256 kilobytes
FREE DISTRIBUTION: 128..88..127..128..128
USED DISTRIBUTION: 00..40..00..00..00

W przypadku “hdisk8” jesteśmy w stanie określić jego wielkość, liczbę obecnych tam tomów logicznych (dwa), liczbę bloków fizycznych wymagających synchronizacji (Stale Partition) i liczbę posiadanych VGDA. (Rozkład bloków fizycznych (Free/Used Distribution) jest omówiony w jednym z następnych rozdziałów). Stale Partitions – dosłownie ”zepsute” (jak popsute mleko) bloki są omawiane w rozdziale poświęconym lustrom. Wydając polecenie lspv w stosunku do dysku nie należącego do grupy produkuje tylko informację potwierdzającą ten stan.In the case of “hdisk8″ we are able to determine its size, number of logical volumes (two), the number of physical paritions in need of synchronization (Stale Partition) and the number of VGDA (Physical blocks distribution (Free/Used Distribution) is described in one of the following paragraphs). The Stale Partitions are described in the chapter devoted to mirrors. Executing “lspv” against a disk without a grup membership does nothing useful:

markd:/root>lspv hdisk2
0516-304: Unable to find device id hdisk2 in the Device
configuration database

Metody Określanie Pojemności Dysków
W jaki sposób można określić pojemność dysku, który nie należy do grupy? Następna komenda dokonuje tego w jednostkach MB:

markd:/root>bootinfo -s hdisk2
10240

nimprdp1:/root>bootinfo -s hdisk8
10240

Można również użyć polecenie „”lsattr –El nazwa_dysku”. Popatrz na liczbę związaną z atrybutem ”size_in_mb”.

markd:/root>lsattr -El hdisk0
PCM PCM/friend/scsiscsd Path Control Module False
algorithm fail_over Algorithm True
dist_err_pcnt 0 Distributed Error Percentage True
dist_tw_width 50 Distributed Error Sample Time True
hcheck_interval 0 Health Check Interval True
hcheck_mode nonactive Health Check Mode True
max_transfer 0x40000 Maximum TRANSFER Size True
pvid 00c03b1a76ee19820000000000000000 Physical volume identifier False
queue_depth 3 Queue DEPTH False
reserve_policy single_path Reserve Policy True
size_in_mb 73400 Size in Megabytes False
unique_id 26080084C1AF0FHUS103073FL380003IBMscsi Unique device identifier False

To ostanie polecenie może być ograniczone do produkcji tylko rozmiaru dysku w następujący sposób:
nimprdp1:/root>lsattr -El hdisk0 | grep size
size_in_mb 73400 Size in Megabytes False

Czy Dysk Posiada Dane?
Dysk może otrzymać PVID w jeden z dwóch sposobów – zostając członkiem grupy lub wydając polecenie ”chpv”. W przypadku dysku posiadającego PVID bez przynależności do grupy łatwo jest o pomyłkę której rezultatem jest utrata posiadanych przez niego danych. Przydatne w takiej sytuacji polecenie to ”lqueryvg”. Popatrz co ono produkuje w przypadku naszego hdisk2:

markd:/root>lqueryvg -Atp hdisk2
0516-320 lqueryvg: Physical volume hdisk2 is not assigned to a volume group.
Max LVs: 256
PP Size: 26
Free PPs: 1117
LV count: 0
PV count: 3
Total VGDAs: 3
Conc Allowed: 0
MAX PPs per PV 1016
MAX PVs: 32
Quorum (disk): 1
Quorum (dd): 1
Auto Varyon ?: 1
Conc Autovaryo 0
Varied on Conc 0
Physical: 00c03b1a32e50767 1 0
00c03b1a32ee4222 1 0
00c03b1a9db2f183 1 0
Total PPs: 1117
LTG size: 128
HOT SPARE: 0
AUTO SYNC: 0
VG PERMISSION: 0
SNAPSHOT VG: 0
IS_PRIMARY VG: 0
PSNFSTPP: 4352
VARYON MODE: ???????
VG Type: 0
Max PPs: 32512

Ten dysk należał do grupy posiadającej trzy dyski:

PV count: 3

Ich numery identyfikacyjne to:

Physical: 00c03b1a32e50767 1 0
00c03b1a32ee4222 1 0
00c03b1a9db2f183 1 0

W obecnej chwili nie posiada on żadnych tomów logicznych:
LV count: 0

Ta sama komenda wydana przeciwko hdisk0 produkuje:

mduszyk:/root>lqueryvg -Atp hdisk0
Max LVs: 256
PP Size: 27
Free PPs: 603
LV count: 19
PV count: 2
Total VGDAs: 3
Conc Allowed: 0
MAX PPs per PV 1016
MAX PVs: 32
Quorum (disk): 1
Quorum (dd): 0
Auto Varyon ?: 1
Conc Autovaryo 0
Varied on Conc 0
Logical: 00c03b1a00004c000000011649b268f5.1 hd5 1
00c03b1a00004c000000011649b268f5.2 hd6 1
00c03b1a00004c000000011649b268f5.3 hd8 1
00c03b1a00004c000000011649b268f5.4 hd4 1
00c03b1a00004c000000011649b268f5.5 hd2 1
00c03b1a00004c000000011649b268f5.6 hd9var 1
00c03b1a00004c000000011649b268f5.7 hd3 1
00c03b1a00004c000000011649b268f5.8 hd1 1
00c03b1a00004c000000011649b268f5.9 hd10opt 1
00c03b1a00004c000000011649b268f5.10 rootlv 1
00c03b1a00004c000000011649b268f5.11 local_lv 1
00c03b1a00004c000000011649b268f5.12 dump0 1
00c03b1a00004c000000011649b268f5.13 dump1 1
00c03b1a00004c000000011649b268f5.14 loglv02 1
00c03b1a00004c000000011649b268f5.15 lppsrc_lv 1
00c03b1a00004c000000011649b268f5.16 spot_lv 1
00c03b1a00004c000000011649b268f5.17 mksysblv 1
00c03b1a00004c000000011649b268f5.18 image_lv 1
00c03b1a00004c000000011649b268f5.19 lv00 1
Physical: 00c03b1a76ee1982 2 0
00c03b1adbec3577 1 0
Total PPs: 1092
LTG size: 128
HOT SPARE: 0
AUTO SYNC: 0
VG PERMISSION: 0
SNAPSHOT VG: 0
IS_PRIMARY VG: 0
PSNFSTPP: 4352
VARYON MODE: 0
VG Type: 0
Max PPs: 32512

Łatwo zauważyć, że mamy do czynienia z dyskiem należącym do rootvg! Imiona tomów logicznych są tego najlepszym dowodem. Uwaga:
Wyświetlenie danych na dysku jest możliwe dzięki (między innymi) poleceniu ” lquerypv”.

Manipulacje PVID
PVID może być przywiązana do lub usunięte z dysku tylko w przypadku dysków bez przynależności grupowej – używając polecenie ”chdev” (CHange DEVice):

markd:/root>chdev -l hdisk2 -a pv=clear
hdisk2 changed
markd:/root>lspv | grep hdisk2
hdisk2 none None

A teraz, żeby przyznać temu dyskowi nowy PVID:

nimprdp1:/root>chdev -l hdisk2 -a pv=yes
hdisk2 changed
nimprdp1:/root>lspv | grep hdisk2
hdisk2 00c03b1af578bfea None

Wyłączenie dysku z użycia
Czasami, obecność wolnego dysku reprezentuje dużą pokusę dla użytkowników czy administratorów. W końcu każdy chce więcej pojemności. Innym razem, nie chcemy aby tomy fizyczne czerpały bloki fizyczne z jednego czy wielu dysków. Jeszcze w innych przypadku należy zapobiec jakiejkolwiek operacji I/O na specyficznym dysku. Te wszystkie czynności wymagają jednego polecenia – chpv:

I/O operacje na dysku są zakazane: chpv -v r hdisk2
I/O operacje na dysku są dozwolone: chpv -v a hdisk2
I/O operacje na wolnych blokach fizycznych są zakazane: chpv -a n hdisk2
I/O operacje na wolnych blokach fizycznyc są dozwolone: chpv -a y hdisk2

Topologia talerza/tarczy dysku
AIX został stworzony wiele lat temu, w czasach kiedy dyski twarde były bardzo drogie. Optymalizacja operacji I/O, decyzja które dane będą dostarczane do/z dysku szybciej niz inne sprowadzała się do lokalizacja danych na dysku. Pomiędzy kolejnymi operacjami I/O, głowice dysku są parkowane mniej więcej w środku jego promienia. Zgodnie z tym, najkrótszy czas zajmuje czytanie/pisanie danej przebywającej w blokach leżących pod spoczywającą głowicą. Czytanie/pisane danych w blokach fizycznych położonych bliżej krawędzi czy środka dysku wymaga więcej czasu ponieważ głowica pierw musi się tam przesunąć. Im dalej od środka dysku tym dłużej czasu zajmie przesunięcie tam głowicy!Mając to na uwadze, oryginalni twórcy AIXu podzielili powierzchnię talerza dysku na pięć współśrodkowych pierścieni nazywając je: zewnętrzny (outer), zewnętrzny-środkowy (outer-middle), centralny (center), wewnętrzny (inner), wewnętrzny-krawędź (inner-edge). Ta metoda, dzieląca bloki fizyczne (i jednocześnie tomy logiczne) z uwagi na ich fizyczne położenie na powierzchni dysku nazywa się polisą podziału wewnętrzno-fizycznego (intra-physical allocation policy). Razem z polisą przynależności wielu dyskowej (inter-physical allocation policy) nabierają znaczenia podczas tworzenia tomów logicznych.

Topologia dysku – zakres bloków fizycznych należących do każdego z pięciu pierścieni jest produkowana używając polecenia jak ”lsvg –p nazwa_grupy”, „lspv nazwa dysku”. Patrząc na jeden z poprzednich przykładów (lspv hdisk8) zwróć uwagę na dwie ostatnie linijki jej produkcji:

FREE DISTRIBUTION: 128..88..127..128..128
USED DISTRIBUTION: 00..40..00..00..00

Rząd nazwany FREE DISTRIBUTION pokazuje ilość wolnych bloków fizycznych w każdym pierścieniu. Rząd zawierający USED DISTRIBUTION pokazuje ze czterdzieści bloków należących do zewnętrzno-środkowego pierścienia przechowuje dane. Pozostałe bloki fizyczne nie zawierają żadnych informacji. Ta polisa ma minimalne zastosowania w przypadku niezależnych dysków typu SCSI/SSA/IDE gdyż nawet najwolniejszy dysk w chwili obecnej jest bez porównania szybszy niż jego poprzednik z lat osiemdziesiątych. W przypadku dysków typu RAID czy SAN ta polisa zupełnie traci swoje znaczenie. Dla tych, którzy w dalszym ciągu używają indywidualnych dysków warto pamiętać, że lokalizacja danych na krawędziach dysku (zewnętrzna i wewnętrzna) jest równoznaczna z najdłuższym czasem wymaganym do przesunięcia głowic i lokalizacji odpowiednich danych. Te dwa pierścienie to najlepsze miejsce na przechowywanie danych przetwarzanych blok po bloku (sequential I/O).
Gdzie na dysku znajduje się pierwszy blok fizyczny? Jest on położony na samej krawędzi zewnętrznego pierścienia.

Relacja Tomów Logicznych i Dysków
Związek dysku i okupujących go tomów/folderów produkowany wydając polecenie ”lspv –l nazwa_dysku”. Relacja w przeciwnym kierunku jest także możliwa – wydaj polecenie ”lslv –M nazwa_tomu”.

Dyski, Adapter i Płyty Główna
Pracując z dyskami, dobrze jest wiedzieć gdzie się znajdują i w jaki sposób są połączone z płytą główną. W przeciwnym przypadku, kiedy jedno z tych urządzeń, odmówi posłuszeństwa jak będziesz wiedzieć, które z tych urządzeń należy wymienić? AIX posiada bogaty wachlarz poleceń w tej dziedzinie. Niektóre z nich są omówione w poniższym tekście. Najczęściej, śledzenie łańcucha łączącego urządzenie z płytą zaczyna się od wydania polecenia ”lsdev” z dodatkowymi określnikami ograniczającymi jego poszukiwanie do specyficznej grupy urządzeń. Zacznijmy od identyfikacji obecnych adapterów.

markd:/root> lsdev –Cc adapter
ent0 Available 07-08 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)
ent1 Available 07-09 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)
ent2 Available 08-08 10/100/1000 Base-TX PCI-X Adapter (14106902)
ent3 Available 0F-08 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)
ent4 Available 0F-09 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)
fcs0 Available 0L-08 FC Adapter
fcs1 Available 0O-08 FC Adapter
fcs2 Available 0B-08 FC Adapter
fcs3 Available 0I-08 FC Adapter
ide0 Available 0A-08 ATA/IDE Controller Device
ide1 Available 0H-08 ATA/IDE Controller Device
sisscsia0 Available 05-08 PCI-X Ultra320 SCSI Adapter
sisscsia1 Available 09-08 PCI-X Ultra320 SCSI Adapter
sisscsia2 Available 0D-08 PCI-X Ultra320 SCSI Adapter
sisscsia3 Available 0G-08 PCI-X Ultra320 SCSI Adapter
usbhc0 Available 06-08 USB Host Controller (33103500)
usbhc1 Available 06-09 USB Host Controller (33103500)
usbhc2 Available 0E-08 USB Host Controller (33103500)
usbhc3 Available 0E-09 USB Host Controller (33103500)
vsa0 Available LPAR Virtual Serial Adapter
vsa1 Defined LPAR Virtual Serial Adapter
vsa2 Defined LPAR Virtual Serial Adapter
markd:/root>

Ostatnie polecenie, wyprodukowało informację o wszystkich znanych systemowi operacyjnemu urządzeniach klasy ”adapter”, które są obecne lub były obecne podczas ostatniej egzekucji polecenia ”cfgmgr”. Z tej produkcji jesteśmy w stanie określić rodzaj oraz lokacje urządzeń nie tylko na płycie głównej ale także (jeżeli one istnieją) na płytach w dodatkowych szufladach (enclousers) połączonych z szufladą główną. Ostatnia lista informuje nas, że ta maszyna ma pięć adapterów sieci (ent0 – ent4), cztery adaptery SAN (fcs0 – fcs3), dwa adaptery typu IDE, cztery adaptery SCSI (sisscsia0 – 3), itp. Druga kolumna wskazuje stan urządzenia (available – gotowe do użycia, defined – urządzenie wymaga dodatkowej konfiguracji). Następna kolumna podaje jego lokację (szuflada/szyna). Ostatni kolumna zawiera jego krótki opis. Wydając to polecenie przeciwko jednemu z dysków należących do rootvg produkuje:

markd:/root> lsdev -Cc disk -l hdisk0
hdisk0 Available 09-08-00-4,0 16 Bit LVD SCSI Disk Drive

Porównując to z poprzednim wydrukiem, jesteśmy w stanie określić, który SCSI adapter kontroluje ten dysk – jest to sisscsia1. Jesteśmy też w stanie określić jaki numer identyfikacyjny jest przyznany hdisk0 w celu porozumiewania się ze swoim adapterem – 4,0. Jak można odczytać typ/model/pojemność/numer części/itp?

markd:/root > lscfg -vl hdisk0
hdisk0 U7879.001.DQD3D1Y-P1-T12-L4-L0 16 Bit LVD SCSI Disk Drive (73400 MB)
Manufacturer................IBM
Machine Type and Model......HUS103073FL3800
FRU Number..................00P3833
ROS Level and ID............5250514E
Serial Number...............00476B11
EC Level....................H17923D
Part Number.................26K5191
Device Specific.(Z0)........000004129F00013E
Device Specific.(Z1)........RPQN
Device Specific.(Z2)........0068
Device Specific.(Z3)........05179
Device Specific.(Z4)........0001
Device Specific.(Z5)........22
Device Specific.(Z6)........H17923D

To nie wszystko, inne detale można poznać wydając polecenie ”lsattr”:

markd:/root > lsattr -El hdisk0
PCM PCM/friend/scsiscsd Path Control Module False
algorithm fail_over Algorithm True
dist_err_pcnt 0 Distributed Error Percentage True
dist_tw_width 50 Distributed Error Sample Time True
hcheck_interval 0 Health Check Interval True
hcheck_mode nonactive Health Check Mode True
max_transfer 0x40000 Maximum TRANSFER Size True
pvid 00c0252fff52b7e70000000000000000 Physical volume identifier False
queue_depth 3 Queue DEPTH False
reserve_policy single_path Reserve Policy True
size_in_mb 73400 Size in Megabytes False


One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. hmc says

    dzięki :D



Some HTML is OK

or, reply to this post via trackback.