Archive

Archive for the ‘documentaţie şi tutoriale’ Category

Cum să… micșorați un volum fizic LVM fără pierderi de date, în timp ce sistemul rulează

May 18th, 2009

Se đă următoarea configurație:

# fdisk -l

Disk /dev/cciss/c0d0: 440.3 GB, 440346238976 bytes
255 heads, 63 sectors/track, 53535 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1          13      104391   83  Linux
/dev/cciss/c0d0p2              14       52887   424706048+  8e  Linux LVM
/dev/cciss/c0d0p3           52887       53535     5209416+  83  Linux

- prima partiție este o partiție ext3 montată în /boot

- a doua este un volum LVM

- ultima este o partiție ext3 ce nu conține date.

Volumul LVM este destul de mare:

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/cciss/c0d0p2
  VG Name               VolGroup00
  PV Size               405.00 GB / not usable 31.81 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              12959
  Free PE               31
  Allocated PE          12928
  PV UUID               F0llk1-rDcM-TZV2-Zkt2-9EWU-kr6Q-DtygTz

și conține mai multe partiții logice:

# lvdisplay
  --- Logical volume ---
  LV Name                /dev/VolGroup00/root
  VG Name                VolGroup00
  LV UUID                wbZ4WM-WB54-Mu30-K2jm-RodH-0v8b-QTCsFX
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                10.00 GB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0                                 

  --- Logical volume ---
  LV Name                /dev/VolGroup00/opt
  VG Name                VolGroup00
  LV UUID                2z3mgZ-WISj-jTNZ-Ij3G-0vFs-WnyE-sJAiAQ
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                10.00 GB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1                                 

  --- Logical volume ---
  LV Name                /dev/VolGroup00/var
  VG Name                VolGroup00
  LV UUID                vwsHHV-kaQG-riC3-Nk8D-Z0jl-BSoP-hcDkjY
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                35.00 GB
  Current LE             1120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

  --- Logical volume ---
  LV Name                /dev/VolGroup00/asm
  VG Name                VolGroup00
  LV UUID                qesUZc-n19h-6qTM-Fox9-2yqG-yHf2-6Upr13
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                341.00 GB
  Current LE             10912
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:3

  --- Logical volume ---
  LV Name                /dev/VolGroup00/swap
  VG Name                VolGroup00
  LV UUID                CkhMwT-dG1d-SNE8-46mk-1pKW-E1Sd-bCPPon
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                8.00 GB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4

Vrem să creem partiția /dev/VolGroup00/asm în afara VG-ului, fără a pierde datele de pe partițiile din fața ei. Pentru asta va trebui să o ștergem din VG, să micșorăm VG-ul și să creem partiția separat, direct pe disk. Deci…

- vom distruge /dev/VolGroup00/asm și tot ce este după ea în VG (în cazul de față /dev/VolGroup00/swap)

- vom distruge partiția de după VG și în spațiul rămas vom re-crea partiția asm

Deci… distrugem partiția de swap. Mai întâi vom opri swapping-ul și vom comenta linia aferentă lui din fstab:

# free -m
             total       used       free     shared    buffers     cached
Mem:          7985        911       7074          0        215        571
-/+ buffers/cache:        124       7860
Swap:         8191          0       8191

# swapoff /dev/VolGroup00/swap

# free -m
             total       used       free     shared    buffers     cached
Mem:          7985        907       7077          0        215        571
-/+ buffers/cache:        121       7864
Swap:            0          0          0

Iar în /etc/fstab linia cu swap-ul arată așa:

#/dev/VolGroup00/swap    swap                    swap    defaults        0 0

Ștergem volumul swap din VG:

# lvremove /dev/VolGroup00/swap
Do you really want to remove active logical volume "swap"? [y/n]: y
  Logical volume "swap" successfully removed

# lvdisplay
  --- Logical volume ---
  LV Name                /dev/VolGroup00/root
  VG Name                VolGroup00
  LV UUID                1YqBaS-1fhW-2T91-QR1A-1CZE-77eS-BNRa0r
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                10.00 GB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0                                     

  --- Logical volume ---
  LV Name                /dev/VolGroup00/opt
  VG Name                VolGroup00
  LV UUID                nMgDxu-5C3a-XJCe-3YCz-AKfe-i7sE-xWnGa9
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                10.00 GB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Name                /dev/VolGroup00/var
  VG Name                VolGroup00
  LV UUID                D0tQhV-pJ69-6Pwa-GEd8-AEfU-tUxF-laUcsv
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                35.00 GB
  Current LE             1120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

  --- Logical volume ---
  LV Name                /dev/VolGroup00/asm
  VG Name                VolGroup00
  LV UUID                Zxe2XS-qt6t-lHHP-8blo-Gxxe-hW89-VkUksT
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                341.00 GB
  Current LE             10912
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:3

