1. 程式人生 > >openstack 映象自動擴大根分割槽 開機啟動指令碼

openstack 映象自動擴大根分割槽 開機啟動指令碼

在建立Ubuntu 10.04映象的時候,如果日後想用qemu-img resize xxx.img +10G來擴大映象分割槽時,如果Ubuntu映象沒有裝cloud-init時,往往需要在開機後手動擴大根分割槽(需要lvm的支援),我嘗試寫了一個開機啟動的指令碼來自動擴大分割槽,這只是提供了一個思路,指令碼的缺陷很多日後或多加優化,貼在這裡做個記錄。

#!/bin/bash

touch /var/resize_log
lf="/var/resize_log"

old_sdas=$(ls /dev | grep sda)
echo $old_sdas >> $lf
array_o=($old_sdas)
size_o=${#array_o[@]}
echo $size_o >> $lf
free_s=$(parted /dev/sda --script 'print free'|grep Free|sed -n '$p'|awk '{split($0,a);print a[1]}')
echo $free_s >> $lf

free_e=$(parted /dev/sda --script 'print free'|grep Free|sed -n '$p'|awk '{split($0,a);print a[2]}')
echo $free_e >> $lf

parted /dev/sda --script "mkpart primary $free_s $free_e"

new_sdas=$(ls /dev | grep sda)
echo $new_sdas >> $lf
array_n=($new_sdas)
size_n=${#array_n[@]}
if [ $size_o == $size_n ]; then
	echo "size old equal size new, exit" >> $lf
	exit 1
fi

i=0
j=0
flag=0
new_sda=""
#array_o=(a b c)
#array_n=(a b d c)
#size_n=4
#size_o=3
while [ "$i" != "$size_n" ]
do      
	while [ "$j" != "$size_o" ]
	do	
		if [ ${array_n[$i]} == ${array_o[$j]} ]; then
			flag=1
			break
		fi
		j=$(($j+1))
	done	
	if [ "$flag" == "0" ]; then
		new_sda=${array_n[$i]}
		break	
	fi	
	flag=0	
	j=0
	i=$(($i+1))
done
echo $new_sda >> $lf

pvcreate /dev/$new_sda

vgname=$(vgdisplay | sed -n '2p'|cut -c 25-)
echo $vgname >> $lf

vgextend $vgname /dev/$new_sda

root_p=$(ls /dev/mapper | sed -n '1p')
echo $root_p >> $lf
lvextend /dev/mapper/$root_p /dev/$new_sda

resize2fs /dev/mapper/$root_p

相關推薦

openstack 映象自動擴大分割槽 開機啟動指令碼

在建立Ubuntu 10.04映象的時候,如果日後想用qemu-img resize xxx.img +10G來擴大映象分割槽時,如果Ubuntu映象沒有裝cloud-init時,往往需要在開機後手動擴大根分割槽(需要lvm的支援),我嘗試寫了一個開機啟動的指令碼來自動擴大

openstack 虛機中擴大分割槽

映象起來後,硬碟沒有自動擴充套件,flavor分了200G,啟動後就10G。由於分割槽用的是lvm,手工使用lvextend來擴大分割槽。 1 檢視當前磁碟資訊,對未分割槽空間的進行分割槽 shell> fdisk /dev/vda

製作centos6.9映象並實現分割槽自動擴容

1. 搭建KVM 作業系統:Centos7.3 安裝步驟: (1)圖形介面安裝: 本文件使用圖形化操作,預先安裝centos7圖形化環境: Yum groupinstall "X Window

ZYNQ 把image.ub映象燒寫在flash開機啟動(無SD卡)

使用的是petalinux-v2015.4-final版本編譯出來的U-BOOT及image.ub。板子核心晶片為ZYNQ-7021。前言:因為我要把編譯出來的系統燒寫在flash裡面,板子硬體沒有設計

ubuntu高版本如何設定開機啟動指令碼

ubuntu-18.04不能像ubuntu14一樣通過編輯rc.local來設定開機啟動指令碼 可以通過下列簡單設定後,可以使rc.local重新發揮作用。 1、建立rc-local.service檔案 sudo vi /etc/systemd/system/rc-local.ser

ubuntu 18.04 - server版 開機啟動指令碼

ubuntu 18.04 不再使用 inited 管理系統,改用 systemd systemd 預設讀取 /etc/systemd/system 下的檔案,該目錄下的檔案會連結/lib/systemd/system/下的檔案。 執行 ls /lib/systemd/system 你可以看到有很多

linux 開機啟動指令碼 fusuma

對於一些服務可以systemctl enable xxx 但是使用者想要自己的任務開機啟動怎麼辦的比如fusuma fusuma是 一個支援多指觸控板的程式 想要其開機自啟動可以新增到tweak 的start application中但我要 放到指令碼中 如下 #! /bin/b

ubuntu-18.04 設定開機啟動指令碼

ubuntu-18.04 設定開機啟動指令碼 參閱下列連結 https://askubuntu.com/questions/886620/how-can-i-execute-command-on-startup-rc-local-alternative-on-ubuntu-16-10

Linux-Centos7 下編譯安裝nginx (附nginx開機啟動指令碼

1.安裝編譯所需環境: yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel 2.下載原始碼包(這裡用的是nginx-1.14.0) wget http://nginx.org/download/

windows設定開機啟動指令碼修改配置檔案和重啟服務

有一臺動態ip的測試機器,上面部署Nginx,然後每次重啟機器後ip總會變動,需要改nginx.conf配置檔案和重啟nginx服務。 所以要解決這個問題,想到的解決方法: 1、python指令碼來

Ubuntu14.04設定開機啟動指令碼

什麼是rc.local指令碼 c.local指令碼是一個ubuntu開機後會自動執行的指令碼,我們可以在該指令碼內新增命令列指令。該指令碼位於/etc/路徑下,需要root許可權才能修改。該指令碼具體格式如下: #!/bin/sh -e # # rc.local # #

RK3128系統&驅動開發分享——(四)init.rc及開機啟動指令碼

1、android啟動程式碼/system/core/init/init.c 該啟動程式碼讀取並解析init.rc指令碼程式碼如下: init_parse_config_file("/init.rc"); 然後通過action_for_each_trigger觸發響應的動作

樹莓派開機啟動指令碼

1 開機啟動 python 指令碼     一般指令碼,可在 /home/pi/.config/autostart 路徑下新建  .desktop 檔案,檔案主要內容如下:       此種方案與 wi

linux 開機啟動指令碼或者服務

準備工作: 1. 先編寫shell,將需要啟動的服務都放在此指令碼中,取名restart.sh 2. 在restart.sh 中將環境變數 執行一下 : .  /etc/profile 3. chmod +x restart.sh 將指令碼可正確執行 以下是我滴例子:

Ubuntu開機啟動指令碼

主要介紹如何在Ubuntu下新增開機自動指令碼。 編輯rc.local指令碼 rc.local指令碼是一個ubuntu開機後會自動執行的指令碼,我們可以在該指令碼內新增命令列指令。 該指令碼位於/etc/路徑下,需要root許可權才能修改。該指令碼具體格式如下: 1 2 3 4 5 6 7 8

linux開機啟動指令碼設定

ubuntu、debian開機啟動指令碼設定 rc.local指令碼 rc.local指令碼是一個ubuntu開機後會自動執行的指令碼,我們可以在該指令碼內新增命令列指令。該指令碼位於/etc/路徑下,需要root許可權才能修改。 新建開機指令碼

【Linux開機啟動指令碼開機指令碼存放位置問題

我在使用Ubuntu系統設定開機啟動指令碼的時候,按如下方式設定 $ sudo vim /etc/rc.localls > /home/wsdc/jk.txt echo 'ss' > /j.txt exit 0 後來發現根目錄下確實生成了j.txt,但是/ho

開機啟動指令碼/etc/init.d/rcS中新增自己的應用程式

開機啟動我們可以把內容新增到/etc/init.d/rcS中, vi把指令新增到最後或者exec /etc/init.d/rc S前邊,記得儲存 此時不要急著重啟驗證,要先sync同步下,因為linux的檔案系統都會有寫入快取,否則更改無法儲存。 重啟後就可以開機執行了

Ubuntu下新增開機啟動指令碼

1、方法一,編輯rc.loacl指令碼  Ubuntu開機之後會執行/etc/rc.local檔案中的指令碼, 所以我們可以直接在/etc/rc.local中新增啟動指令碼。 當然要新增到語句:exit 0 前面才行。 如: sudo vi /etc/rc.lo

Ubuntu 建立開機啟動指令碼的一種方法(rc.local)

# 1、編輯/etc/rc.local如:sudo vim /etc/rc.local 在 exit 0之前新增指令碼程式碼如:sh /ect/ifconfig.sh rc.local:   1 #!/bin/sh -e   2 #   3 # rc.local   4 #