记录一下磁盘挂载的经历,背景是这样的,业务运行时有大量的日志文件产生,因此给服务器挂载一个数据盘。
先普及几个查看linux磁盘空间的命令:
df -h 查看磁盘空间
du -m 查看当前目录下各个文件占用存储空间大小,单位为MB
fdisk -l 查看当前磁盘分区信息
1.查看磁盘信息
使用fdisk -l查看当前磁盘分区信息,还有一个200+GB的数据盘可以使用
sudo fdisk -l
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
然后修改/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