Vom șterge și volumul /dev/VolGroup00/asm! ATENȚIE: această ștergere implică pierderea datelor, deci să faceți backup înainte!

# lvremove /dev/VolGroup00/asm
Do you really want to remove active logical volume "asm"? [y/n]: y
  Logical volume "asm" successfully removed                       

# lvdisplay
  --- Logical volume ---
  LV Name                /dev/VolGroup00/root
  VG Name                VolGroup00
  LV UUID                1YqBaS-1fhW-2T91-QR1A-1CZE-77eS-BNRa0r
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                10.00 GB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/VolGroup00/opt
  VG Name                VolGroup00
  LV UUID                nMgDxu-5C3a-XJCe-3YCz-AKfe-i7sE-xWnGa9
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                10.00 GB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Name                /dev/VolGroup00/var
  VG Name                VolGroup00
  LV UUID                D0tQhV-pJ69-6Pwa-GEd8-AEfU-tUxF-laUcsv
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                35.00 GB
  Current LE             1120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

Deja avem spațiu liber în VG:

# pvscan
  PV /dev/cciss/c0d0p2   VG VolGroup00   lvm2 [405.00 GB / 350.00 GB free]
  Total: 1 [405.00 GB] / in use: 1 [405.00 GB] / in no VG: 0 [0   ]
# pvdisplay --maps
  --- Physical volume ---
  PV Name               /dev/cciss/c0d0p2
  VG Name               VolGroup00
  PV Size               405.03 GB / not usable 31.81 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              12960
  Free PE               11200
  Allocated PE          1760
  PV UUID               husThP-AJsD-0XhH-WIVM-c7fO-XP10-m68sXO

  --- Physical Segments ---
  Physical extent 0 to 319:
    Logical volume      /dev/VolGroup00/root
    Logical extents     0 to 319
  Physical extent 320 to 639:
    Logical volume      /dev/VolGroup00/opt
    Logical extents     0 to 319
  Physical extent 640 to 1759:
    Logical volume      /dev/VolGroup00/var
    Logical extents     0 to 1119
  Physical extent 1760 to 12959:
    FREE

Vom încerca să micșorăm PV-ul de la 405 GB la 405 – 350 = 55 GB:

# pvresize --setphysicalvolumesize 55G /dev/cciss/c0d0p2
  /dev/cciss/c0d0p2: cannot resize to 1759 extents as 1760 are allocated.
  0 physical volume(s) resized / 1 physical volume(s) not resized

Se pare că 55 GB e cam puțin. Se vede importanța utilizării comenzii

pvdisplay --maps

pentru afișarea extent-urilor.

Să fim mai îngăduitori:

# pvresize --setphysicalvolumesize 55.01G /dev/cciss/c0d0p2
  Physical volume "/dev/cciss/c0d0p2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

Să vedem ce-a ieșit

# pvdisplay --maps
  --- Physical volume ---
  PV Name               /dev/cciss/c0d0p2
  VG Name               VolGroup00
  PV Size               55.01 GB / not usable 10.05 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              1760
  Free PE               0
  Allocated PE          1760
  PV UUID               husThP-AJsD-0XhH-WIVM-c7fO-XP10-m68sXO                 

  --- Physical Segments ---
  Physical extent 0 to 319:
    Logical volume      /dev/VolGroup00/root
    Logical extents     0 to 319
  Physical extent 320 to 639:
    Logical volume      /dev/VolGroup00/opt
    Logical extents     0 to 319
  Physical extent 640 to 1759:
    Logical volume      /dev/VolGroup00/var
    Logical extents     0 to 1119                                              

# pvscan
  PV /dev/cciss/c0d0p2   VG VolGroup00   lvm2 [55.00 GB / 0    free]
  Total: 1 [55.00 GB] / in use: 1 [55.00 GB] / in no VG: 0 [0   ]   

# vgdisplay
  --- Volume group ---
  VG Name               VolGroup00
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  22
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               55.00 GB
  PE Size               32.00 MB
  Total PE              1760
  Alloc PE / Size       1760 / 55.00 GB
  Free  PE / Size       0 / 0
  VG UUID               JWYHii-1wUz-NR7n-Ieeb-jucn-wHBx-Yn61Gb      

