相当雑なコンディションで実験
メインマシン(Windows 10 Pro 1809, Mem 32GB, SSD+HDD)上で、FreeBSD仮想マシンとLinux CentOS仮想マシンをほぼ同時にvagrant upで構築開始して遊んでみた。
FreeBSD機側はvimとemacsをpkg installするハンデがつく。
Linux機側はDocker & Kubernetes1台様クラスタをインストールするハンデがつく。
結果はLinux機側が圧倒的に速く起動した;;
emacsおそるべし...つかウソやろ....
tag: freebsd, vagrant, virtualbox, zfs
タイトルが散文的で意味不明だと思うが...仮想マシン上でFreeBSD zfsを使おうとすると落ちるという話。
Vagrantfileの中で追加ディスクを付加する。1台目はufsで使う。2台目はzfsで使う。
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "freebsd/FreeBSD-12.0-RELEASE"
config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: [ ".git/" ]
config.vm.boot_timeout = 600
config.ssh.shell = "sh"
# node5 : メインマシン
config.vm.define "node5" do |machine|
machine.vm.hostname="node5.area54.local"
machine.vm.network "private_network", ip: "192.168.54.15", private_network: "intnet"
machine.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "7500"]
vb.customize ["modifyvm", :id, "--cpus", "3"]
# add storage /dev/ada1
file_to_disk = "../vagranthdd/59-freebsd120-ada1.vdi"
unless File.exist?(file_to_disk)
vb.customize ['createhd', '--filename', file_to_disk, '--size', 300 * 1024, '--format', 'VDI'] # 300GB
# --discard
end
vb.customize ['storageattach', :id, '--storagectl', 'IDE Controller', '--port', 0, '--device', 1, '--type', 'hdd', '--medium', file_to_disk]
# add storage /dev/ada2
file_to_disk = "../vagranthdd/59-freebsd120-ada2.vmdk"
unless File.exist?(file_to_disk)
vb.customize ['createhd', '--filename', file_to_disk, '--size', 100 * 1024, '--format', 'VMDK'] # 100GB
end
vb.customize ['storageattach', :id, '--storagectl', 'IDE Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk]
end
# PROXY設定を環境変数PROXY_SERV_PORT,PROXY_USER,PROXY_PASSから読み込んでVM側に持ち込む
# https://qiita.com/hakomikan/items/860bb960699889849933 Vagrantfile をコミットするために - Qiita
machine.vm.provision "export env",
type: "shell",
run: "always",
privileged: true,
inline: <<-SHELL
mkdir -p /etc/profile.d
echo "# vagrant script for every boot" > /etc/profile.d/vagrant.sh
echo export PROXY_SERV_PORT=#{ENV['PROXY_SERV_PORT']} >> /etc/profile.d/vagrant.sh
echo export PROXY_USER=#{ENV['PROXY_USER']} >> /etc/profile.d/vagrant.sh
echo export PROXY_PASS=#{ENV['PROXY_PASS']} >> /etc/profile.d/vagrant.sh
echo export PROXY_SKIP=#{ENV['PROXY_SKIP']} >> /etc/profile.d/vagrant.sh
echo export http_proxy=#{ENV['http_proxy']} >> /etc/profile.d/vagrant.sh
echo export https_proxy=#{ENV['https_proxy']} >> /etc/profile.d/vagrant.sh
echo export no_proxy=#{ENV['no_proxy']} >> /etc/profile.d/vagrant.sh
echo export FROM_ORESRV=#{ENV['FROM_ORESRV']} >> /etc/profile.d/vagrant.sh
echo export FROM_OREAWS=#{ENV['FROM_OREAWS']} >> /etc/profile.d/vagrant.sh
chmod +x /etc/profile.d/vagrant.sh
SHELL
# shell provisioner
machine.vm.provision "shell", path: "setupscripts.sh"
end
end
setupscripts.sh
#!/bin/sh
set -e
f_log() {
echo "■ $(date) $@"
}
f_log "bashインストール"
pkg install -y bash
f_log "ansibleインストール ansible-playbook-2.7"
pkg install -y py27-ansible
# ufsでディスクをフォーマット
if true ; then
if [ ! -d /newdisk ]; then
f_log "fpart ada1 チェック"
if gpart show ada1 | grep freebsd-ufs ; then
f_log "gpart ada1 パーティション設定済み"
else
f_log "gpartディスク追加 ada1"
# GPTを作成
gpart create -s GPT ada1
gpart show ada1
# ada1のほぼ全部をfreebsd-ufsで確保する
gpart add -t freebsd-ufs -a 1M ada1
gpart show ada1
# ファイルシステムを作る
newfs -U /dev/ada1p1
fi
# マウントポイント作成
mkdir /newdisk
# fstabに追記
echo "/dev/ada1p1 /newdisk ufs rw 2 2" >> /etc/fstab
# マウント実行
mount /newdisk
df -h
fi
fi
# zfsとして使用
if true ; then
if [ ! -d /zpool/rsync ]; then
# zfs 有効化
echo 'zfs_enable="YES"' >> /etc/rc.conf
service zfs start
# zpoolで1台のディスク ada2 全体を使用する
echo "zpool create zpool /dev/ada2"
zpool create zpool /dev/ada2
df -k
zfs create zpool/vm
fi
fi
f_log "ansible初期実行。ローカルホスト向け"
cd /vagrant
ansible-playbook-2.7 --inventory playbooks/inventories/develop playbooks/single_role_initial_local_task.yaml
f_log "ansible実行。ローカルホスト向け。ユーザー追加。"
cd /vagrant
ansible-playbook-2.7 --inventory playbooks/inventories/develop playbooks/single_role_add_user_george.yaml
f_log "apacheインストール"
cd /vagrant
ansible-playbook-2.7 --inventory playbooks/inventories/develop playbooks/single_role_apache.yaml
f_log "utilsインストール"
cd /vagrant
ansible-playbook-2.7 --inventory playbooks/inventories/develop playbooks/single_role_utils.yaml
f_log "セットアップ完了"
exit 0
仮想マシンが起動したら、vagrant sshでログイン。
# zfs作成。 zfs create /zpool/test mkdir /zpool/test/hoge
でもって、zfsの上ででかい(600MB程度)ファイルのダウンロードを開始する。
[root@node5 /home/vagrant]# cd /zpool/test/hoge/ [root@node5 /zpool/test/hoge]# [root@node5 /zpool/test/hoge]# fetch https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-disc1.iso.xz FreeBSD-12.0-RELEASE-amd64-disc1.iso.xz 55% of 595 MB 1286 kBps 01m24s
すると、以下のエラーが出てVMが止まる;;
9,035bytes
うーん。VirtualBoxのディスクの自動拡張に失敗するのかな?
ちなみに、ufsの方で同じことをすると成功する。
[root@node5 /newdisk/hoge/test]# [root@node5 /newdisk/hoge/test]# fetch https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-disc1.iso.xz FreeBSD-12.0-RELEASE-amd64-disc1.iso.xz 595 MB 2989 kBps 03m24s [root@node5 /newdisk/hoge/test]#
不思議なこともあるものだ。
今回はメイン機、サブ機共にアップデートできた。
1903に上げた後は、1903用のパッチを適用するまでvagrantは起動しない方が良さそう。
1903アップデート直後にvagrantを起動すると、例のネットワークアダプターが見えなくなる現象が発生するが、パッチ適用後は普通に動作する。
震度6強はなかなか・・・関東の方まで揺れが伝わってきたぜ
金曜日の午前6時ごろ関東地方に来る模様。
今の予報のコースだと、江戸川放水路に南南西の風は吹きこまないので、明日は京葉線は止まらない方に10ガバス賭ける。
p.s.
結局ちょっと雨が降ったくらいだった。
長机で狭そうにしてる首脳の絵がひどいw
3,895,954bytes
これ、GDPで言えば世界のトップ 1, 2, 3 が座ってて、合計すると全世界の GDP の 50% を占める長机なんだぜ...。
1,797,153bytes
プーチンさんも狭そうにしてる。
p.s.
絵面が凄くて内容が頭に入らないけど、情報の売り買いとか、電子商取引の国際ルールを作ろうって話をしようとしてたらしい。
首脳陣みんな早く帰りたいって顔してたから、上手くいってないと思うけどw
p.p.s.
誰も言ってないけど通称は大阪トラック。トラックはトラッキング(追跡)の意味だと思う。
ここでは各国で議論を開始することを合意する、ってことだけで、ルールの内容はこれから決めるらしい。