记录一下磁盘挂载的经历,背景是这样的,业务运行时有大量的日志文件产生,因此给服务器挂载一个数据盘。

先普及几个查看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


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


命令(输入 m 获取帮助):m
命令操作
   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工具,pssh工具语法如下:


pssh [-vAiIP] [-h hosts_file] [-H [user@]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"


5.设置开机启动

挂载完成之后,需要设置开机自动启动,否则,下次重启系统后会出现找不到挂载点。这里可以使用UUID来进行挂载,通过blkid获取磁盘的UUID


查看容器的挂载点信息 查看所有挂载_查看容器的挂载点信息_02


然后修改/etc/fstab,添加UUID及相关信息,这个文件里面有6列,分别对应如下信息:

第1列是设备名或者卷标

第2列是挂载点(也就是挂载目录)

第3列是所要挂载设备的文件系统或者文件系统类型

第4列是挂载选项,通常使用defaults就可以

第5列设置是否使用dump备份,置0为不备份,置1,2为备份,但2的备份重要性比1小

第6列设置是否开机的时候使用fsck检验所挂载的磁盘,置0为不检验,置1,2为检验,但置2盘比置1的盘晚检验。

添加一行,下次重启后就可以自动挂载了。


UUID=3d0d9d80-9777-4ec9-ab01-8e94b7dc387b /home/admin/logs ext4  defaults  1  2


参考:

[1] https://linux.die.net/man/1/pssh