# lvdisplay
  --- Logical volume ---
  LV Name                /dev/VolGroup00/root
  VG Name                VolGroup00
  LV UUID                1YqBaS-1fhW-2T91-QR1A-1CZE-77eS-BNRa0r
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                10.00 GB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/VolGroup00/opt
  VG Name                VolGroup00
  LV UUID                nMgDxu-5C3a-XJCe-3YCz-AKfe-i7sE-xWnGa9
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                10.00 GB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Name                /dev/VolGroup00/var
  VG Name                VolGroup00
  LV UUID                D0tQhV-pJ69-6Pwa-GEd8-AEfU-tUxF-laUcsv
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                35.00 GB
  Current LE             1120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

Acum vine partea complicată. Va trebui să restrângem spațiul partiției LVM la aproximativ 55 GB.

Mai întâi să vedem dimensiunea PV-ului în sectoare:

# lvm pvs --units s
  PV                VG         Fmt  Attr PSize      PFree
  /dev/cciss/c0d0p2 VolGroup00 lvm2 a-   115343360S    0S

Acum sa vedem dimensiunea partițiilor în sectoare:

# parted /dev/cciss/c0d0 unit s print

Model: Compaq Smart Array (cpqarray)
Disk /dev/cciss/c0d0: 860051247s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start       End         Size        Type     File system  Flags
 1      63s         208844s     208782s     primary  ext3         boot
 2      208845s     849620941s  849412097s  primary               lvm
 3      849620942s  860039774s  10418833s   primary

Information: Don't forget to update /etc/fstab, if necessary.

ATENȚIE: Asigurați-vă că aveți backup înainte să mergeți mai departe. Vom șterge partiția 2 și o vom recrea cu același sector de Start dar un sector de End mai scurt. Sectorul de End se va calcula adunând sectorul de Start cu PSize și cu 131072 sectoare (aproximativ 64 MB). În cazul nostru, noul sector de End va fi 115683277:

# parted /dev/cciss/c0d0 rm 2
# parted /dev/cciss/c0d0 mkpart primary 208845s 115683277s
# parted /dev/cciss/c0d0 set 2 lvm on
# parted /dev/cciss/c0d0 unit s print
Model: Compaq Smart Array (cpqarray)
Disk /dev/cciss/c0d0: 860051247s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number  Start       End         Size        Type     File system  Flags
 1      63s         208844s     208782s     primary  ext3         boot
 2      208845s     115683277s  115474433s  primary               lvm
 3      849620942s  860039774s  10418833s   primary
Information: Don't forget to update /etc/fstab, if necessary.

Eu am șters, apoi, partiția de după LVM și am recreat-o acolo, împreună cu partiția de swap și partiția asm:

# fdisk -l
Disk /dev/cciss/c0d0: 440.3 GB, 440346238976 bytes
255 heads, 63 sectors/track, 53535 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1          13      104391   83  Linux
/dev/cciss/c0d0p2              14        7201    57737216+  8e  Linux LVM
/dev/cciss/c0d0p3           52887       53535     5209416+  83  Linux
# fdisk /dev/cciss/c0d0
The number of cylinders for this disk is set to 53535.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): d
Partition number (1-4): 3
Command (m for help): p
Disk /dev/cciss/c0d0: 440.3 GB, 440346238976 bytes
255 heads, 63 sectors/track, 53535 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1          13      104391   83  Linux
/dev/cciss/c0d0p2              14        7201    57737216+  8e  Linux LVM
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (7201-53535, default 7201):
Using default value 7201
Last cylinder or +size or +sizeM or +sizeK (7201-53535, default 53535): +8192M
Command (m for help): p
Disk /dev/cciss/c0d0: 440.3 GB, 440346238976 bytes
255 heads, 63 sectors/track, 53535 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1          13      104391   83  Linux
/dev/cciss/c0d0p2              14        7201    57737216+  8e  Linux LVM
/dev/cciss/c0d0p3            7201        8197     8000763+  83  Linux
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Selected partition 4
First cylinder (8198-53535, default 8198):
Using default value 8198
Last cylinder or +size or +sizeM or +sizeK (8198-53535, default 53535):
Using default value 53535
Command (m for help): n
First cylinder (8198-53535, default 8198):
Using default value 8198
Last cylinder or +size or +sizeM or +sizeK (8198-53535, default 53535): +5120M
Command (m for help): n
First cylinder (8821-53535, default 8821):
Using default value 8821
Last cylinder or +size or +sizeM or +sizeK (8821-53535, default 53535):
Using default value 53535
Command (m for help): p
Disk /dev/cciss/c0d0: 440.3 GB, 440346238976 bytes
255 heads, 63 sectors/track, 53535 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1          13      104391   83  Linux
/dev/cciss/c0d0p2              14        7201    57737216+  8e  Linux LVM
/dev/cciss/c0d0p3            7201        8197     8000763+  83  Linux
/dev/cciss/c0d0p4            8198       53535   364177485    5  Extended
/dev/cciss/c0d0p5            8198        8820     5004216   83  Linux
/dev/cciss/c0d0p6            8821       53535   359173206   83  Linux
Command (m for help): t
Partition number (1-6): 3
Hex code (type L to list codes): 82
Changed system type of partition 3 to 82 (Linux swap / Solaris)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
# fdisk -l
Disk /dev/cciss/c0d0: 440.3 GB, 440346238976 bytes
255 heads, 63 sectors/track, 53535 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1          13      104391   83  Linux
/dev/cciss/c0d0p2              14        7201    57737216+  8e  Linux LVM
/dev/cciss/c0d0p3            7201        8197     8000763+  82  Linux swap / Solaris
/dev/cciss/c0d0p4            8198       53535   364177485    5  Extended
/dev/cciss/c0d0p5            8198        8820     5004216   83  Linux
/dev/cciss/c0d0p6            8821       53535   359173206   83  Linux

