初始化Linux数据盘(容量小于等于2TiB)

新购买的云硬盘在挂载至云服务器后,还需要进行初始化,即格式化云硬盘,之后才可以正常使用。

本文介绍使用脚本方式初始化Linux系统中的数据盘,不同云服务器的操作系统的初始化操作可能不同,请根据您的实际环境进行操作。

1、执行以下命令获取自动初始化磁盘脚本

# wget https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/datadisk/LinuxVMDataDiskAutoInitialize.sh

说明:

如果回显异常,请检查云服务器是否绑定弹性公网IP,绑定弹性公网IP后才能获取脚本。

2、若无法下载,使用以下脚本。

自动初始化脚本内容:

#!/bin/bash

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
clear
check_lvm=`lsblk | grep -w "/" | grep lvm`
if [ -n "${check_lvm}" ];then
  echo -e -n "\033[31m\nThis script do not support LVM.\033[0m"
  exit
fi
echo -e "\n\033[36mStep 1: Initializing script and check root privilege\033[0m"
if [ "$(id -u)" = "0" ];then  
	echo -e "\033[33mIs running, please wait!\033[0m"
  	yum -y install e4fsprogs > /dev/null 2>&1
	echo -e "\033[32mSuccess, the script is ready to be installed!\033[0m"
else
	echo -e "\033[31mError, this script must be run as root!\n\033[0m"
	exit 1
fi
echo -e "\n\033[36mStep 2: Show all active disks:\033[0m"
fdisk -l 2>/dev/null | grep -o "Disk /dev/.*d[a-z]" | grep -v "/dev/vda"
echo -e -n "\n\033[36mStep 3: Please choose the disk(e.g.: /dev/vdb and q to quit):\033[0m"
read Disk
if [ $Disk == q ];then
	exit
fi
OS_mount_disk=`lsblk -nl | grep -w "/" | grep part | awk '{print $1}' | tr -d '0-9'`
if [ -z "${OS_mount_disk}" ];then
  echo -e -n "\033[31m\nCan not get OS_mount_disk and exit.\033[0m"
  exit
fi
until fdisk -l 2>/dev/null | grep -o "Disk /dev/.*d[a-z]" | grep -v "/dev/${OS_mount_disk}" | grep -w "Disk $Disk" &>/dev/null;do
echo -e -n "\033[31mOops, something went wrong, please try again (e.g.: /dev/vdb or q to quit):\033[0m"
	read Disk
	if [ $Disk == q ];then
		exit
	fi
done
while mount | grep "$Disk" > /dev/null 2>&1;do
	echo -e "\033[31m\nYour disk has been mounted:\033[0m"
	mount | grep "$Disk"
	echo -e -n "\033[31m\nForce uninstalling? [y/n]:\033[0m"
	read Umount
	until [ $Umount == y -o $Umount == n ];do
		echo -e -n "\033[31mOops, something went wrong, please try again [y/n]:\033[0m"
		read Umount
	done
	if [ $Umount == n ];then
		exit
	else
		echo -e "\033[33mIs running, please wait!\033[0m"
		for i in `mount | grep "$Disk" | awk '{print $3}'`;do
			fuser -km $i >/dev/null
			umount $i >/dev/null
			dev_name=$(cat /etc/fstab | grep "${Disk}" | awk '{ print $1 }')
			if [ -n "$dev_name" ]; then
				device=$(echo "${Disk}" | sed 's;/;\\\/;g')
				[ -n "${device}" ] && sed -i -e "/^$device/d" /etc/fstab
			else
				UUID=$(blkid -s UUID "${Disk}1" | awk '{ print $2 }' | tr -d '"')
				[ -n "${UUID}" ] && sed -i -e "/^${UUID}/d" /etc/fstab
			fi
			sleep 2
		done
		echo -e "\033[32mSuccess, the disk is unloaded!\033[0m"
	fi
	echo -e -n "\n\033[36mReady to begin to format the disk? [y/n]:\033[0m"
	read Choice
	until [ $Choice == y -o $Choice == n ];do
		echo -e -n "\033[31mOops, something went wrong, please try again [y/n]:\033[0m"
		read Choice
	done
	if [ $Choice == n ];then
		exit
	else
		echo -e "\033[33mIs running, please wait!\033[0m"
		dd if=/dev/zero of=$Disk bs=512 count=1 &>/dev/null
		sleep 2
	sync
	fi
	echo -e "\033[32mSuccess, the disk has been formatted!\033[0m"
