windows和linux分區腳本

客戶需求

  • 對windows 7 磁盤未分區對部分,變成一塊新分區掛在我的電腦上

解決方法

C:\Windows\System32\cmd.exe /C 
setlocal disabledelayedexpansion & >tempfile.bat 
echo (echo list disk)^|diskpart^|findstr "磁盤.[0-9]"^|find /c "磁盤" ^> diskAmount & >>tempfile.bat 
echo set /p str=^<diskAmount & >>tempfile.bat 
echo del /s /q diskAmount & >>tempfile.bat 
echo set /a diskNum=%str%-1 & >>tempfile.bat 
echo echo select disk %diskNum% ^>temp.f2c & >>tempfile.bat 
echo echo detail disk ^>^>temp.f2c & >>tempfile.bat 
echo diskpart /s temp.f2c^|findstr "沒有卷"^|find /c "沒有卷" ^> detailDisk & >>tempfile.bat 
echo set /p diskEmpty=^<detailDisk & >>tempfile.bat 
echo del /s /q detailDisk & >>tempfile.bat 
echo if %diskEmpty%==0 (exit) & >>tempfile.bat 
echo echo select disk %diskNum% ^>temp.f2c & >>tempfile.bat 
echo echo clean ^>^>temp.f2c & >>tempfile.bat 
echo echo convert gpt ^>^>temp.f2c & >>tempfile.bat 
echo echo create partition primary ^>^>temp.f2c & >>tempfile.bat echo echo format fs=ntfs quick ^>^>temp.f2c & >>tempfile.bat 
echo echo assign ^>^>temp.f2c & >>tempfile.bat 
echo diskpart /s temp.f2c ^>partitionResult.tmp 

  • 對Linux的新磁盤,添加到卷組裏面,建立一個新的邏輯劇卷,mount在/data目錄下
    解決方法
#!/bin/bash
function check_execution_result(){
        if [[ ! -z $RETVAL ]]; then
                unset RETVAL
        fi
        RETVAL=$?
        if [[ $RETVAL -ne 0 ]]; then
                echo execution failed! 
                exit $RETVAL
        else
                echo execution successfully! 
        fi
        unset RETVAL
}

echo "- - -" >/sys/class/scsi_host/host0/scan
echo "- - -" >/sys/class/scsi_host/host1/scan
echo "- - -" >/sys/class/scsi_host/host2/scan

ONLINE_SCSI_DISK_NEWADD=$(lsblk --all | grep disk | grep -v fd | awk '{print $1}'|sed -n '$p'| sed 's/ //g')
echo New Added SCSI Disk: $ONLINE_SCSI_DISK_NEWADD
VG_Name=$(vgdisplay | grep 'VG Name' | awk '{print $NF}')
ONLINE_SCSI_DISK_NEWADD_FILENAME="/dev/"$ONLINE_SCSI_DISK_NEWADD

LVM_OPERATION_DISK_FILENAME=$ONLINE_SCSI_DISK_NEWADD_FILENAME
pvcreate $LVM_OPERATION_DISK_FILENAME >/dev/null 2>&1
check_execution_result
vgextend $VG_Name $LVM_OPERATION_DISK_FILENAME >/dev/null 2>&1
check_execution_result
lvcreate $VG_Name  -l 100%FREE --name /dev/$VG_Name/lv_data
check_execution_result
mkfs.ext4 /dev/$VG_Name/lv_data
check_execution_result

if [ ! -d /data ];then
    mkdir /data
fi    
check_execution_result
mount /dev/$VG_Name/lv_data /data
check_execution_result
sed  '8a /dev/mapper/'$VG_Name'-lv_data /data                       ext4    defaults        1 1' /etc/fstab  
sed -i '8a /dev/mapper/'$VG_Name'-lv_data /data                       ext4    defaults        1 1' /etc/fstab  
check_execution_result


df -h
lsblk --all

注意:

對bat腳本,win7驗證成功。對sh腳本,centos和redhat驗證成功。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章