読者です 読者をやめる 読者になる 読者になる

manatee-itの備忘ログ

プログラム初心者のブログ。ruby on railsでWebサービスを作成中。(仕事が忙しくなかななか進まず) つまずいた所をなんでも記録。 環境:Ruby2.1 + Rails4.1.1 + Passenger + CentOS6.4(Apache + sqlite/MySQL)

Partedによるパーティション作成+LVM作成+ファイルシステム作成+マウント処理

インストール時に使い切っていなかったディスク領域にpartedコマンドでパーティション+LVMを作成し、ext4でフォーマットを実施。

環境:CentOS 6.5

パーティション作成 LVM作成 ファイルシステム作成 マウント処理

パーティション作成

[root@CentOS ~]# parted /dev/sda
GNU Parted 2.1
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) print
モデル: ATA WDC WD5000AAKX-0 (scsi)
ディスク /dev/sda: 500GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始    終了   サイズ  ファイルシステム  名前  フラグ
 1    1049kB  211MB  210MB   ext4                    boot
 2    211MB   108GB  107GB                           lvm

(parted) unit MB
(parted) print
モデル: ATA WDC WD5000AAKX-0 (scsi)
ディスク /dev/sda: 500108MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始    終了      サイズ    ファイルシステム  名前  フラグ
 1    1.05MB  211MB     210MB     ext4                    boot
 2    211MB   107585MB  107374MB                          lvm

(parted) mkpart
パーティションの名前?  []?
ファイルシステムの種類?  [ext2]?
開始? 107585
終了? 500108
警告: WARNING: the kernel failed to re-read the partition table on /dev/sda (デバイスもしくはリソースがビジー状態です).  As a result, it may not reflect all
of your changes until after reboot.
(parted) print
モデル: ATA WDC WD5000AAKX-0 (scsi)
ディスク /dev/sda: 500108MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始      終了      サイズ    ファイルシステム  名前  フラグ
 1    1.05MB    211MB     210MB     ext4                    boot
 2    211MB     107585MB  107374MB                          lvm
 3    107585MB  500108MB  392523MB

(parted) set
パーティション番号? 3
反転するフラグ? lvm
新しい状態?  [on]/off? on
警告: WARNING: the kernel failed to re-read the partition table on /dev/sda (デバイスもしくはリソースがビジー状態です).  As a result, it may not reflect all
of your changes until after reboot.
(parted) print
モデル: ATA WDC WD5000AAKX-0 (scsi)
ディスク /dev/sda: 500108MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始      終了      サイズ    ファイルシステム  名前  フラグ
 1    1.05MB    211MB     210MB     ext4                    boot
 2    211MB     107585MB  107374MB                          lvm
 3    107585MB  500108MB  392523MB                          lvm

(parted) quit

■LVM作成

【PVの作成】

