新トップページへ | Tip

Linuxを使う上での、基本的なTip

LastUpdate : 12/08/11

 Linux(主にCentOS)を使う上での、基本的な事柄をまとめています。

使い方をよく忘れること
viの基本的な使い方
swap領域を追加する(swap用に使われるファイルを作成)
OS起動時にコマンドを自動的に実行させたい
scpコマンドの使い方(ホスト間でのファイル転送)
OSインストール時に、2TB以上のパーティーションが切れない
ネットワーク関連
ポートを使用しているプログラムを調べる
LVMについて
LVMのそれぞれのボリュームの呼び名
LVMの基本的なコマンド
LVの消し方
ハードディスク関連
インストール後、HDDを2台追加し、その2台をソフトウェアRAID(RAID1)にする
ソフトウェアRAID(RAID1)で、ハードディスクが故障したときは?
ブートディスクのソフトウェアRAID1にて、grubをコピーし、どのドライブが壊れてもbootできるようにする
samba
Linuxからsambaの共有フォルダをアクセスする
yum
yumでよく使うコマンド
rpm
rpmでよく使うコマンド
CentOS6系
CentOS5まであったsetupコマンドを復活させる
3dm2
3dm2のインストール方法とか


viの基本的な使い方

 まぁ・・・、よく使うわりには、あれしよー、これしよーと思うと、使い方を失念している、viの使い方。
内容はかなりいい加減です(とりあえず、やりたいことがやれればいいや的な感じで書いてます。普段の私もこんな感じで作業やってます)

とりあえず文字が入力したい とりあえず、ESCキーを押して、「i」キーを押す。そうれば、インサートモード(文字を入力するモード)になる。
undoしたい とりあえず、ESCキーを押して、「u」キーを押す。
直前の動作を繰り返す とりあえず、ESCキーを押して、「.」(ピリオド)キーを押す。
画面をページ単位で移動する(下へ) とりあえず、ESCキーを押して、Ctrlキー+「f」キーを押す(たぶん、Forwadのf)。
画面をページ単位で移動する(上へ) とりあえず、ESCキーを押して、Ctrlキー+「b」キーを押す(たぶん、Backのb)。
文字を検索したい とりあえず、ESCキーを押して、「 /検索したい文字 」+enterキーを押す。すると、検索対象の文字に、カーソルが移動します。
そして、カーソル位置から下の文字が検索したい場合は「 n 」キーを押す。
そして、カーソル位置から上の文字が検索したい場合は「 N 」キーを押す。
保存したい とりあえず、ESCキーを押して、「!w」を入力してenterキーを押す。(開いたファイルの保存が行われる)
保存しないで終了したい とりあえず、ESCキーを押して、「q!」を入力して、enterキーを押す。
カーソルを←に移動 とりあえず、ESCキーを押して、「h」キーを押す。
カーソルを→に移動 とりあえず、ESCキーを押して、「l」キーを押す。
カーソルを↑に移動 とりあえず、ESCキーを押して、「k」キーを押す。
カーソルを↓に移動 とりあえず、ESCキーを押して、「j」キーを押す。
行番号を表示 とりあえず、ESCキーを押して、:set number
行番号を消去 とりあえず、ESCキーを押して、:set nonumber

swap領域を追加する(swap用に使われるファイルを作成)

 swap領域はOSのインストール時に、固定的に決めますが、運用中、増やしたいなぁと思うときが、時々あります。HDDを追加で取り付けて、それをswap用のHDDとするか、ファイルを作成し、そのファイルをswap用としてOSに渡すか、の二種類ほど、方法があるみたいです。

 HDDを追加する方法は、コストがかかる&難しい場合が多い(サーバと使用していて、直接接続されているHDDを使っているRAID構成などだと、ハードディスクをやたらと増やさないといけなかったり、RAIDの再構成が必要だったりと・・・という理由で、私はやりたくありませんw)と思われますので、HDD上にファイルを作成し、それをswap領域として使ってもらいます。

とりあえず512MB分のswap領域を追加してみます。

