vagrant设置磁盘大小

简介: vagrant设置磁盘大小

Vagrantfile 如何设置磁盘大小


1、安装vagrant-disksize插件


下载地址


链接:https://pan.baidu.com/s/1kYMBJqzQH1-57nRVTz4Sig?pwd=r15z 

安装命令


 vagrant plugin install  --plugin-clean-sources vagrant-disksize-0.1.3.gem

注意一定要加 --plugin-clean-sources, 否则会去官网下载插件。

vagrant 启动日志


==> node2-186: Resized disk: old 40960 MB, req 102400 MB, new 102400 MB
==> node2-186: You may need to resize the filesystem from within the guest.

2、vagrant根分区大小为何是40GB?


这个根分区是怎么规定的呢?为何root才40GB?,如何修改root多一些空间呢?

这个40GB是box镜像生成者设定的. 如果需要可以自己重新自定义.

经过测试这是一个默认值,不管disksize.size=100GB还是200GB根目录总是40GB。


disksize.size=200GB时

98c347be5a8442d8be046bf4fe9e015a.png

disksize.size=100GB时

0c2319005ccd4e25bf67bb81659f9e44.png

参考扩分区.

3、vagrant 设置启动磁盘空间大小


3.1 设置 node.disksize.size 参数


node.disksize.size = '500GB'  这个意思并不是将根分区扩展为500GB,而是将磁盘大小设置为500GB,**并且没有做分区**。
Vagrant.configure("2") do |config|
  config.vm.box_check_update = false
  config.vm.provider 'virtualbox' do |vb|
  end
  $num_instances = 1
  (1..$num_instances).each do |i|
    config.vm.define "node#{i}-host-179" do |node|
      node.vm.box = "Centos-7-min"
      node.vm.hostname = "vm128-host-179"
      node.disksize.size = '500GB'
      ip = "10.50.10.#{i+27}"
      node.vm.network "public_network", ip: ip,bridge: "team1"
      node.vm.provider "virtualbox" do |vb|
        vb.memory = "65536"
        vb.cpus = 8
        vb.name = "meta-host-179"
      end
      node.vm.provision "shell", path: "install.sh"
    end
  end
end

启动之后就可以看到

 lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  500G  0 disk
└─sda1   8:1    0   40G  0 part /

5

所以还需要手动分区 ,这一步可以考虑自动化,加一个fdisk 的分区脚本。

3.2 fdisk格式化磁盘


[root@master1-186 ~]# fdisk  /dev/sda
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2):
First sector (83886080-419430399, default 83886080):
Using default value 83886080
Last sector, +sectors or +size{K,M,G} (83886080-419430399, default 419430399):
Using default value 419430399
Partition 2 of type Linux and of size 160 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)

这里一定要注意,机器需要重启生效。

啥重启? 显然还是lvm香。 自动扩充磁盘。

如果生产使用还是建议采用LVM自动扩容。

因为生产环境的重启代价很大,不过如果程序部署在k8s上,问题就变得简单了。


重启之后可以看到已经格式化好了

