Archiwa kategorii: RAID / Storage

Jak podmontować na hoscie partycję z guesta?

Jest udostępniony gościowi LVM, na którym jest tablica partycji i dopiero partycje, ale widzieć to na hoscie trzeba:

np. jest /dev/pve/vm-101-disk-1

# kpartx -av /dev/pve/vm-101-disk-1
add map pve-vm–101–disk–1p1 (253:6): 0 19531250 linear /dev/pve/vm-101-disk-1 2048
add map pve-vm–101–disk–1p2 (253:7): 0 924185102 linear /dev/pve/vm-101-disk-1 19533298

powoduje utworzenie:
/dev/mapper/pve-vm–101–disk–1p2
/dev/mapper/pve-vm–101–disk–1p1

które można już normalnie podmontować:

mount /dev/mapper/pve-vm–101–disk–1p2 /mnt

Po użyciu należy je zdjąć:
kpartx -d /dev/pve/vm-101-disk-1

Kopia partycji LVM

Aby wykonać pełną kopię partycji, należy zrobić snapshot oraz go skopiować.

Sprawdzenie wielkości:

# lvdisplay /dev/rcor/vegaroot |grep Cur
Current LE 12800

Utworzenie partycji pod kopię oraz snapshotu:

# lvcreate -l 12800 -n vegaroot_kopia /dev/rcor
# lvcreate -l 12800 -s /dev/rcor/vegaroot -n lv_vegaroot_snap

Wykonanie kopie ze snapshotu:

#time dd if=/dev/rcor/vegaroot_snap of=/dev/rcor/vegaroot_kopia
104857600+0 przeczytanych recordów
104857600+0 zapisanych recordów
skopiowane 53687091200 bajtów (54 GB), 3183,57 s, 16,9 MB/s

real 53m3.730s
user 1m37.562s
sys 15m19.345s

Usunięcie snapshotu:

#lvremove /dev/rcor/vegaroot_snap
Do you really want to remove active logical volume vegaroot_snap? [y/n]: y
Logical volume „vegaroot_snap” successfully removed

IBM RAID firmware upgrade (x3650, HS21 i inne)

Jeśli RAID nie widzi dużych dysków (np. 2TB) to trzeba uaktualnić firmware sterownika RAID. Firmware jest do pobrania ze strony ibm.com w postaci 4 dyskietek 1.44MB. Trzeba wszystkie zgrać do wspólnego obrazu na pamięć USB razem np. z FreeDOSem.

dd if=FreeDOS-1.0-USB-Boot.img of=/dev/sdb
partprobe
mount /dev/sdb1 /mnt

podmontowujemy po kolej dyskietki i kopiujemy zawartość:
mount -o loop ibm_fw_aacraid-8k-1_5.2.0.15407_anyos_i386.img /mnt2
cp /mnt2/a* /mnt
umount /mnt2

Na koniec odmontowujemy pamięć USB
umount /mnt
sync

Docelowo w katalogu mamy:
-rwxr-xr-x 1 root root 193114 2007-09-21 afu.exe
-rwxr-xr-x 1 root root 643264 2011-08-04 AS481001.ufi
-rwxr-xr-x 1 root root 1454080 2011-08-04 as481002.ufi
-rwxr-xr-x 1 root root 1454080 2011-08-04 as481003.ufi
-rwxr-xr-x 1 root root 643264 2011-08-04 as481004.ufi
-rwxr-xr-x 1 root root 66945 2006-08-29 command.com
-rwxr-xr-x 1 root root 44889 2006-08-20 kernel.sys

Wkładamy pamięć USB do serwera, startuje nam FreeDOS:

FreeDOS kernel version 1.1.37w (Build 2037w-UNSTABLE, Aug 19 2006)
Kernel compatibility 7.10 – WATCOMC – FAT32 support

Z poziomu dosa musimy uruchomić program tak:
C:\>AFU UPDATE AS4810 /CALL

Po instalacji nowego firmware należy zrestartować serwer.

smartctl Seagate 7200 2TB

Dysk Seagate 7200 2TB, wysokie: Raw_Read_Error_Rate i Seek_Error_Rate, czy to normalne? niektóre źródła mówią, że te dyski seagate tak mają, że po wyłączeniu dysku się zerują, ale nie będę bez potrzeby resetował serwera…