[root@ora_server swap]# dd if=/dev/zero of=swap bs=1024 count=524288
524288+0 records in
524288+0 records out
536870912 bytes (537 MB) copied, 4.95828 seconds, 108 MB/s
[root@ora_server swap]# ls -hl
total 513M
-rw-r--r-- 1 root root 512M May 31 18:09 swap
[root@ora_server swap]# mkswap swap
Setting up swapspace version 1, size = 536866 kB
[root@ora_server swap]# swapon swap
[root@ora_server swap]#

これで、swap領域として、使用するためのファイルの作成し、OSに、swapとして使ってね、と伝えました。

・・・ちなみに、swapon/swapoffする前後の状態は以下のとおりです。

[root@ora_server swap]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/xvda2                              partition       530136  0       -1
[root@ora_server swap]#

↓(swapon)

[root@ora_server swap]# swapon swap
[root@ora_server swap]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/xvda2                              partition       530136  0       -1
/var/swap/swap                          file            524280  0       -2
[root@ora_server swap]#

↓(swapoff)

[root@ora_server swap]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/xvda2                              partition       530136  0       -1
[root@ora_server swap]#

OS起動時にコマンドを自動的に実行させたい

/etc/rc.local が、OS起動時自動的に呼ばれるシェルらしい。
なのでここに、実行したいコマンドや、シェルを書いておけばOKらしい。

scpコマンドの使い方(ホスト間でのファイル転送)

SSHの付属コマンド??(よくしらんwSSHのパッケージがインストールされていたら使えるっぽい?
このコマンドでコンソールから他ホストからファイルを持って来たり、他ホストへファイルを転送できます。
コマンドは以下の通り

scp <A> <B>
<A> : 転送するファイル
<B> : 転送先のファイルパス
で・・・、A/B共に、ローカルのファイルパスは、自分のファイルパスを指定すればOK。
他ホスト側の場合は「ログインするユーザー名@192.168.11.51:/tmp/」といういう感じで書く。
使用例:
(他ホストのファイルを、ローカルへ転送する。この例では、カレントディレクトリにあるa.txtを他ホスト(192.168.11.34)の、/var/www/htmlへ転送しようとしている)
このコマンドを実行すると、パスワードなどが問われたりしますが、その他ホストのユーザのパスワードを入力してやります。
scp a.txt root@192.168.11.34:/var/www/html/
デフォルトでは、22番ポートを使う・・・らしい。オプションでポート指定も可能(-Pオプション?)。
また、ディレクトリ毎転送する場合は「 -r 」オプションをつける
例: scp -r root@192.168.11.34:/var/www/html/centos/ ./
(他ホストのcentosというディレクトリをカレントディレクトリへコピーしている))

OSインストール時に、2TB以上のパーティーションが切れない

CentOS6の場合(ほかのでも一緒??)、以下で2TB以上のパーティーションを切れるようにすることが出来る。

OSのインストール時の場合、パーティーションを設定するところで、Ctrl+Alt+F2でコンソールを開ける。
コンソールで以下のコマンドを実行

parted /dev/sda
(parted) mklabel gpt
(parted) quit

partedの対象デバイスは、対象のHDDのデバイスを指定
上記コマンドを実行後、「Ctrl+Alt+F6」でGUIに復帰し、パーティーション設定を行う。

そして、パーティーション指定の画面で、いきなり全部の領域を割り振ることをしたらNGだった(CentOS6.2の場合)。/bootとかswapを追加してからやれば問題なく動く。

ポートを使用しているプログラムを調べる

現在の、待ちうけ状態を確認

netstatコマンドを使用( オプションにて lをつけるとlistenになっているものを表示。tはTCP、uはUDP。なので「 netstat -tl 」などとやると、TCPで待ちうけしているポートの一覧が表示される)

対象のポートは、どのプログラムが使っているのか、調べる。

lsofコマンドを使用( 「 lsof -i TCP:ポート番号 」(コロンを忘れないこと)などと打ち込むと、TCPで指定されたポート番号を使用しているプログラムが表示される(PIDなど)。 ) 

