お名前.comのvpsサーバーなどのcentosにyumをインストールする方法

おなまえ.comのvpsサーバーを借りてちょこちょこ作業しようとしたら、centosのくせにyumが使えない初期設定に出会ってしまったので、その対処法をしるします。

(注)バージョンが微妙に違うかもしれないので、詳細はftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/ で調べてください。

$ wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/yum-3.2.22-20.el5.centos.noarch.rpm
$  rpm -ivh yum-3.2.22-20.el5.centos.noarch.rpm 

警告: yum-3.2.22-20.el5.centos.noarch.rpm: ヘッダ V3 DSA signature: NOKEY, key ID e8562897
エラー: 依存性の欠如:
	python-elementtree は yum-3.2.22-20.el5.centos.noarch に必要とされています
	python-iniparse は yum-3.2.22-20.el5.centos.noarch に必要とされています
	python-sqliteyum-3.2.22-20.el5.centos.noarch に必要とされています
	urlgrabber >= 3.1.0 は yum-3.2.22-20.el5.centos.noarch に必要とされています
	yum-fastestmirror は yum-3.2.22-20.el5.centos.noarch に必要とされています
	yum-metadata-parser >= 1.1.0 は yum-3.2.22-20.el5.centos.noarch に必要とされています

$ wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-elementtree-1.2.6-5.x86_64.rpm
$ wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
$ wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-sqlite-1.1.7-1.2.1.x86_64.rpm
$ wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm
$ wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm
$ wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.x86_64.rpm

$ rpm -ivh python-*
警告: python-elementtree-1.2.6-5.x86_64.rpm: ヘッダ V3 DSA signature: NOKEY, key ID e8562897
エラー: 依存性の欠如:
	m2crypto >= 0.16-5 は python-urlgrabber-3.1.0-5.el5.noarch に必要とされています

#m2cryptoのパッケージをwgetする
$ wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/m2crypto-0.16-6.el5.6.x86_64.rpm

#m2cryptoのパッケージをインストールする
$ rpm -ihv m2crypto-0.16-6.el5.6.x86_64.rpm

#python-urlgrabberをインストール
$ rpm -ihv python-urlgrabber-3.1.0-5.el5.noarch.rpm
こんどはさくっとインストールされました。

#python-elementtreeをインストール
$ rpm -ihv python-elementtree-1.2.6-5.x86_64.rpm

#残りのパッケージをインストール
$ rpm -ihv python-elementtree-1.2.6-5.x86_64.rpm
$ rpm -ihv python-iniparse-0.2.3-4.el5.noarch.rpm
$ rpm -ihv python-sqlite-1.1.7-1.2.1.x86_64.rpm

ここまではすんなりインストル完了

$ rpm -ivh yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm 
	警告: yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm: ヘッダ V3 DSA signature: NOKEY, key ID e8562897
	エラー: 依存性の欠如:
	yum >= 3.0 は yum-fastestmirror-1.1.16-13.el5.centos.noarch に必要とされています
$ rpm -ivh yum-3.2.22-20.el5.centos.noarch.rpm 
	エラー: 依存性の欠如:
	yum-fastestmirror は yum-3.2.22-20.el5.centos.noarch に必要とされています

相互依存ではまっているみたいだったので、同時にインストール

$ rpm -ihv yum-3.2.22-20.el5.centos.noarch.rpm yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm
	警告: yum-3.2.22-20.el5.centos.noarch.rpm: ヘッダ V3 DSA signature: NOKEY, key ID e8562897
	準備中...                ########################################### [100%]
  	 1:yum-fastestmirror      ########################################### [ 50%]
 	  2:yum                    ########################################### [100%]

おk。

#試しにlocate をインストールする
$ yum install mlocate

virsh コマンド一覧

