CentOSによるVMWare環境構築を通した振り返り

今日はCentOSの環境構築について、のんびり書いていきます。自分の復習用であり、UNIXに慣れた人には退屈でしかないただの回顧録みたいになるので読まないでくださいね。

 

 

世の中の一般人が家庭で使うパソコンのOSは、WindowsMacがほとんどですが、インターネットその他で業務システムを動かすサーバのOSは、UNIXがかなりを占めていると思います。

 

UNIXは、1969年AT&Tベル研究所で生まれました。その後、SystemV系とBSD系の2つの流れに分かれ、それぞれ開発が進んでいきます。SystemVの流れからはHP-UXAIX、IRIXなどの商用UNIXがいくつか出た後、フィンランドの大学院生リーナス・トーバルズLinuxを生み出します。そしてさらに近年はLinuxからスマホタブレット端末用OSであるAndroidが生まれました。一方、BSDは研究機関(BSDはBerkeley Software Distribution)で育ってゆき、NetBSDFreeBSD、珍しいものではNECPC-98シリーズで動くFreeBSD(98)などができ、最近ではMacOSNetBSDから派生して生まれ、今のMacの繁栄を支えています。

 

そんな中で、今回のCentOSは、Linuxのひとつとしてここ10年くらいの間に出てきました。Linuxには大きく3種類系統があります。

 

 

この中でサーバ用途でシェアが最も多いのがRedHat系であり、事実上Red Hat Enterprise Linuxの独壇場です。CentOSは、RedHat完全互換OSであり、RedHat社が後援しています。バージョンなどもRedHatCentOSは同じ番号でリリースされていきます。The CentOS Projectが開発しています。さっそくサイトをのぞいてみましょう。

 

https://www.centos.org/

 

f:id:ponkotsu_engine:20181118163035p:plain

 

Get CentOS Now とありますので、クリックしてみましょう。

 

f:id:ponkotsu_engine:20181118170719p:plain

 

DVD ISO や、Everything ISO などのボタンがあります。

Linuxを導入する時にも、Windowsと同じようにDVDメディアから導入することが多いです。このサイトには、こうしたインストール用のDVDメディアをISOデータとしてダウンロードできるように置いてくれているんですね。これをダウンロードしてDVDに焼けば、それを使って自宅PCにクリーンインストールしたり、自宅PCのWindowsマシンに入れたVMWare仮想環境にダウンロードしたISOファイルをマウント(ようはDVDをトレイに入れておくようなもの)して、CentOSVM構築ができます。

 

では、DVD ISO をクリックしてみます。

 

f:id:ponkotsu_engine:20181118171305p:plain

 

すると、ダウンロード先のサイト一覧ぽいものが出てきました。たくさんあります。世界中にありますので、できるだけ近いところが良いです。上に Mirror List とあるのがミラーサイト一覧です。これをクリックしてみましょう。

 

 

f:id:ponkotsu_engine:20181118171516p:plain

 

CentOSのミラーリスト一覧を下へスクロールしていくと、日本のサイトがいくつかあります。この中のどれかをクリックしてみましょう。理研にしましょうか。

 

http://ftp.riken.jp/Linux/centos/

 

f:id:ponkotsu_engine:20181118171751p:plain

 

 下のほうに行くと、7.5があります。今は最新バージョンが7.5だからです。ここでは7.3を入れようと思いますので、7.3.1611をクリックします。

 

 

f:id:ponkotsu_engine:20181118172016p:plain

 

 なんと、中身はReadmeだけ。ISOはどこにもありませんでした。

CentOSに限らずですが、7系列は7系列の最新のISOしか置いていません。

では、古いものを導入したいときにはどうすればよいのかというと、古いもの専用の置き場があるのです。それがVaultです。

 

http://vault.centos.org/

 

ここにも7.3.1611のフォルダがありますが、中身はあるんでしょうか。

 

f:id:ponkotsu_engine:20181118172347p:plain

 

 ありました!良かったですね。

さて。ISOファイルはどこにあるかというと、isos にありそうです。クリックしてみましょう。するとx86_64フォルダを経て、やっと目当てのISOファイルにたどり着きました。

 

f:id:ponkotsu_engine:20181118172535p:plain

 

