ラベル CentOS の投稿を表示しています。 すべての投稿を表示
ラベル CentOS の投稿を表示しています。 すべての投稿を表示

2015年1月30日金曜日

CentOS6.5でapache 2.4.12のrpm化&インストール

WordPressを構築してみるために、最新のapache 2.4.12をインストールする。rpmがないので、rpm作成から試してみる。
※rpm作成環境の構築はこちら ソースコードを入手し、さくっとrpmを作成してみる。
$ mkdir  ~/rpmbuild/SOURCES/httpd-2.4.12-1.src
$ cd ~/rpmbuild/SOURCES/httpd-2.4.12-1.src
$ wget http://ftp.riken.jp/net/apache//httpd/httpd-2.4.12.tar.bz2
$ rpmbuild --clean -tb ~/rpmbuild/SOURCES/httpd-2.4.12-1.src/httpd-2.4.12.tar.bz2

error: Failed build dependencies:
        zlib-devel is needed by httpd-2.4.12-1.x86_64
        libselinux-devel is needed by httpd-2.4.12-1.x86_64
        libuuid-devel is needed by httpd-2.4.12-1.x86_64
        apr-devel >= 1.4.0 is needed by httpd-2.4.12-1.x86_64
        apr-util-devel >= 1.4.0 is needed by httpd-2.4.12-1.x86_64
        pcre-devel >= 5.0 is needed by httpd-2.4.12-1.x86_64
        openldap-devel is needed by httpd-2.4.12-1.x86_64
        lua-devel is needed by httpd-2.4.12-1.x86_64
        libxml2-devel is needed by httpd-2.4.12-1.x86_64
        distcache-devel is needed by httpd-2.4.12-1.x86_64
        openssl-devel is needed by httpd-2.4.12-1.x86_64
まぁ、足りませんね。ということで、確認してみます。
$ sudo yum install zlib-devel libselinux-devel libuuid-devel apr-devel apr-util-devel pcre-devel openldap-devel lua-devel libxml2-devel distcache-devel openssl-devel

Dependencies Resolved

========================================================================================================================
 Package                            Arch                  Version                          Repository              Size
========================================================================================================================
Installing:
 apr-devel                          x86_64                1.3.9-5.el6_2                    base                   176 k
 apr-util-devel                     x86_64                1.3.9-3.el6_0.1                  base                    69 k
 libselinux-devel                   x86_64                2.0.94-5.8.el6                   base                   137 k
 libuuid-devel                      x86_64                2.17.2-12.18.el6                 base                    85 k
 libxml2-devel                      x86_64                2.7.6-17.el6_6.1                 updates                1.1 M
 lua-devel                          x86_64                5.1.4-4.1.el6                    base                    20 k
 openldap-devel                     x86_64                2.4.39-8.el6                     base                   1.1 M
 openssl-devel                      x86_64                1.0.1e-30.el6_6.5                updates                1.2 M
 pcre-devel                         x86_64                7.8-6.el6                        base                   318 k
 zlib-devel                         x86_64                1.2.3-29.el6                     base                    44 k
Installing for dependencies:
 cyrus-sasl-devel                   x86_64                2.1.23-15.el6_6.1                updates                303 k
 db4-cxx                            x86_64                4.7.25-18.el6_4                  base                   588 k
 db4-devel                          x86_64                4.7.25-18.el6_4                  base                   6.6 M
 expat-devel                        x86_64                2.0.1-11.el6_2                   base                   120 k
 keyutils-libs-devel                x86_64                1.4-5.el6                        base                    29 k
 krb5-devel                         x86_64                1.10.3-33.el6                    base                   498 k
 libcom_err-devel                   x86_64                1.41.12-21.el6                   base                    32 k
 libsepol-devel                     x86_64                2.0.41-4.el6                     base                    64 k
Updating for dependencies:
 cyrus-sasl                         x86_64                2.1.23-15.el6_6.1                updates                 78 k
 cyrus-sasl-lib                     x86_64                2.1.23-15.el6_6.1                updates                136 k
 e2fsprogs                          x86_64                1.41.12-21.el6                   base                   553 k
 e2fsprogs-libs                     x86_64                1.41.12-21.el6                   base                   121 k
 keyutils                           x86_64                1.4-5.el6                        base                    39 k
 keyutils-libs                      x86_64                1.4-5.el6                        base                    20 k
 krb5-libs                          x86_64                1.10.3-33.el6                    base                   765 k
 libblkid                           x86_64                2.17.2-12.18.el6                 base                   116 k
 libcom_err                         x86_64                1.41.12-21.el6                   base                    37 k
 libselinux                         x86_64                2.0.94-5.8.el6                   base                   108 k
 libselinux-utils                   x86_64                2.0.94-5.8.el6                   base                    82 k
 libss                              x86_64                1.41.12-21.el6                   base                    41 k
 libuuid                            x86_64                2.17.2-12.18.el6                 base                    69 k
 libxml2                            x86_64                2.7.6-17.el6_6.1                 updates                801 k
 openldap                           x86_64                2.4.39-8.el6                     base                   280 k
 openssl                            x86_64                1.0.1e-30.el6_6.5                updates                1.5 M
 util-linux-ng                      x86_64                2.17.2-12.18.el6                 base                   1.6 M

Transaction Summary
========================================================================================================================
Install      18 Package(s)
Upgrade      17 Package(s)
・
・
apr-develapr-util-develについては、レポジトリ上のものが古いみたい。 ということで、こちらもソースからrpm化をして、インストールしてみる。 入手先はこちら
$ cd ~/rpmbuild/SOURCES/
$ wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.5.1.tar.bz2
$ wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.5.4.tar.bz2

$ rpmbuild --clean -tb ~/rpmbuild/SOURCES/apr-1.5.1.tar.bz2

error: Failed build dependencies:
        doxygen is needed by apr-1.5.1-1.x86_64

$ sudo yum install doxygen -y

$ rpmbuild --clean -tb ~/rpmbuild/SOURCES/apr-1.5.1.tar.bz2
 ・
 ・
 ・
$ ll ../RPMS/x86_64/

