どこかに向かうらしい話

迷走エンジニアの放浪記

CentOS7のシステムバックアップに導入する必要のあるパッケージ一覧

はじめに

以下の要件を満たすシステムイメージのバックアップを行うオープンソースソフトウェアを調査した。

  • 導入が容易である。
  • データの配置先として、「ローカルディスク」「NFSサーバ」「USB メモリ」「テープ」「CD/DVD」「LVM」に対応している。
  • LVMに対応している。

その結果として、有名なものにRelax and RecoverとMondo Rescueがあがった。

Relax and Recover

http://relax-and-recover.org/

Relax and Recover とは、NFSサーバなどバックアップデータの保存先と、レスキューイメージを使って簡単にシステムイメージのバックアップ・リストアができるオープンソースソフトウェアである。
Relax-and-Recoverには以下のような特徴がある。

  • RHEL 7.2から同梱されるようになった(yumで簡単にインストール可能)
  • Bashのみから成る
  • バックアップ、リストアの手順が非常に簡単
  • バックアップデータとレスキューイメージを使ったリストアを行う

参考
Relax and Recoverでのシステム回復
https://oss.sios.com/redhat-ch/blog/rear

Mondo Rescue

http://www.mondorescue.org/

Mondo Rescue とは、システムイメージのバックアップ・リストアができるオープンソースソフトウェアである。
パッケージが用意されているため、簡単に導入が可能。
Mondo Rescueには以下のような特徴がある。

  • リストア時にパーティションのサイズ変更や、grubなど、システムの調整ができる
  • 特定ディレクトリを除外できる
  • バックアップデータを使ったリストアを行う

この記事の目的

機能面も大事だが、あんまりパッケージを入れないで使えるほうが望ましい。
最小インストールが行われたCentOS7.2に対して、どれだけのパッケージのインストールが必要になるかの検証を行う。

結果

ほとんど入れる必要のないRelax and Recoverと、リポジトリの登録が必要なうえに大量のパッケージの導入が必要になるMondo Rescueと、結果が明確に分かれた。
以降、検証結果を示す。

検証

Relax and Recoverのインストール

本体のインストール

# yum install rear

【中略】

========================================================================================================================
 Package                  アーキテクチャー           バージョン                          リポジトリー              容量
========================================================================================================================
インストール中:
 rear                     noarch                     1.17.2-1.el7                        base                     354 k
依存性関連でのインストールをします:
 attr                     x86_64                     2.4.46-12.el7                       base                      66 k

トランザクションの要約
========================================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

総ダウンロード容量: 419 k
インストール容量: 1.1 M

【以下略】

関連パッケージのインストール

以下の通りインストールする。

# yum install mkisofs syslinux

【中略】

========================================================================================================================
 Package                       アーキテクチャー         バージョン                         リポジトリー            容量
========================================================================================================================
インストール中:
 genisoimage                   x86_64                   1.1.11-23.el7                      base                   298 k
 syslinux                      x86_64                   4.05-12.el7                        base                   990 k
依存性関連でのインストールをします:
 libusal                       x86_64                   1.1.11-23.el7                      base                   135 k
 mtools                        x86_64                   4.0.18-5.el7                       base                   203 k

トランザクションの要約
========================================================================================================================
インストール  2 パッケージ (+2 個の依存関係のパッケージ)

総ダウンロード容量: 1.6 M
インストール容量: 4.1 M

【以下略】

Mondo Rescueのインストール

本体のインストール

# cd /etc/yum.repos.d 
# wget http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo
# yum install mondo

【中略】

========================================================================================================================
 Package                                アーキテクチャー バージョン                         リポジトリー           容量
========================================================================================================================
インストール中:
 mondo                                  x86_64           3.2.2-1.centos7                    mondorescue           902 k
