SPOJE.NET

Technická dokumentace

Uživatelské nástroje

Nástroje pro tento web


Postranní lišta


Provozují SPOJE.NET.
Nejlepší internet v Praze.

howto:hw:disky

HardDisky

Plotnové

SSD

  • ve SMARTu je potreba sledovat
    • Wear leveling count
      • pocet prepisu nejstarsi bunky.
      • z toho se pocita normalizovana hodnota, ktera klesa od 100% u noveho disku k 0% pak uz je to otazka…
    • Media Wearout Indicator
      • Asi neco podobnyho, ale presne nevim… evidentne maj disky bud jedno nebo druhy
  • Znacky
    • aktualne mam velmi dobre skusenosti s Samsungom, Samsung SSD 840 PRO Series
    • od znamych mam este info ze intely 500 a vyssia rada su gut tiez

SW Aspekty

Rozdeleni disku

  • MBR (disky ⇐2TB)
    • fdisk, sfdisk, cfdisk
    • kopie rozdeleni a → b: sfdisk -d /dev/sda | sfdisk /dev/sdb
  • GPT (disky >2TB)
    • gdisk, sgdisk, cgdisk
    • kopie rozdeleni a → b: sgdisk -R=/dev/sdb /dev/sda; sgdisk -G /dev/sdb
    • jina varianta pokud predchozi nefunguje: a → b: sgdisk --backup=table /dev/sda; sgdisk --load-backup=table /dev/sdb

RAID pomoci mdadm

  • Partition type: Linux RAID autodetect 0xFD (0xFD00 u GPT)
  • mdadm --create /dev/md0 --level=1 --bitmap=internal --raid-devices=2 /dev/sda1 missing
  • mdadm --manage /dev/md0 --add /dev/sdb1
  • mdadm --manage /dev/md0 --fail /dev/sdb1
  • mdadm --manage /dev/md0 --remove /dev/sdb1
  • mdadm --grow --bitmap=internal /dev/md0
  • mdadm --grow --bitmap=none /dev/md0
  • mdadm --monitor --scan -1 -t (test sending of error e-mails)
  • echo "idle" > /sys/block/md0/md/sync_action (defer active resync)
  • sysctl -w dev.raid.speed_limit_min=500000000; sysctl -w dev.raid.speed_limit_max=500000000 (unthrottle raid sync)

Zvětšení RAID pole

Chceme zvětšit pole např. o velikosti 500G na nové disky o velikosti 1TB. Ideální je to dělat na degradovaném poli, protože tím získáme zároveň zálohu původního pole.

  • Vyměníme jeden z disků za větší. Po startu systému bude pole degradované. Na novém disku vytvoříme nové partice typu Linux RAID autodetect 0xFD (0xFD00 u GPT) po celé délce disku, případně jak potřebujeme, pokud raidů máme více. Bude samořejmě vetší než aktivní partice v raidu.
  • Novou partici přídáme do raidu - mdadm --manage /dev/md0 --add /dev/sdb1 a počkáme, až se pole syncne.
  • Nezapomeneme zapsat grub na nový disk, abychom po dokončení operace nastartovali system - tj. grub-install /dev/sdb!!!

následující operaci bude nutné provádět v jiném systému = např. nějaká live distribuce s podporou raidu, např. https://partedmagic.com/downloads/

  • Odebereme původní mensi disk a pridame druhý větší disk
  • Nastartujeme live distribuci a složíme pole. Bude nyní degradované s novým diskem.
  • Zadáme mdadm --grow /dev/md0 --size=max (zvětšíme pole na maximum velikosti partice)
  • Kontrola filesystemu - e2fsck -f /dev/md0
  • Zvětšíme filesystém - resize2fs -p /dev/md0
  • Upravíme partice na druhém disku a přidáme do raid pole viz. výše.
  • Nyní můžeme restartovat zpět do původního systému, synchronizace raidu bude potom pokračovat. V biosu bude nutné bootování přepnout na disk, který jsme měnili jako prvni. Po nastartování systému bude nutné také zapsat grub na druhý disk.

Pokud system nestartuje na degradovanem sw raidu

V Debianu Jessie se nám stalo, že po vyjmutí jednoho z disků začal debian startovat do ramdisku s chybou, že nemůže najít rootfs. Z nějakého důvodu nedošlo k automatickému startu degradovaného pole a proto bylo potřeba provést následující úpravu ramdisku:

  • Přidat skript
/etc/initramfs-tools/scripts/init-premount/mdadm-start
#/bin/sh
mdadm --run /dev/md*
exit 0
  • chmod 755 /etc/initramfs-tools/scripts/init-premount/mdadm-start
  • update-initramfs -u

