Linux Tipps und Tricks

From Lolly's Wiki
Revision as of 16:21, 25 November 2021 by Lollypop (talk | contribs) (Text replacement - "<source" to "<syntaxhighlight")
Jump to navigationJump to search

Hard reboot

This is the hard way to kick your kernel into void. No filesystem sync is done, just and ugly fast direkt reboot! You should never do this... <syntaxhighlight lang=bash>

  1. echo 1 > /proc/sys/kernel/sysrq
  2. echo b > /proc/sysrq-trigger

</source> First line enables sysrq, second line sends the reboot request.

For more look at kernel.org!

Scan all SCSI buses for new devices

<syntaxhighlight lang=bash>

  1. for i in /sys/class/scsi_host/host*/scan ; do echo "- - -" > $i ; done

</source>

Scan all FC ports for new devices

!!!Be CAREFUL!!! This command line issues a Loop Initialization Protocol (LIP). This is a bus reset hat means that removed devices in the fabric will disappear and new ones will appear. !!!BUT the connection might get lost for a moment!!! The softer way is to scan the SCSI buses. <syntaxhighlight lang=bash>

  1. for i in /sys/class/fc_host/*/issue_lip ; do echo "1" > $i ; done

</source>

Rescan a device (for example after changing a VMDK size)

<syntaxhighlight lang=bash>

  1. device=sda
  2. echo 1 > /sys/class/block/${device}/device/rescan

</source>

This is for device sda after changing the VMDK from 20GB to 25GB: <syntaxhighlight lang=bash>

  1. device=sda
  2. echo $[ 512 * $(cat /sys/block/${device}/size) / 1024 ** 3 ]

20

  1. echo 1 > /sys/class/block/${device}/device/rescan
  2. echo $[ 512 * $(cat /sys/block/${device}/size) / 1024 ** 3 ]

25

  1. parted /dev/${device} "print free"

Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 10485760 blocks) or continue with the current setting? Fix/Ignore? F Model: VMware Virtual disk (scsi) Disk /dev/sda: 26,8GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:

Number Start End Size File system Name Flags

2      17,4kB  1049kB  1031kB                     bios_grub
1      1049kB  21,5GB  21,5GB  zfs
       21,5GB  26,8GB  5369MB  Free Space

</source>

I want to put the free space into partition 1 and resize the rpool: <syntaxhighlight lang=bash>

  1. parted /dev/${device} "resizepart 1 -1"
  2. parted /dev/${device} "print free"

Model: VMware Virtual disk (scsi) Disk /dev/sda: 26,8GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:

Number Start End Size File system Name Flags

2      17,4kB  1049kB  1031kB                     bios_grub
1      1049kB  26,8GB  26,8GB  zfs
       26,8GB  26,8GB  983kB   Free Space
  1. zpool list rpool

NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT rpool 19,9G 1,68G 18,2G - 14% 8% 1.00x ONLINE -

  1. zpool set autoexpand=on rpool
  2. zpool status rpool
 pool: rpool
state: ONLINE
 scan: none requested

config:

NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 sda1 ONLINE 0 0 0

  1. zpool online rpool sda1
  2. zpool list rpool

NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT rpool 24,9G 1,69G 23,2G - 11% 6% 1.00x ONLINE -

  1. zpool set autoexpand=off rpool

</source> Done.

Remove a SCSI-device

Let us say we want to remove /dev/sdb.

Be careful! Like in this example the lowest SCSI-ID is not always the lowest device name! Check it with lsscsi from the Ubuntu package lsscsi: <syntaxhighlight lang=bash>

  1. lsscsi

[2:0:0:0] cd/dvd NECVMWar VMware SATA CD00 1.00 /dev/sr0 [32:0:0:0] disk VMware Virtual disk 1.0 /dev/sdb [32:0:1:0] disk VMware Virtual disk 1.0 /dev/sda </source>

Then check it is not longer in use:

  1. mount
  2. pvs
  3. zpool status
  4. etc.

Then delete it: <syntaxhighlight lang=bash>

  1. echo 1 > /sys/bus/scsi/drivers/sd/32\:0\:0\:0/delete

</source> The 32:0:0:0 is the number reported from the lsscsi above.

Et voila: <syntaxhighlight lang=bash>

  1. lsscsi

[2:0:0:0] cd/dvd NECVMWar VMware SATA CD00 1.00 /dev/sr0 [32:0:1:0] disk VMware Virtual disk 1.0 /dev/sda </source>

Copy a GPT partition table

Copy partition table of sdX to sdY: <syntaxhighlight lang=bash>

  1. sgdisk /dev/sdX --replicate=/dev/sdY
  2. sgdisk --randomize-guids /dev/sdY

</source>

Or with: <syntaxhighlight lang=bash>

  1. sgdisk --backup=sdX.table /dev/sdX
  2. sgdisk --load-backup=sdX.table /dev/sdY
  3. sgdisk -G /dev/sdY

</source>

       -R, --replicate=second_device_filename
              Replicate  the  main device's partition table on the specified second device.  Note that the replicated partition table is an exact
              copy, including all GUIDs; if the device should have its own unique GUIDs, you should use the -G option on the new disk.

       -G, --randomize-guids
              Randomize the disk's GUID and all partitions' unique GUIDs (but not their partition type code GUIDs). This  function  may  be  used
              after cloning a disk in order to render all GUIDs once again unique.

Resize a GPT partition

The partition was resized in VMWare from ~6GB to ~50GB.

In the VM I did Remove a SCSI-device for the resized device and then Scan all SCSI buses for new devices after that parted saw the new size.

Correct the GPT partition table

<syntaxhighlight lang=bash> root@mariadb:~# parted /dev/sdb GNU Parted 3.2 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 92274688 blocks) or continue with the current setting? Fix/Ignore? F <-- ! choose F Model: VMware Virtual disk (scsi) Disk /dev/sdb: 53,7GB <-- ! the new size is reported now Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:

Number Start End Size File system Name Flags

1      1049kB  6442MB  6441MB  zfs

</source>

Resize the partition

<syntaxhighlight lang=bash> root@mariadb:~# parted /dev/sdb GNU Parted 3.2 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Model: VMware Virtual disk (scsi) Disk /dev/sdb: 53,7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:

Number Start End Size File system Name Flags

1      1049kB  6442MB  6441MB  zfs

(parted) resizepart 1 End? [6442MB]? 53,7GB <-- ! Put new size here (parted) p <-- ! Control if it worked Model: VMware Virtual disk (scsi) Disk /dev/sdb: 53,7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags:

Number Start End Size File system Name Flags

1      1049kB  53,7GB  53,7GB  zfs

(parted) q Information: You may need to update /etc/fstab. </source>

Optional: Resize the ZPool in it

Check the actual values: <syntaxhighlight lang=bash> root@mariadb:~# zpool list MYSQL-DATA NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT MYSQL-DATA 5,97G 994M 5,00G 44G 47% 16% 1.00x ONLINE - root@mariadb:~# zpool get autoexpand MYSQL-DATA NAME PROPERTY VALUE SOURCE MYSQL-DATA autoexpand off default </source>

Now inform ZPool to grow to the end of the partition. Set autoexpand to on: <syntaxhighlight lang=bash> root@mariadb:~# zpool set autoexpand=on MYSQL-DATA </source>

Send an online to the already onlined device to force a recheck in the ZPool to resize it without export/import: <syntaxhighlight lang=bash> root@mariadb:~# zpool online MYSQL-DATA /dev/sdb1 </source>

Et voila: <syntaxhighlight lang=bash> root@mariadb:~# zpool list MYSQL-DATA NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT MYSQL-DATA 50,0G 994M 49,0G - 5% 1% 1.00x ONLINE - rpool 19,9G 3,36G 16,5G - 19% 16% 1.00x ONLINE - </source>

Set autoexpand to off if you want prevent to autoexpand if partition grows: <syntaxhighlight lang=bash> root@mariadb:~# zpool set autoexpand=off MYSQL-DATA </source>

Optional: Resize the LVM physical volume

Check the values: <syntaxhighlight lang=bash>

  1. parted /dev/${device} "print free"

Model: VMware Virtual disk (scsi) Disk /dev/sda: 48.3GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags:

Number Start End Size Type File system Flags

       32.3kB  1049kB  1016kB           Free Space
1      1049kB  48.3GB  48.3GB  primary               boot
       48.3GB  48.3GB  999kB            Free Space
  1. pvs
 PV         VG      Fmt  Attr PSize   PFree
 /dev/sda1  vg-root lvm2 a--  <35.00g    0 

</source> OK, we need to resize the physical volume <syntaxhighlight lang=bash>

  1. pvresize /dev/sda1
 Physical volume "/dev/sda1" changed
 1 physical volume(s) resized / 0 physical volume(s) not resized

</source> Check the values: <syntaxhighlight lang=bash>

  1. pvs
 PV         VG      Fmt  Attr PSize   PFree 
 /dev/sda1  vg-root lvm2 a--  <45.00g 10.00g

</source> Done.