# smartctl –all /dev/sda
smartctl version 5.38 [i686-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model: ST2000DM001-9YN164
Serial Number: W24055XV
Firmware Version: CC46
User Capacity: 2,000,397,852,160 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Tue Apr 24 15:59:11 2012 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 600) seconds.
Offline data collection
capabilities: (0x73) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
No Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 255) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x3085) SCT Status supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 119 100 006 Pre-fail Always - 210508312
3 Spin_Up_Time 0x0003 097 097 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 3
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 076 060 030 Pre-fail Always - 46873254
9 Power_On_Hours 0x0032 098 098 000 Old_age Always - 1797
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 3
183 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
184 Unknown_Attribute 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Unknown_Attribute 0x0032 100 099 000 Old_age Always - 4295032833
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 061 060 045 Old_age Always - 39 (Lifetime Min/Max 30/40)
191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 2
193 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 21
194 Temperature_Celsius 0x0022 039 040 000 Old_age Always - 39 (0 20 0 0)
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 111042084472581
241 Unknown_Attribute 0x0000 100 253 000 Old_age Offline - 1590984678925
242 Unknown_Attribute 0x0000 100 253 000 Old_age Offline - 5052905179003

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Software raid check – to nic złego

W logu nagle pojawiło się:

Mar 4 00:57:01 host kernel: [35531509.480976] md: data-check of RAID array md0
Mar 4 00:57:01 host kernel: [35531509.480979] md: minimum _guaranteed_ speed: 1000 KB/sec/disk.
Mar 4 00:57:01 host kernel: [35531509.480982] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for
Mar 4 00:57:01 host kernel: [35531509.480987] md: using 128k window, over a total of 1465136400 blocks.