commands (non interactive mode):
    help            print help
    attach-device   attach device from an XML file
    attach-disk     attach disk device
    attach-interface attach network interface
    autostart       autostart a domain
    capabilities    capabilities
    connect         (re)connect to hypervisor
    console         connect to the guest console
    create          create a domain from an XML file
    start           start a (previously defined) inactive domain
    destroy         destroy a domain
    detach-device   detach device from an XML file
    detach-disk     detach disk device
    detach-interface detach network interface
    define          define (but don't start) a domain from an XML file
    domid           convert a domain name or UUID to domain id
    domuuid         convert a domain name or id to domain UUID
    dominfo         domain information
    domname         convert a domain id or UUID to domain name
    domstate        domain state
    domblkstat      get device block stats for a domain
    domifstat       get network interface stats for a domain
    dumpxml         domain information in XML
    edit            edit XML configuration for a domain
    find-storage-pool-sources discover potential storage pool sources
    find-storage-pool-sources-as find potential storage pool sources
    freecell        NUMA free memory
    hostname        print the hypervisor hostname
    list            list domains
    migrate         migrate domain to another host
    net-autostart   autostart a network
    net-create      create a network from an XML file
    net-define      define (but don't start) a network from an XML file
    net-destroy     destroy a network
    net-dumpxml     network information in XML
    net-edit        edit XML configuration for a network
    net-list        list networks
    net-name        convert a network UUID to network name
    net-start       start a (previously defined) inactive network
    net-undefine    undefine an inactive network
    net-uuid        convert a network name to network UUID
    nodeinfo        node information
    nodedev-list    enumerate devices on this host
    nodedev-dumpxml node device details in XML
    nodedev-dettach dettach node device its device driver
    nodedev-reattach reattach node device its device driver
    nodedev-reset   reset node device
    nodedev-create  create a device defined by an XML file on the node
    nodedev-destroy destroy a device on the node
    pool-autostart  autostart a pool
    pool-build      build a pool
    pool-create     create a pool from an XML file
    pool-create-as  create a pool from a set of args
    pool-define     define (but don't start) a pool from an XML file
    pool-define-as  define a pool from a set of args
    pool-destroy    destroy a pool
    pool-delete     delete a pool
    pool-dumpxml    pool information in XML
    pool-edit       edit XML configuration for a storage pool
    pool-info       storage pool information
    pool-list       list pools
    pool-name       convert a pool UUID to pool name
    pool-refresh    refresh a pool
    pool-start      start a (previously defined) inactive pool
    pool-undefine   undefine an inactive pool
    pool-uuid       convert a pool name to pool UUID
    quit            quit this interactive terminal
    reboot          reboot a domain
    restore         restore a domain from a saved state in a file
    resume          resume a domain
    save            save a domain state to a file
    schedinfo       show/set scheduler parameters
    dump            dump the core of a domain to a file for analysis
    shutdown        gracefully shutdown a domain
    setmem          change memory allocation
    setmaxmem       change maximum memory limit
    setvcpus        change number of virtual CPUs
    suspend         suspend a domain
    ttyconsole      tty console
    undefine        undefine an inactive domain
    uri             print the hypervisor canonical URI
    vol-create      create a vol from an XML file
    vol-create-as   create a volume from a set of args
    vol-delete      delete a vol
    vol-dumpxml     vol information in XML
    vol-info        storage vol information
    vol-list        list vols
    vol-path        convert a vol UUID to vol path
    vol-name        convert a vol UUID to vol name
    vol-key         convert a vol UUID to vol key
    vcpuinfo        domain vcpu information
    vcpupin         control domain vcpu affinity
    version         show version
    vncdisplay      vnc display

  (specify help  for details about the command)

Xenの初期設定@CentOS

xenの設定@CentOS

# domeinUに関する設定
$ vi /etc/xen/
name = "locaohost"			# サーバー名
maxmem = 256				# 最大仮想メモリ
memory = 256				# 仮想メモリ
vcpus = 1				# 仮想CPU数
bootloader = "/usr/bin/pygrub" #bootloaderの設定。ディストリビューションによって異なる
on_poweroff = "destroy"		# 電源を切った時のdomainUの挙動
on_reboot = "restart"		# 再起動 した時のdomainUの挙動
on_crash = "restart"		# クラッシュした時のdomainUの挙動
disk = [ "tap:aio:/var/lib/xen/images/domainU.img,xvda,w" ]	# 書き込むdisk image

仮想OSのハードディスク容量を追加する方法

環境
・CenOS5.4(domain0)
・CenOS5.4(domainU)
・Xen3.0

作業はすべてrootでおこなっています。



DomainUを停止する

# ゲストOS:dom1のHDD容量を追加するため、dom1を停止
$ xm shutdown dom1												

ディスクイメージのサイズを大きくする。ここでは3GB増やしてみる。

# イメージファイルのディレクトリに移動します。デフォルトでは/var/lib/xen/images/
# イメージファイルのディレクトリに関してはこちらを参照。
$ cd /var/lib/xen/images/

# イメージの名称変更
$ mv dom1.img dom1.img.bak						
				
# zerofile.imgという3Gのnullファイルを作成します。
$ dd if=/dev/zero bs=1M count=0 seek=3072 of=./zerofile.img		

# zerofile.imgとdom1.img.bakを連結します。
$ cat dom1.img.bak zerofile.img > dom1.img						

# 空きloopbackデバイスを調べます。
$ losetup -f					
/dev/loop0

# ループバックデバイスを設定します。
$ losetup /dev/loop0 dom1.img									

# 設定がされたことを確認します。
$ losetup -a													
/dev/loop0: [fd00]:19367365 (dom1.img)

# ドライブの設定情報を確認します。
$ fdisk -lu /dev/loop0											
Disk /dev/loop0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders, total 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *          63      208844      104391   83  Linux
/dev/loop0p2          208845     4192964     1992060   8e  Linux LVM
fdiskで区画を変更する

#fdiskで対象のスライスをいったん削除してシリンダサイズを再設定します。
# シリンダサイズを再設定します。 
$ fdisk  /dev/loop0								

# dでエンター。スライスを削除します。
Command (m for help): d							

# 2でエンター
Partition number (1-4): 2						

# nでエンター。スライスを再設定します。
Command (m for help): n							

# pでエンター
Command action									
   e   extended
   p   primary partition (1-4)
p												

# 2でエンター
Partition number (1-4): 2						

# 空エンター
First cylinder (14-652, default 14):			
Using default value 14							

#空エンター
Last cylinder or +size or +sizeM or +sizeK (14-652, default 652):	
Using default value 652

# tでエンター
Command (m for help): t							

# 2でエンター
Partition number (1-4): 2						

# 8eでエンター
Hex code (type L to list codes): 8e				
Changed system type of partition 2 to 8e (Linux LVM)

# pでエンター
Command (m for help): p							

Disk /dev/loop0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *           1          13      104391   83  Linux
/dev/loop0p2              14         652     5132767+  8e  Linux LVM

#w	でエンター。書き込みます。
Command (m for help): w							
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

# 使ったループバックデバイスを削除する
$ losetup -d /dev/loop0							

# ゲストOSを起動し、以降ゲストOS dom1で作業する。

# dom1を起動。この時点ではまだ拡張さていない。
$ xm create dom1 								
# dom1のコンソールに入る。
$ xm console dom1								

pvresizeでFree領域を拡張する

# "0 free"を確認
$ pvscan										
  PV /dev/xvda2   VG VolGroup00   lvm2 [1.88 GB / 0    free]
  Total: 1 [1.88 GB] / in use: 1 [1.88 GB] / in no VG: 0 [0   ]

# PVをリサイズします。
$ pvresize /dev/xvda2							
  Physical volume "/dev/xvda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
  
# "3.00GB free"を確認  
$ pvscan										
  PV /dev/xvda2   VG VolGroup00   lvm2 [4.88 GB / 3.00 GB free]
  Total: 1 [4.88 GB] / in use: 1 [4.88 GB] / in no VG: 0 [0   ]

# 論理ボリュームを拡張する
# 論理ボリュームを確認します。
$ lvscan										
  ACTIVE            '/dev/VolGroup00/LogVol00' [1.47 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [416.00 MB] inherit
  
# 論理ボリュームの状態を確認します  
$ lvdisplay /dev/VolGroup00/LogVol00			
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol00
  VG Name                VolGroup00
  LV UUID                oeAdv9-Cml8-04Ja-uZDM-3cvt-ZwIn-KXzEAM
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1.47 GB
  Current LE             47
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
  
# 論理ボリュームを3GB追加します。
$ lvresize -L +3G /dev/VolGroup00/LogVol00		
  Extending logical volume LogVol00 to 4.47 GB
  Logical volume LogVol00 successfully resized

# resize2fsでスライスを拡張します。
$ resize2fs /dev/VolGroup00/LogVol00			
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 1171456 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 1171456 blocks long.

# LV Sizeは 先ほどは 1.47GBだったのが 4.47GBになっていることを確認
$ lvdisplay /dev/VolGroup00/LogVol00 | grep "LV Size" 
  LV Size                4.47 GB

# ディスク容量が増えていることを確認します。
$ df -h											

Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                      4.4G  901M  3.3G  22% /
/dev/xvda1             99M   13M   81M  14% /boot
tmpfs                 151M     0  151M   0% /dev/shm

参考にしたサイト
http://d.hatena.ne.jp/dharry/20090416/1239822866

xenconsole: Could not open tty `/dev/pts/1': No such file or directoryの対処法

xenのゲストOSが原因不明で落ちてしまって、xmコマンドもきかないときの対処法。

xmコマンドをうつと次のようなエラーが出ました。

[root@localhost ~]# xm console domU
xenconsole: Could not open tty `/dev/pts/1': No such file or directory

こんなときは、次のように対応する。

[root@localhost ~]# xenconsoled

原因は不明だけど、xenconsoledは時々落ちるようです。
本質的な解決は難しいかもしれないけど、xenconsoledを自動で起動するスクリプトを書いて、cronでまわして対応するのがいいみたい。

pvresizeでFree領域を拡張する

# "0 free"を確認
$ pvscan										
  PV /dev/xvda2   VG VolGroup00   lvm2 [1.88 GB / 0    free]
  Total: 1 [1.88 GB] / in use: 1 [1.88 GB] / in no VG: 0 [0   ]

# PVをリサイズします。
$ pvresize /dev/xvda2							
  Physical volume "/dev/xvda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
  
# "3.00GB free"を確認  
$ pvscan										
  PV /dev/xvda2   VG VolGroup00   lvm2 [4.88 GB / 3.00 GB free]
  Total: 1 [4.88 GB] / in use: 1 [4.88 GB] / in no VG: 0 [0   ]

# 論理ボリュームを拡張する
# 論理ボリュームを確認します。
$ lvscan										
  ACTIVE            '/dev/VolGroup00/LogVol00' [1.47 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [416.00 MB] inherit
  
# 論理ボリュームの状態を確認します  
$ lvdisplay /dev/VolGroup00/LogVol00			
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol00
  VG Name                VolGroup00
  LV UUID                oeAdv9-Cml8-04Ja-uZDM-3cvt-ZwIn-KXzEAM
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1.47 GB
  Current LE             47
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
  
# 論理ボリュームを3GB追加します。
$ lvresize -L +3G /dev/VolGroup00/LogVol00		
  Extending logical volume LogVol00 to 4.47 GB
  Logical volume LogVol00 successfully resized

# resize2fsでスライスを拡張します。
$ resize2fs /dev/VolGroup00/LogVol00			
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 1171456 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 1171456 blocks long.

# LV Sizeは 先ほどは 1.47GBだったのが 4.47GBになっていることを確認
$ lvdisplay /dev/VolGroup00/LogVol00 | grep "LV Size" 
  LV Size                4.47 GB

# ディスク容量が増えていることを確認します。
$ df -h											

Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                      4.4G  901M  3.3G  22% /
/dev/xvda1             99M   13M   81M  14% /boot
tmpfs                 151M     0  151M   0% /dev/shm

参考にしたサイト
http://d.hatena.ne.jp/dharry/20090416/1239822866

ディスクイメージのサイズを大きくする。ここでは3GB増やしてみる。

# イメージファイルのディレクトリに移動します。デフォルトでは/var/lib/xen/images/
# イメージファイルのディレクトリに関してはこちらを参照。
$ cd /var/lib/xen/images/

# イメージの名称変更
$ mv dom1.img dom1.img.bak						
				
# zerofile.imgという3Gのnullファイルを作成します。
#ホストのHDD容量の空き具合で2種類の方法が有り,パフォーマンスが気になる場合は下の方法が吉。
$ dd if=/dev/zero bs=1M count=0 seek=3072 of=./zerofile.img	#ホストのHDD容量が少ない場合	
$ qemu-img create -f raw zerofile.img 3G      #ホストのHDD容量に余裕が有る場合。


# zerofile.imgとdom1.img.bakを連結します。
$ cat dom1.img.bak zerofile.img > dom1.img						

# 空きloopbackデバイスを調べます。
$ losetup -f					
/dev/loop0

# ループバックデバイスを設定します。
$ losetup /dev/loop0 dom1.img									

# 設定がされたことを確認します。
$ losetup -a													
/dev/loop0: [fd00]:19367365 (dom1.img)

# ドライブの設定情報を確認します。
$ fdisk -lu /dev/loop0											
Disk /dev/loop0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders, total 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *          63      208844      104391   83  Linux
/dev/loop0p2          208845     4192964     1992060   8e  Linux LVM
fdiskで区画を変更する

#fdiskで対象のスライスをいったん削除してシリンダサイズを再設定します。
# シリンダサイズを再設定します。 
$ fdisk  /dev/loop0								

# dでエンター。スライスを削除します。
Command (m for help): d							

# 2でエンター
Partition number (1-4): 2						

# nでエンター。スライスを再設定します。
Command (m for help): n							

# pでエンター
Command action									
   e   extended
   p   primary partition (1-4)
p												

# 2でエンター
Partition number (1-4): 2						

# 空エンター
First cylinder (14-652, default 14):			
Using default value 14							

#空エンター
Last cylinder or +size or +sizeM or +sizeK (14-652, default 652):	
Using default value 652

# tでエンター
Command (m for help): t							

# 2でエンター
Partition number (1-4): 2						

# 8eでエンター
Hex code (type L to list codes): 8e				
Changed system type of partition 2 to 8e (Linux LVM)

# pでエンター
Command (m for help): p							

Disk /dev/loop0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *           1          13      104391   83  Linux
/dev/loop0p2              14         652     5132767+  8e  Linux LVM

#w	でエンター。書き込みます。
Command (m for help): w							
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

# 使ったループバックデバイスを削除する
$ losetup -d /dev/loop0							

# ゲストOSを起動し、以降ゲストOS dom1で作業する。

# dom1を起動。この時点ではまだ拡張さていない。
$ xm create dom1 								
# dom1のコンソールに入る。
$ xm console dom1