PIDなどの情報を取得しても、まだ足りない場合

「 ls aux |grep さっき取得したPID 」などで、プロセス一覧を表示し、同一のPIDのデータを検索する。で、プログラムの名前がわかったら「 whereis プログラム名 」などで、どこにあるプログラムなのか、情報を取得。

で、たぶん、おおかた、情報は取得できる・・・ハズw

LVMのそれぞれのボリュームの呼び名

PV(PhysicalVolume)
物理ボリューム。
たとえば、ハードディスクのパーティーションのこと。そのパーティーション内には、PE(PhysicalExtends=物理エクステント)というCentOS5.2だとデフォルトで4MBぐらいのサイズの領域でいっぱいになっている状態になる。たとえば4GBのHDDだと、1000個ぐらいあるはず。このPE単位で領域を区切るので、HDDが複数あっても、全部のPEをひとつに集めて、パーティーションを作成したり、PEを100個づつにわけて10個のパーティーションが作れたりする(んだとおもうw)。
VG(VolumeGroup)
ボリュームグループ。
PVがひとつ以上あつまったものを言います。VGにて、PVをまとめてしまえば、ハードディスクが1台だろうが10台だろうがひとつのボリュームグループとしてまとめることが可能です。
LV(LogicalVolume)
論理ボリューム。
ハードディスクを使う側から見た際の、領域です(パーティーション)。LVは、PEの集まりで構成されます。LVを作成し、それをEXT3などにフォーマットして、初めて使えるようになります。

LVMの基本的なコマンド

PVの一覧を表示する
pvdisplay
PVを作成する
pvcreate /dev/sda1 (pvcreate [デバイス名])
VGの一覧を表示する
lvdisplay
VGを作成する
vgcreate vgname /dev/sda1 (vgcreate [作成するVGの名前] [どのPV上にVGを作成するのかデバイス名の指定])
LVの一覧を表示する
lvdisplay
LVの一覧を作成する
lvcreate -L 100G -n lvname vgname (lvcreate -L [容量の指定] -n [作成するLVの名前] [どのVG上に作成するかVG名を指定])

LVの消し方

lvscanで対象LVのパスを調べlvremoveで削除可能みたいです。

[root@miranda ~]# lvscan
  ACTIVE            '/dev/vol1/vol1-1' [1.03 TB] inherit
  ACTIVE            '/dev/vol1/vol2' [64.00 GB] inherit
[root@miranda ~]# lvremove /dev/vol1/vol2
Do you really want to remove active logical volume "vol2"? [y/n]: y
  Logical volume "vol2" successfully removed
[root@miranda ~]# lvscan
  ACTIVE            '/dev/vol1/vol1-1' [1.03 TB] inherit
[root@miranda ~]#

インストール後、HDDを2台追加し、その2台をソフトウェアRAID(RAID1)にする

マシンの電源を切り、S-ATAのHDDを二つ追加しました。

BIOSにて、ちゃんと認識しているか確認を行います。

今回はソフトウェアRAIDでミラーリング(RAID1)を追加します。

通常通り、起動したならば、まずはfdiskにて追加したHDDに、パーティーションを作成します。

fdisk /dev/sdc

と、どのHDDに対し、fdiskを行うか指定します。必ず、どのHDDがどのデバイスファイルと結びついているのか、確認を行ってください。
パーティーションを作成し、パーティーションID(パーティーションのフォーマットタイプの指定)では「 fd 」を指定します(ソフトウェアRAID用の領域として、指定。「l」コマンドで、確認が可能です。「fd」は「fd Linux raid auto」となっています)。

また、もう一方のHDDにも、同じ作業を繰り返します(ミラーリングなので、シリンダー数など、同じように設定します)

fdiskにて、wで、設定を書き込みますが、ビジー状態です、などのメッセージが出る場合があります。
その場合、マシンを再起動をさせます(partprobeというコマンドがある場合は、これを使ってもOK。が、個人的感情として、再起動したい感じです)

そして、以下のコマンドで、RAIDの設定を行う。

mdadm --create /dev/md3 --level=raid1 --raid-devices=2 /dev/sdc1 /dev/sdd1

