linux磁盘挂载与批量挂载

时间:2024-05-22 14:26:35

记录一下磁盘挂载的经历,背景是这样的,业务运行时有大量的日志文件产生,因此给服务器挂载一个数据盘。
先普及几个查看linux磁盘空间的命令:
df -h 查看磁盘空间
du -m 查看当前目录下各个文件占用存储空间大小,单位为MB
fdisk -l 查看当前磁盘分区信息

1.使用fdisk -l查看当前磁盘分区信息,还有一个200+GB的数据盘可以使用

sudo fdisk -l

linux磁盘挂载与批量挂载
2.发现有路径为/dev/vdb可以来挂载,使用fdisk命令进行磁盘挂载

sudo fdisk /dev/vdb 

接下来进入交互界面,相关命令如下:

命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

(1)输入n,add a new partition,增加一个分区
(2)一直默认 回车就可以,连续4次默认
(3)输入w,write table to disk and exit

3.格式化新建好的分区,建立文件系统,mkfs.xfs或者mkfs.ext4分别建立xfs和ext4文件系统,由于xfs的兼容性和可扩展性更强,这里我们选择xfs作为文件系统

sudo mkfs.xfs /dev/vdb1

4.使用mount命令进行挂载
(1) 新建目录

mkdir -p /home/admin/logs

(2)挂载

sudo mount /dev/vdb1 /home/admin/logs

至此,磁盘就已经挂载好了。
可是一个集群那么多机器,总不能一台一台手动挂载吧,太麻烦了,优秀的程序员应该具有lazy的特质。

接下来,pssh工具隆重登场,pssh是python写的批量操作神器,可用来实现批量操作,如kill进程、部署、启动服务等。
先在管理机器上安装pssh工具(可自行google),pssh工具语法如下:

pssh [-vAiIP] [-h hosts_file] [-H [[email protected]]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] command ...
-h host_file 表示要控制的IP,IP都存放在host_file这个文件中
-i 表示执行完命令后显示标准输出和error(Display standard output and standard error as each host completes)
-t 设定pssh命令超时,这个值给0时,pssh默认不会超时

下面将前面磁盘挂载的命令写成脚本,细心的同学会注意到,有交互命令,怎么写成脚本呢?
这里可以通过EOF来实现,直接上代码吧,<<EOF表示交互命令开始,EOF表示结果,中间有4行,表示4个回车。

sudo fdisk /dev/vdb << EOF
n




w
EOF
sudo mkfs.xfs /dev/vdb1
sudo mkdir -p /home/admin/logs
sudo mount /dev/vdb1 /home/admin/logs

保存为disk-mount.sh文件,将这些文件都通过pscp拷贝到这些所有机器上,再通过pssh命令完成磁盘的批量挂载

pssh -h ip_list  -i -t 0 "sudo sh disk-mount.sh"

参考:
[1] https://linux.die.net/man/1/pssh
[2] https://www.cnblogs.com/silent2012/p/4586273.html
[3] https://www.cnblogs.com/Dicky-Zhang/p/5988415.html