一块全新的数据盘挂载到ECS实例后,还不能直接存储数据,通常您需要在数据盘进行分区、文件系统格式化、挂载文件系统等初始化操作后,才能供系统读写数据。本文介绍如何在Linux系统中初始化一块小于等于2 TiB的数据盘。

# 数据盘的设备名称
fdisk -lu

lsblk

https://help.aliyun.com/zh/ecs/user-guide/initialize-a-data-disk-whose-size-does-not-exceed-2-tib-on-a-linux-instance?spm=a2c4g.11186623.0.i8#5b098090ado78

GPT ext4 Nvme举例

Untitled

分区

# 安装工具
apt-get install -y parted

# 使用Parted工具为数据盘进行分区 新设备名称
parted /dev/nvme1n1

输入:
# 设置GPT分区格式
mklabel gpt
# 分区名为primary且100%容量给到第一个分区为例。
mkpart primary 1 100%
# 1是对应的分区号,通常建议您做分区对齐,以获取更好的云盘性能。
align-check optimal 1
# 如果分区是对齐的,结果如下所示:1 aligned
# 输入以下内容,查看分区表
print
# 输入以下内容,退出Parted工具。
quit

# 使系统重读分区表
partprobe

# 查看新分区信息
fdisk -lu /dev/nvme1n1

文件系统


# 安装e2fsprogs工具。
apt-get install  -y e2fsprogs
# 创建文件系统。 为设备dev/nvme1n1的/dev/nvme1n1p1分区
mkfs -t ext4 /dev/nvme1n1p1

# result
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 26213888 4k blocks and 6553600 inodes
Filesystem UUID: 5b1ced8c-7b59-4302-a2fe-1a102ff35373
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done 

开机自动挂载分区


sudo cp /etc/fstab /etc/fstab.bak

# 回滚
cp /etc/fstab.bak /etc/fstab

# 挂载
echo `blkid /dev/nvme1n1p1 | awk '{print $2}' | sed 's/\\"//g'` /mnt ext4 defaults 0 0 >> /etc/fstab

# 参数
/dev/vdb1:数据盘的分区名称,您需要根据实际环境进行替换。
/mnt:分区的挂载点,您需要根据实际环境进行替换。
重要
该目录需要您根据实际环境自行指定,请您正确指定或者创建需要挂载的目录。您可以将分区挂载至环境已有目录下,也可以先通过mkdir命令创建新的目录,然后再挂载。
ext4:分区的文件系统类型,您需要根据步骤 2已创建的文件系统类型修改。
defaults:文件系统的挂载参数。请您根据实际需求选择对应的挂载参数,以满足您对文件系统的数据安全性以及性能的要求。更多信息,请参见使用mount命令挂载ext4文件系统。

# 查看结果
cat /etc/fstab

# 挂载/etc/fstab配置的文件系统。如果无报错输出,表示您的/etc/fstab配置无误。
mount -a
# 运行以下命令,检查挂载结果是否符合您的预期。
df -h

挂载后替换原有

先建立一个空白目录,作跳板
mkdir new
首先要查看硬盘是否挂载及其名称
lsblk
挂载跳板目录
mount /dev/vdb1 /new
复制/home目录(你原本想挂载的目录)所有数据到/new先
cp -a /home/* /new
删除原有目录内容
rm -rf /home/*
将硬盘挂载到原要挂载的目录
mount /dev/vbd1 /home 
此时你会神奇的发现之前的/home目录文件已经全部转移过来了,也许你会有点疑问,我并没有复制或移动/new文件到新挂载的/home目录啊,其实此时的/home目录相当于/new目录的硬链接,可以测试下mkdir /new/test 你会发现/home目录也存在test

删除跳板目录
umount /new 
//-------------------------------------------------------------------------------------------------------------------------
解除跳板目录挂载,可能会出现占用无法删除,可以使用 umount -fl 强行卸载,
umount /new 
-f 强制卸载
-l 一空闲马上卸载所有占用的文件系统。
删除跳板目录
rm -rf /new 
//--------------------------------------------------------------------------------------------------------------------------
配置开机自动启动挂载
echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\\"//g'` /home ext4 defaults 0 0 >> /etc/fstab

//--------------------------------------------------------------------------------------------------------------------------
配置解析:
这里配置的含义如下:
UUID 为硬盘分区的 UUID 值
路径 为挂载的目标路径
分区格式 这里一般为 ext4
挂载参数 一般为默认 defaults
备份 0为不备份, 1为每天备份,2为不定期备份
检测 0为不检测,其他为优先级
//--------------------------------------------------------------------------------------------------------------------------
挂载配置文件系统
mount -a
检查挂载结果
df -h
然后重启服务器
root

查看挂载

blkid

linux文件系统

Untitled

取消挂载

如果硬盘被移除,或者硬盘损坏了,配置了 fstab 自动挂载,将会出现不能正常启动情况。 这时重启系统,在开机界面按几下 esc 进入grub模式,然后,选高级选型,进去后选root模式,进入模拟终端命令行, 恢复我们备份的 fstab 配置,即可修复完成。