お名前.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-sqlite は yum-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 helpfor details about the command)
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
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
ディスクイメージのサイズを大きくする。ここでは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