あれ。ISOファイルがたくさんあります。どれなんでしょう。

※ちなみに、torrentファイルはダウンロードソフト用のもので、気にしなくていいです。

 

サイズ的には一番上のが4.1GBですから、一番それっぽい。その通りです。これが普通にインストールする時のDVDメディアです。NetInstallはインストーラのサイズを小さくしてパッケージ類はインストール中に都度ネットワーク経由で取得するタイプ。Everythingがフルインストール用ですが、二層式DVDでないと焼けません。ここでは一般的な4.1GBのやつをダウンロードしましょう。

 

 

 

CentOSのISOが手に入りましたので、次は導入する先の準備。VMWare Playerです。

 

VMWareは仮想環境ソフトの最大手で、商用のクラウドの多くがこれを使っています。また、個人用で使える無償のVMWare Playerがあります。今回はこれを使います。

 

https://www.vmware.com/jp/products/workstation-player.html

 

f:id:ponkotsu_engine:20181118173320p:plain

 

今すぐダウンロード をクリックします。

 

f:id:ponkotsu_engine:20181118173420p:plain

 

Windows用とLinux用の2種類のインストーラが用意されているようです。

VMWare PlayerをホストOS上にインストールし、インストールしたVMWare上にゲストとしてCentOSを構築します。ここではホストPCをWindows と想定していますので、Windows用をダウンロードしましょう。今はバージョン15が最新のようです。

 

 もし、すでに古いバージョンのVMWare Playerをインストール済みであった場合、アンインストールして最新をインストールすることになりますが、VMWare はバックグラウンドでいくつかサービスを動かしていますので、普通にコントロールパネルからアンインストールすると、「アンインストール」ボタンが非活性状態になっていて、一見アンインストールできません。

 

f:id:ponkotsu_engine:20181118182425p:plain

 

そういう場合はまず先にサービスを停止します。スタートボタンからWindows管理ツール >  サービス を起動します。

 

f:id:ponkotsu_engine:20181118182613p:plain

 

以下の4つのサービスを停止します。

 

 

 これで、アンインストールできるようになります。

 

 

疲れたので今日はここまで。

 

 

CentOS8.1にSVN導入

CentOS 8.1が1/15に公開されました。

 

 

8系はまだ触ったことがないのですが、7系は初代からだいぶ年月が経ち、商用でも普通に使われていますので、そろそろ8系でも勉強してみるかと、VMWare仮想環境にインストールし、手始めにApache Subversionを立ててみました。

 

参考URLはこちら。ほとんどこの手順そのままです。

https://computingforgeeks.com/install-apache-subversion-svn-on-centos-rhel-8/

 

OSの導入部分はさすがに省略します。ちなみに、7系ではデフォルトのインストールが最小構成でしたが、8系はGUIのサーバ構成がデフォルトになっていました。ここでは勉強のために最小構成に変更してCentOS8.1を構築し、SELinux、Firewalldをオフにしたところから、メモ書きを転載します。コマンドは赤字です。

 

 

作業はすべてrootで実施しています。

 

 

SVNインストール

dnf install subversion mod_dav_svn

 

/usr/bin/dnfコマンドは8系から入ったもので、yumの後継コマンドの位置づけだそうです。 yumのオプションが普通に使えました。インストール時の出力内容もほとんど変りません。じゃあyumコマンドはどこへ行ったんだろうと思ったら、なんと/usr/bin/yumがdnfのシンボリックリンクになっていました。なお、rpmコマンドは消えていませんでした。

ll /usr/bin/yum
lrwxrwxrwx. 1 root root 5 11月 12 10:35 /usr/bin/yum -> dnf-3
ll /usr/bin/dnf
lrwxrwxrwx. 1 root root 5 11月 12 10:35 /usr/bin/dnf -> dnf-3
file /usr/bin/dnf-3
/usr/bin/dnf-3: Python script, ASCII text executable

 

本体はPythonなんですね。

 

ここではSVNとmod_dav_svn を入れました。subversionのバージョンは1.10.2でした。