依存性関連でのインストールをします:
 afio                                   x86_64           2.5-1.centos7                      mondorescue            75 k
 buffer                                 x86_64           1.19-8.centos7                     mondorescue            23 k
 bzip2                                  x86_64           1.0.6-13.el7                       base                   52 k
 dosfstools                             x86_64           3.0.20-9.el7                       base                  101 k
 gdbm-devel                             x86_64           1.10-8.el7                         base                   47 k
 genisoimage                            x86_64           1.1.11-23.el7                      base                  298 k
 glibc-devel                            x86_64           2.17-106.el7_2.8                   updates               1.0 M
 glibc-headers                          x86_64           2.17-106.el7_2.8                   updates               663 k
 kernel-headers                         x86_64           3.10.0-327.28.2.el7                updates               3.2 M
 libdb-devel                            x86_64           5.3.21-19.el7                      base                   38 k
 libusal                                x86_64           1.1.11-23.el7                      base                  135 k
 mindi                                  x86_64           3.0.2-1.centos7                    mondorescue           202 k
 mindi-busybox                          x86_64           1.21.1-1.centos7                   mondorescue           276 k
 mtools                                 x86_64           4.0.18-5.el7                       base                  203 k
 net-tools                              x86_64           2.0-0.17.20131004git.el7           base                  304 k
 perl                                   x86_64           4:5.16.3-286.el7                   base                  8.0 M
 perl-CPAN-Meta                         noarch           2.120921-5.el7                     base                  113 k
 perl-CPAN-Meta-Requirements            noarch           2.122-7.el7                        base                   24 k
 perl-CPAN-Meta-YAML                    noarch           0.008-14.el7                       base                   24 k
 perl-Carp                              noarch           1.26-244.el7                       base                   19 k
 perl-Data-Dumper                       x86_64           2.145-3.el7                        base                   47 k
 perl-Digest                            noarch           1.17-245.el7                       base                   23 k
 perl-Digest-MD5                        x86_64           2.52-3.el7                         base                   30 k
 perl-Encode                            x86_64           2.51-7.el7                         base                  1.5 M
 perl-Exporter                          noarch           5.68-3.el7                         base                   28 k
 perl-ExtUtils-CBuilder                 noarch           1:0.28.2.6-286.el7                 base                   67 k
 perl-ExtUtils-Install                  noarch           1.58-286.el7                       base                   73 k
 perl-ExtUtils-MakeMaker                noarch           6.68-3.el7                         base                  275 k
 perl-ExtUtils-Manifest                 noarch           1.61-244.el7                       base                   31 k
 perl-ExtUtils-ParseXS                  noarch           1:3.18-2.el7                       base                   77 k
 perl-File-Path                         noarch           2.09-2.el7                         base                   26 k
 perl-File-Temp                         noarch           0.23.01-3.el7                      base                   56 k
 perl-Filter                            x86_64           1.49-3.el7                         base                   76 k
 perl-Getopt-Long                       noarch           2.40-2.el7                         base                   56 k
 perl-HTTP-Tiny                         noarch           0.033-3.el7                        base                   38 k
 perl-IO-Interface                      x86_64           1.05-2.el7                         mondorescue            26 k
 perl-IPC-Cmd                           noarch           1:0.80-4.el7                       base                   34 k
 perl-JSON-PP                           noarch           2.27202-2.el7                      base                   55 k
 perl-Locale-Maketext                   noarch           1.23-3.el7                         base                   93 k
 perl-Locale-Maketext-Simple            noarch           1:0.21-286.el7                     base                   49 k
 perl-Module-Build                      noarch           2:0.40.05-2.el7                    base                  281 k
 perl-Module-CoreList                   noarch           1:2.76.02-286.el7                  base                   84 k
 perl-Module-Load                       noarch           1:0.24-3.el7                       base                   11 k
 perl-Module-Load-Conditional           noarch           0.54-3.el7                         base                   18 k
 perl-Module-Metadata                   noarch           1.000018-2.el7                     base                   26 k
 perl-Module-ScanDeps                   noarch           1.10-3.el7                         base                   45 k
 perl-MondoRescue                       noarch           3.2.2-1.centos7                    mondorescue            82 k
 perl-Net-IPv4Addr                      noarch           0.10-6.el7                         mondorescue            16 k
 perl-Params-Check                      noarch           1:0.38-2.el7                       base                   18 k
 perl-Parse-CPAN-Meta                   noarch           1:1.4404-5.el7                     base                   14 k
 perl-PathTools                         x86_64           3.40-5.el7                         base                   82 k
 perl-Perl-OSType                       noarch           1.003-3.el7                        base                   20 k
 perl-Pod-Escapes                       noarch           1:1.04-286.el7                     base                   50 k
 perl-Pod-Perldoc                       noarch           3.20-4.el7                         base                   87 k
 perl-Pod-Simple                        noarch           1:3.28-4.el7                       base                  216 k
 perl-Pod-Usage                         noarch           1.63-3.el7                         base                   27 k
 perl-ProjectBuilder                    noarch           0.14.1-1.centos7                   mondorescue           133 k
 perl-Scalar-List-Utils                 x86_64           1.27-248.el7                       base                   36 k
 perl-Socket                            x86_64           2.010-3.el7                        base                   49 k
 perl-Storable                          x86_64           2.45-3.el7                         base                   77 k
 perl-Test-Harness                      noarch           3.28-3.el7                         base                  302 k
 perl-Text-ParseWords                   noarch           3.29-4.el7                         base                   14 k
 perl-Time-HiRes                        x86_64           4:1.9725-3.el7                     base                   45 k
 perl-Time-Local                        noarch           1.2300-2.el7                       base                   24 k
 perl-constant                          noarch           1.27-2.el7                         base                   19 k
 perl-devel                             x86_64           4:5.16.3-286.el7                   base                  452 k
 perl-libs                              x86_64           4:5.16.3-286.el7                   base                  687 k
 perl-macros                            x86_64           4:5.16.3-286.el7                   base                   43 k
 perl-parent                            noarch           1:0.225-244.el7                    base                   12 k
 perl-podlators                         noarch           2.5.1-3.el7                        base                  112 k
 perl-threads                           x86_64           1.87-4.el7                         base                   49 k
 perl-threads-shared                    x86_64           1.43-6.el7                         base                   39 k
 perl-version                           x86_64           3:0.99.07-2.el7                    base                   84 k
 pyparsing                              noarch           1.5.6-9.el7                        base                   94 k
 syslinux                               x86_64           4.05-12.el7                        base                  990 k
 systemtap-sdt-devel                    x86_64           2.8-10.el7                         base                   65 k
 wodim                                  x86_64           1.1.11-23.el7                      base                  320 k
