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.
Comments