(nie bez powodu, bo w cronie siedzi w /etc/cron.d/mdadm:
57 0 * * 0 root [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ] && /usr/share/mdadm/checkarray –cron –all –quiet

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda2[0] sdb2[1]
1465136400 blocks super 1.2 [2/2] [UU]
[=>……………….] check = 9.9% (146362880/1465136400) finish=1200.6min speed=18305K/sec

(to nie odbudowa raid, tylko sprawdzenie, zamiast ‚rebuild’ jest tam ‚check’).

Macierz read-only md1 : active (auto-read-only) raid1

Czasem po reboocie, zmianie płyty lub czymś innym macierz wstaje w trybie read-only:
# cat /proc/mdstat
Personalities : [raid1]
md1 : active (auto-read-only) raid1 sda2[0] sdb2[1]
449321848 blocks super 1.2 [2/2] [UU]
resync=PENDING

i wymaga ręcznej ingerencji. Trzeba wydać komendę:

# mdadm –readwrite /dev/md1

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
449321848 blocks super 1.2 [2/2] [UU]
[>………………..] resync = 3.6% (16378048/449321848) finish=43.1min speed=167264K/sec

Podmiana dysków na większe – programowy raid1 – migracja

Mamy macierz raid1 na dwóch dyskach. Chcemy wymienić bezpoleśnie te dyski na większe, powiększając partycję.
Wyciągamy jeden z dysków, wkładamy w jego miejsce większy. Bootujemy system ze starego. Mamy:

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda3[0]
292977280 blocks [2/1] [U_]

md0 : active raid1 sda2[0]
29294400 blocks [2/1] [U_]

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0004ccb1

Device Boot Start End Blocks Id System
/dev/sda1 1 123 987966 82 Linux swap / Solaris
/dev/sda2 124 3771 29302560 fd Linux raid autodetect
/dev/sda3 3772 40245 292977405 fd Linux raid autodetect

Na nowym dysku tworzymy partycje. Takie same, poza ostatnią, która ma być większa:
Disk identifier: 0x0416460b

Device Boot Start End Blocks Id System
/dev/sdb1 1 123 987966 83 Linux
/dev/sdb2 124 3771 29302560 fd Linux raid autodetect
/dev/sdb3 3772 72949 555664253 fd Linux raid autodetect

Dodajemy partycje na nowym dysku do macierzy:
# mdadm –manage –add /dev/md0 /dev/sdb2

md0 : active raid1 sdb2[2] sda2[0]
29294400 blocks [2/1] [U_]
[=============>…….] recovery = 69.4% (20351232/29294400) finish=2.0min speed=73232K/sec

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda3[0]
292977280 blocks [2/1] [U_]

md0 : active raid1 sdb2[1] sda2[0]
29294400 blocks [2/2] [UU]

unused devices:

# mdadm –manage –add /dev/md1 /dev/sdb3
mdadm: added /dev/sdb3

Czekamy na odbudowanie macierzy:

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[2] sda3[0]
292977280 blocks [2/1] [U_]
[>………………..] recovery = 0.1% (296704/292977280) finish=49.3min speed=98901K/sec

md0 : active raid1 sdb2[1] sda2[0]
29294400 blocks [2/2] [UU]

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[2] sda3[0]
292977280 blocks [2/1] [U_]
[====>…………….] recovery = 20.6% (60453248/292977280) finish=44.1min speed=87699K/sec

md0 : active raid1 sdb2[1] sda2[0]
29294400 blocks [2/2] [UU]

unused devices:

Teraz jeszcze zapisać GRUB na nowym dysku:
# grub-install /dev/sdb
# reboot
Wyciągamy drugi mały dysk, zamieniamy na pierwszy, bootujemy z drugiego.
Mamy teraz:
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[0] sda3[1]
292977280 blocks [2/2] [UU]

md0 : active raid1 sdb2[0] sda2[1]
29294400 blocks [2/2] [UU]
Zwiększamy macierz do wielkości partycji:
# mdadm –grow /dev/md1 –size=max
Odbudowuje się:
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[0] sda3[1]
555664128 blocks [2/2] [UU]
[==========>……….] resync = 52.7% (293091200/555664128) finish=115.1min speed=37973K/sec

md0 : active raid1 sdb2[0] sda2[1]
29294400 blocks [2/2] [UU]
Gdy skończy, powiększamy system plików. Do tego nie trzeba nawet odmontowywać partycji.
Jest:
# df
/dev/md1 310411136 271870964 22777468 93% /home
Robimy:
# resize2fs /dev/md1
resize2fs 1.41.3 (12-Oct-2008)
System plików /dev/md1 jest zamontowany pod /home; wymagana zmiana rozmiaru w locie
old desc_blocks = 18, new_desc_blocks = 34
Wykonywanie zmiany rozmiaru w locie /dev/md1 na 138916032 (4k) bloków.
System plików na /dev/md1 ma teraz 138916032 bloków.

Patrzymy jak rośnie wielkość partycji:
/dev/md1 321248412 271870896 33064444 90% /home
/dev/md1 342535984 271870828 53271004 84% /home
/dev/md1 450521784 271874336 155769272 64% /home
Po kilku minutach:
/dev/md1 546944168 271873912 247295240 53% /home
Gotowe.

Zmiana wielkości partycji LVM

(system plików ext4, opcja -r od razu uruchamia resize2fs)
# lvresize -L +1G -r /dev/bla/waroot
fsck z pakietu util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/mapper/bla-waroot: czysty, 11/1310720 plików, 126289/5242880 bloków
Extending logical volume waroot to 21,00 GiB
Logical volume waroot successfully resized
resize2fs 1.41.12 (17-May-2010)
Proszę uruchomić najpierw ‚e2fsck -f /dev/dm-6’.
fsadm: Resize ext4 failed
fsadm failed: 1

# e2fsck -f /dev/dm-6
e2fsck 1.41.12 (17-May-2010)
Przebieg 1: Sprawdzanie i-węzłów, bloków i rozmiarów
Przebieg 2: Sprawdzanie struktury katalogów
Przebieg 3: Sprawdzanie łączności katalogów
Przebieg 4: Sprawdzanie liczników odwołań
Przebieg 5: Sprawdzanie sumarycznych informacji o grupach
/dev/dm-6: 11/1310720 plików (0.0% nieciągłych), 126289/5242880 bloków

# resize2fs /dev/bla/waroot
resize2fs 1.41.12 (17-May-2010)
Zmiana rozmiaru systemu plików /dev/bla/waroot na 5505024 (4k) bloków.
System plików na /dev/bla/waroot ma teraz 5505024 bloków.