依存性関連での更新をします:
 glibc                                  x86_64           2.17-106.el7_2.8                   updates               3.6 M
 glibc-common                           x86_64           2.17-106.el7_2.8                   updates                11 M

トランザクションの要約
========================================================================================================================
インストール  1 パッケージ (+77 個の依存関係のパッケージ)
更新                       (  2 個の依存関係のパッケージ)

総ダウンロード容量: 38 M

【以下略】

関連パッケージのインストール

  • lzo(高速圧縮ライブラリ)
  • lzop(高速圧縮ユーティリティ)

以下の通りインストールする。

# yum install lzo lzop
【中略】
パッケージ lzo-2.06-8.el7.x86_64 はインストール済みか最新バージョンです
【中略】
========================================================================================================================
 Package                   アーキテクチャー            バージョン                       リポジトリー               容量
========================================================================================================================
インストール中:
 lzop                      x86_64                      1.03-10.el7                      base                       54 k

トランザクションの要約
========================================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 54 k
インストール容量: 99 k

【以下略】

PostgreSQL9.5 on CentOS7

CentOS7に最新バージョンのPostgreSQLを追加する方法を以下にメモレベルではあるが、示す。

PostgreSQLインストール前作業

PostgreSQLリポジトリのインストール

http://yum.postgresql.org/repopackages.php より、最新版のrpmを指定して、yumインストールを行う。
今回は以下のURLを使用。

# yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm

PostgreSQLインストール作業

以下のコマンドでPostgreSQL9.5の最新バージョンのインストールを行う。

# yum install postgresql95-server postgresql95-contrib

インストール後の設定

データベースの初期化

PostgreSQLをインストール直後にデータベースの初期化を行う必要がある。
以下のコマンドを実行して、データベースの初期化を行う。

# /usr/pgsql-9.5/bin/postgresql95-setup initdb

PostgreSQLのサービスを起動

以下のコマンドを実行して、PostgreSQLのサービスを起動する。

# systemctl start postgresql-9.5.service

PostgreSQLのサービスを自動で起動するよう設定

以下のコマンドで自動で起動するように設定する。

# systemctl enable postgresql-9.5.service

.bash_profileの編集(任意)

インストール時に作成されるユーザpostgresの.bash_profileを必要に応じて編集する。
個人的な趣味を織り込み、以下の通り差し替える。

alias ls='ls --color=auto --show-control-chars'
alias ll='ls -l'
alias l='ls -CF'

export PS1="[\u@\h \W]\$ "

[ -f /etc/profile ] && source /etc/profile
export PGHOME=/var/lib/pgsql/9.5
export PGDATA=$PGHOME/data
export PGLIB=$PGHOME/lib

PATH=$PATH:$HOME/bin:$PGHOME/bin

# If you want to customize your settings,
# Use the file below. This is not overridden
# by the RPMS.
#[ -f /var/lib/pgsql/.pgsql_profile ] && source /var/lib/pgsql/.pgsql_profile

以下のコマンドで、変更を反映させる。

# source .bash_profile

Scalaのアーカイブ

(2016/7/7現在のお話しです)
Scalarpmなりmsiなりはココにある。

http://www.scala-lang.org/files/archive/

CentOSで最新版(2.11.8)を導入するのは、以下の通りで行うことができる。

# wget http://www.scala-lang.org/files/archive/scala-2.11.8.rpm
# yum localinstall scala-2.11.8.rpm

なお、.bash_profileには、以下を追記する。

export SCALA_HOME=/usr/share/scala
export PATH=$SCALA_HOME/bin:$PATH

※おまけ
SBTの導入は以下を実行すればよい。
http://www.scala-sbt.org/release/docs/Installing-sbt-on-Linux.html

# curl https://bintray.com/sbt/rpm/rpm | sudo tee /etc/yum.repos.d/bintray-sbt-rpm.repo
# yum install sbt

Oracle Database 12c を CentOS7にインストールしたときの備忘録

インストール手順は、以下のサイトを参考に行った。

CentOS 7 : Oracle Database 12c : インストール環境の設定 : Server World

その際のインストール時の備忘録として記載する。

インストールパッケージについて

インストール要件にkshがあるが、これに対応するパッケージはpdkshである。
これは実際には、mkshをインストールすることにより、pdkshがインストールされる。

# yum search pdksh
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
===================================================== 一致: pdksh ======================================================
mksh.x86_64 : MirBSD enhanced version of the Korn Shell

Oracle Database 12c インストール時の文字化け

Oracle Database 12c をインストールするとき、文字化けが発生し、日本語が「□□□」になった。

対応方法は、

  • 端末から「export LANG=C」と入力して、英語でインストールする。
  • jreの場所を直接指定してインストーラを起動する。

JREは /usr/lib配下にあるので、以下のように検索を行う。

$ find /usr/lib -name jre

そこで出てきたPATHを指定してrunInstallerを起動する。

$ ./runInstaller -jreLoc /usr/lib/jvm/java-1.8.0.71-.b15.el7_2.x86_64/jre

これで日本語でインストーラが起動する。

「PRVF-0002:ローカル・ノード名を取得できませんでした」のエラー

/etc/hostsファイルに、自ホスト名を追記すればOK。
自ホスト名が「ora12c」とする場合は、以下のようになる。

