Archiwa kategorii: RAID / Storage

Podmiana dysku zfs proxmox

# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
rpool 7.27T 13.0G 7.25T – – 0% 0% 1.00x DEGRADED –
# zpool status -v
pool: rpool
state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Replace the faulted device, or use ‚zpool clear’ to mark the device
repaired.
scan: scrub repaired 704K in 0 days 00:07:18 with 0 errors on Sun Mar 8 00:31:47 2020
config:

NAME                                                STATE     READ WRITE CKSUM
rpool                                               DEGRADED     0     0     0
  raidz1-0                                          DEGRADED     0     0     0
    ata-ST2000DM001-1ER164_W4Z0E981-part3           ONLINE       0     0     0
    ata-WDC_WD20EARS-00MVWB0_WD-WCAZA3946000-part3  FAULTED    178     0     0  too many errors
    ata-ST2000DM001-9YN164_Z1E1DQEV-part3           ONLINE       0     0     0
    ata-ST2000DM001-9YN164_W24055XV-part3           ONLINE       0     0     0

Po włożeniu nowego dysku kopiujemy tablicę partycji:

sgdisk --replicate=/dev/sdb /dev/sda

(z sda do sdb)

Randomizujemy UIDy:

# sgdisk --randomize-guids /dev/sdb

#zpool replace rpool ata-WDC_WD20EARS-00MVWB0_WD-WCAZA3946000-part3 sdb3

i już:

zpool status -v

pool: rpool
state: ONLINE
scan: resilvered 2.42G in 0 days 00:01:58 with 0 errors on Wed Mar 18 16:09:50 2020
config:

NAME                                       STATE     READ WRITE CKSUM
rpool                                      ONLINE       0     0     0
  raidz1-0                                 ONLINE       0     0     0
    ata-ST2000DM001-1ER164_W4Z0E981-part3  ONLINE       0     0     0
    sdb3                                   ONLINE       0     0     0
    ata-ST2000DM001-9YN164_Z1E1DQEV-part3  ONLINE       0     0     0
    ata-ST2000DM001-9YN164_W24055XV-part3  ONLINE       0     0     0

errors: No known data errors

Jeśli nie da się z jakiegoś powodu zrobić replace (np. busy), można zrobić zpool detach (usunięcie) i zpool attach (dodanie jako mirror).

Na koniec jeszcze (dopiero gdy zakończy się synchronizacja i dysk będzie ONLINE) :

grub-install /dev/sdb

W proxmox od 6.4:

# proxmox-boot-tool status
# proxmox-boot-tool format /dev/sda2

# proxmox-boot-tool init /dev/sda2
# proxmox-boot-tool refresh

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’).

IBM HS21 raid1 monitoring mpt-status Debian

# apt-get install mpt-status

# modprobe mptctl
# mpt-status
ioc0 vol_id 0 type IM, 2 phy, 67 GB, state OPTIMAL, flags ENABLED
ioc0 phy 1 scsi_id 4 IBM-ESXS MAY2073RC T107, 68 GB, state ONLINE, flags NONE
ioc0 phy 0 scsi_id 1 IBM-ESXS MAY2073RC T107, 68 GB, state ONLINE, flags NONE

# echo 'MAILTO="moj@adres.com"' >>/etc/default/mpt-statusd
# /etc/init.d/mpt-statusd restart

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.