[root@vm128-host-179 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  500G  0 disk
├─sda2   8:2    0  460G  0 part
└─sda1   8:1    0   40G  0 part /

3.3 绑定新分区


New partition: /dev/sda2

Mount point: /data

需要格式化以及开机自动挂载。 虚拟机的磁盘的设备UUID 通过blkid查看.

注意mkfs 和 xfs_growfs 的区别(前者是格式化裸盘的后者是用于lvm中)

[root@vm128-host-179 ~]#  mkfs -t xfs -f /dev/sda2
meta-data=/dev/sda2              isize=512    agcount=4, agsize=30146560 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=120586240, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=58880, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@vm128-host-179 ~]# mkdir /data
[root@vm128-host-179 ~]# mount -t xfs -o defaults /dev/sda2 /data
[root@vm128-host-179 ~]# mount -t xfs -o defaults /dev/sda2 /data
[root@vm128-host-179 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         32G     0   32G   0% /dev
tmpfs            32G     0   32G   0% /dev/shm
tmpfs            32G  8.5M   32G   1% /run
tmpfs            32G     0   32G   0% /sys/fs/cgroup
/dev/sda1        40G  3.4G   37G   9% /
tmpfs           6.3G     0  6.3G   0% /run/user/0
/dev/sda2       460G   33M  460G   1% /data
[root@master1-186 ~]# blkid
/dev/sda1: UUID="1c419d6c-5064-4a2b-953c-05b2c67edb15" TYPE="xfs"
/dev/sda2: UUID="999afc8e-f2f9-49e4-ad97-c1608cafe7f9" TYPE="xfs"

3.4 修改/etc/fstab 开机自动挂载


blkid 查看UUID

13732abbfd3c4f50bdbab98659bc5295.png

修改/etc/fstab添加新分区以及挂载目录

vi /etc/fstab
UUID=1c419d6c-5064-4a2b-953c-05b2c67edb15 /                       xfs     defaults        0 0
UUID=69703dd6-ae3b-41cc-824b-be975184ba0f /data                   xfs     default         0 0

17af9297b4c74704ad70e4a6db248da4.png

3.4 重启虚拟机确认磁盘挂载


重启后磁盘已自动挂载

[root@vm128-host-179 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         32G     0   32G   0% /dev
tmpfs            32G     0   32G   0% /dev/shm
tmpfs            32G  8.5M   32G   1% /run
tmpfs            32G     0   32G   0% /sys/fs/cgroup
/dev/sda1        40G  3.4G   37G   9% /
/dev/sda2       460G   33M  460G   1% /data
tmpfs           6.3G     0  6.3G   0% /run/user/0

4、自动扩充磁盘


这个自动扩磁盘,因为是没有lvm所以没有测试这个。

大家有兴趣可以尝试下,测试时注意box选择bento/centos-7

Vagrant.configure(2) do |config|
  common = <<-SCRIPT
  sudo parted /dev/sda resizepart 2 100%
  sudo pvresize /dev/sda2
  sudo lvextend -l +100%FREE /dev/centos/root
  sudo xfs_growfs /dev/centos/root
  SCRIPT
  config.vm.define "node01" do |node1|
    node1.vm.hostname = "node01"
    node1.vm.network "private_network", ip: "192.168.56.121"
    config.vm.provision :shell, :inline => common
  end
end

注意需要使用这个centos box: bento/centos-7

70a912ae97804d55b9ef94b64df94644.png

5、vagrant 拉虚拟机性能测试


vagrant up三台服务器耗时

三台大约5mins(含安装一部分软件)

Vagrant.configure("2") do |config|
  config.vm.box_check_update = false
  config.vm.provider 'virtualbox' do |vb|
  end
  $num_instances = 3
  (1..$num_instances).each do |i|
    config.vm.define "node#{i}-186" do |node|
      node.vm.box = "centos-7"
      node.vm.hostname = "master#{i}-186"
      node.disksize.size = '100GB'
      ip = "10.50.10.#{i+26}"
      node.vm.network "public_network", ip: ip,bridge: "bond0"
      node.vm.provider "virtualbox" do |vb|
        vb.memory = "65536"
        vb.cpus = 8
        vb.name = "master#{i}-186"
      end
      node.vm.provision "shell", path: "install.sh"
    end
  end
end

install.sh

#!/usr/bin/env bash
# yum net-tools & udate route
cd /tmp &&  curl -O 10.50.10.25/pigsty/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
yum -y install net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
route add default gw 10.50.10.254 eth1
route -n
# modify ssh parpmeter passwd=yes
sed -ri '/^PasswordAuthentication/cPasswordAuthentication yes' /etc/ssh/sshd_config
systemctl restart sshd
# change time zone
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
timedatectl set-timezone Asia/Shanghai
rm /etc/yum.repos.d/CentOS-Base.repo
curl 10.50.10.25/pigsty/Centos-Base.repo -o /etc/yum.repos.d/CentOS-Base.repo
# install  kmod and ceph-common for rook
yum install -y wget curl conntrack-tools vim net-tools telnet tcpdump bind-utils socat ntp kmo
d  dos2unix
echo 'disable selinux'
setenforce 0
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
echo 'enable iptable kernel parameter'
cat >> /etc/sysctl.conf <<EOF
net.ipv4.ip_forward=1
EOF
sysctl -p
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
echo 'set host name resolution'
cat >> /etc/hosts <<EOF
10.50.10.27 master1-186
10.50.10.28 master2-186
10.50.10.29 master3-186
EOF
cat /etc/hosts
echo 'disable swap'
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
# download kernel
cd /tmp && curl -O http://10.50.10.25/pigsty/kernel-lt-5.4.200-1.el7.elrepo.x86_64.rpm && rpm
-Uvh kernel-lt-5.4.200-1.el7.elrepo.x86_64.rpm

6、问题


重启竟然又啦不起来了

分区完磁盘之后,设置自动挂载竟然无法启动. 2022年11月21日10:30:29

启动日志

7、参考


1.【扩磁盘

2. 【扩分区

3. 【自动扩磁盘

目录
相关文章
|
Ubuntu
Ubuntu虚拟机LVM导致磁盘空间未完全占用
Ubuntu虚拟机LVM导致磁盘空间未完全占用
678 0
|
Ubuntu Docker 容器
Ubuntu 挂载新磁盘
Ubuntu 挂载新磁盘
829 0
|
8月前
|
IDE Linux Shell
linux查看硬盘是否挂载--和磁盘相关命令
linux查看硬盘是否挂载--和磁盘相关命令
269 0
|
3月前
|
Kubernetes Linux 容器
解决删除快照后启动虚拟机显示指定的文件不是虚拟磁盘 打不开磁盘“路径”或它所依赖的某个快照磁盘。 模块“disk”启动失败。 未能启动虚拟
解决删除快照后启动虚拟机显示指定的文件不是虚拟磁盘 打不开磁盘“路径”或它所依赖的某个快照磁盘。 模块“disk”启动失败。 未能启动虚拟
233 0
|
5月前
|
Ubuntu
【ubuntu】【问题记录】vbox虚拟机无权限访问共享目录
【ubuntu】【问题记录】vbox虚拟机无权限访问共享目录
75 0
|
IDE Unix Linux
linux中的tar打包、压缩多个文件、磁盘查看和分区类、du查看文件和目录占用的磁盘空间、df查看磁盘空间使用情况、lsblk查看设备挂载情况、fdisk分区、mount/umount挂载/卸载、设置开机自动挂载
tar [选项] XXX.tar.gz 将要打包进去的内容 (功能描述:打包目录,压缩后的 文件格式.tar.gz)du 目录/文件 (功能描述:显示目录下每个子目录的磁盘使用情况)du: disk usage 磁盘占用情况。详细的请看我之前发的博客。linux常用命令下。linux常用命令中。linux常用命令上。...............对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根 目录、一个独立且唯一的文件结构。Linux中每个分区都是用来组成整个文件系统的一部分,它在用一种叫做“挂载”的处理 方法,它整个文件系统中包含了一整套的文件和目录,并将一
439 1
linux中的tar打包、压缩多个文件、磁盘查看和分区类、du查看文件和目录占用的磁盘空间、df查看磁盘空间使用情况、lsblk查看设备挂载情况、fdisk分区、mount/umount挂载/卸载、设置开机自动挂载
|
Ubuntu
解决办法:自动挂载失效,VirtualBox共享文件夹给Ubuntu虚拟机
解决办法:自动挂载失效,VirtualBox共享文件夹给Ubuntu虚拟机
626 0
|
Linux 数据安全/隐私保护
LINUX下使用scp命令与其他机器远程交换文件
LINUX下使用scp命令与其他机器远程交换文件
118 0
|
XML 安全 Linux
kvm虚拟机管理之一(磁盘压缩,用户密码重设,快照建立)
kvm虚拟机管理之一(磁盘压缩,用户密码重设,快照建立)
587 0
|
Linux 虚拟化
VMware 虚拟机(linux)增加根目录磁盘空间
今天查看学校的监控报修系统,不能访问了!!!系统运行很慢,用top命令查看发现内存使用率90%,用"df -h ”查看“/”目录使用率已达到80%,导致系统运行很慢。我用以下方法扩大根目录磁盘空间。一、关闭你的虚拟机系统,找到如下内容:选择"Edit Virtual mache settings” 点击"Expand“ 扩大虚拟机的空间为"40G"(根据个人需要填写空间大小)。
2629 0