total 1320
-rw-rw-r-- 1 hayashi hayashi  93308 Jan 30 14:34 apr-1.5.1-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi 416372 Jan 30 14:34 apr-debuginfo-1.5.1-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi 839308 Jan 30 14:34 apr-devel-1.5.1-1.x86_64.rpm

出来上がり!つぎに進む。
$ rpmbuild --clean -tb ~/rpmbuild/SOURCES/apr-util-1.5.4.tar.bz2

error: Failed build dependencies:
        apr-devel >= 1.4.0 is needed by apr-util-1.5.4-1.x86_64
        expat-devel is needed by apr-util-1.5.4-1.x86_64
        libuuid-devel is needed by apr-util-1.5.4-1.x86_64
        db4-devel is needed by apr-util-1.5.4-1.x86_64
        postgresql-devel is needed by apr-util-1.5.4-1.x86_64
        mysql-devel is needed by apr-util-1.5.4-1.x86_64
        sqlite-devel >= 3.0.0 is needed by apr-util-1.5.4-1.x86_64
        freetds-devel is needed by apr-util-1.5.4-1.x86_64
        unixODBC-devel is needed by apr-util-1.5.4-1.x86_64
        openldap-devel is needed by apr-util-1.5.4-1.x86_64
        openssl-devel is needed by apr-util-1.5.4-1.x86_64
        nss-devel is needed by apr-util-1.5.4-1.x86_64
とりあえず、apr-develは先ほどのやつをインストール。
$ sudo rpm -ivh ../RPMS/x86_64/apr-1.5.1-1.x86_64.rpm ../RPMS/x86_64/apr-devel-1.5.1-1.x86_64.rpm

        file /usr/lib64/libapr-1.so.0 from install of apr-1.5.1-1.x86_64 conflicts with file from package apr-1.3.9-5.el6_2.x86_64

失敗・・気を取り直して、、
$ sudo rpm -Uvh ../RPMS/x86_64/apr-1.5.1-1.x86_64.rpm ../RPMS/x86_64/apr-devel-1.5.1-1.x86_64.rpm

成功。それ以外をチェック
$ sudo yum install expat-devel libuuid-devel db4-devel postgresql-devel mysql-devel sqlite-devel freetds-devel unixODBC-devel openldap-devel openssl-devel nss-devel

Dependencies Resolved

========================================================================================================================
 Package                               Arch                Version                           Repository            Size
========================================================================================================================
Installing:
 db4-devel                             x86_64              4.7.25-18.el6_4                   base                 6.6 M
 expat-devel                           x86_64              2.0.1-11.el6_2                    base                 120 k
 freetds-devel                         x86_64              0.91-2.el6                        epel                  39 k
 libuuid-devel                         x86_64              2.17.2-12.18.el6                  base                  85 k
 mysql-devel                           x86_64              5.1.73-3.el6_5                    base                 129 k
 nss-devel                             x86_64              3.16.2.3-3.el6_6                  updates              198 k
 openldap-devel                        x86_64              2.4.39-8.el6                      base                 1.1 M
 openssl-devel                         x86_64              1.0.1e-30.el6_6.5                 updates              1.2 M
 postgresql-devel                      x86_64              8.4.20-1.el6_5                    base                 815 k
 sqlite-devel                          x86_64              3.6.20-1.el6                      base                  81 k
 unixODBC-devel                        x86_64              2.2.14-14.el6                     base                  53 k
Installing for dependencies:
 cyrus-sasl-devel                      x86_64              2.1.23-15.el6_6.1                 updates              303 k
 db4-cxx                               x86_64              4.7.25-18.el6_4                   base                 588 k
 freetds                               x86_64              0.91-2.el6                        epel                 568 k
 keyutils-libs-devel                   x86_64              1.4-5.el6                         base                  29 k
 krb5-devel                            x86_64              1.10.3-33.el6                     base                 498 k
 libcom_err-devel                      x86_64              1.41.12-21.el6                    base                  32 k
 libselinux-devel                      x86_64              2.0.94-5.8.el6                    base                 137 k
 libsepol-devel                        x86_64              2.0.41-4.el6                      base                  64 k
 libtool-ltdl                          x86_64              2.2.6-15.5.el6                    base                  44 k
 mysql                                 x86_64              5.1.73-3.el6_5                    base                 894 k
 nspr-devel                            x86_64              4.10.6-1.el6_5                    base                 111 k
 nss-softokn-devel                     x86_64              3.14.3-22.el6_6                   updates               14 k
 nss-softokn-freebl-devel              x86_64              3.14.3-22.el6_6                   updates              139 k
 nss-util-devel                        x86_64              3.16.2.3-2.el6_6                  updates               68 k
 postgresql                            x86_64              8.4.20-1.el6_5                    base                 2.6 M
 postgresql-libs                       x86_64              8.4.20-1.el6_5                    base                 201 k
 unixODBC                              x86_64              2.2.14-14.el6                     base                 378 k
Updating for dependencies:
 cyrus-sasl                            x86_64              2.1.23-15.el6_6.1                 updates               78 k
 cyrus-sasl-lib                        x86_64              2.1.23-15.el6_6.1                 updates              136 k
 e2fsprogs                             x86_64              1.41.12-21.el6                    base                 553 k
 e2fsprogs-libs                        x86_64              1.41.12-21.el6                    base                 121 k
 keyutils                              x86_64              1.4-5.el6                         base                  39 k
 keyutils-libs                         x86_64              1.4-5.el6                         base                  20 k
 krb5-libs                             x86_64              1.10.3-33.el6                     base                 765 k
 libblkid                              x86_64              2.17.2-12.18.el6                  base                 116 k
 libcom_err                            x86_64              1.41.12-21.el6                    base                  37 k
 libselinux                            x86_64              2.0.94-5.8.el6                    base                 108 k
 libselinux-utils                      x86_64              2.0.94-5.8.el6                    base                  82 k
 libss                                 x86_64              1.41.12-21.el6                    base                  41 k
 libuuid                               x86_64              2.17.2-12.18.el6                  base                  69 k
 mysql-libs                            x86_64              5.1.73-3.el6_5                    base                 1.2 M
 nspr                                  x86_64              4.10.6-1.el6_5                    base                 113 k
 nss                                   x86_64              3.16.2.3-3.el6_6                  updates              834 k
 nss-softokn                           x86_64              3.14.3-22.el6_6                   updates              262 k
 nss-softokn-freebl                    x86_64              3.14.3-22.el6_6                   updates              167 k
 nss-sysinit                           x86_64              3.16.2.3-3.el6_6                  updates               44 k
 nss-tools                             x86_64              3.16.2.3-3.el6_6                  updates              427 k
 nss-util                              x86_64              3.16.2.3-2.el6_6                  updates               66 k
 openldap                              x86_64              2.4.39-8.el6                      base                 280 k
 openssl                               x86_64              1.0.1e-30.el6_6.5                 updates              1.5 M
 util-linux-ng                         x86_64              2.17.2-12.18.el6                  base                 1.6 M