Am editat apoi /etc/fstab și linia cu swap a fost modificată în felul acesta:

/dev/cciss/c0d0p3    swap                    swap    defaults        0 0

Apoi am creat efectiv swap-ul:

mkswap /dev/cciss/c0d0p3

După un reboot ar trebui să puteți răsufla ușurat.

Cum să… scoateţi partea audio dintr-un film Flash (de pe YouTube, de exemplu)…

April 10th, 2008

N-am mai scris demult tutoriale şi mă gândeam să recuperez timpul pierdut… Aşa că voi începe seria “Cum să…”

Cerinţă: vreau să scot partea audio (în format mp3, de exemplu) de pe un filmuleţ de pe YouTube sau trilulilu sau orice alt site cu astfel de filme.

1. descărcarea filmului

- varianta universală (varianta asta merge pentru orice site, pentru orice browser şi orice sistem de operare): după ce filmul s-a încărcat complet în browser (linia roşie de derulare în film a ajuns la capăt, pe YouTube), practic filmul a fost descărcat pe hard şi se află în directorul temporar în care salvează browserul (pe Linux, e /tmp)

- varianta particularizată: de exemplu, dacă vreţi să salvaţi un film de pe YouTube cu Firefox, puteţi folosi o extensie ca Fast Video Download.

2. extragerea părţii audio în format wav

Aici veţi folosi mplayer din consolă. Deschideţi o consolă în directorul unde aţi salvat fişierul cu filmul de mai sus. Daţi comanda:

mplayer -vc null -vo null -ao pcm:waveheader fisier.flv

unde fisier.flv este filmul Flash şi se presupune că executabilul mplayer este în PATH.

Ca o completare, mai ales pentru cei care nu au auzit de mplayer. E un player multimedia Open-Source ce nu prea are nevoie de codecuri şi ce rulează fără să consume resurse prea multe. E disponibil cu mai multe interfeţe grafice (vine implicit cu o interfaţă numită gmplayer, dar puteţi încerca şi SMPlayer, de exemplu).

3. comprimarea părţii audio în format mp3 sau ogg

mplayer va genera un fişier numit audiodump.wav pe care îl puteţi converti în mp3 şi/sau ogg cu un program ca Audacity. Şi gata!

Orice comentariu e binevenit ;)

A trecut mult timp de când nu m-am mai luat de nimeni…

February 29th, 2008

…şi cum eram acum vreo câteva zile într-o librărie, am văzut următoarea carte:

coperta

Am observat că nea’ Acostachioaie ăsta iar vorbeşte prostii… “Open Source” nu înseamnă “gratuit” măi scândură! Vezi că Wikipedia îţi explică pe româneşte treaba asta!

Of of… nu daţi banii pe prostii! C/C++ şi Linux nu învăţaţi din cărţile dlui Acostăchioaie…

Pizza şi Firefox

February 18th, 2008

Ştiaţi că dacă aveţi o pizza cu raza z şi grosimea a, atunci volumul ei este pizza? Adică π·z²·a…

Nici eu nu ştiam şi am aflat asta de la Claudiu

