客户需求
- 对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验证成功。