dnf info subversion
メタデータの期限切れの最終確認: 0:36:24 時間前の 2020年03月11日 10時49分17秒 に実施しました。
インストール済みパッケージ
名前 : subversion
バージョン : 1.10.2
リリース : 1.module_el8.0.0+45+75bba4f4
Arch : x86_64
サイズ : 5.1 M
ソース : subversion-1.10.2-1.module_el8.0.0+45+75bba4f4.src.rpm
リポジトリー : @System
repo から : AppStream
概要 : A Modern Concurrent Version Control System
URL : https://subversion.apache.org/
ライセンス : ASL 2.0
説明 : Subversion is a concurrent version control system which enables one
: or more users to collaborate in developing and maintaining a
: hierarchy of files and directories while keeping a history of all
: changes. Subversion only stores the differences between versions,
: instead of every complete file. Subversion is intended to be a
: compelling replacement for CVS.

 

 

httpdSVN用config作成 

vi /etc/httpd/conf.d/subversion.conf

以下の内容で保存します。ベーシック認証です。

 

<Location /svn>
DAV svn
SVNParentPath /var/www/svn
AuthType Basic
AuthName "SVN Authentication"
AuthUserFile /etc/svn/svn-auth
Require valid-user
</Location>

 

 

SVNリポジトリディレクトリと、認証ファイルの置き場所を作ります。

mkdir /var/www/svn /etc/svn

 

 

・さっそくリポジトリを作ります。

cd /var/www/svn

svnadmin create test

 

 

リポジトリディレクトリにhttp経由の書き込み権限を付与します。
chown -R apache.apache test

 

 

・ベーシック認証ファイルの作成

htpasswdコマンドで認証ファイルを作成します。
touch /etc/svn/svn-auth

htpasswd -cm /etc/svn/svn-auth adminuser
New password:
Re-type new password:
Adding password for user adminuser

 

権限を変えておきます。
chown root:apache /etc/svn/svn-auth

chmod 640 /etc/svn/svn-auth

 

ついでにテスト用ユーザも。
htpasswd -m /etc/svn/svn-auth testuser
New password:
Re-type new password:
Adding password for user testuser

 


httpdを起動
systemctl start httpd

よかった。systemctlコマンドは変わってないですね。

 

httpdプロセスが起動したことを確認します。

ps -efw | grep httpd

root 9754 1 0 10:50 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9755 9754 0 10:50 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9756 9754 0 10:50 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9757 9754 0 10:50 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 9758 9754 0 10:50 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 9971 1313 0 10:50 pts/0 00:00:00 grep --color=auto httpd

 

 

・ブラウザでリポジトリにアクセス

http://ipaddress/svn/test/

正常に表示された・・・のかな?

 

f:id:ponkotsu_engine:20200312002837p:plain

SVN on CentOS8.1

 

 

・最後にサービスを有効にしておしまい。

systemctl enable httpd 

 

 

 

さて、CentOSを再起動してみました。

 

Tortoisesvnで接続してみましたが、応答がありません。

・・・起動してない???

 

httpdは起動していました。

ps -efw | grep httpd

root 839 1 0 09:49 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 890 839 0 09:49 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 891 839 0 09:49 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 892 839 0 09:49 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 893 839 0 09:49 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 1577 1554 0 09:50 pts/0 00:00:00 grep --color=auto httpd

 

ps -efw | grep svnserve

svnのプロセスがありません。svnserveが起動に失敗していました。

 

 

再度、svnserveを起動してみます。

 

systemctl start svnserve

Job for svnserve.service failed because the control process exited with error code.
See "systemctl status svnserve.service" and "journalctl -xe" for details.

 

仕方なく言われたとおりにジャーナルを確認。

journalctl -xe

3月 12 10:05:49 cent81.local svnserve[1643]: svnserve: E200009: Root path '/var/svn' does not exist or is not a directory

 

こんなエラーメッセージが。/var/svnがないよと言ってます。設定の問題かな?

 

 

svnserveの設定ファイルのありかを調べます。systemctlの起動スクリプトを見ます。

cat /usr/lib/systemd/system/svnserve.service

 