Transaction Summary
========================================================================================================================
Install      28 Package(s)
Upgrade      24 Package(s)

Total download size: 25 M
Is this ok [y/N]: y
・
・
・

$ rpmbuild -tb ~/rpmbuild/SOURCES/apr-util-1.5.4.tar.bz2

$ ll ../RPMS/x86_64/
total 2428
-rw-rw-r-- 1 hayashi hayashi  93308 Jan 30 14:34 apr-1.5.1-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi 416372 Jan 30 14:34 apr-debuginfo-1.5.1-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi 839308 Jan 30 14:34 apr-devel-1.5.1-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi  77904 Jan 30 14:56 apr-util-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi   7100 Jan 30 14:56 apr-util-dbm-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi 433820 Jan 30 14:56 apr-util-debuginfo-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi 489180 Jan 30 14:56 apr-util-devel-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi  12184 Jan 30 14:56 apr-util-freetds-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi   9032 Jan 30 14:56 apr-util-ldap-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi  14872 Jan 30 14:56 apr-util-mysql-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi  11052 Jan 30 14:56 apr-util-nss-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi  20600 Jan 30 14:56 apr-util-odbc-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi  10328 Jan 30 14:56 apr-util-openssl-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi  14816 Jan 30 14:56 apr-util-pgsql-1.5.4-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi  11376 Jan 30 14:56 apr-util-sqlite-1.5.4-1.x86_64.rpm
出来上がり!ということで、必要なものをインストールして、再度apacheにチャレンジ。
$ sudo rpm -Uvh ../RPMS/x86_64/apr-util-1.5.4-1.x86_64.rpm ../RPMS/x86_64/apr-util-devel-1.5.4-1.x86_64.rpm
$ sudo yum install zlib-devel libselinux-devel libuuid-devel pcre-devel openldap-devel lua-devel libxml2-devel distcache-devel openssl-devel
・
・
No package distcache-devel available.
・
・
よく見たらdistcache-develがレポジトリにないらしい。
$ cd ~/rpmbuild/SOURCES/
$ wget http://ftp.riken.jp/Linux/fedora/releases/18/Everything/source/SRPMS/d/distcache-1.4.5-23.src.rpm
$ rpmbuild --clean --rebuild ~/rpmbuild/SOURCES/distcache-1.4.5-23.src.rpm
$ ll ~/rpmbuild/RPMS/x86_64/distcache-*

・
・
rw-rw-r-- 1 hayashi hayashi 114528 Jan 30 15:51 distcache-1.4.5-23.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi 197836 Jan 30 15:51 distcache-debuginfo-1.4.5-23.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi  59216 Jan 30 15:51 distcache-devel-1.4.5-23.x86_64.rpm

$ sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/distcache-1.4.5-23.x86_64.rpm ~/rpmbuild/RPMS/x86_64/distcache-devel-1.4.5-23.x86_64.rpm

$ rpmbuild --clean -tb ~/rpmbuild/SOURCES/httpd-2.4.12-1.src/httpd-2.4.12.tar.bz2

$ ll ~/rpmbuild/RPMS/x86_64/

・
・
-rw-rw-r-- 1 hayashi hayashi 1165260 Jan 30 15:57 httpd-2.4.12-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi 3448912 Jan 30 15:57 httpd-debuginfo-2.4.12-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi  188052 Jan 30 15:57 httpd-devel-2.4.12-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi 3320124 Jan 30 15:57 httpd-manual-2.4.12-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi   69988 Jan 30 15:57 httpd-tools-2.4.12-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi   44376 Jan 30 15:57 mod_authnz_ldap-2.4.12-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi   43448 Jan 30 15:57 mod_lua-2.4.12-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi   22308 Jan 30 15:57 mod_proxy_html-2.4.12-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi    5648 Jan 30 15:57 mod_socache_dc-2.4.12-1.x86_64.rpm
-rw-rw-r-- 1 hayashi hayashi   81724 Jan 30 15:57 mod_ssl-2.4.12-1.x86_64.rpm

ようやくできました!でインストールをしてみます。
$ rpm -ivh  ~/rpmbuild/RPMS/x86_64/httpd-2.4.12-1.x86_64.rpm

error: Failed dependencies:
        /etc/mime.types is needed by httpd-2.4.12-1.x86_64
まだあったか・・
$ yum provides /etc/mime.types

Loaded plugins: fastestmirror, versionlock
Determining fastest mirrors
 * base: www.ftp.ne.jp
 * epel: ftp.kddilabs.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
mailcap-2.1.31-2.el6.noarch : Helper application and MIME type associations for file types
Repo        : base
Matched from:
Filename    : /etc/mime.types

$ sudo yum install mailcap

$ rpm -ivh  ~/rpmbuild/RPMS/x86_64/httpd-2.4.12-1.x86_64.rpm

