Zajímavé odkazy
- Linux
- CZfree
- OpenSource SW
- HomeOffice
- Ostatní
- Zajímavosti
Provozují SPOJE.NET.
Nejlepší internet v Praze.
sfdisk -d /dev/sda | sfdisk /dev/sdb
sgdisk -R=/dev/sdb /dev/sda; sgdisk -G /dev/sdb
sgdisk --backup=table /dev/sda; sgdisk --load-backup=table /dev/sdb
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 /dev/md2 --fail /dev/sdc3 --remove /dev/sdc3
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)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.
mdadm --manage /dev/md0 --add /dev/sdb1
a počkáme, až se pole syncne.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/
mdadm --grow /dev/md0 --size=max
(zvětšíme pole na maximum velikosti partice)e2fsck -f /dev/md0
resize2fs -p /dev/md0
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:
#/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.
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
pvs
nebo pvdisplay
pvremove …
vgcreate fileserver /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
vgs
nebo vgdisplay
vgscan
vgrename fileserver data
vgremove fileserver
lvcreate –name backup –size 5G fileserver
lvs
nebo lvdisplay
lvscan
lvrename fileserver backup zalohy
lvremove /dev/fileserver/backup
pvresize /dev/sdb1
roztahne PV pres celou zvetsenou particilvextend -L5.5G /dev/fileserver/backup
lvextend -L+5.5G /dev/fileserver/backup
zvetsim o dalsich 5.5Ge2fsck -f /dev/fileserver/backup
resize2fs /dev/fileserver/backup
xfs_growfs /mnt
zvetsi xfs pripojene do adresare /mnte2fsck -f /dev/fileserver/backup
resize2fs /dev/fileserver/backup 10485760
lvreduce -L5G /dev/fileserver/backup
lvcreate -L 100G -n data pve
lvconvert –type thin-pool pve/data
lvcreate -n thin1 -V 1T –thinpool data pve
lvs -a
lvextend -L+256G /dev/vg/thinpool
- zmensovat nejdelvextend –poolmetadatasize +100M vg/thinpool
lvresize –size +<size[\M,G,T]> –poolmetadatasize +<size[\M,G]> <VG>/<LVThin_pool>
lvconvert –thinpool <VG>/<THIN_POOL_LV> –poolmetadata <NOVY_LV_METADATA>
lvconvert –repair <VG>/<LVThin_pool>
https://www.redhat.com/archives/linux-lvm/2016-January/msg00010.html So if you feel the time spend on thin_checking doesn't pay-off - you can try to add option '–skip-mappings' (see lvm.conf field global/thin_check_options)
... thin_check_options = [ "--skip-mappings" ] ...
Zvetsit zurnal:
tune2fs -O ^has_journal /dev/hdXX tune2fs -l /dev/hdXX tune2fs -J size=128 /dev/hdXX
zpool create tank mirror /dev/sda /dev/sdb
-o ashift=12
, kde hodnota ashift = exponent 2 pro zarovnani na sektory. 2^9=512B sektory, 2^12=4096B sektory,… Nejde to menit po naformatovani, nicmene default by mel bejt vic nez rozumny reseni, takze bych se spis vyhnul rejpani se v tomhle/dev/disk/by-id/wwn-NECONECO
kvůli spolehlivější detekci#zpool set listsnapshots=on tank
neni potreba, tyka se jen vypisu "zfs list", jinak se snapshoty daj normalne i bez toho vypsat ls -la /tank/.zfs/snapshot/
#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 inherit recordsize tank
(nastavit recordsize na vychozi hodnotu)zfs set atime=off tank
(vypne atime)#zfs set logbias=throughput tank
(vypne dvoji zapis dat pres SLOG, nejsem si jisty, ze je to vzdy dobre pro vykon, zalezi na konfiguraci SLOGu)zfs set compression=on tank
(default kompresni algoritmus by mel bejt vcelku rychlej a napr. eliminuje dlouhy retezce nul)#zfs set dedup=on tank
#deduplikace zere MOOC ramky = asi 8GB ram na 1TB dat! pomoci prikazu zdb -S tank
lze zjistit jestli se deduplikace vyplati (pokud to vypise dedup=2.00
nebo vic, tak se vyplati. Pokud vynasobime total allocated blocks cislem 320
, vyjde nam potrebna ramka)zpool list
a zpool status
zfs get all tank
zfs create tank/vps
zfs set mountpoint=/var/lib/lxc tank/vps
zfs create tank/vps/test
zfs set quota=10G tank/vps/test
zpool scrub tank
(prubeh sledujem v zpool status
)#zpool destroy tank
zpool status
Vypise vsechny disky v poolu, jestli nedochazi k datovym chybam, jestli probiha scrub, resilver, atd…zpool add tank log /dev/loop0
zpool add tank cache /dev/loop1
zpool iostat -v
vypise obsazeni logu a cache (a vsech jednotek v poolu)zpool remove tank /dev/loop0 /dev/loop1
zpool detach tank sdb2
zpool attach tank sda2 sdb2
zpool set autoexpand=on tank
zfs create -V 5gb tank/vol
(vytvori jednotku /dev/zvol/tank/vol, taky znamy jako /dev/zd0, parametr -s
udela zvol bez rezervace diskovyho prostoru v poolu = thin-provisioning)zfs list -t volume
vypiseme si zvoly (bez -t volume
to vypise vse v poolu)zfs destroy tank/vol
zpool import
nebo zpool import -a
pro exportnutyzfs mount -a
ztest -f /tmp -VV
vytvori v /tmp blockfily s testovacim ZFS a spusti na nem unit testy (musi tam byt dost mista).-T 300
Je dobry omezit kolik RAM muze sezrat ARC (defaultne si bere 1/2 veskery ramky na Linuxu a 3/4 na Illumosu):
#echo '(1024^3)*10' | bc #update-initramfs -u -k all options zfs zfs_arc_max=10737418240
zfs snapshot tank/vps/subvol-300-disk-1@mujsnapshot
su -c "zfs send tank/vps/subvol-300-disk-1@mujsnapshot" | pv | ssh strojcilovy sudo zfs recv -F tank/vps/subvol-300-disk-1
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 #94chcp cp /dev/sdx1 94
Po odpojeni zrusime snapshot #94 (udelame z nej zpatky checkpoint)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)
Pokud má stroj modré identifikační led diody u jednotlivých šuplíčků disku, je možné je rozsvítit nebo zhasnout následujícím příkazem z balíčku ledmon
:
ledctl locate=/dev/sda
ledctl locate_off=/dev/sda
Je možné použít i hierarchické označení disku (např. /dev/disk/by-id/[drive-id]
, atd…)
Precti si o tom neco nez to zacnes pouzivat!
libata.ignore_hpa=1
cat /sys/module/libata/parameters/ignore_hpa
hdparm -N /dev/sd?
hdparm -N XXX /dev/sdx
(HPA se zrusi nastavenim hodnoty XXX na max co disk umi)pXXX
, jde to udelat jen jednou za power-cycle.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
Migroval jsem uspesne 1TB HDD na 960GB SSD. Delat to z windows je nemozne (nezkousel jsem placene windows nastroje tretich stran, ale vsechny freeware nastroje i programy dodavane k SSD selhaly, primo ve windows neni nic co by to zvladlo). Na Linuxu to jde, ale je to trochu makačka. Muj postup byl nasledujici:
chkdsk /f
, nabídne to naplanovani opravy FS pri dalsim rebootu, rebootnout a zcekovat. Linux tohle neumi.cfdisku
si otevru stary a novy disk. Vsechny oddily vytvorim stejne na GPT(!), ale ten nejvetsi zmensim aby se to tam vse veslo. Velikosti zadavam v sektorech, stejne jako na puvodnim disku. Pouziva se k tomu suffix "S", napr.: 123456789S
. Bohuzel to neumim naskriptovat, takze jsem to delal docela rucne:sgdisk
nastavim GUID disku (-U
) i jednotlivych partici (-u
) a jejich atributy (-A
) tak, aby byly stejne jako na puvodnim disku. Jinak to nebude bootovat!!! Je to mravenci prace, dela se to po jednom, detaily v man sgdisk
. Jake GUID ma puvodni disk jsem vycital z cfdisku.ntfsresize –size 850G /dev/sda2
. Musi tam byt volne misto aby to slo. Toto selze, pokud jsi na zacatku neudelal chkdsk /f
chkdsk /f
vcetne rebootu jako predtim, aby se disk opravil. pak se vratim do linuxu.dd
prekopiruju obsah jednotlivych partic krome te nejvetsi systemove.ntfsclone
, napr.: ntfsclone --overwrite /dev/cil /dev/zdroj
. Funguje to jako dd, ale nekopiruje to bloky nealokovane fs, takze na poloprazdnem fs to usetri pulku casu. Necham bezet pres noc.sync
chkdsk /f
+reboot, vratim se do linuxuntfsresize /dev/sdb2
na systemovy oddil, abych filesystem roztahl opet pres celou novou particichkdsk /f
+reboot, windows by mely v poradku bootovathdparm --direct -t /dev/sd?
ata=4; ls -l /sys/block/sd* | grep $(grep $ata /sys/class/scsi_host/host*/unique_id | awk -F'/' '{print $5}')
iotop -aoP
fuser -mv /mnt/point