În altă ordine de idei, vă invit să citiţi un review la Firefox 3 beta 3, scris de mine pe technogeek.ro.

Prezentare Linux în cadrul Universităţii Babeş-Bolyai

January 10th, 2008

Grupul pentru Software Liber din Cluj-Napoca va susţine prima prezentare Linux în cadrul Universităţii Babeş-Bolyai la Facultatea de Ştiinţe Economice (Campus ISE), str. Teodor Mihali, nr 58-60, sala 310 (campus ISE, etaj 3) în data de 12 Ianuarie 2008 începând cu ora 12.00.

Vor fi prezentate sistemele de operare Ubuntu şi Kiwi şi proiectul OLPC, iar intrarea este liberă.

Pentru detalii, consultaţi pagina lor!

poster

Rezolvarea cubului Rubik

October 1st, 2007

I. Introducere şi motivaţie

Salut şi bine ai venit pe pagina aceasta. Mi-am propus să îţi arat aici o metodă de rezolvare a cubului Rubik. “De ce-ai face una ca asta?”, ar putea întreba cineva. Păi hai să studiem puţin acest cub, ca să vezi câteva motive.

A fost inventat în 1974 de Ernő Rubik, un sculptor şi arhitect ungur. Este considerată cea mai bine vândută jucărie din lume, fiind cunoscut şi sub denumirea “cubul magic”. După unele statistici 1 din 4 oameni s-a “jucat” cel puţin o dată cu un cub Rubik. Şi cu siguranţă fiecare om care s-a jucat vreodată cu el ( cubul, nu cu el însuşi :-P ) a vrut să ştie să-l rezolve.

Din păcate documentaţie de calitate, în limba română, nu există. Cea în engleză e de multe ori confuză, incompletă sau greu de găsit. În plus, pentru copii, documentaţia în limba engleză e foarte greu de înţeles.

Sper ca ce scriu mai jos, să fie pe înţelesul tuturor. Metoda de rezolvare pe care o expun aici e o “compilaţie” din mai multe metode pe care le-am studiat. E logică şi uşor de reţinut, dar nu e foarte rapidă.

Ca să-ţi fie mai uşor, am creat şi filmuleţe pentru fiecare pas în parte. Întregul playlist poate fi găsit aici.

Să-i dăm drumul!

II. Noţiuni de bază

În cele ce urmează vom lucra cu un cub standard ( 3x3x3 ). Acest cub are:

  • 6 feţe, fiecare de altă culoare. Le vom nota cu câte o literă, aşa cum sunt notate ele în documentaţia de specialitate:

U – faţa de sus ( upper face )

D – faţa de jos ( down face )

R – faţa din dreapta ( right face )

L – faţa din stânga ( left face )

F – faţa din.. faţă… dinspre tine ( front face )

B – faţa din spate ( back face )

Evident, orice faţă poate fi cea de sus, sau cea din dreapta. Dar o dată ce ai început să rezolvi cubul şi ai ales ca faţa albă să fie cea de sus şi cea verde cea din dreapta, nu le mai schimba! Nu roti cubul în mână în timp ce îl rezolvi. E cea mai comună greşeală şi totodată cea mai gravă pentru că uiţi secvenţa de mutări pe care trebuie să o faci!

Cu orice faţă se pot face 3 tipuri de rotiri: o rotire în sensul acelor de ceas, o rotire în sens opus acelor de ceas ( sens trigonometric, cum se numeşte în geometrie ) şi o rotire dublă ( nu contează sensul ). De exemplu, pentru faţa U, sensul acelor de ceas se notează U, sensul trigonometric U’ iar rotirea dublă se notează U². Cum se determină sensul corect pentru o faţă? Simplu: priveşti faţa respectivă în mod “natural”, centrul cubului aflându-se în spatele ei. Deci pentru a determina sensul invers acelor de ceasornic pentru faţa B, pentru câteva secunde vei întoarce cubul cu faţa B la tine ( faţa F e acum în locul feţei B ) şi o vei roti spre stânga, apoi vei întoarce cubul în poziţia iniţială ( dacă am decis la început că faţa roşie e F, atunci aşa va rămâne până la noi ordine! :-P )

