客戶需求
- 對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驗證成功。