Ubuntu上利用Chef实现磁盘的自动分区、自动挂载

Ubuntu 系统上利用Chef实现磁盘的自动分区、自动挂载

背景

服务器托管在公司的私有云上,因为空间太小,所以每台服务器创建之后,需要动态申请磁盘。但是对于Linux的机器,申请完磁盘,Attach到虚拟机,之后需要重启,磁盘才可见。而且,新的磁盘是没有分区的,所以需要:

  1. 分区(分1个区)
  2. 格式化(用ext4格式)
  3. 挂载

以上3步需要在目标虚拟机上运行,所以只能由Chef部署。

Chef 脚本
#
# Cookbook Name:: acadci_workarounds
#
DEVICE = "/dev/sdb"
PARTITION = "/dev/sdb1"
mount_point = node[:acadci_workarounds][:mount_point]        # /mnt/new_volume

bash "partition" do
  not_if "ls #{PARTITION}"
  code <<-EOH
  echo ,,L | sfdisk #{DEVICE}
  mkfs -t ext4 #{PARTITION}
  EOH
end

directory mount_point do
  mode "777"
  recursive true
end

mount mount_point do
  device PARTITION
  fstype "ext4"
  action :mount
end
详细说明:
  1. 先检查,是不是磁盘已经分过区了,利用ls /dev/sdb1命令。
  2. 假如没有,那么执行sfdisk /dev/sdb < partition.config来分区,partition.config是一个sfdisk能够理解的配置文件,他的格式很简单:
    • 格式:起始,大小,ID。
    • 起始 = 起始柱面(如果不进行指定则为第一可用柱面)
    • 大小 = 柱面数量(如果不进行指定则指所有柱面)
    • ID号 = 分区类型(L: Linux, S: Swap, E:扩展分区)
    • 比如: ,600,L;
    • 我用的是“,,L”表示将整个磁盘分成一个区,类型是Linux主分区
  3. 分完区之后,用mkfs命令将其格式化成ext4格式。
  4. 最后,就是mount,Chef提供了现成的resource来mount,所以很简单,设置一下设备/device、挂载点/mount_point,就行了
参考
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值