Multă lume nu realizează, dar cubul are 6 piese fixe, cele din mijloc, de o singură culoare. Acestea dau “culoarea” feţelor. În cazul meu, piesa portocalie ( pe care am ales-o să dea culoarea feţei B ) se opune piesei roşii ( care dă culoarea feţei F ).

  • 8 colţuri. După aşezarea acestora la un moment dat, ele se notează cu 3 litere. De exemplu, dacă alb e culoarea de pe faţa U ( sus ), verde e culoarea de pe faţa R ( dreapta ) şi roşu e culoarea de pe faţa F ( dinspre tine ), atunci colţul alb-verde-roşu e colţul URF.

  • 12 muchii. Şi când zic muchie nu mă refer la muchia cubului (formată din 3 piese, 2 colţuri şi piesa dintre ele ), ci mă refer strict la piesa care se află între 2 colţuri. O muchie e notată cu două litere. După exemplul de mai sus, FR este muchia de culoare roşu-verde, UF este alb-roşie iar UR este alb-verde.

Cu acest cub poţi executa 43,252,003,274,489,856,000 de permutări, adică peste 43 de trilioane de permutări. Cu toate acestea el a putut fi rezolvat în 26 de permutări ( de un computer din câte ştiu eu ) şi există oameni care-l pot rezolva în mult mai puţin de 20 de secunde. Nu vei ajunge la asemenea performanţe după ce vei citi rezolvarea mea, dar… e bine de ştiut că se poate.

În contextul în care lucrăm, termenii “permutare”, “mutare” şi “rotire” sunt sinonimi şi se referă la rotirea unei feţe.

O faţă împreună cu muchiile şi colţurile sale compun un strat. Cubul are, deci, 3 straturi verticale ( stratul superior, stratul median şi stratul inferior ), 3 orizontale ( stang, de mijloc, drept ) şi 3 straturi în adâncime ( primul strat dispre tine, al doilea şi ultimul ). Ne vom referi, în general, doar la straturile verticale.

YouTube Preview Image

III. Rezolvarea propriu-zisă

Pasul 1: Rezolvarea feţei U, mai puţin a unui colţ

Alege-ţi o culoare de pe cub. Alb e ok pentru început. Nu toate cuburile au acelaşi colorit, dar orice cub are o faţă albă şi alb e culoarea care iese cel mai bine în evidenţă.

Faţa albă va deveni faţa U pentru pasul acesta şi următorul. Vei construi tot stratul superior, mai puţin un colţ.

Cum vei face acest lucru? Nu există nici un algoritm anume şi din moment ce ai ajuns să citeşti acest document, presupun că ştii să construieşti un strat.
YouTube Preview Image

Pasul 2: Rezolvarea stratului de mijloc, mai puţin a muchiei corespunzătoare colţului nerezolvat

Acest pas se reduce la poziţionarea corectă a 3 muchii. Cea de-a 4-a corespunde colţului nerezolvat, iar piesele din mijloc se poziţionează prin rotirea feţei U o dată sau de două ori în sensul corect.

Poziţionarea cubului: faţa rezolvată fără un colţ va fi faţa U ( va sta deasupra ). Nu contează unde stă colţul nerezolvat.

La rezolvarea unei muchii pot apărea două situaţii:

1. piesa ce trebuie poziţionată se află pe stratul de jos ( cu o faţă pe D )

Piesa ce trebuie poziţionată ( “de lucru” ) este de culoare X-Y, iar culoarea Y se află pe faţa D a cubului. Se observă că prin rotirea feţei D, culoarea X a piesei noastre se va poziţiona sub piesa de mijloc de aceeaşi culoare. Se va forma o linie verticală de aceeaşi culoare, X. Dacă faţa pe care apare această linie verticală este faţa F, atunci piesa de lucru ( de culoare X-Y, aflată în poziţia FD ) trebuie să ajungă fie în poziţia FR fie în poziţia FL, deci apar iar două situaţii:

  • piesa de lucru trebuie să ajungă în poziţia FR. Se execută următoarea secvenţă de permutări:

- D’ ( piesa trece din FD în LD )

- R’

- D ( se formează din nou linia verticală de culoare X; o piesă de pe faţa U este mutată în poziţia DRB – colţul din dreapta-spate a stratului de jos )

- R ( acum de pe faţa U lipsesc 2 piese de culoare albă, dacă alb era culoarea feţei U )

-

- F

- ( colţul “furat” de pe faţa U vine în poziţia DRF )

- F’ ( faţa U revine la starea iniţială, piesa noastră e la locul ei )

  • piesa de lucru trebuie să ajungă în poziţia FL. Se execută următoarea secvenţă de permutări ( e secvenţa de mai sus, oglindită ):

- D ( piesa trece din FD în RD )

- L