127.0.0.1   ora12c localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         ora12c localhost localhost.localdomain localhost6 localhost6.localdomain6

DBCAでも文字化けが発生

DBCAでも、文字化けが発生し、日本語が「□□□」になった。

対応方法は、

  • 端末から「export LANG=C」と入力して、英語でDBCAを起動する。
  • ${ORACLE_HOME}/bin/dbcaのJRE_DIRをOS標準の日本語フォントに対応したjreに書き換えてDBCAを起動する。

JREは /usr/lib配下にあるので、以下のように検索を行う。

$ find /usr/lib -name jre

そこで出てきたPATHを指定に書き換える。

(71行目)
# JRE_DIR=/u01/app/oracle/product/12.1.0/dbhome_1/jdk/jre
JRE_DIR=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre

そして、DBCAを起動する。

$ dbca

これで日本語でインストーラが起動する。

おまけ

Oracleが公表してるガイドは以下のものがある。

http://www.oracle.com/technetwork/jp/database/enterprise-edition/documentation/db121linux-x64-ja-v10-1984264-ja.pdf

CentOS7にGuest Additionsのインストール

GUEST ADDITIONS

Guest Additionsのなかでも特に以下の機能を使用したい。

GUEST ADDITIONSをインストール

必要なパッケージとそのパッケージのインストール

必要なパッケージは以下の通り。

  • Development Tools (開発ツール)
  • kernel-devel
  • kernel-headers

以下の様にパッケージをインストールする。

# yum groupinstall "Development Tools"
# yum install kernel-devel kernel-headers

ゲストマシン上のメニュー「デバイス」→「Guest AdditionsのCDイメージを挿入」をクリックする。

次にゲストマシン上のターミナルを開いて、作業ディレクトリを作成して、GuestAdditionsのマウント先に移動する。

# mkdir /mnt/cdrom
# mount -r /dev/cdrom /mnt/cdrom/
# cd /mnt/cdrom

CentOSなので、対応するインストールスクリプトを実行する。

# ./VBoxLinuxAdditions.run

すると、こんなエラーメッセージを吐き出した。

The missing package can be probably installed with
yum install kernel-devel-3.10.0-327.el7.x86_64

なので、

# yum install kernel-devel-3.10.0-327.el7.x86_64

を実行した。
その後再度以下を実行。

# ./VBoxLinuxAdditions.run

インストールスクリプトが終了し、プロンプトが戻ってきたらOSを一度リブートする。 以上でGuest Additionsのインストールは終了。

スライスと逆順が同時に使うとき気をつけないといけない件

Python3の話。

文字列sの3文字目から5文字目までの部分文字列は、スライスを用いてs[2:5]で取得が可能。
文字列sの逆の文字列は、s[::-1]で取得が可能。

文字列sの2文字目から4文字目までの部分文字列を取得し、その取得した部分文字列の逆の文字列は、スライスを用いてs[2:5:-1]で取得ができそうだが、結果は''となってしまい、うまくいかない。
実際はs[2:5][::-1]s[4:1:-1]で取得することが可能。
以下のサンプルを見れば、なんとなく理解できるかと思われる。

>>> s = "abcdefg"

>>> s[2:5]
'cde'
>>> s[2:5:-1]
''
>>> s[2:5][::-1]
'edc'
>>> s[4:1:-1]
'edc'

Python3におけるformat形式を自分のためにまとめてみた件

主なネタはココにある通り。
http://docs.python.jp/3.5/library/string.html#formatspec

自分がよく使うパターンに絞ってメモしてみる。

>>> printf("hoge")
hoge(改行あり)
>>> print("hoge", end="")
hoge(改行なし)

ポジション引数を使ったアクセス:

>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'
>>> '{2}, {1}, {0}'.format('a', 'b', 'c')
'c, b, a'
>>> '{0} {1} {0}'.format('abra', 'cad')   # 引数のインデクスは繰り返すことができます
'abra cad abra'

