公司客户开了一个阿里云主机,40G,然后又加了一块1T磁盘

目前需求是将1T硬盘挂载到新主机,分两个区出来,一个给/var,另一个给/data

目录 大小
/var 200G
/data 800G

一开始接到这个需求,我是懵逼的,分区挂载磁盘本来就没啥概念,还要把已有目录/var 挂载到新分区上去,感觉不太现实。。

后来经过查找资料,逐渐捋清了头绪

其实这个分为两个步骤:分区和挂载

1.分区

linux系统会按磁盘类型给分区后的物理分区命名,大致命名规则如下

物理设备名称设备识别文件名称
SATA / SAS / USB (串口硬盘) dev/sd[a-p] ([a-p]表示为括号内a-p字母中任意一个)
IDE(并口i硬盘) /dev/hd[a-d]
Virtio接口 /dev/vd[a-p]
M2/SSD /dev/nvme0,/dev/nvme1
SD/MMC/EMMC /dev/mmcblk0 , /dev/mmcblk1
CD-ROM DVD-ROM /dev/scd[0-1] (通用) /dev/sr[0-1] (通用, CentOS较为常见) /dev/cdrom (当前CD-ROM)

 

比如虚拟机磁盘类型会默认命名 /dev/vda、/dev/vdb,然后物理分区按照/dev/vda1、/dev/vda2这样依次类推

这里不得不提分区工具fdisk,人人都喜欢用 fdisk,它是 Linux 下管理磁盘分区的最佳利器之一。它可以操作最大 2TB 的分区。大量 Linux 管理员都喜欢使用这个工具,因为当下 LVM 和 SAN 的原因,并没有多少人会用到 2TB 以上的分区。并且这个工具被世界上许多的基础设施所使用。如果你还是想创建比 2TB 更大的分区,请使用 parted 命令 或 cfdisk 命令。

fdisk 允许我们在每块硬盘上创建最多四个主分区。它们中的其中一个可以作为扩展分区,并下设多个逻辑分区。1-4 扇区作为主分区被保留,逻辑分区从扇区 5 开始。

 分完区之后,再进行格式化,物理分区就能正常使用了

2.挂载

分区之后就是挂载,挂载的目的是把物理分区和系统能识别的盘符关联起来,让操作系统可以正常工作

系统盘符有个概念就是,系统资源只和盘符路径有关,只要盘符路径能访问到资源,系统就能正常运行

这也就让已有目录/var 挂载到新分区上成为了可能

具体思路就是:把原/var分区内容拷贝到新分区,然后老/var目录重命名为/var_bak,再用新分区挂载到/var目录,系统能按原盘符路径访问所有资源,就可以正常工作

 

理清概念之后下面就是操作

1.查看系统磁盘情况

#查看磁盘资源
fdisk -l

#查看磁盘分区情况
lsblk -f

 从这里可以看出,主机上有 loop* ,vda,vdb,其中vda总容量40G,已分为3个区vda1,vda2,vda3;

vdb总容量1T,未分区,/dev/vdb就是我们下一步的分区目标

2.分区

#对/dev/sdb磁盘进行分区
$ sudo fdisk /dev/sdb

Welcome to fdisk (util-linux 2.30.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

#n 为新增分区
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
#直接按回车默认新建主分区 Select (default p): Enter Using default response p.
#直接按回车扇区为默认1 Partition number (
1-4, default 1): Enter
#直接按回车从2048开始分区 First sector (
2048-20971519, default 2048): Enter
#+200G 告诉fdisk要分200G空间 Last sector,
+sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +200G Created a new partition 1 of type 'Linux' and of size 200 GiB. #按p查看已分区情况 Command (m for help): p Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x8cc8f9e5 Device Boot Start End Sectors Size Id Type /dev/sdc1 2048 2099199 2097152 1G 83 Linux #按w保存分区 Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.

其中我分第二个区的时候,设置分区大小那里直接按回车,为默认使用剩下的所有空间

 至此分区完成

2.格式化分区

这一步一定要谨慎,确认好分区名称再操作!

这一步一定要谨慎,确认好分区名称再操作!

这一步一定要谨慎,确认好分区名称再操作!

重要事情说三遍,一旦不小心格式化到正常磁盘上就gg了

通过lsblk -f 可以看出原系统用的是ext4格式,我们格式化也用ext4格式

#依次格式化两分区
mkfs.ext4 /dev/vdb1
mkfs.ext4 /dev/vdb2

至此分区完成

磁盘已分为200G和800G,状态为可用状态

3.挂载并复制/var目录数据

1.创建一个挂载点:mkdir /storage。

2.挂载 /dev/sdb1 到 /storage 目录上:mount /dev/sdb1 /storage。

3.复制/var目录下的内容到/storage目录中:cp -pdr /var/* /storage。

4.备份/var目录 :mv /var /var_bak (通过ls命令看一下是否备份完)。

5.卸载 /dev/sdb1 : umount /dev/sdb1 。

6.新建/var目录:mkdir /var

7.将 /dev/sdb1 挂载到 /var 上: mount /dev/sdb1 /var 。

8.测试 /var上的组件是否正常运行,比如docker,mysql等

9.检查/storage是为空后,删除/storage目录

 注意:这里monut只临时挂载,只为移动/var数据所用

 

功能测试正常,如果没有安装组件,测试可以忽略,至此/var目录已挂载到新分区

 

4.设置永久挂载

1.通过blkid  /dev/vdb1 /dev/vdb2 查看磁盘uid

2.vi /etc/fstab 按照前面的格式把磁盘uid和目录按照对应关系写入配置文件

3.确保要挂载的目录/var,/data目录已新建完成

3.重启机器,检查永久挂载是否生效

 

重启完经过检查一切正常,至此分区+挂载完成

 待一切检查无误后,/storage和/var_bak目录可删除

 

 

参考文档:

https://zhuanlan.zhihu.com/p/56273534?utm_source=wechat_session

https://www.ywnz.com/linuxjc/2219.html

https://www.bilibili.com/read/cv21739014

https://www.coonote.com/linux-note/linux-hard-disk-partition.html

https://blog.csdn.net/github_33809414/article/details/85221274

posted on 2023-08-18 17:48  06  阅读(854)  评论(0编辑  收藏  举报