できました!最後にwordpressでphpということもあり、以下の対応をする。
MPMの変更
phpの場合は、2.4から標準のeventや、workerだと挙動が不安定になる(threadsafeではない)ため、preworkで変更 ⇒2.4からはmod_proxy_fcgiを使うことでeventでも問題ない?(ここ
#LoadModule mpm_event_module lib64/httpd/modules/mod_mpm_event.so
LoadModule mpm_prefork_module lib64/httpd/modules/mod_mpm_prefork.so
$ sudo service httpd start
$ /usr/sbin/apachectl -V

Server version: Apache/2.4.12 (Unix)
Server built:   Jan 30 2015 15:55:16
Server's Module Magic Number: 20120211:41
Server loaded:  APR 1.5.1, APR-UTIL 1.5.4
Compiled using: APR 1.5.1, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/etc/httpd/conf/mime.types"
 -D SERVER_CONFIG_FILE="/etc/httpd/conf/httpd.conf"
お~。次はphp。

2014年9月25日木曜日

CentOS+samba+ActiveDirectory環境でアクセス制限をかける

備忘録。 Wjndows2008のActiveDirectory配下に、CentOS + sambaを使ってドメイン参加し、認証の一元化を行っている環境で、AD上のすべてのユーザーがアクセスできてしまわないように制限ををかける。

 方法1./etc/security/pam_winbind.confで制御
・
・
[global]
require_membership_of=xxx,yyy,zzz
・
・

方法2./etc/pam.d/system-authで制御
・
・
[global]
 account   required        pam_winbind.so  use_first_pass require_membership_of=xxx,yyy,zzz
・
・

いずれにしても、ポイントは
・カンマ区切りで並べるという点
・xxx,yyy,zzzは、名称でもSIDでもOK
というところ。

(2014/11/24)方法2だとsuやsudoの時には有効なのですが、sshでログインするときに有効にならない(ログインできてしまう)。方法1打と効いた。

2014年9月15日月曜日

rpm-buildの環境を作る

rpmを作成するための環境構築をメモで残しておく。 まずはインストール。
$ sudo yum install rpmdevtools
次にbuildするユーザに切り替えて、環境を作る。
$ su - hayashi

##build用ディレクトリと、マクロが作成される

$ rpmdev-setuptree
$ ls
rpmbuild

##マクロを修正する

$ vi ~/.rpmmacros
%_topdir      %(echo $HOME)/rpmbuild
%_smp_mflags  -j3
%__arch_install_post   /usr/lib/rpm/check-rpaths   /usr/lib/rpm/check-buildroot

# 追加
%_sourcedir %{_topdir}/SOURCES/%{name}-%{version}-%{release}.src
これで準備完了。追加した箇所はパッケージ、バージョンごとにソースを配置して作成できるための設定。
試しに、ソースパッケージ(haproxy-1.5.3.tar.gz)を入手してrpmを作ってみる。

$ ls /tmp/haproxy/haproxy-1.5.3.tar.gz
$ mkdir ~/rpmbuild/SOURCES/haproxy-1.5.3-1.src
$ cp /tmp/haproxy/haproxy-1.5.3.tar.gz ~/rpmbuild/SOURCES/haproxy-1.5.3-1.src/
$ cd ~/rpmbuild/SOURCES/haproxy-1.5.3-1.src/
specファイルを修正する場合は、rpmdev-extractを使うと展開する際に便利(rpmでもtarballでも対応)
$ rpmdev-extract haproxy-1.5.3.tar.gz
$ cp haproxy-1.5.3/examples/haproxy.spec ~/rpmbuild/SPECS/
$ rpmbuild -bb ~/rpmbuild/SPECS/haproxy.spec
$ ls -R  ~/rpmbuild/RPMS
.:
x86_64

./x86_64:
haproxy-1.5.3-1.x86_64.rpm

$
出来上がり。またspecファイルを修正しない場合は、
$ rpmbuild -tb ~/rpmbuild/SOURCES/haproxy-1.5.3-1.src/haproxy-1.5.3.tar.gz
$
でいけますね。

WordPress3.9.1 + CentOS6.4 を構築してみる(その0)

今後WordPressを使うかもしれない。いまどきAWSとかAzureではイメージを展開するだけで
使えてしまうご時世だが、それだと面白くないし、最新バージョンが使えるようしたほうがよいと
思い立ち、いちから自前で作ってみる(スキルアップ)。

 ・Apache or nginx
  WordPressのサイトに、nginxよりはapacheを推奨するとの記載があったのでapache
  にしてみる。実際にplug-inによっては、nginxで使うにあたり修正をする必要がある
  ケースもありそうだった。今後、脆弱性対応でVerUPも必要そうだし、なるべく推奨
  がよさそう。最後にnginxにしてみても面白いかも。
 
 ・各コンポーネントのバージョン 
  安定版レベルで最新版を使う(ベータ版は避ける)。
  CentOS 6.4 (x64_64)  ※ちょっと古い・・
  WordPress 3.9.1
   Apache 2.4.9 + fastcgi
  PHP 5.5.12 + PHP-frm
  MySQL 5.6.19

 ・WordPressのPlug-in
   バックアップ
   セキュリティ
   冗長化
   パフォーマンス改善
  に関するものを、使ってみる。

 ・可用性
  各コンポーネント(Web/DB)も冗長化をしてみる。

このあたりをやってみたいと思う。進め方としては、

 1.1台のOS上にすべてを入れてみる(シングル構成)
 2.冗長化をしてみる
 3.Plug-inを入れてみる
 4.バージョンアップをしてみる

とする。また構築するにあたり、今度の配布などを考えて、各コンポーネントをrpm化しインストールする。
長くなるので別の記事で残す。
 

2014年6月18日水曜日

tips:nfsの調査!

NFS server(Windows2008R2)  +  NFS Client(CentOS6.4)にてデバッグをおこなったので、その時の備忘録。

 調査1.NFS Client側で統計情報取得

 # nfsstat -c

 Client rpc stats:
 calls      retrans    authrefrsh
 259        0          265

 Client nfs v3:
 null         getattr      setattr      lookup       access       readlink
 0         0% 118      46% 5         1% 5         1% 101      39% 0         0%
 read         write        create       mkdir        symlink      mknod
 0         0% 0         0% 4         1% 2         0% 0         0% 0         0%
 remove       rmdir        rename       link         readdir      readdirplus
 0         0% 0         0% 0         0% 0         0% 0         0% 4         1%
 fsstat       fsinfo       pathconf     commit
 0         0% 10        3% 5         1% 0         0%

 アクセス種別に応じた回数や比率が出力される。

 調査2.NFS Client側でtcpdump

 # tcpdump host [nfs server ip]

調査3.NFS Clientのデバッグ

 # rpcdebug -m nfs -s vfs
 # tail -f /var/log/messages

 (NFS Client)# touch test
 Jun 17 16:07:34 localhost kernel: NFS: permission(0:14/981489865), mask=0x1, res=0
 Jun 17 16:07:34 localhost kernel: NFS: nfs_update_inode(0:14/981489865 ct=2 info=0x7e7f)
 Jun 17 16:07:34 localhost kernel: NFS: permission(0:14/981489865), mask=0x1, res=0
 Jun 17 16:07:34 localhost kernel: NFS: permission(0:14/981489865), mask=0x3, res=0
 Jun 17 16:07:34 localhost kernel: NFS: create(0:14/981489865), test ※touch test(create)
 Jun 17 16:07:34 localhost kernel: NFS: nfs_update_inode(0:14/981489865 ct=2 info=0x1feff)
 Jun 17 16:07:34 localhost kernel: NFS: nfs_fhget(0:14/1409289744 ct=1)
 Jun 17 16:07:34 localhost kernel: NFS: permission(0:14/1409289744), mask=0x0, res=0
 Jun 17 16:07:34 localhost kernel: NFS: nfs_update_inode(0:14/1409289744 ct=1 info=0x1feff)
 Jun 17 16:07:34 localhost kernel: NFS: nfs_update_inode(0:14/1409289744 ct=1 info=0x7e7f)
 Jun 17 16:07:34 localhost kernel: NFS: dentry_delete(/test, 8)

 (NFS Client)# touch test

 Jun 17 16:08:38 localhost kernel: NFS: nfs_update_inode(0:14/981489865 ct=2 info=0x7e7f)
 Jun 17 16:08:38 localhost kernel: NFS: permission(0:14/981489865), mask=0x1, res=0
 Jun 17 16:08:38 localhost kernel: NFS: nfs_update_inode(0:14/981489865 ct=2 info=0x7e7f)
 Jun 17 16:08:38 localhost kernel: NFS: permission(0:14/981489865), mask=0x1, res=0
 Jun 17 16:08:38 localhost kernel: NFS: nfs_update_inode(0:14/981489865 ct=2 info=0x7e7f) 
 Jun 17 16:08:38 localhost kernel: NFS: nfs_update_inode(0:14/1409289744 ct=1 info=0x7e7f) ※touch test(modify)
 Jun 17 16:08:38 localhost kernel: NFS: nfs_update_inode(0:14/1409289744 ct=1 info=0x7e7f)
 Jun 17 16:08:38 localhost kernel: NFS: permission(0:14/1409289744), mask=0x22, res=0
 Jun 17 16:08:38 localhost kernel: NFS: nfs_update_inode(0:14/1409289744 ct=1 info=0x1feff)
 Jun 17 16:08:38 localhost kernel: NFS: nfs_update_inode(0:14/1409289744 ct=1 info=0x7e7f)
 Jun 17 16:08:38 localhost kernel: NFS: dentry_delete(/test, 8)

 (NFS Client)# rm test

 Jun 17 16:11:10 localhost kernel: NFS: nfs_update_inode(0:14/981489865 ct=2 info=0x7e7f)
 Jun 17 16:11:10 localhost kernel: NFS: permission(0:14/981489865), mask=0x1, res=0
 Jun 17 16:11:10 localhost kernel: NFS: nfs_update_inode(0:14/981489865 ct=2 info=0x7e7f)
 Jun 17 16:11:10 localhost kernel: NFS: permission(0:14/981489865), mask=0x1, res=0
 Jun 17 16:11:10 localhost kernel: NFS: nfs_update_inode(0:14/981489865 ct=2 info=0x7e7f)
 Jun 17 16:11:10 localhost kernel: NFS: permission(0:14/981489865), mask=0x3, res=0
 Jun 17 16:11:10 localhost kernel: NFS: unlink(0:14/981489865, test)
 Jun 17 16:11:10 localhost kernel: NFS: safe_remove(/test) ※rm test
 Jun 17 16:11:10 localhost kernel: NFS: nfs_update_inode(0:14/981489865 ct=2 info=0x1feff)
 Jun 17 16:11:10 localhost kernel: NFS: dentry_delete(/test, 18)

 上記のようにログが残る。ちなみに

 Jun 17 16:08:38 localhost kernel: NFS: nfs_update_inode(0:14/1409289744 ct=1 info=0x7e7f) 

ここに記載されている1409289744 は、inode番号なので、

 # find -inum 1409289744 

  ./test

 と対象のファイル名を調べることができる。

 調査4.NFS Serverのネットワークパケット取得(NetworkMonitor)


2014年5月31日土曜日

Networkトラフィック情報のソース(redhat/Centos)

Redhat環境で、気になったのでサポートに聞いてみた。

・ネットワークトラフィックは/proc/net/devに記録される。 ・実際の値の反映は、多少タイムラグが発生する。

・sysstat(sar)やsnmpによるNICのトラフィックも、上記の値を参照している。

とのこと。

2013年10月8日火曜日

tips:manページの色を変更する

設定の保存の意味を込めて記載。

CentOS/Redhat環境でmanページの色でblueがデフォルトで使われて非常に見えづらいので、設定変更した。

# vi ~/.bashrc
==

# User specific aliases and functions

export MANPAGER='less -R'
man() {
        env \
                LESS_TERMCAP_mb=$(printf "\e[1;31m") \
                LESS_TERMCAP_md=$(printf "\e[1;36m") \
                LESS_TERMCAP_me=$(printf "\e[0m") \
                LESS_TERMCAP_se=$(printf "\e[0m") \
                LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
                LESS_TERMCAP_ue=$(printf "\e[0m") \
                LESS_TERMCAP_us=$(printf "\e[1;32m") \
                man "$@"
}
==

# source ~/.bashrc

見やすくなった。

2013年9月1日日曜日

DNSスレーブを構築してみる(CentOS6.4+Bind9.8)

前回のDNSサーバ(CentOS6.4+Bind9.8)の構築の続き。

スレーブサーバを立ててみる。とはいっても簡単そう。
・前回構築したsvr1をマスター
・svr2にスレーブを構築する
を想定。

1.パッケージをインストールする

# yum -y install bind bind-utils bind-chroot

2.設定をコピー&変更する


以下のファイルをsvr1からコピーする

・/etc/sysconfig/named
・/etc/named.conf
・/etc/named.rfc1912.zones
・/etc/named/named.root.hints
・/etc/named/named.local.hayachi617.com.zone

上記のゾーンファイルを一部修正する(いらないかもしれないけど)

# vi /etc/named/named.local.hayachi617.com.zone
>>
zone "hayachi617.com" {
                type slave;
                masters { 192.168.0.49;};
                file "hayachi617.com.slave.db";
};

zone "0.168.192.in-addr.arpa" {
                type slave;
                masters { 192.168.0.49;};
                file "0.168.192.in-addr.arpa.slave.db";
};
<<

3.chroot対応として、rsyslogの設定変更(変更分を記載)

# vi /etc/rsyslog.conf
>>
$AddUnixListenSocket /var/named/chroot/dev/log
<<
# service rsyslog reload

4.サービスの起動

ここまでで設定は一通り完了しているはずなので、サービスを起動してみる。

# chkconfig named on

# service named start

ちなみに、svr1の時と同じくchroot設定が有効か?チェックしてみると、同じだった。

# df -ha

Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root
                      8.5G  3.0G  5.1G  37% /
proc                     0     0     0   -  /proc
sysfs                    0     0     0   -  /sys
devpts                   0     0     0   -  /dev/pts
tmpfs                 935M     0  935M   0% /dev/shm
/dev/sda1             485M   32M  428M   7% /boot
none                     0     0     0   -  /proc/sys/fs/binfmt_misc
/etc/named            8.5G  3.0G  5.1G  37% /var/named/chroot/etc/named
/var/named            8.5G  3.0G  5.1G  37% /var/named/chroot/var/named
/etc/named.conf       8.5G  3.0G  5.1G  37% /var/named/chroot/etc/named.conf
/etc/named.rfc1912.zones
                      8.5G  3.0G  5.1G  37% /var/named/chroot/etc/named.rfc1912.zones
/etc/rndc.key         8.5G  3.0G  5.1G  37% /var/named/chroot/etc/rndc.key
/usr/lib64/bind       8.5G  3.0G  5.1G  37% /var/named/chroot/usr/lib64/bind
/etc/named.iscdlv.key
                      8.5G  3.0G  5.1G  37% /var/named/chroot/etc/named.iscdlv.key
/etc/named.root.key   8.5G  3.0G  5.1G  37% /var/named/chroot/etc/named.root.key


5.その他の設定

ルートヒントの情報を更新しておく。

# dig @a.root-servers.net . ns > /var/named/named.ca

設定再読み込みで完了。

# service named reload

最後に確認をする。

# dig @192.168.0.50 router.hayachi617.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> @192.168.0.50 router.hayachi617.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 47164
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;router.hayachi617.com.         IN      A

;; Query time: 0 msec
;; SERVER: 192.168.0.50#53(192.168.0.50)
;; WHEN: Sun Sep  1 12:03:02 2013
;; MSG SIZE  rcvd: 39

これにて終了。




DNSを構築してみる(CentOS6.4+Bind9.8)

自宅に仮想環境でたくさんOSを立て始めたので、DNSサーバを立ててみた。
やる内容は
 ・環境は、Hyper-V上で構築したCentOS6.4上に、BIND 9.8を使う。
 ・内部のネットワーク向けのDNSサーバ(公開はしない)
 ・IPv4のみを使う(IPv6は使わない)
 ・折角なので、キャッシュサーバ機能を持たせてみる
 ・折角なので、chroot環境にしてみる
を目的とする。

1.パッケージをインストールする

# yum -y install bind bind-utils bind-chroot caching-nameserver

としたところ、caching-nameserverについては、

Package 32:bind-9.8.2-0.17.rc1.el6_4.6.x86_64 already installed and latest version

というメッセージがでてインストールできないようです。bindに統合されたということ
ですかね。ここにも記載が。


2.設定変更する

# vi /etc/sysconfig/named ※全記載
>>
ROOTDIR=/var/named/chroot
OPTIONS="-4"
<<

この"-4"はIPv4のみ有効にしてbindを起動するという指定です(IPv6の無効化)。

# vi /etc/named.conf ※全記載
>>

options {
//      リスンするIPアドレスを指定する。指定なしの場合は全てのIPでリスンする
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };

        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";

//      同一セグメント上のマシンからの問い合わせを受ける
//      allow-query     { localhost; };
        allow-query             { localnets; };
        allow-query-cache       { localnets; };

//      不要なエラーを省く
        empty-zones-enable no;

//      IPv6を無効化するのでポートは閉鎖
        use-v6-udp-ports { };

//      再帰的問い合わせはデフォルト無効化
//      recursion yes;
        recursion no;

//      DNS SECを無効化する
//      dnssec-enable yes;
//      dnssec-validation yes;
        dnssec-enable no;
        dnssec-validation no;

        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

//      forward先の設定
        forwarders {
                192.168.0.1;
        };
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

//viewを使っている場合は、zoneはview内で記載する必要がある
//zone "." IN {
//      type hint;
//      file "named.ca";
//};
//include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

//DNSキャッシュサーバ用設定
view localhost_resolver {
        match-clients      { localhost; };
        match-destinations { localhost; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
        include "/etc/named/named.local.hayachi617.com.zone";
};

//LAN用設定
view "internal" {
        match-clients { localnets; };
        match-destinations { localnets; };
        recursion yes;
        include "/etc/named.root.hints";
        include "/etc/named/named.local.hayachi617.com.zone";
};

<<

# vi /etc/named.rfc1912.zones ※変更分を記載
>>


#IPv6は使わないので、コメントアウト
#zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
#       type master;
#       file "named.loopback";
#       allow-update { none; };
#};

<<

ゾーンファイルを作成する
# vi /etc/named.local.hayachi617.com.zone ※全記載
>>
zone "hayachi617.com" {
                type master;
                file "hayachi617.com.db";
};

zone "0.168.192.in-addr.arpa" {
                type master;
                file "0.168.192.in-addr.arpa.db";
};
<<

正引きのゾーンファイルの作成
# vi /var/named/hayachi617.com.db ※全記載
>>
$TTL            86400
@               IN      SOA     ns.hayachi617.com.   root.hayachi617.com.(
                                2013083101     ; Serial
                                28800             ; Refresh
                                14400             ; Retry
                                3600000          ; Expire
                                86400 )           ; Minimum

                 IN      NS      ns.hayachi617.com.
router         IN      A       192.168.0.1
ns              IN      A       192.168.0.49
svr2           IN      A       192.168.0.50
svr3           IN      A       192.168.0.51
svr4           IN      A       192.168.0.52

svr1           IN      CNAME   ns
www           IN      CNAME   svr2
ntp             IN      CNAME   svr1
<<

逆引きのゾーンファイルの作成
# vi /var/named/0.168.192.in-addr.arpa.db ※全記載
>>
$TTL    86400
@       IN      SOA     ns.hayachi617.com.   root.hayachi617.com.(
                        2013083101   ; Serial
                        28800        ; Refresh
                        14400        ; Retry
                        3600000      ; Expire
                        86400 )      ; Minimum

        IN      NS      ns.hayachi617.com.
        IN      PTR     hayachi617.com.
        IN      A       255.255.255.0

1       IN      PTR     router.hayachi617.com.
49      IN      PTR     svr1.hayachi617.com.
50      IN      PTR     svr2.hayachi617.com.
51      IN      PTR     svr3.hayachi617.com.
52      IN      PTR     svr4.hayachi617.com.
<<

3.chroot対応として、rsyslogの設定変更(変更分を記載)

# vi /etc/rsyslog.conf
>>
$AddUnixListenSocket /var/named/chroot/dev/log
<<
# service rsyslog reload

4.サービスの起動

ここまでで設定は一通り完了しているはずなので、サービスを起動してみる。

# chkconfig named on

# service named start

ちなみに、chroot設定が有効か?チェックしてみると、

# df -ha

Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root
                      8.5G  2.8G  5.3G  35% /
proc                     0     0     0   -  /proc
sysfs                    0     0     0   -  /sys
devpts                   0     0     0   -  /dev/pts
tmpfs                 2.9G     0  2.9G   0% /dev/shm
/dev/sda1             485M   47M  414M  11% /boot
none                     0     0     0   -  /proc/sys/fs/binfmt_misc
/etc/named            8.5G  2.8G  5.3G  35% /var/named/chroot/etc/named
/var/named            8.5G  2.8G  5.3G  35% /var/named/chroot/var/named
/etc/named.conf       8.5G  2.8G  5.3G  35% /var/named/chroot/etc/named.conf
/etc/named.rfc1912.zones
                      8.5G  2.8G  5.3G  35% /var/named/chroot/etc/named.rfc1912.zones
/etc/rndc.key         8.5G  2.8G  5.3G  35% /var/named/chroot/etc/rndc.key
/usr/lib64/bind       8.5G  2.8G  5.3G  35% /var/named/chroot/usr/lib64/bind
/etc/named.iscdlv.key
                      8.5G  2.8G  5.3G  35% /var/named/chroot/etc/named.iscdlv.key
/etc/named.root.key   8.5G  2.8G  5.3G  35% /var/named/chroot/etc/named.root.key


となっており、いくつかのファイルやディレクトリがchroot下にマップされていることがわかる。

5.その他の設定

ルートヒントの情報を更新しておく。

# dig @a.root-servers.net . ns > /var/named/named.ca

設定再読み込みで完了。

# servivce named reload

最後に確認をする。

# dig router.hayachi617.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> router.hayachi617.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7432
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;router.hayachi617.com.         IN      A

;; ANSWER SECTION:
router.hayachi617.com.  86400   IN      A       192.168.0.1

;; AUTHORITY SECTION:
hayachi617.com.         86400   IN      NS      ns.hayachi617.com.

;; ADDITIONAL SECTION:
ns.hayachi617.com.      86400   IN      A       192.168.0.49

;; Query time: 0 msec
;; SERVER: 192.168.0.49#53(192.168.0.49)
;; WHEN: Sun Sep  1 07:38:59 2013
;; MSG SIZE  rcvd: 88

これにて終了。

6.外のDNS問い合わせが遅い

その後外向けのDNS解決が遅いことに気が付いた。
ということで、fowardersを、ISPのDNSに変更をしてみたところ速くなった。
よかった。


(2014/6/29)
オプションの説明を補足と、もう少しセキュアに構築するよう変更。

2013年7月20日土曜日

tips:Redhat/CentOSでのJumboFrame対応

RedhatやCentOS環境でiSCSIをつかっているので、JumboFrameに関する備忘録を記載。

■MTUの設定(CentOS/RHEL)

一時的に設定するなら、

# ifconfig [DEV] mtu 9000

恒久的に変えるなら、

# vi /etc/sysconfig/network-scripts/ifcfg-[DEV]

>>
MTU=9000
<<

でインターフェースを再起動。

# ifconfig [DEV]

でMTUを確認し表示されればOKです。


■tcpdumpでjumboframeをキャプチャするには

# tcpdump -i eth0 -s 9014 -B 9 host x.x.x.x -w /tmp/test.pcap

上記は
 ・インターフェース eth0で行われている (-i)
 ・通信の宛先が x.x.x.xの(host)
 ・size 9014以下のpacket(-s)
 ・デフォルトではバッファ制約により8138 Bytesまでしかキャプチャができないため、
  9014 Bytesまでキャプチャができるよう拡張(-B)
 ・収集したパケットデータを/tmp/test.pcapに保存(-w)
の例です。


ネットワーク経路でJumboフレームが通るか?確認

pingでフレームが分割されずに通るか?の確認です。

# ping -s 8972 -d [相手先] -M do -c 5

NGの場合は、、

PING [相手先](x.x.x.x) 8972(9000) bytes of data.
From [相手先] (x.x.x.x) icmp_seq=1 Frag needed and DF set (mtu = 1500)

OKの場合は、、

PING [相手先] (x.x.x.x) 8972(9000) bytes of data.
8980 bytes from [相手先] (x.x.x.x): icmp_seq=1 ttl=128 time=2.41 ms



※8972bytesはJumboframeのパケットサイズ9000bytesから、IPヘッダサイズ20bytes+ICMPヘッダサイズ8bytesを引いたもの。

※8980 bytesは、8972(指定)+ICMPヘッダサイズ(8Bytes) = 8090 Bytesのこと。



2013年6月12日水曜日

openssl 1.0.1eのインストール

apache + SSLの構築の流れで、openssl0.97が古くインストールができなかったので(ここ)、
opensslをインストールしてみることにした。

1.ソースの入手
 
 http://www.openssl.org/source/からソールをゲットする

# cd /tmp
# wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz

2.コンパイル

# tar xvfz openssl-1.0.1e.tar.gz
# cd openssl-1.0.1e
# ./config --prefix=/opt/openssl-1.0.1e shared zlib

 ※シェアードライブラリとしてコンパイルすること(shared)と、zlibを使うこと(zlib)を
  指定しています。

 コンパイルはうまくいった感じ・・引き続いてmake

3.make

# make

 ・・・

make[2]: *** [c_zlib.o] エラー 1
make[2]: ディレクトリ `/tmp/openssl-1.0.1e/crypto/comp' から出ます
make[1]: *** [subdirs] エラー 1
make[1]: ディレクトリ `/tmp/openssl-1.0.1e/crypto' から出ます
make: *** [build_crypto] エラー 1

となり失敗。ログをさかのぼってみると

c_zlib.c:25:18: error: zlib.h: そのようなファイルやディレクトリはありません

という箇所からエラーが始まっているので、どうもライブラリが足りないらしい。
恐らくzlib-develだろうと思い(あてずっぽうだなぁ。。)、yumでインストールしてから、
再度チャレンジ!

今度はうまくいったようで、make installで完了。

4.確認

インストールが正常にインストールされているか?を確認

# cd /opt/openssl-1.0.1e/bin
# openssl version

OpenSSL 1.0.0-fips 29 Mar 2010

# ldd openssl

        linux-vdso.so.1 =>  (0x00007fff001ff000)
        libssl.so.1.0.0 => /opt/openssl-1.0.1e/lib/libssl.so.1.0.0 (0x00007f8aa1743000)
        libcrypto.so.1.0.0 => /opt/openssl-1.0.1e/lib/libcrypto.so.1.0.0 (0x00007f8aa1366000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f8aa115e000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f8aa0f48000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f8aa0bb4000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8aa19ad000)

ということで、バージョンもライブラリも指定ディレクトリのものを使用しているみたいで、
OKでしょう。。


2013年6月11日火曜日

tips:Redhat6のiscsiでディスクを再認識させる方法

お仕事でやったのでtipsに記録。

状況は、iSCSI環境で、ディスクの削除・追加を実施した際に、同じデバイスファイルが使われる
ことがあるかと思いますが、その際に古いディスクの情報が残ってしまいます。
ということで、古いディスクの情報を削除し、再度あたらしくなった情報を読み込みます。

以下の例では、/dev/sdcデバイスファイルを1GBから10GBに変更したい際の例。

1.該当LUNのディスク情報の確認

# ls -l /dev/disk/by-path/ip-*lun-0

lrwxrwxrwx 1 root root 10  6月 10 06:33 2013 /dev/disk/by-path/ip-192.168.x.x:3260-iscsi-iqn.xxxxxxxxxx-lun-0 -> ../../sdc

# fdisk -l /dev/sdc

ディスク /dev/sdc: 1073 MB, 1073741824 バイト
ヘッド 34, セクタ 61, シリンダ 1011
Units = シリンダ数 of 2074 * 512 = 1061888 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

2.該当ディスクの削除

# echo 1 > /sys/block/sdc/device/delete

# ls -l /dev/disk/by-path/ip-*lun-0

ls: cannot access /dev/disk/by-path/ip-*lun-0: そのようなファイルやディレクトリはありません

何も表示されない。成功。

3.ディスクの再認識

まずはiSCSIのセッションを確認する(本当はすでに知っているはずですが・・)

# iscsiadm -m session

tcp: [1] 192.168.x.x:3260,7 iqn.1992-04.com.xxx:xx.xxxxxx.xx

これでセッション5であることがわかる。

# ls -ld /sys/class/iscsi_host/host*/device/session1

drwxr-xr-x 6 root root 0  3月 26 19:47 2013 /sys/class/iscsi_host/host5/device/session1

ここのhost5を記録。これを使ってスキャンするパスを確認する。

# find /sys/class/iscsi_host/host5/device/scsi_host/host*/scan

/sys/class/iscsi_host/host5/device/scsi_host/host5/scan

このパス情報を使って、デバイスをスキャンする。

# echo "- - -" > /sys/class/iscsi_host/host5/device/scsi_host/host5/scan

そしてデバイスを確認してみると、、

# ls -l /dev/disk/by-path/ip-*lun-0

lrwxrwxrwx 1 root root 10  6月 11 06:33 2013 /dev/disk/by-path/ip-192.168.x.x:3260-iscsi-iqn.xxxxxxxxxx-lun-0 -> ../../sdc

できてました!日付も新しい。念のため

# fdisk -l /dev/sdc

ディスク /dev/sdc: 10.7 GB, 10737418240 バイト
ヘッド 64, セクタ 32, シリンダ 10240
Units = シリンダ数 of 2048 * 512 = 1048576 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

ディスク /dev/sdc は正常なパーティションテーブルを含んでいません

おおおおっ。10GBになってた。終了。

-----おまけ-----
上記のようなディスクがいっぱいあった場合を想定してちょっと工夫してみた。
対象LUNがわかっている前提になるが、

1.対象LUNの現状を確認する(以下の例はLUNが13,14,15の場合)

# for i in 13 14 15;do ls -l /dev/disk/by-path/ip-*lun-$i; done|awk -F "/" '{print "fdisk -l /dev/"$NF""}'|sh

これで現在のデバイスが古い情報なのかどうか?が判断できる(容量から)。

2.対象LUNを削除する

# for i in 13 14 15;do ls -l /dev/disk/by-path/ip-*lun-$i; done|awk -F "/" '{print "echo 1 > /sys/block/"$NF"/device/delete"}'|sh

3.対象デバイスを再スキャンする

# find /sys/class/iscsi_host/host*/device/scsi_host/host*/scan|awk -F: '{print "echo \"- - -\" > "$0}'|sh

4.対象LUNを確認する

# for i in 13 14 15;do ls -l /dev/disk/by-path/ip-*lun-$i; done|awk -F "/" '{print "fdisk -l /dev/"$NF""}'|sh

これでちょっと楽になったかな(やり方が野暮ったい感じはするけども。。)。