/dev/の中にmd3がない場合はMAKEDEVを使って、md3を作成するなりして、準備しておきます(「/bin/MAKEDEV /dev/md3」みたいな感じでOKみたい?)。
これで、cat /proc/mdstat とかやると、md3が追加され、構築作業の進捗度が表示されるはずです。

そして、フォーマットを行います。

mkfs -t ext3 /dev/md3

これが完了したならば、

mount /dev/md3 /mnt

などと、マウントしてみて、アクセスできればOKです。

ソフトウェアRAID(RAID1)で、ハードディスクが故障したときは?

 今まで、私は幸運にも、HDDが故障したことがありません。
なので、以下のことは、こーするといいらしい、という、私が実際にやってみたことのないことです。以下の方法ではダウンタイムが発生しますが、まぁ・・・個人のサーバなので、問題なしです。

HDDが故障した場合は、とりあえず、電源を止め、故障したHDDを新品のHDDに交換します。
再び、電源をいれ(この状態では、冗長性がない状態)、まずは、fdisk などで、パーティーションの設定をし、フォーマットを行います。
このとき、もう片っ方のHDDと同じ構成(パーティーションの区画やフォーマット)にします。

パーティーションのフォーマットが完了したならば、コンソールにて

mdadm --manage /dev/md0 --add /dev/sda1
mdadm --manage /dev/md1 --add /dev/sda2
mdadm --manage /dev/md2 --add /dev/sda3

と、交換したドライブのパーティーションをRAIDに組み込みます(/dev/sdaのドライブが故障した場合の例)。
すると、自動的にRAIDのリビルドが開始される様です。

ブートディスクのソフトウェアRAID1にて、grubをコピーし、どのドライブが壊れてもbootできるようにする

 実は、私はよくわかってないのですが(ぉ
CentOS5などは、最初にOSをインストールする時点で、RAIDの設定が行えます。ブートディスクのRAID設定も可能です。
で、今回の話は、ブートディスクをソフトウェアRAID1に設定した場合の話です。

通常、起動ディスクは /boot を使い、ここのマウント部分は / とは別パーティーションに行うのが、恒例かとおもいます(というか、/boot は特別なものだと思って、必ず別パーティーションに私はしてます)。

例として、/dev/sda/dev/sdb の2台でソフトウェアRAID1を組んでいたとします(この中に/boot と swap と / 用の3個のパーティーションが有る)。この場合、たぶん、/dev/sda のほうに、grubが書きこまると思います。
で、OSのインストールが完了した時点では、片っ方のドライブのマスターブートレコードにしか、grubの情報が書き込まれていない状態になっているらしいです。

そのため、運用中、grubのデータが書き込まれたHDDがだめになった時、HDDを交換しようと、電源を切り、HDDを交換して、電源をいれても、生きているほうのHDDにgrubがはいっていないので、OSを起動できなくなってしまうようです。

そのため、ブートディスクのRAID1には、インストール直後、もしくは、HDD交換後は必ず、書き込まれていないもう片っ方のHDDにも、grubをコピーしておきます。

以下、やりかた。grubをコマンドを入力してから、しばらく待つと「 grub> 」という文字が表示され、入力待ちの状態になります。その状態になったら、以下のように、コマンドを打ち込んでいきます( ただし、以下の例は、/dev/sdaと/dev/sdbの2台がブートディスクで、ソフトウェアraid1に設定されている場合の手順 )

[root@chiki ~]# grub
Probing devices to guess BIOS drives. This may take a long time. 
←このメッセージが表示されてからしばらく待つ


GNU GRUB version 0.97 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> device (hd0) /dev/sdb 
←ここから、入力を行ってい( device (hd0) /dev/sdb )
device (hd0) /dev/sdb 
←(  (hd0) /dev/sdb) )
grub> root (hd0,0) 
←( root (hd0,0) )
root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd
grub> install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf 
←( install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf )
install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf
grub> quit 
←( quit ) これで、完了
quit
[root@chiki ~]#