引数の要素へのアクセス:

>>> coord = (3, 5)
>>> 'X: {0[0]};  Y: {0[1]}'.format(coord)
'X: 3;  Y: 5'

テキストの幅を指定した整列:

>>> '{:<30}'.format('left aligned')
'left aligned                  '
>>> '{:>30}'.format('right aligned')
'                 right aligned'
>>> '{:^30}'.format('centered')
'           centered           '
>>> '{:*^30}'.format('centered')  # 詰め文字に '*' を使う
'***********centered***********'

%+f と %-f, % f の置換、そして符号の指定:

>>> '{:+f}; {:+f}'.format(3.14, -3.14)  # 常に表示する
'+3.140000; -3.140000'
>>> '{:f}; {:f}'.format(3.14, -3.14)  # 正の数にはスペースを表示
'3.140000; -3.140000'
>>> '{:-f}; {:-f}'.format(3.14, -3.14)  # マイナスだけを表示 -- '{:f}; {:f}' と同じ
'3.140000; -3.140000'

dによる指定:

>>> print("{0:d}".format(123))
123
>>> print("{0:+d}".format(123))
+123
>>> print("{0:04d}".format(123))
0123
>>> print("{0:+04d}".format(123))
+123
>>> print("{0:06d}".format(123))
000123
>>> print("{0:+06d}".format(123))
+00123

固定小数点の出力に関する指定:

標準では以下の通り。

>>> print("{0:f}".format(12.3456))
12.345600

小数点の位置に注目。

>>> print("{0:.1f}".format(12.3456))
12.3
>>> print("{0:.2f}".format(12.3456))
12.35
>>> print("{0:.3f}".format(12.3456))
12.346
>>> print("{0:.4f}".format(12.3456))
12.3456
>>> print("{0:.5f}".format(12.3456))
12.34560

小数点と表示させる桁数の比較。 x.yfは、小数点y桁だけ必ず表示しつつ、x文字分の表示領域に収めるように出力される。 (小数点も1文字としてカウントする)
ただし、出力対象がx文字分の表示領域に収まらない場合は、その分はオーバーして出力される。

>>> print("{0:3.1f}".format(12.3456))      # 小数点1桁必ず表示しつつ、3文字分の表示領域に収めるように出力されるが、表示領域に収まらないため、その分はオーバーして出力される。
12.3
>>> print("{0:4.1f}".format(12.3456))      # 小数点1桁必ず表示しつつ、4文字分の表示領域に収めるように出力される。
12.3
>>> print("{0:5.1f}".format(12.3456))      # 小数点1桁必ず表示しつつ、5文字分の表示領域に収めるように出力される。
 12.3
>>> print("{0:6.1f}".format(12.3456))      # 小数点1桁必ず表示しつつ、6文字分の表示領域に収めるように出力される。
  12.3
>>> print("{0:4.2f}".format(12.3456))      # 小数点2桁必ず表示しつつ、4文字分の表示領域に収めるように出力されるが、表示領域に収まらないため、その分はオーバーして出力される。
12.35
>>> print("{0:5.2f}".format(12.3456))      # 小数点2桁必ず表示しつつ、5文字分の表示領域に収めるように出力される。
12.35
>>> print("{0:6.2f}".format(12.3456))      # 小数点2桁必ず表示しつつ、6文字分の表示領域に収めるように出力される。
 12.35
>>> print("{0:7.2f}".format(12345.6789))   # 小数点2桁必ず表示しつつ、7文字分の表示領域に収めるように出力されるが、表示領域に収まらないため、その分はオーバーして出力される。
12345.68
>>> print("{0:8.2f}".format(12345.6789))   # 小数点2桁必ず表示しつつ、8文字分の表示領域に収めるように出力される。
12345.68
>>> print("{0:9.2f}".format(12345.6789))   # 小数点2桁必ず表示しつつ、9文字分の表示領域に収めるように出力される。
 12345.68