done
echo -e "\n\033[36mStep 4: The disk is partitioning and formatting\033[0m"
echo -e "\033[33mIs running, please wait!\033[0m"
fdisk_mkfs() {
fdisk -S 56 $1 << EOF
n
p
1


wq
EOF

sleep 2
mkfs.ext4 ${1}1
}
fdisk_mkfs $Disk > /dev/null 2>&1
echo -e "\033[32mSuccess, the disk has been partitioned and formatted!\033[0m"
echo -e "\n\033[36mStep 5: Make a directory and mount it\033[0m"
echo -e -n "\033[33mPlease enter a location to mount (e.g.: /mnt/data):\033[0m"
read Mount
mkdir -p $Mount > /dev/null 2>&1
mount ${Disk}1 $Mount
echo -e "\033[32mSuccess, the mount is completed!\033[0m"
echo -e "\n\033[36mStep 6: Write configuration to /etc/fstab and mount device\033[0m"
UUID=$(blkid -s UUID "${Disk}1" | awk '{ print $2 }' | tr -d '"')
if [ -n "${UUID}" ]; then
	echo "${UUID}" "${Mount}" 'ext4 defaults 0 0' >> /etc/fstab
else
	echo "${Disk}1" "${Mount}" 'ext4 defaults 0 0' >> /etc/fstab
fi
echo -e "\033[32mSuccess, the /etc/fstab is Write!\033[0m"
echo -e "\n\033[36mStep 7: Show information about the file system on which each FILE resides\033[0m"
df -h
sleep 2
echo -e "\n\033[36mStep 8: Show the write configuration to /etc/fstab\033[0m"
cat /etc/fstab

将上述命令复制出来,然后命名为.sh 结尾的文件。(本文脚本命名为LinuxVMDataDiskAutoInitialize.sh)

3、修改自动初始化磁盘脚本权限。

# chmod +x LinuxVMDataDiskAutoInitialize.sh

4、执行初始化脚本自动检测待初始化的数据盘。

# ./LinuxVMDataDiskAutoInitialize.sh

脚本将自动检测当前在服务器上除系统盘之外的盘符并显示出来。

说明:

可以使用lsblk查看ECS挂载的所有盘符情况。

对于有数据的云硬盘,脚本会自动检测出您选择的磁盘已经被挂载并显示出挂载的位置,请根据提示选择是否卸载磁盘。成功卸载磁盘后根据提示选择是否开始格式化磁盘。

1.查看分区情况及数据盘名称

 # df -h

2. 如果没有kafa目录就创建,否则此步跳过

# mkdir /kafa

3. 卸载硬盘已挂载的data目录

# umount /data

4. 挂载到kafa目录

# mount /dev/vdb /kafa 

### Linux 环境下磁盘分区之逻辑分区的创建与管理 #### 创建 MBR 分区表并初始化磁盘 对于小于等于 2 TiB 的硬盘,推荐使用 `fdisk` 命令配合 MBR (Master Boot Record) 方案来进行基本输入输出系统的设置[^1]。 #### 添加扩展分区前准备 由于单个物理硬盘上的主分区数量上限为四个,在这四席之中可以选择预留一席作为扩展分区。值得注意的是,该类分区本身并不具备数据承载能力,而是充当容器角色用于容纳多个逻辑卷组[^3]。 #### 扩展分区内建立逻辑分区流程 一旦决定要利用某一块未分配空间构建新的逻辑单元,则需先通过 `fdisk` 或者更现代工具如 `parted` 定义好相应的扩展边界范围之后才能继续细分出一个个具体的逻辑子项[^2]。 具体步骤如下所示: ```bash # 启动 fdisk 工具进入交互模式 $ sudo fdisk /dev/sdX # 将 sdX 替换成实际的目标驱动器代号 Command (m for help): n # 新建分区选项 Partition type # 提示选择类型 p primary (0 primary, 0 extended, 4 free) e extended # 此处应选 'e' 来指定即将新增加的部分属于扩展性质而非独立存在的实体 Select (default p): Using default response e. First sector ... Last sector ... Created a new partition ... Command (m for help): w # 写入更改退出程序 ``` 完成上述过程后即成功建立了可供进一步切割成多份可用资源的基础框架——扩展区域;紧接着便是着手规划内部布局了。 接下来的操作同样依赖于相同的命令集,区别仅在于此应当选取已有的那个特殊成员作为工作对象而已: ```bash # 继续沿用之前的会话实例或者重新启动一次均可达到相同效果 Command (m for help): n # 又到了创造... Partition number (5-NN): # 自动给出建议编号区间供参考 First sector ... Last sector ... Created a new logical partition... Command (m for help): t # 更改现有项目的属性标签以便区分用途类别 Partition number (5-NN): NN # 输入刚才得到的新ID值 Hex code (type L to list all codes): Changed type of partition 'Linux' to 'Linux swap / Solaris'. Command (m for help): w # 记录变动情况至永久介质当中去 ``` 以上就是关于如何在基于 MBR 结构之上实现灵活配置额外存储单位的一套完整指南。 最后一步则是将刚刚制作好的逻辑分区进行格式化处理,并将其关联到文件系统树状结构中的某个合适位置上方便日后访问调用[^4]。 ```bash # 对新创建出来的逻辑分区执行 mkfs.ext4 操作以赋予其 ext4 类型特征 $ sudo mkfs.ext4 /dev/sdXY # X 表示目标设备字母部分 Y 则对应着特定序号 # 构造一个新的挂载点路径名 $ sudo mkdir -p /mnt/newdisk # 实现即映射关系绑定 $ sudo mount /dev/sdXY /mnt/newdisk/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值