Linuxからsambaの共有フォルダをアクセスする

Linuxから、sambaで提供されている共有ディレクトリ(っていうのかしら?)にアクセスする方法です。
2種類ほどアクセス方法がある様子です(もっとあるかも?

方法その1.smbclient を使用してファイルのアクセスを行います。

[root@db2_server ~]# smbclient //minerva/FileServer -U alc ←-Uの後にユーザ名前を指定している
Password: 
←パスワードを入力
Domain=[MINERVA] OS=[Unix] Server=[Samba 3.0.25b-1.el5_1.4]
smb: \>

smbclinetのオプションは以下のとおりです

smbclient //<smbが動いているホストの名前orIPアドレス>/<共有フォルダのディレクトリ名> -U ユーザ名

青字の部分が、それぞれ環境によって書き換えなけければならない部分です。

「smb :\>]」まで、表示されたのならば、ここから、コマンド入力可能の状態となります(smbclient独自のコマンドで、ファイルをダウンロードしたりします)。
この状態で「?」か「help」と入力しenterキーを押すと、コマンド一覧が表示されます。

smb: \> help
?              altname        archive        blocksize      cancel
case_sensitive cd             chmod          chown          close
del            dir            du             exit           get
getfacl        hardlink       help           history        lcd
link           lock           lowercase      ls             mask
md             mget           mkdir          more           mput
newer          open           posix          posix_open     posix_mkdir
posix_rmdir    posix_unlink   print          prompt         put
pwd            q              queue          quit           rd
recurse        reget          rename         reput          rm
rmdir          showacls       setmode        stat           symlink
tar            tarmode        translate      unlock         volume
vuid           wdel           logon          listconnect    showconnect
!
smb: \> ?
?              altname        archive        blocksize      cancel
case_sensitive cd             chmod          chown          close
del            dir            du             exit           get
getfacl        hardlink       help           history        lcd
link           lock           lowercase      ls             mask
md             mget           mkdir          more           mput
newer          open           posix          posix_open     posix_mkdir
posix_rmdir    posix_unlink   print          prompt         put
pwd            q              queue          quit           rd
recurse        reget          rename         reput          rm
rmdir          showacls       setmode        stat           symlink
tar            tarmode        translate      unlock         volume
vuid           wdel           logon          listconnect    showconnect
!
smb: \>

さらに、それぞれのコマンドの使い方が知りたい場合は

smb: \> help ls

のように、helpの後にコマンドを指定すれば、使い方が表示されます。

共有フォルダ内の移動はcdコマンドで行います

cd <移動したいディレクトリ>

ファイルのダウンロードは、getコマンドで行います。

get <ダウンロードしたいファイル>

終了したい場合はexitコマンドを使います。

exit


方法その2. マウントする

 前者の方法よりこっちのほーが楽だと思います。

mount -t cifs -o username=alc //192.168.11.34/Fileserver2 /mnt

このコマンドで指定したディレクトリにてマウントできるらしい(例だと/mntディレクトリ)。usernameにはログインするユーザの名前を指定します。普通にこれのほーが便利です^^;


yumでよく使うコマンド

 よく使う割りに、環境設定が終わったら、ほとんど触らなくコマンドのyum・・・(私だけ?w)
よく使い方を忘れますので、メモしておきます。

 コマンドの前に・・・・・。
とりあえず、私は、このプラグインをインストールします。一番早いであろうサーバより、データを取得するように、データのDL先を変更するプラグインです。

yum install yum-fastestmirror

これで、このプラグインがインストールされます(CentOS5などの場合)。

yum update  とりあえず、OSのインストールが終わった後に使うコマンド(&日常的にも行ったりする)。
リポジトリに問い合わせを行い、インストールされているパッケージを最新版にアップデートする。「 yum update -y」とyオプションをつけると、アップデートしますか?的な質問に、yesを選んだことになり、yum update -y と打ち込むだけで、自動的にアップデートが完了する。
yum update ○○○  yum updateでは、すべてのパッケージが対象だが、updateの後ろにパッケージ名を指定することで、そのパッケージだけが、アップデートされる。
yum list  インストールできる、パッケージの一覧を表示する。 
yum info ○○○  infoの後ろにパッケージ名を指定することで、パッケージの情報を表示させることができる。
yum install ○○○  installの後ろにパッケージ名を指定することで、指定したパッケージをインストールすることができる。
yum remove ○○○  removeの後ろにパッケージ名を指定することで、指定したパッケージをアンインストールすることができる。
yum list installed  インストールされているパッケージの一覧を表示する。
yum clean  yumがキャッシュしているデータをクリアする。

