公司客户开了一个阿里云主机,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