Bash Script
Bash Script

Selamlar uzunca bir zaman önce debian makina üzerinde disk genişletme ihtiyacım oldu.
Makina VM üzerinde olduğundan ve Windowslarda olduğu gibi atanmış olan disk genişletildiği zaman disk otomatik resize olmadığı için bu işi kolaylaştırmam gerekiyordu. Basit bir arama yaparak 2 adımlı disk genişletme işlemi için 2 adet sh dosyası hazırladım.

1. Dosyanın Amacı

Sizin VM üzerinde yeniden boyutlandırmış olduğunuz diski hesaplayıp değişiklik varsa yeni boyutu linux üzerinde işlemesi için.

resize1.sh
#!/bin/bash

distro=$(cat /etc/issue | head -n 2 | tr -d "\n" | tr "[:upper:]" "[:lower:]")
device=$(fdisk -l | grep -w 8e | head -n 1 | cut -c-8)
partcount=$(fdisk -l | grep $device | sed 1d | grep -c $device)
newpartnum=$($partcount)
startsector=$(fdisk -l | grep -w 8e | tail -1 | tr " " "\n" | sed "/^$/d" | head -n 3 | tail -1)
newstartsector=$(($startsector+1))
endsector=$(fdisk -l | grep sectors | head -n 1 | tr " " "\n" | tail -2 | head -n 1)
newendsector=$(($endsector-1))
fdisk $device <<EOF
n
p
$newpartnum
$newstartsector
$newendsector
t
$newpartnum
8e
w
EOF

Yukarıda bulunan içeriğin yaptığı işlem normal de sizin manuel olarak gerçekleştirmiş olduğunuz işlemin otomatize edilmiş halidir.

2. Dosyanın Amacı

Bir önceki dosyada gerçekleştirmiş olduğumuz işlemin doğrulanması ve yeni disk boyutunun çekirdek üzerinde işlenmesini sağlamak için.

resize2.sh
#!/bin/bash

device=$(fdisk -l | grep -w 8e | head -n 1 | cut -c-8)
partnumber=$(fdisk -l | grep $device | sed 1d | grep -c $device)
pvcreate $device$partnumber
volgroupname=$(vgdisplay | grep -w "VG Name" | cut -b10- | tr -d " ")
vgextend $volgroupname $device$partnumber
volgroupchars=$(echo $volgroupname | wc --chars)
totalchars=$(($volgroupchars+13))
lvmname=$(df -h | grep -w $volgroupname | head -n 1 | cut -b$totalchars-)
set $lvmname
lvmname=$1
lvextend -l +100%FREE /dev/$volgroupname/$lvmname
resize2fs /dev/$volgroupname/$lvmname

df -H | grep -vE '^tmpfs|cdrom|udev' | awk '{ print  $2 " " $3 " " $4 " " $5 }' | while read output;
do
  echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )

done

sleep 5

Bu adımda gerçekleştirilen olay vermiş olduğumuz yeni disk boyutunun linux üzerine yazılmasını ve yeni oluşturulan 'block'ların doğrulanmasını sağlıyor.

İşleyiş

İlk dosya çalıştırıldığı zaman işlemleri tamamladıktan sonra makinayı yeniden başlatacak makina açıldıktan sonra ikinci dosyayı çalıştırabilirsiniz.

Last modified: 31 Mart 2022

Author

Comments

Write a Reply or Comment

Your email address will not be published.