- D’ ( se formează din nou linia verticală de culoare X; o piesă de pe faţa U este mutată în poziţia DLB – colţul din stânga-spate a stratului de jos )

- L’ ( acum de pe faţa U lipsesc 2 piese de culoare albă, dacă aceasta era culoarea feţei U )

-

- F’

- ( colţul “furat” de pe faţa U vine în pozitia DRF )

- F ( faţa U revine la starea iniţială, piesa noastră e la locul ei )

2. piesa ce trebuie poziţionată se află pe stratul de mijloc, dar fie nu este în locul care trebuie, fie e în locul care trebuie, dar e orientată greşit.

Se va proceda ca mai sus ( aceeaşi secvenţă ) de mutări pentru a introduce o piesă de pe stratul de jos ( cu o faţă pe D ) în locul piesei noastre. După această permutare piesa noastră se poziţionează pe stratul de jos, de unde se poate aplica una din secvenţele de mutări descrise la cazul 1.

YouTube Preview Image

Pasul 3: Rezolvarea următoarelor 5 muchii

Poziţionarea cubului: Faţa U ( albă în cazul de faţă ) devine faţa D ( adică răstorni cubul ), iar colţul nerezolvat de pe faţa albă va fi adus în poziţia DLF.

Vei rezolva restul de 5 muchii, notate FU, RU, BU, LU şi FL.

1. rezolvarea muchiilor FU, RU şi BU

În cazul meu, galben este culoarea opusă albului. Deci, la mine, faţa U e galbenă.

Piesa de lucru este piesa aflată acum în poziţia FL. Ea va fi poziţionată într-unul din locurile FU, RU sau BU, iar în locul ei va fi adusă o altă muchie de pe stratul de sus.

Pentru a aduce piesa de lucru pe stratul de sus ai la dispoziţie două rotiri: F sau L’. Însă doar una din aceste rotiri aduce culoarea corectă pe faţa de sus ( în cazul de faţă, galben )!

Cum se procedează? Ştii unde trebuie pusă piesa de lucru ( FU, RU sau BU ). Ştii ce rotaţie trebuie să aplici pentru a o aduce în aşa fel încât culoarea corectă va fi orientată în sus ( F sau L’ ). Fixezi cu privirea piesa ce trebuie înlocuită ( din poziţia FU, RU sau BU ). Apar două variante:

  • trebuie aplicat F pentru piesa de lucru:. Se execută următoarea secvenţă de permutări:

- roteşti U până când piesa ce trebuie înlocuită ajunge în poziţia FU

- F şi piesa de lucru va ajunge în locul piesei ce trebuie înlocuite; faţa D se strică

- roteşti U pentru ca în poziţia FU să vină o nouă piesă

- F’ şi vei avea o nouă piesă de lucru ca să repeţi operaţiile de mai sus; faţa D se repară

- roteşti U ca să aliniezi muchiile deja rezolvate, în cazul în care este necesar

  • trebuie aplicat L’ pentru piesa de lucru:. Se execută următoarea secvenţă de permutări ( asemănator cu cazul de mai sus ):

- roteşti U până când piesa ce trebuie înlocuită ajunge în poziţia LU.

- L’ şi piesa de lucru va ajunge în locul piesei ce trebuie înlocuite; faţa D se strică

- roteşti U pentru ca în poziţia LU să vină o nouă piesă

- L şi vei avea o nouă piesă de lucru ca să repeţi operaţiile de mai sus; faţa D se repară

- roteşti U ca să aliniezi muchiile deja rezolvate, în cazul în care este necesar

Repeţi până toate cele 3 muchii sunt rezolvate.

2. rezolvarea muchiilor LU şi FL

Aici va trebui să memorezi câteva mutări.

Se disting 4 situaţii:

  • muchiile LU şi LF sunt aşezate şi orientate ok. Ai avut noroc, poţi trece mai departe!

    muchiile LU şi LF sunt aşezate la locul lor, dar sunt orientate greşit. Aplică: F U’ F’ U L’ U L U’

  • muchiile LU şi LF au aceeaşi culoare pe partea L, aceeaşi cu a feţei L. Aplică: U’ L’ U’ L U’ L’ U’ L U’

  • muchiile LU şi LF sunt aşezate greşit, iar culorile lor dinspre faţa L nu coincid. Aplică: F U F’ U F U F’ U²

YouTube Preview Image

Pasul 4: Aşezarea colţurilor

Este foarte posibil ca acum să existe colţuri care nu stau la locul lor. Acestea trebuie schimbate între ele până îşi găsesc locul.