Pripadnou chybu, ze /dev/md je adresarem muzete ignorovat.

LVM

  • Partition type: Linux LVM 0x8E
  • PV pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
    • overime pvs nebo pvdisplay
    • smazem pvremove …
  • VG vgcreate fileserver /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
    • overime vgs nebo vgdisplay
    • autodetekce vgscan
    • prejmenujem vgrename fileserver data
    • smazem vgremove fileserver
  • LV lvcreate –name backup –size 5G fileserver
    • overime lvs nebo lvdisplay
    • autodetekce lvscan
    • prejmenujem lvrename fileserver backup zalohy
    • smazem lvremove /dev/fileserver/backup
    • zvetsime
      • lvextend -L5.5G /dev/fileserver/backup
      • e2fsck -f /dev/fileserver/backup
      • resize2fs /dev/fileserver/backup
    • zmensime (opatrne!)
      • e2fsck -f /dev/fileserver/backup
      • resize2fs /dev/fileserver/backup 10485760
      • lvreduce -L5G /dev/fileserver/backup

ZFS

  • Rozdelime disky: typ partice BF(00) = Solaris Root
  • Vytvorime hlavni systemovy ZFS uloziste s mirrorem (neco jako VG u LVM)
    • zpool create tank mirror /dev/sda2 /dev/sdb2
    • zpool set listsnapshots=on tank
    • #zfs set recordsize=16k tank (nastavit recordsize na stejnou velikost jako pouziva db. aplikuje se jen pro nove soubory: default=128k, innodb-data=16k, innodb-log=128k, myisam=8k, postgresql=8k, sysbench=16k)
    • #zfs set dedup=on tank #deduplikace zere MOOC ramky!
    • #zfs set compression=on tank
    • zpool list a zpool status
    • zfs get all tank
  • V tomto ulozisti vytvorime ZFS pro LXC a pripojime
    • zfs create tank/containers
    • zfs set mountpoint=/var/lib/lxc tank/containers
    • mountpoint nesmi existovat, ZFS si automaticky adresar vytvori pri pripojeni a smaze pri odpojeni.
  • Vytvorime novej virtual s quotou (tohle uz dela LXC automaticky)
    • zfs create tank/containers/test
    • zfs set quota=10G tank/containers/test
  • Fsck: zpool scrub tank
  • Vsechno smazem (neni dobry napad): #zpool destroy tank
  • zpool status
    • zpool add tank log /dev/loop0
    • zpool add tank cache /dev/loop1
    • zpool remove tank /dev/loop0 /dev/loop1
    • zpool detach tank sdb2
    • zpool attach tank sda2 sdb2

NILFS2

  • mkfs.nilfs2 -L LABEL /dev/sdx1
  • lscp /dev/sdx1 Vypiseme checkpointy (historii)
  • chcp ss /dev/sdx1 94 Nastavime checkpoint #94 jako snapshot (= nebude smazan cleanerem a pujde pripojit)
  • mount -o ro,cp=94 /dev/sdx1 /mnt/ Pripojime readonly snapshot #94
  • chcp cp /dev/sdx1 94 Po odpojeni zrusime snapshot #94 (udelame z nej zpatky checkpoint)

SATA HotSwap

  • readlink /sys/block/sda (zjisti na jaky sbernici je disk sda)
  • echo 1 > /sys/block/sda/device/delete (odpoji disk sda)
  • echo "- - -" > /sys/class/scsi_host/host0/scan (najde disky na sbernici host0)

Migrace ext3 na ext4

Minimální požadavky: kernel 2.6.30; grub 1.96+20090808; e2fsprogs 1.41.6; mount 2.16

  • umount /dev/md5
  • fsck.ext3 -ftv /dev/md5
  • tune2fs -O extents,uninit_bg,dir_index /dev/md5
  • fsck.ext4 -yfDtv /dev/md5

Podrobnosti na http://www.debian-administration.org/article/643/Migrating_a_live_system_from_ext3_to_ext4_filesystem

Poznámky

  • Test rychlosti
    • hdparm --direct -t /dev/sd?
  • Číslo ATA portu v dmesgu - převod na device
    • ata=4; ls -l /sys/block/sd* | grep $(grep $ata /sys/class/scsi_host/host*/unique_id | awk -F'/' '{print $5}')
  • Souhrn co zapisuje na disk
    • iotop -aoP
  • Kdo pouziva mountpoint
    • fuser -mv /mnt/point
  • Záchrana dat
howto/hw/disky.txt · Poslední úprava: 2017/02/24 21:25 autor: harvie