[root@CentOS ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_centos
  PV Size               100.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              25599
  Free PE               0
  Allocated PE          25599
  PV UUID               djfDDx-6Rpo-4X5d-5MeC-YWn0-yONI-Jy8QlI

  "/dev/sda3" is a new physical volume of "365.57 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name
  PV Size               365.57 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               AjNZRX-mMEs-QXkR-2VH8-kRFA-4caI-b1cky6



[root@CentOS ~]# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created
[root@CentOS ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_centos
  PV Size               100.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              25599
  Free PE               0
  Allocated PE          25599
  PV UUID               djfDDx-6Rpo-4X5d-5MeC-YWn0-yONI-Jy8QlI

  "/dev/sda3" is a new physical volume of "365.57 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name
  PV Size               365.57 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               3u11TK-uRB6-j8oe-i77M-JsKj-Jvas-kzJKpN

【VGの作成】

[root@CentOS ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_centos
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               100.00 GiB
  PE Size               4.00 MiB
  Total PE              25599
  Alloc PE / Size       25599 / 100.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               jS4d8e-1Tax-ulu0-41qT-DrlL-hONN-XcpoMh

[root@CentOS ~]# vgcreate vg_virtualbox /dev/sda3
  Volume group "vg_virtualbox" successfully created
[root@CentOS ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_virtualbox
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               365.56 GiB
  PE Size               4.00 MiB
  Total PE              93584
  Alloc PE / Size       0 / 0
  Free  PE / Size       93584 / 365.56 GiB
  VG UUID               A0o3SZ-ziMe-targ-Re2J-F6Ax-jkpb-xnVBqQ

  --- Volume group ---
  VG Name               vg_centos
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               100.00 GiB
  PE Size               4.00 MiB
  Total PE              25599
  Alloc PE / Size       25599 / 100.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               jS4d8e-1Tax-ulu0-41qT-DrlL-hONN-XcpoMh

【LVの作成】  現状で必要な容量のみ作成することにし、他のLVを追加するかそのまま拡張するか後で決めることにした。

[root@CentOS ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg_centos/LogVol01
  LV Name                LogVol01
  VG Name                vg_centos
  LV UUID                afUoDQ-z5FZ-IvQG-19sy-RgAc-TMH1-DZBnOR
  LV Write Access        read/write
  LV Creation host, time CentOS, 2015-07-05 14:21:10 +0900
  LV Status              available
  # open                 1
  LV Size                96.00 GiB
  Current LE             24575
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vg_centos/LogVol00
  LV Name                LogVol00
  VG Name                vg_centos
  LV UUID                opf5WS-n2mV-3X4o-KHN2-v5rP-sbC7-3YWSQj
  LV Write Access        read/write
  LV Creation host, time CentOS, 2015-07-05 14:21:28 +0900
  LV Status              available
  # open                 1
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1



[root@CentOS ~]# lvcreate -n /dev/vg_virtualbox/LogVol00 -L 144GB vg_virtualbox
  Logical volume "LogVol00" created
[root@CentOS ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg_virtualbox/LogVol00
  LV Name                LogVol00
  VG Name                vg_virtualbox
  LV UUID                n5Grvt-rvhF-XY10-SdZL-Hq0M-JVMn-iJ66kV
  LV Write Access        read/write
  LV Creation host, time CentOS, 2015-07-25 23:21:33 +0900
  LV Status              available
  # open                 0
  LV Size                144.00 GiB
  Current LE             36864
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/vg_centos/LogVol01
  LV Name                LogVol01
  VG Name                vg_centos
  LV UUID                afUoDQ-z5FZ-IvQG-19sy-RgAc-TMH1-DZBnOR
  LV Write Access        read/write
  LV Creation host, time CentOS, 2015-07-05 14:21:10 +0900
  LV Status              available
  # open                 1
  LV Size                96.00 GiB
  Current LE             24575
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vg_centos/LogVol00
  LV Name                LogVol00
  VG Name                vg_centos
  LV UUID                opf5WS-n2mV-3X4o-KHN2-v5rP-sbC7-3YWSQj
  LV Write Access        read/write
  LV Creation host, time CentOS, 2015-07-05 14:21:28 +0900
  LV Status              available
  # open                 1
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

ext4ファイルシステム作成

[root@CentOS ~]# mkfs -t ext4 /dev/vg_virtualbox/LogVol00
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
9437184 inodes, 37748736 blocks
1887436 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
1152 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@CentOS ~]# tune2fs -l /dev/vg_virtualbox/LogVol00
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          55f40716-75dc-411f-a8ae-ab1ee90720b4
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              9437184
Block count:              37748736
Reserved block count:     1887436
Free blocks:              37108459
Free inodes:              9437173
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1015
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sat Jul 25 23:23:53 2015
Last mount time:          n/a
Last write time:          Sat Jul 25 23:24:19 2015
Mount count:              0
Maximum mount count:      26
Last checked:             Sat Jul 25 23:23:53 2015
Check interval:           15552000 (6 months)
Next check after:         Thu Jan 21 23:23:53 2016
Lifetime writes:          2437 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      041343e4-690e-4af6-945e-5e731ac0076d
Journal backup:           inode blocks


[root@CentOS ~]# tune2fs -c 0 -i 0 /dev/vg_virtualbox/LogVol00
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds

[root@CentOS ~]#[root@CentOS ~]# tune2fs -l /dev/vg_virtualbox/LogVol00 |grep -e 'Check interval' -e 'Maximum mount count'
Maximum mount count:      -1
Check interval:           0 (<none>)

■マウント処理

[root@CentOS ~]# mkdir /virtualbox
[root@CentOS ~]# vim /etc/fstab
[root@CentOS ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Jul  5 14:24:36 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_centos-LogVol01 /                       ext4    defaults        1 1
UUID=fb09d98f-b893-42ad-a001-f5d1cc343ec4 /boot                   ext4    defaults        1 2
/dev/mapper/vg_virtualbox-LogVol00 /virtualbox                       ext4    defaults        1 3
/dev/mapper/vg_centos-LogVol00 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
[root@CentOS ~]# mount -a
[root@CentOS ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos-LogVol01
                       95G   50G   41G  56% /
tmpfs                 3.8G     0  3.8G   0% /dev/shm
/dev/sda1             190M   64M  117M  36% /boot
/dev/mapper/vg_virtualbox-LogVol00
                      142G   60M  135G   1% /virtualbox
[root@CentOS ~]# ls /virtualbox/
lost+found
[root@CentOS ~]# chown manatee. /virtualbox/
[root@CentOS ~]# ls -ld /virtualbox/
drwxr-xr-x. 5 manatee manatee 4096  7月 25 23:45 2015 /virtualbox/

Vagrantのboxの適用

以下を参考にboxの導入方法を確認しました。

dotinstall.com

■boxの適用

Box毎にディレクトリを分ける。

$ mkdir -p VagrantTest/testcentos
$ cd VagrantTest/testcentos

Boxの初期化

$ vagrant init chef/centos-6.5
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

ネットワークの有効化。

$ vim Vagrantfile
  #config.vm.network "private_network", ip: "192.168.33.10"
  ↓
  config.vm.network "private_network", ip: "192.168.33.10"

IPアドレスを編集したところ、"vagrant up"でエラーとなったため、そのままコメントアウト

$ grep -v -e '^\s*#' -e '^\s*$' Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "chef/centos-7.1"
  config.vm.network "private_network", ip: "192.168.33.10"
end

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'chef/centos-6.5' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'chef/centos-6.5'
    default: URL: https://atlas.hashicorp.com/chef/centos-6.5
==> default: Adding box 'chef/centos-6.5' (v1.0.0) for provider: virtualbox
    default: Downloading: https://atlas.hashicorp.com/chef/boxes/centos-6.5/versions/1.0.0/providers/virtualbox.box
==> default: Successfully added box 'chef/centos-6.5' (v1.0.0) for 'virtualbox'!
==> default: Importing base box 'chef/centos-6.5'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'chef/centos-6.5' is up to date...
==> default: Setting the name of the VM: testcentos65_default_1436103308988_60424
==> default: Fixed port collision for 22 => 2222. Now on port 2201.
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 => 2201 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2201
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if its present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /home/manatee/VagrantTest/testcentos65

IPアドレスを変更したところ、以下のようにエラーとなった。ホストと同じセグメントするためには、パブリックネットワークの設定を行う必要がある。

Vagrantのネットワーク周りのあれこれ | Septeni Engineers' Blog | セプテーニ エンジニアブログ vagrantのネットワークについて - Qiita

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'chef/centos-7.1' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'chef/centos-7.1'
    default: URL: https://atlas.hashicorp.com/chef/centos-7.1
==> default: Adding box 'chef/centos-7.1' (v1.0.0) for provider: virtualbox
    default: Downloading: https://atlas.hashicorp.com/chef/boxes/centos-7.1/versions/1.0.0/providers/virtualbox.box
==> default: Successfully added box 'chef/centos-7.1' (v1.0.0) for 'virtualbox'!
==> default: Importing base box 'chef/centos-7.1'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'chef/centos-7.1' is up to date...
==> default: Setting the name of the VM: testcentos_default_1436101003101_87114
==> default: Fixed port collision for 22 => 2222. Now on port 2200.
==> default: Clearing any previously set network interfaces...
The specified host network collides with a non-hostonly network!
This will cause your specified IP to be inaccessible. Please change
the IP or name of your host only network so that it no longer matches that of
a bridged or non-hostonly network.

$ vagrant ssh
Last login: Fri Mar  7 16:57:20 2014 from 10.0.2.2

■ゲストOSの設定

ドットインストールにて用意されたスクリプトを実行。 Ansibleを利用して基本的な設定が一括して行われる様子。

gitをインストール

$ sudo yum -y install git
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
 :
 :

ドットインストールのスクリプトをダウンロード

$ git clone https://github.com/dotinstallres/centos65.git
Initialized empty Git repository in /home/vagrant/centos65/.git/
remote: Counting objects: 89, done.
remote: Total 89 (delta 0), reused 0 (delta 0), pack-reused 89
Unpacking objects: 100% (89/89), done.

スクリプトを実行

$ cd centos65/
$ ./run.sh

vagrant基本操作メモ (編集中)

こちらに記載されている内容を参考しました。

http://blog.raqda.com/vagrant/cli/index.html
vagrantコマンド一覧 - Qiita
Vagrantの使い方とコマンド一覧のまとめ - Qiita
Vagrant のコマンドをメモしておく - Programming log - Shindo200


■バージョン確認

$ vagrant --version
Vagrant 1.7.2

■作成/編集/削除

$ vagrant reload
$ vagrant destroy 


■BOXサブコマンド

$ vagrant box add CentOS6.6 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box

ダウンロードした実体は以下に格納される。
$HOME/.vagrant.d/boxes/
$ vagrant box -h
Usage: vagrant box <subcommand> [<args>]

Available subcommands:
     add
     list
     outdated
     remove
     repackage
     update

For help on any individual subcommand run `vagrant box <subcommand> -h`
$ vagrant box list
hashicorp/precise32     (virtualbox, 1.0.0)
chef/centos-6.5 (virtualbox, 1.0.0)
chef/centos-7.1 (virtualbox, 1.0.0)
$ vagrant box remove hashicorp/precise32
Box 'hashicorp/precise32' (v1.0.0) with provider 'virtualbox' appears
to still be in use by at least one Vagrant environment. Removing
the box could corrupt the environment. We recommend destroying
these environments first:

default (ID: 5b58c53dbf674efb872117bb6047f3ce)

Are you sure you want to remove this box? [y/N] y
Removing box 'hashicorp/precise32' (v1.0.0) with provider 'virtualbox'...


■ログイン/ログアウト

$ pwd
/home/manatee/VagrantTest/testcentos65
$ vagrant ssh
Last login: Sun Jul  5 23:03:31 2015 from 10.0.2.2
$ exit
logout
Connection to 127.0.0.1 closed.


■起動/停止/状態確認

$ pwd
/home/manatee/VagrantTest/testcentos65
$ vagrant status
Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.


>||
$ vagrant suspend
==> default: Saving VM state and suspending execution...

$ vagrant status
Current machine states:

default                   saved (virtualbox)

To resume this VM, simply run `vagrant up`.

$ vagrant halt
==> default: Discarding saved state of VM...
$ vagrant status
Current machine states:

default                   poweroff (virtualbox)

The VM is powered off. To restart the VM, simply run `vagrant up`

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'chef/centos-6.5' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /home/manatee/VagrantTest/testcentos65
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device


「Failed to mount folders in Linux guest. This is usually because...」のエラーについては、以下情報を参考にして解消させました。
対応するまでデフォルト設定となっているゲストOSとの共有が有効になっていませんでした。

vagrantでmountエラーの解決方法 - Qiita

$ rpm -qf   /etc/init.d/vboxadd-service
ファイル /etc/init.d/vboxadd-service はどのパッケージにも属していません。
[vagrant@localhost ~]$ sudo /etc/init.d/vboxadd setup
Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
The missing package can be probably installed with
yum install kernel-devel-2.6.32-504.23.4.el6.x86_64

Building the main Guest Additions module                   [失敗]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions              [  OK  ]

$ sudo yum install kernel-devel-2.6.32-504.23.4.el6.x86_64

$ rpm -qa |grep kernel
dracut-kernel-004-356.el6_6.2.noarch
kernel-2.6.32-504.23.4.el6.x86_64
kernel-headers-2.6.32-504.23.4.el6.x86_64
kernel-firmware-2.6.32-504.23.4.el6.noarch
kernel-devel-2.6.32-504.23.4.el6.x86_64
kernel-2.6.32-431.el6.x86_64

$ sudo /etc/init.d/vboxadd setup
Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module                   [  OK  ]
Building the shared folder support module                  [  OK  ]
Building the OpenGL support module                         [  OK  ]
Doing non-kernel setup of the Guest Additions              [  OK  ]
Starting the VirtualBox Guest Additions                    [  OK  ]

ネットワークの変更を行った後に起動

$ vim Vagrantfile
$ vagrant reload
==> default: Attempting graceful shutdown of VM...
==> default: Checking if box 'chef/centos-7.1' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Fixed port collision for 22 => 2222. Now on port 2200.
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 => 2200 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2200
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /home/manatee/VagrantTest/testcentos71
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: to force provisioning. Provisioners marked to run always will still run.

CentOS環境にvagrant+VirtualBoxを導入

CentOS環境にvagrant+chef(+VirtualBox)を導入するメモ


以下理由により、VMWareESXi5.0をインストールしていたPCを潰して、CentOS6.6をインストールした。
vagrantVMWare(player)でも動作する様子。また、vagrant-vsphereというものがあるが、単体のVMWareESXiのみでは動くのかわからなかった。
・インストールしていたPCは、OSレスで購入していた。

導入にあたり、以下URLが大変役に立ちました。GUIを利用しないのは、大変スムーズですね。

qiita.com



○DKMS のインストール

$ sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[sudo] password for manatee:
http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.TgJlkV: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
準備中...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

$ sudo yum install dkms

$ chkconfig --list |grep dkms
dkms_autoinstaller      0:off   1:off   2:on    3:on    4:on    5:on    6:off

注意:DKMSのインストールにて、kernel-develパッケージが追加インストールされるが、
同時にkernelのバージョンをそろえないとモジュールがロードしない。



VirtualBox のインストール

リポジトリ追加

$ cd /etc/yum.repos.d/
$ sudo wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo

VirtualBoxのインストール

$ sudo yum install VirtualBox-4.3

$ chkconfig --list |grep box
vboxautostart-service   0:off   1:off   2:on    3:on    4:on    5:on    6:off
vboxballoonctrl-service 0:off   1:off   2:on    3:on    4:on    5:on    6:off
vboxdrv         0:off   1:off   2:on    3:on    4:on    5:on    6:off
vboxweb-service 0:off   1:off   2:on    3:on    4:on    5:on    6:off

VirtualBoxを実行するユーザーアカウントを、VirtualBoxのグループ(vboxusers)に割り当て

$ sudo usermod -a -G vboxusers manatee

Vagrant の導入

最新版のURLを以下から確認

Download Vagrant - Vagrant


$ sudo rpm -Uvh https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.2_x86_64.rpm

セットアップして起動
Getting Started - Vagrant Documentation


これ以降、kernel-develとkernelパッケージのバージョンが一致していなかったため、エラーが発生。
エラー解消の試行錯誤のため、不要な操作が含まれている可能性があります。

$ vagrant init hashicorp/precise32
The user that is running Vagrant doesn't have the proper permissions
to write a Vagrantfile to the specified location. Please ensure that
you call `vagrant init` in a location where the proper permissions
are in place to create a Vagrantfile.


$ vagrant up
A Vagrant environment or target machine is required to run this
command. Run `vagrant init` to create a new Vagrant environment. Or,
get an ID of a target machine from `vagrant global-status` to run
this command on. A final option is to change to a directory with a
Vagrantfile and to try again.

(OS再起動)

$ vagrant init hashicorp/precise32
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

$ vagrant up
VirtualBox is complaining that the kernel module is not loaded. Please
run `VBoxManage --version` or open the VirtualBox GUI to see the error
message which should contain instructions on how to fix this error.

⇒エラー発生

$ VBoxManage --version
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (2.6.32-504.el6.x86_64) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /etc/init.d/vboxdrv setup

         You will not be able to start VMs until this problem is fixed.
4.3.28r100309

⇒エラー発生

$ sudo /etc/init.d/vboxdrv setup
[sudo] password for manatee:
Stopping VirtualBox kernel modules                         [  OK  ]
Uninstalling old VirtualBox DKMS kernel modules            [  OK  ]
Trying to register the VirtualBox kernel modules using DKMSError! echo
Your kernel headers for kernel 2.6.32-504.el6.x86_64 cannot be found at
/lib/modules/2.6.32-504.el6.x86_64/build or /lib/modules/2.6.32-504.el6.x86_64/source.
                                                           [失敗]
  (Failed, trying without DKMS)
Recompiling VirtualBox kernel modules                      [失敗]
  (Look at /var/log/vbox-install.log to find out what went wrong)

⇒エラー発生

$ cat /var/log/vbox-install.log
Uninstalling modules from DKMS
  removing old DKMS module vboxhost version  4.3.28

'------------------------------
Deleting module version: 4.3.28
completely from the DKMS tree.
'------------------------------
Done.
Attempting to install using DKMS

Creating symlink /var/lib/dkms/vboxhost/4.3.28/source ->
                 /usr/src/vboxhost-4.3.28



DKMS: add completed.
Failed to install using DKMS, attempting to install without
Makefile:183: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again.  中止.

カーネル環境変数が定義されていない様子なので、exportしてみたが、再度エラーが発生。

$ export KERN_DIR=/usr/src/kernels/2.6.32-504.23.4.el6.x86_64

$ sudo /etc/init.d/vboxdrv setup
[sudo] password for manatee:
Stopping VirtualBox kernel modules                         [  OK  ]
Uninstalling old VirtualBox DKMS kernel modules            [  OK  ]
Trying to register the VirtualBox kernel modules using DKMSError! echo
Your kernel headers for kernel 2.6.32-504.el6.x86_64 cannot be found at
/lib/modules/2.6.32-504.el6.x86_64/build or /lib/modules/2.6.32-504.el6.x86_64/source.
                                                           [失敗]
  (Failed, trying without DKMS)
Recompiling VirtualBox kernel modules                      [失敗]
  (Look at /var/log/vbox-install.log to find out what went wrong)

⇒再度エラー発生。

$ rpm -qa | grep kernel
kernel-headers-2.6.32-504.el6.x86_64
libreport-plugin-kerneloops-2.0.9-21.el6.centos.x86_64
kernel-devel-2.6.32-504.23.4.el6.x86_64
kernel-firmware-2.6.32-504.el6.noarch
abrt-addon-kerneloops-2.0.8-26.el6.centos.x86_64
dracut-kernel-004-356.el6.noarch
kernel-2.6.32-504.el6.x86_64

⇒kernel-develとkernelパッケージのバージョンの不一致を確認。
vagrantyumでインストールした際に、依存関係でkernel-develのみ最新になっていたのが原因。


カーネル関連パッケージについて、すべて最新にアップデートした。

$ sudo yum install kernel kernel-firmware kernel-headers

●OS再起動

$ rpm -qa | grep kernel
libreport-plugin-kerneloops-2.0.9-21.el6.centos.x86_64
kernel-devel-2.6.32-504.23.4.el6.x86_64
kernel-2.6.32-504.23.4.el6.x86_64
abrt-addon-kerneloops-2.0.8-26.el6.centos.x86_64
kernel-firmware-2.6.32-504.23.4.el6.noarch
kernel-headers-2.6.32-504.23.4.el6.x86_64
dracut-kernel-004-356.el6.noarch
kernel-2.6.32-504.el6.x86_64
<||

サービスの起動状態を確認。モジュールはロードされている様子。

>||
$ service vboxautostart-service   status
Usage: /etc/init.d/vboxautostart-service {start|stop}
$ service vboxballoonctrl-service status
Checking for VBox watchdog service ...not running
$ service vboxdrv        status
VirtualBox kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) are loaded.
$ service vboxweb-service status
Checking for VBox Web Service ...not running

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'hashicorp/precise32' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 4.2.0
    default: VirtualBox Version: 4.3
==> default: Mounting shared folders...
    default: /vagrant => /home/manatee
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: to force provisioning. Provisioners marked to run always will still run.
>||

CentOS 6.6インストール・各種設定 (随時追加)

Linux環境でVirtualBoxVagrantを動作させるために、VMWareESXi 5.0をインストールしていたPCを潰して、CentOS 6.6をインストールした。

その後に行った各種設定メモ ※随時追加予定。

今後は、Ansible のPlaybook というもので自動化を図る予定。
以下ドットインストールのスクリプトが参考になりそう。

github.com


■一般ユーザをsudo可能にする。

visudoで/etc/sudoerに以下を追加

$ visudo
  :
manatee ALL=(root)      ALL

■各ユーザのhistoryの件数増加+日付記録

$ vim .bashrc
  :
HISTSIZE=50000
HISTTIMEFORMAT='%Y/%m/%d %H:%M:%S '

$ source .bashrc

■ntpdサービスを起動

# chkconfig ntpd on
# service ntpd start
# /etc/ntpd.confはとりあえずそのままで起動。

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
'==============================================================================
'+li763-114.membe 145.174.168.164  3 u   24   64    1    6.128   -1.946   0.847
'+chobi.paina.jp  131.112.181.48   2 u   56   64    1   14.463   -5.081   1.458
' extendwings.com 133.243.238.243  2 u   66   64    0    0.000    0.000   0.000
'*y.ns.gin.ntt.ne 103.1.106.69     2 u   55   64    1   13.515   -2.613   0.072

■Gitインストール
$ sudo yum -y install git

$ rpm -q git
git-1.7.1-3.el6_4.1.x86_64

deviseのメール認証の追加

device のユーザ認証は導入していたが、確認メールの機能は利用していなかったので、追加しました。※メモ程度に記載したので、抜け漏れあるかもしれません。

■deviseのメール認証の追加

(1)confirmableを追加
$ vim remindertv/app/models/user.rb


devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable 
(←confirmableを追加)

(2)マイグレーションの追加
$ rails generate migration AddUserConfirmation
invoke active_record
create db/migrate/20150620131801_add_user_confirmation.rb

$ vim db/migrate/20150620131801_add_user_confirmation.rb


class AddUserConfirmation < ActiveRecord::Migration
def change
change_table(:users) do |t|
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
end

add_index :users, :confirmation_token, unique: true

end
end

$ rake db:migrate
$ RAILS_ENV=production rake db:migrate

参考:
マイグレーションを利用してConfirmedを追加しようとしたところ、エラーが発生した。
テーブルにカラムが追加されていなかったのが原因。
追加なのに「change_table」で記載していたから、マイグレートが行われていなかった。

undefined local variable or method `confirmed_at'


■メールの設定
$ vim config/environments/development.rb
$ vim config/environments/production.rb
以下を修正
config.action_mailer.default_url_options = { host: '<サイトのURL>`:3000' }
config.action_mailer.default_url_options = { host: '<サイトのURL>' }
以下を追加
config.action_mailer.delivery_method = :sendmail
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_options = {from: 'no-reply@example.com'}

Googleではない。。


■日本語化
以下を日本語化
app/views/devise/mailer/confirmation_instructions.html.erb
app/views/devise/mailer/reset_password_instructions.html.erb
app/views/devise/mailer/unlock_instructions.html.erb

→エラー時のメッセージなど他にもありそう。

その他、画面上のメッセージを日本語に変更
app/views/devise/shared/_links.erb
config/locales/devise.ja.yml (devise.en.ymlをコピーして修正)
config/locales/helpers.ja.yml

check_box_tagでtoggle、rake routes実行でつまずいた点

■その1
ドットインストールを参考にcheck_box_tagとtoggleの機能を追加しようとしたところ、以下のエラーが発生。

ActionView::MissingTemplate (Missing template programs/toggle, application/toggle with {:locale=>[:en], :formats=>[:html, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in:
* "/var/www/html/XXXX/app/views"
* "/usr/local/lib/ruby/gems/2.1.0/gems/devise-3.2.4/app/views"

コントローラーの記載に以下が抜けていたため、発生していた様子。
render nothing: true

renderはデフォルトのテンプレート以外の動作をさせるものと理解。

ドットインストールの動画だけを参考にしていると、自分でテキスト化する際にミスがあったり、なかなか大変。頻繁に時間が取れないけど、会員になってしまおうかな。。
本設定で行っているトグルの機能ですが、なぜかSQLiteではうまくいきませんでした。boolean型がないから?
MySQLでは、tinyint(1)となっており、試したところ正常に動作しています。

参考URL
Missing template - Railsのお部屋
Ruby On Railsでタスク管理アプリを作ってみる | jekylog
ドットインストール「Ruby on Rails 4入門」メモ - Qiita
ドットインストール Rails まとめ - gotagota日記

SQLiteからMySQLへのデータ変換
参考URL
SQLiteからMySQLへデータのマイグレーション(変換)|DB|ブログ|ノノログ



■その2
rake routesを実行したところ、以下のエラーが発生。

$ rake routes
rake aborted!
Gem::LoadError: You have already activated rake 10.4.2, but your Gemfile requires rake 10.3.2. Prepending `bundle exec` to your command may solve this.
(以降省略)

以下を実行して解消した。
bundle update rake

参考URL
Rails - 「rake db:migrate」コマンドで「rake aborted」になったら - Qiita