rpmでよく使うコマンド

 RedHat系のLinuxを使っている割に、全然rpmコマンドを知りません。
・・・昔はSlackware使っていたので、よく知りませんtt
で、それからしばらくLinuxを使わなくなり、再び使うようになってからは、CentOSかFedoraを使っているため、rpmコマンドを使う機会がありませんでした。

まぁ、言い訳はいいとして、とりあえず、よく使いそうなコマンド一覧です。

rpm -i ○○○  ○○○で指定されたパッケージをインストールします。普段は、いくつかのオプションを追加し、使う感じ?
rpm -ivh ○○○
とかやると、詳細を表示しながら、パッケージのインストールが行われます(vで詳細表示、hで進行情報の表示)。
rpm -F ○○○  ○○○で指定されたパッケージのアップデートを行います。
rpm -Fvh ○○○
とかやると、指定されたパッケージのアップデートを行います。指定されたパッケージがインストールされていない場合、何もしない・・・らしい。
rpm -e ○○○  ○○○で指定されたパッケージのアンインストールを行います。
指定されたパッケージが、ほかのインストールされているパッケージと依存関係がある場合、エラーメッセージが帰ってくる。
rpm -qa  インストールされているパッケージの一覧を表示する。
rpm -i --test ○○○  ○○○で指定されたパッケージがインストールできるか、テストを行う(実際のインストールを行わない)。

CentOS5まであったsetupコマンドを復活させる

CentOS6になったら、超便利コマンドsetupがなくなっててショックだった・・・。しかし、インストールすれば復活させられる。
yumで各自のソフトウェアをインストールする

yum install setuptool
yum install ntsysv
yum install system-config-network-tui
yum install system-config-firewall-tui

インストールを終わらせ、setupと打つと、いつもの画面が立ち上がる。

3dm2のインストール方法とか

3wareのRAIDカードのwebベースの管理ツールです。web上でファームウェアアップデートなんかも出来たりします。
http://www.lsi.com/ の製品ページから、自分が持っているRAIDカードを選択して、3dm2のソフトウェアをダウンロードしてきます。

私がダウンロードしたファイルは「3DM2_CLI-Linux_10.2.1_9.5.4.zip」でした。unzipで解凍します(unzipがインストールされてないなら「yum install unzip」でインストール)
解凍したファイルの中に、「install.sh」があるので、以下のコマンドで実行する

./install.sh -i

(引数に-iをつけないとダメ)

インストールウィザード中、ライセンスの確認の場合は「y」を入力。
以下のようなメッセージが出力され、モード選択をするところは「0」でよいかと。

3DM2 supports two modes of operation.
-------------------------------------
0 - 3DM2 with WEB interface
1 - 3DM2 Error/Event Logger only


インストール後、サービスが動いているか、以下で確認可能。

service tdm2 status

起動していない場合は、起動させる。

ファイヤウォールの888番ポートをオープンし、ブラウザで「https://<IPアドレス>:888/」にアクセスすれば、3dm2の画面にアクセスできます。(証明書のエラーは無視する)。

※windowsから見る場合
windowsのpatchが原因で、今のところ(12/08/12)、windows機から画面にアクセスしても真っ白な画面しか表示されません。
この件に関して、3dm2の対応版が出ている。

http://kb.lsi.com/KnowledgebaseArticle16625.aspx

対象のファイルをダウンロードして、「service tdm2 stop」で3dm2のサービスと止めた後、3dm2のファイルを対応版と差し替える。そして、サービスを起動させる。
そうすれば、みれるようになります。