[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target
Documentation=man:svnserve(8)

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS
PrivateTmp=yes

[Install]
WantedBy=multi-user.target

 

 

環境設定ファイルが/etc/sysconfig/svnserveにあるようです。

 

cat /etc/sysconfig/svnserve

OPTIONS="-r /var/svn"

 

ありました・・・

どうやらインストールのデフォルトリポジトリは/var/svnのようです。

私は/var/www/svnに作ったのでした。

 ここを変えればいいのかな。

 

vi /etc/sysconfig/svnserve

以下のように変更しました。

 

OPTIONS="-r /var/www/svn"

 

 

これで保存し、もう一度起動してみます。

 

 

systemctl start svnserve

できたー!!

 

 

 ・trunk tags branchesの作成

/tmp/svnを一時的に作成し、リポジトリにインポートします。

 

cd /tmp
mkdir svn
cd svn
mkdir trunk tags branches
echo test > trunk/test.txt
svn import file:////var/www/svn/test -m "My First Commit."
追加しています branches
追加しています tags
追加しています trunk
追加しています trunk/test.txt
Committing transaction...
リビジョン 1 をコミットしました。

 

 

 

どうやらうまくいきました。TortoiseSVNでも接続してみます。

 

f:id:ponkotsu_engine:20200312232546p:plain

Trunk Tags Branches

 

 

できてましたー!

 

 

 

以上です。これからCentOS8.1を使ってどんどん8系に慣れていきたいと思います。

 

 

Oracle 12c をRHEL7.3にサイレントインストール

Oracleの構築はいろいろと面倒ですが、OEMがあればGUIでそこそこ簡単に構築できます。しかし、実際の業務サーバはGUIが使えない環境でせざるを得ないことが多く、その都度苦労するのもなんなんで、サイレントインストールの仕方をメモしておきます。

 

 

環境:VMWare上のRed Hat Enterprise Linux 7.3

OSのインストールオプション:最小(X-Windowはありません)

 

RHELのインストールは完了し、SELinuxやFirewalldは停止しているという前提です。

なお、Oracleはソフトウェア領域だけでもかなりのディスクを消費します。一時的にインストーラzipなども配置しますので、ルートパーティションに50GBくらいはあったほうがいいです。データのパーティションは、要件に合わせて別ディスクに領域を確保するのが普通です。

 

いつものごとく、赤字がコマンドです。

 

 

1.事前に必要なパッケージインストール

必要なパッケージはOracleのマニュアルにも記載はあるのですが、RHELCentOSのバージョンによって細かいところは異なります。ここでは前提通り、RHEL7.3を最小インストールした前提で、記載します。このインストールはroot作業で行います。

 

yum -y install binutils compat-libcap1 gcc gcc-c++ ksh ibXtst libX11 libxcb libXi make sysstat zip unzip




2.カーネルメモリ設定変更

 

cd /etc

cp -p sysctl.conf sysctl.conf.org

vi sysctl.conf

以下の内容を追加します。

kernel.shmall = 1073741824

kernel.shmmax = 4398046511104

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 6815744

fs.aio-max-nr = 1048576

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

 

反映します。

sysctl -p




 

3.ユーザ・グループ追加

必要なグループを追加します。

groupadd -g 54321 oinstall

groupadd -g 54322 dba

groupadd -g 54323 backupdba

groupadd -g 54324 oper

groupadd -g 54325 dgdba

groupadd -g 54326 kmdba

groupadd -g 54327 racdba

 

oracleユーザを追加します。

useradd -u 1200 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba -d /home/oracle oracle

 

oracleユーザのパスワードを設定しておきましょう。

passwd oracle




 

4.ディレクトリ作成

インストール先のディレクトリ、DBデータを格納するディレクトリを準備しておきましょう。ここでは、/u01/app/以下にOracle本体を、/data以下にデータを格納する前提で記載しています。

 

mkdir -p /u01/app/oracle

chown oracle:oinstall /u01/app/oracle

mkdir -p /u01/app/oraInventory

chown oracle:oinstall /u01/app/oraInventory

chmod -R 775 /u01

 

mkdir /data

chown oracle.oinstall /data






5.ファイルディスクリプタ制限の設定

ファイルオープン数の上限を変更します。

 

cd /etc/security/

cp -p limits.conf limits.conf.org

vi limits.conf

以下の内容を追加します。

 

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

oracle hard stack 32768







6.インストール

インストールは、上で作ったoracleユーザで実行します。

su - oracle

 

mkdir install

 

linuxx64_12201_database.zipをOracleサイトから入手し/home/oracle/install直下に配置し、展開します。

 

cd install

unzip linuxx64_12201_database.zip

 

 

インストール用のrspファイルを準備します。
cp -p database/response/db_install.rsp oracle_install.rsp

vi oracle_install.rsp

以下のようにパラメータを変更します。

 

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0

oracle.install.option=INSTALL_DB_SWONLY

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=/u01/app/oraInventory

ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1

ORACLE_BASE=/u01/app/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.OSDBA_GROUP=dba

oracle.install.db.OSOPER_GROUP=oper

oracle.install.db.OSBACKUPDBA_GROUP=backupdba

oracle.install.db.OSDGDBA_GROUP=dgdba

oracle.install.db.OSKMDBA_GROUP=kmdba

oracle.install.db.OSRACDBA_GROUP=dba

DECLINE_SECURITY_UPDATES=true




編集したら、インストーラを起動。

database/runInstaller -ignoreSysPrereqs -waitforcompletion -silent -responseFile /home/oracle/install/oracle_install.rsp




 

インストールが完了したら、次はroot権限の後作業が待っています。

su -l

 

/u01/app/oraInventory/orainstRoot.sh

/u01/app/oracle/product/12.1.0/db_1/root.sh



これでインストールは完了です。次はDB構築。

 

 

 

7.DB構築

oracleで作業します。

 

su - oracle

vi ~/.bashrc

以下のようにシェル設定に環境変数を設定し、読み込んでおきます。

 

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=${ORACLE_BASE}/product/12.1.0/db_1

export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export ORACLE_SID=orcl

export NLS_LANG=Japanese_japan.ja16euctilde

export LC_ALL=ja_JP.utf8



source ~/.bashrc



データベース作成コマンドを実行します。パスワードは適当な文字列に変更してください。

dbca -silent -createDatabase -templateName New_Database.dbt -gdbName orcl -sid orcl -sysPassword パスワード -systemPassword パスワード -datafileDestination /data -recoveryAreaDestination $ORACLE_BASE/recovery_area -characterSet "JA16EUCTILDE" -nationalCharacterSet "AL16UTF16"

 

どえらい時間かかります。最速マシンでも1.5時間くらい。遅いマシンなら数時間かかるかも。


コマンドが正常に完了していたら、その時点ですでにインスタンス軌道までされています。試しに接続してみます。

 

sqlplus sys as sysdba

 

いったん停止しましょう。

SQL> shutdown immediate

 

起動しましょう。

SQL> startup

ORACLEインスタンスが起動しました。

 

Total System Global Area  763363328 bytes

Fixed Size                  8625368 bytes

Variable Size             595591976 bytes

Database Buffers          155189248 bytes

Redo Buffers                3956736 bytes

データベースがマウントされました。

データベースがオープンされました。



リスナも起動しましょう。

SQL> quit

lsnrctl start 







これで、外からアクセスできる状態になります。

 

 

 

ではでは。今回はこれまで。

 

 

 

 

Red Hat Enterprise Linux でディスク増設

RHEL 7系でOracle12cを使っていますが、何気にRHELでディスク増設をする手順をド忘れすることが多いので、メモしておきます。コマンドは赤字です。

 

 

RHEL7は、ディスク領域フォーマットのデフォルトがxfsになりました。ので、ここではxfsで増設する手順をメモします。作業はすべてrootでの作業です。

 

 

1.ディスクを物理的に増設する。

  今はVMWareなどのクラウドでやることが多いと思います。それぞれのやり方でまずはディスク増設します。

 

 

 


2.fdiskで増設ディスクのデバイスを確認

[root@db ~]# fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000b555e

バイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 104857599 51379200 8e Linux LVM

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト


Disk /dev/mapper/rhel-root: 50.5 GB, 50457477120 bytes, 98549760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト


Disk /dev/mapper/rhel-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

 

 

 


3.パーティション作成

 fdiskコマンドで対話形式で作っていきます。

 

[root@db ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x1eb132e5.

コマンド (m でヘルプ): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x1eb132e5

バイス ブート 始点 終点 ブロック Id システム

コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-209715199, 初期値 2048):
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-209715199, 初期値 209715199):
初期値 209715199 を使います
Partition 1 of type Linux and of size 100 GiB is set