Poziţionarea cubului: Cubul trebuie rotit în jurul axei sale verticale, până când colţul nerezolvat de pe faţa D ( albă ) ajunge în poziţia DRB. Există posibilitatea ca toată faţa D să se fi rezolvat de la sine complet. În acest caz alege un colţ de pe faţa D ca victimă.

La fiecare repetare ( maxim 3, te asigur ) vei poziţiona câte 2 colţuri. Pentru a poziţiona un colţ, acesta trebuie adus în poziţia UFL (upper-front-left; colţul stânga-faţă de pe stratul de sus ). Fixează cu privirea şi al doilea colţ ce trebuie orientat. Începem:

- roteşti U dacă e nevoie, până când colţul ce trebuie aşezat ajunge în poziţia UFL

- L D² L’ ( colţurile UFL şi DRB au făcut schimb între ele )

- roteşti U până când al doilea colţ ce trebuie aşezat ajunge în poziţia UFL

- L D² L’ ( colţurile UFL şi DRB au făcut schimb între ele )

- roteşti U până se aliniază muchiile de pe stratul superior

Dacă mai sunt de poziţionat colţuri, repetă pasul.

Ce se întâmplă de fapt? Se execută o permutare de genul acesta: primul colţ poziţionat se duce în locul celui de-al doilea. Cel de-al doilea colţ poziţionat se duce în poziţia DRB ( pe faţa albă în cazul nostru, în locul nerezolvat ). Iar colţul din poziţia DRB se duce îl locul primului colţ poziţionat.

YouTube Preview Image

Pasul 5: Orientarea colţurilor

Acum cubul are câteva colţuri care sunt la locurile lor, dar nu sunt orientate corect.

Poziţionarea cubului: Roteşte cubul în jurul axei sale până când un colţ ce trebuie orientat ajunge în poziţia UFL. Fixează cu privirea şi al doilea colţ ce trebuie orientat. Acesta trebuie să fie tot pe stratul superior. Dacă nu e acolo, ci în locaţia DRB, o rotaţie R’ aduce colţul respectiv pe stratul de sus.

Există două secvenţe de mutări pe care le vei folosi:

  • secvenţa 1: L D² L’ F’ D² F

  • secvenţa 2: F’ D² F L D² L’

  • Cum alegi secvenţa corectă pentru primul colţ? Observă culoarea de pe partea U a colţului UFL. Daca ea coincide cu cea de pe faţa L, atunci aplică secvenţa 2. Altfel, aplică secvenţa 1.

    Cubul acum arată foarte dezordonat. Nu te impacienta. Roteşte faţa U până când al doilea colţ de orientat ajunge în poziţia UFL. Aplică cealaltă secvenţă pentru el ( dacă pentru primul colţ ai aplicat secvenţa 1, pentru acesta aplică secvenţa 2 ).

    Roteşte U la loc, până se aliniază muchiile.

    Dacă mai sunt colţuri de orientat, repetă pasul. Dacă nu, ai terminat, cubul este rezolvat. Felicitări!

    Important de reţinut la acest pas este faptul că mereu vor fi orientate câte două colţuri. Dacă la primul colţ se aplică secvenţa 2, la al doilea se aplică secvenţa 1 şi invers. Aplicarea aceleaşi secvenţe pentru ambele colţuri strică toată configuraţia cubului.
    YouTube Preview Image

    IV. Bibliografie

    Soluţia mea se bazează pe soluţia a doua a lui Mark Jeays. Diferenţele sunt, în mare:

    • Pasul 1 de la mine coincide cu pasul 1 şi pasul 2 laolaltă de pe pagina lui Mark. Mi se pare mai simplu să construieşti direct o faţă, fără să foloseşti nişte algoritmi anume, de aceea am unificat paşii aceştia doi

    • Pasul 3 al lui Mark mi s-a părut prea complicat. Aşa că în pasul 2 de la mine ( corespunzător pasului 3 de la Mark ) am folosit o serie de mutări pe care le-am învăţat de la Cristian Mihuţescu, un coleg de servici din Drobeta Turnu Severin.

    • La ultimul pas am folosit un alt criteriu pentru găsirea secvenţei corecte pentru un colţ.

    V. Note de final

    Aştept cu interes impresii. Ce ţi-a plăcut? Ce nu ai înţeles? Cum aş putea formula mai bine o anumită idee pentru a fi mai uşor înţeleasă? Cunoşti o soluţie mai rapidă şi mai uşor de înteles? Etc…