コマンド (m でヘルプ): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x1eb132e5

バイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 209715199 104856576 83 Linux

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

 

 

 

 

4.xfsでフォーマット

[root@db ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=6553536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=26214144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=12799, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

 

 

 

5.マウントポイント作成

[root@db ~]# mkdir /data

 

 

 

 

6.マウント実行

[root@db ~]# mount /dev/sdb1 /data

 

 

 

7.ファイルシステム設定ファイルの更新

vi /etc/fstab
以下を追加し保存します。

/dev/sdb1 /data xfs defaults 0 0

 

 

 

8.確認

[root@db ~]# df -T
ファイルシス タイプ 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/rhel-root xfs 49250820 23789844 25460976 49% /
devtmpfs devtmpfs 1436456 0 1436456 0% /dev
tmpfs tmpfs 1448736 0 1448736 0% /dev/shm
tmpfs tmpfs 1448736 9612 1439124 1% /run
tmpfs tmpfs 1448736 0 1448736 0% /sys/fs/cgroup
/dev/sda1 xfs 1038336 145596 892740 15% /boot
tmpfs tmpfs 289748 0 289748 0% /run/user/0
/dev/sdb1 xfs 104805380 32944 104772436 1% /data

 

 

 

ちゃんと増えてますね。よかった。

 

ではでは。

 

 

loggerコマンドのTAGオプション

loggerコマンドで先日引っかかったので、備忘。

 

loggerコマンドでは、

 

logger -p FACILITY.SEVERITY "MESSAGE"

 

とすることで、目的のファシリティ、目的のレベルでsyslog出力できますが、もう一つ大事なオプションが、-t 。

 

logger -t TAG -p FACILITY.SEVERITY "MESSAGE"

 

この -t は、タグと呼ばれていますが、一般的にはここにプログラム名やユーザ名を使うようです。

 

このオプションなしでloggerコマンドを利用すると、ログには

 

Oct 8 02:57:27 localhost root[14920]: message

 

というように出ます。この[root]の部分が、-t指定で変更可能です。

 

logger -t FATAL -p local7.alert "nekoneko"

 

これを実行すると、local7のログには以下のように出力されます。

 

Oct 8 02:59:20 localhost FATAL[14924]: nekoneko

 

たとえば監視でFATALだったらひっかけたい場合に、rsyslogdの転送設定として、/etc/rsyslog.d/tensou.confの条件設定に

 

programname == 'FATAL'

 

とかやれば、監視通知ができます。

 

 

 

今日は以上です。

 

 

 

RHEL、CentOSのタイムゾーン設定(timedatectl)

Linuxを使っていると、タイムゾーンでよく苦しめられます。

 

RHELCentOS7系ですが、タイムゾーンの設定は、/etc/localtimeがどのタイムゾーンファイルへのシンボリックリンクになっているかで決まります。

 

ll /etc/localtime

lrwxrwxrwx 1 root root 32 10月 8 15:52 /etc/localtime -> ../usr/share/zoneinfo/Asia/Tokyo

 

これだと日本標準時ですね。これを変えるのに、いちいちシンボリックリンクを付け替えしなくてもいいコマンドがあることを先日知りました。

 

まずは、今のタイムゾーンを確認するコマンド。

 

[root@rhel80 ~]# timedatectl status
Local time: 火 2019-10-08 16:05:15 JST
Universal time: 火 2019-10-08 07:05:15 UTC
RTC time: 火 2019-10-08 07:05:14
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[root@rhel80 ~]# ll /etc/localtime
lrwxrwxrwx 1 root root 32 10月 8 15:52 /etc/localtime -> ../usr/share/zoneinfo/Asia/Tokyo

 

では、これをUTCにしてみましょう。

 

[root@rhel80 ~]# timedatectl set-timezone UTC
[root@rhel80 ~]# timedatectl status
Local time: 火 2019-10-08 07:11:01 UTC
Universal time: 火 2019-10-08 07:11:01 UTC
RTC time: 火 2019-10-08 07:11:00
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

 

変わりましたー。

 

内部的にはシンボリックリンクを付け替えてるだけだと思いますが、何気に便利ですね。

 

ではでは。今日はこの辺で。

 

 

 

 

 

 

地味に使えるloggerコマンド

仕事でrsyslogを使っていますが、ロガーコマンドについてはこれまで勉強してこず、初歩的な使い方すら知らなかったため、備忘。

 

loggerコマンド。

 

おそらくLinuxに標準で入っているロガーだと思いますが、ちょっとした確認に便利だし、運用ツールの監視通知などにも使っています。

 

基本的な使い方は、

 

logger "出力メッセージ"

 

です。

 

logger "Message test."

 

ノーマルだと/var/log/messagesに出ます。こんな出力になります。(以下のrhel73は私の環境のホスト名です)

 

Dec 20 01:34:57 rhel73 root: Message test.

 

しかしログの出力先は自由に制御したいことが多いですので、その場合は以下のようにします。

 

logger -p 【ファシリティ】.【プライオリティ】 【メッセージ】

 

ファシリティは、メッセージの種類を示しています。/etc/rsyslog.confに定義していますが、RHELでデフォルトで入っている主要な設定は以下のようです。

 

  • authpriv ・・・ /var/log/secure
  • mail ・・・ /var/log/maillog
  • cron ・・・ /var/log/cron
  • uucp,news,crit ・・・ /var/log/spooler
  • local7 ・・・ /var/log/boot.log

 

local0~local7は、ユーザが自由に使えるものですが、なぜかlocal7が起動ログになっています。よくわかりません。

 

プライオリティは、その名の通り、優先度です。メッセージの重要度に応じて以下のように定義されています。

 

  • emerg ・・・ 緊急。ここに出すと全ログインユーザのTTYに有無を言わさず即時表示されます。log4jでfatalを出すとここにマッピングされるようです。
  • alert ・・・ 注意。emergの次にやばいですが、ユーザのTTYに強制表示はされないようです。
  • crit ・・・ 致命的。致命的と言いつつalertの下です。
  • err ・・・ エラー。普通のエラーはここになります。
  • warning ・・・ ワーニング。なにかあったよ程度でしょうか。
  • notice ・・・ 通常メッセージはこれを使います。
  • info ・・・ まあまあ。
  • debug ・・・ 使ったことありません。

 

以下コマンド例です。

 

logger -p local7.emerg "FATAL ERROR : システムに異常が発生しました。"

 

ログには以下のように出力されます。

 

Dec 20 01:48:16 rhel73 root: FATAL ERROR : システムに異常が発生しました。

 

 

 

これでも機能的にはまあいいかもしれませんが、運用に使うにはもう少しオプションを足します。

 

logger -p 【ファシリティ】.【プライオリティ】 -t 【タグ】 【メッセージ】

 

 

logger -ip local7.emerg -t ApplicationName "FATAL ERROR : システムに異常が発生しました。"

 

Dec 20 01:53:29 rhel73 ApplicationName[2441]: FATAL ERROR : システムに異常が発生しました。

 

-iオプションを付与すると、loggerコマンドのプロセスIDが出力されます。

 

-tオプションを付与すると、指定したタグが出力されます。通常はここにプログラムやシェルの名前をセットします。

 

ほかにも、-sオプションを付与すると、ユーザの標準出力に表示します。ただし、プライオリティにemergを指定した場合のように、他人のTTYに表示したりはしません。私は今のところ使ったことがありません。

 

あと、先日あったのが、複数行の出力。これはloggerのオプションというわけではなく、他のコマンドとの合わせ技ですが、ログに複数行出力したいような場合があります。echoの-eオプションと組み合わせます。

 

echo -e "Fatal error occured.\nPlease check system status." | logger -t ApplicationName -ip local7.emerg

 

このコマンドを実行すると、ログには以下のように2行出力されます。

 

Dec 20 02:01:39 rhel73 ApplicationName[2509]: Fatal error occured.
Dec 20 02:01:39 rhel73 ApplicationName[2509]: Please check system status.

 

上記は改行として\nを途中に入れましたが、タブなら\tです。

同様に、いろんなコマンドとパイプでつなぎ合わせて使えます。

 

 

ではでは。今日はこの辺で。