タグ: linux

Xenで使用しているディスクイメージを拡張する

ゲストOSのルートパーティションが少なくなってきたため、拡張した際のメモ

拡張前のゲストOSの状態

パーティション状態

/dev/xvda1 /boot
/dev/xvda2 LVM

LVMパーティションの中身

/dev/VolGroup/lv_root   /
/dev/VolGroup/lv_swap swap

ディスク状態

$ df -h

Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root  8.5G  5.9G  2.1G  74% /
tmpfs                         935M     0  935M   0% /dev/shm
/dev/xvda1                    485M   33M  427M   8% /boot

作業履歴

ディスクファイルを拡張→LVMを拡張→ファイルシステムを拡張の順に行う

ディスクファイルを拡張

ホストOS(Dom0)側で、ディスクイメージファイルを+5GB追加する。

  1. ゲストOSをシャットダウン
  2. 現在のディスクイメージファイルを確認
    # ls -lh hda.img
    
    -rwxr-xr-x 1 root users 10G  7月 16 19:36 hda.img
    
  3. バックアップ
    # cp hda.img hda.img.bak
    
  4. hda.imgファイルの後ろに5G分データを追加
    # dd if=/dev/zero bs=512M count=10  >> hda.img
    
    10+0 records in
    10+0 records out
    5368709120 bytes (5.4 GB) copied, 69.9841 seconds, 76.7 MB/s
    
  5. 追加後のディスクイメージファイル
    # ll -h hda.img
    
    -rwxr-xr-x 1 root users 15G  7月 16 19:38 hda.img
    

ゲストOS側で追加した領域を認識させる

  1. ゲストOSを起動し、ログイン
  2. ディスク状態確認
    $ df -h
    
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root  8.5G  5.9G  2.1G  74% /
    tmpfs                         935M     0  935M   0% /dev/shm
    /dev/xvda1   
    
  3. xvda2を一旦削除して、再度限界まで領域を確保する
    # fdisk /dev/xvda
    
    コマンド (m でヘルプ): p
    
    ディスク /dev/xvda: 16.1 GB, 16106127360 バイト
    ヘッド 255, セクタ 63, シリンダ 1958
    Units = シリンダ数 of 16065 * 512 = 8225280 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x000d561d
    
    デバイス ブート      始点        終点     ブロック   Id  システム
    /dev/xvda1   *           1          64      512000   83  Linux
    パーティション 1 は、シリンダ境界で終わっていません。
    /dev/xvda2              64        1306     9972736   8e  Linux LVM
    
    コマンド (m でヘルプ): d
    パーティション番号 (1-4): 2
    
    コマンド (m でヘルプ): p
    
    ディスク /dev/xvda: 16.1 GB, 16106127360 バイト
    ヘッド 255, セクタ 63, シリンダ 1958
    Units = シリンダ数 of 16065 * 512 = 8225280 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x000d561d
    
    デバイス ブート      始点        終点     ブロック   Id  システム
    /dev/xvda1   *           1          64      512000   83  Linux
    パーティション 1 は、シリンダ境界で終わっていません。
    
    コマンド (m でヘルプ): n
    コマンドアクション
       e   拡張
       p   基本パーティション (1-4)
    p
    パーティション番号 (1-4): 2
    最初 シリンダ (64-1958, 初期値 64):
    初期値 64 を使います
    Last シリンダ, +シリンダ数 or +size{K,M,G} (64-1958, 初期値 1958):
    初期値 1958 を使います
    
    コマンド (m でヘルプ): p
    
    ディスク /dev/xvda: 16.1 GB, 16106127360 バイト
    ヘッド 255, セクタ 63, シリンダ 1958
    Units = シリンダ数 of 16065 * 512 = 8225280 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x000d561d
    
    デバイス ブート      始点        終点     ブロック   Id  システム
    /dev/xvda1   *           1          64      512000   83  Linux
    パーティション 1 は、シリンダ境界で終わっていません。
    /dev/xvda2              64        1958    15214611   83  Linux
    
    コマンド (m でヘルプ): t
    パーティション番号 (1-4): 2
    16進数コード (L コマンドでコードリスト表示): 8e
    領域のシステムタイプを 2 から 8e (Linux LVM) に変更しました
    
    コマンド (m でヘルプ): p
    
    ディスク /dev/xvda: 16.1 GB, 16106127360 バイト
    ヘッド 255, セクタ 63, シリンダ 1958
    Units = シリンダ数 of 16065 * 512 = 8225280 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x000d561d
    
    デバイス ブート      始点        終点     ブロック   Id  システム
    /dev/xvda1   *           1          64      512000   83  Linux
    パーティション 1 は、シリンダ境界で終わっていません。
    /dev/xvda2              64        1958    15214611   8e  Linux LVM
    
    コマンド (m でヘルプ): w
    パーティションテーブルは変更されました!
    
    ioctl() を呼び出してパーティションテーブルを再読込みします。
    
    警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
    カーネルはまだ古いテーブルを使っています。新しいテーブルは
    次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
    使えるようになるでしょう
    ディスクを同期しています。
    
  4. ゲストOS再起動
  5. PVのリサイズ
    # pvresize /dev/xvda2
    
      Physical volume "/dev/xvda2" changed
      1 physical volume(s) resized / 0 physical volume(s) not resized
    
  6. LVの状態
    # lvdisplay
    
      --- Logical volume ---
      LV Path                /dev/VolGroup/lv_root
      LV Name                lv_root
      VG Name                VolGroup
      LV UUID                wBm0xK-VKJG-1XL8-WUV9-T72m-PeR3-BGdomH
      LV Write Access        read/write
      LV Creation host, time localhost.localdomain, 2014-02-23 20:29:04 +0900
      LV Status              available
      # open                 1
      LV Size                8.54 GiB
      Current LE             2186
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    
      --- Logical volume ---
      LV Path                /dev/VolGroup/lv_swap
      LV Name                lv_swap
      VG Name                VolGroup
      LV UUID                AfpcwD-l3Kw-5Z7W-hKy6-hT69-oqEg-kt9Uh0
      LV Write Access        read/write
      LV Creation host, time localhost.localdomain, 2014-02-23 20:29:08 +0900
      LV Status              available
      # open                 1
      LV Size                992.00 MiB
      Current LE             248
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:1
    
  7. LVのリサイズ(/dev/VolGroup/lv_rootを5G拡張)
    # lvextend -L +5G /dev/VolGroup/lv_root
    
      Extending logical volume lv_root to 13.54 GiB
      Logical volume lv_root successfully resized
    
  8. 確認
    # lvdisplay
    
      --- Logical volume ---
      LV Path                /dev/VolGroup/lv_root
      LV Name                lv_root
      VG Name                VolGroup
      LV UUID                wBm0xK-VKJG-1XL8-WUV9-T72m-PeR3-BGdomH
      LV Write Access        read/write
      LV Creation host, time localhost.localdomain, 2014-02-23 20:29:04 +0900
      LV Status              available
      # open                 1
      LV Size                13.54 GiB
      Current LE             3466
      Segments               2
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:0
    
      --- Logical volume ---
      LV Path                /dev/VolGroup/lv_swap
      LV Name                lv_swap
      VG Name                VolGroup
      LV UUID                AfpcwD-l3Kw-5Z7W-hKy6-hT69-oqEg-kt9Uh0
      LV Write Access        read/write
      LV Creation host, time localhost.localdomain, 2014-02-23 20:29:08 +0900
      LV Status              available
      # open                 1
      LV Size                992.00 MiB
      Current LE             248
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           253:1
    
    # df -h
    
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root  8.5G  5.9G  2.1G  74% /
    tmpfs                         935M     0  935M   0% /dev/shm
    /dev/xvda1                    485M   33M  427M   8% /boot
    
  9. ファイルシステムのリサイズ
    # resize2fs /dev/mapper/VolGroup-lv_root
    
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing required
    old desc_blocks = 1, new_desc_blocks = 1
    Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 3549184 (4k) blocks.
    The filesystem on /dev/mapper/VolGroup-lv_root is now 3549184 blocks long.
    
    # df -h
    
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   14G  6.0G  6.8G  47% /
    tmpfs                         935M     0  935M   0% /dev/shm
    /dev/xvda1                    485M   33M  427M   8% /boot
    

参考サイト

広告

ddコマンドによるディスクコピー

ハードディスクAの内容をそのままハードディスクBにコピーする

ハードディスクAが/dev/sda、ハードディスクBが/dev/sdbにつながっているとすると、

dd if=/dev/sda of=/dev/sdb

オプションを追加することで、入力元に読み取りエラーがあってもコピーを継続することができる

実行経過を知りたいときは、別にシェルを開いて

killall -USR1 dd
(もしくはkill -USR1 プロセスID)

とすると、元のシェルの方に

249681225+0 records in
249681225+0 records out
127836787200 bytes (128 GB) copied, 5445.64 seconds, 23.5 MB/s

というような形で出力される。

参考元

 

UTF8環境でShift_JISやEUC-JPで書かれたログファイルなどをtail -fしたいとき

  1. nkfを使う
    $ tail -f logfile | nkf -Sw
    

    EUC-JPの場合は nkf のオプションを Sw から Ew に変更する

  2. luitを使う
    $ luit -encoding SJIS -- tail -f x
    

    EUC-JPの場合は luit のencodingオプションを SJIS から EUC-JP に変更する

参考

QuickTiGame2dをUbuntu 11.10で使う

QuickTiGame2dはTitaniumで使える2Dゲームモジュール

WindowsだとWikiにしたがってインストールすれば、そのままサンプルがビルド&実行できる。

Ubuntu 11.10で同じようにすると、ビルドは成功するが、

実行は「Uncaught Error: Requested module not found: com.googlecode.quicktigame2d」とエラーがでる。

原因と解決法は

android – Titanium Mobile : Requested module not found – Stack Overflow

にあるように、Linuxでは大文字小文字が区別されるため、「QuickTiGame2dModuleAndroid.jarを」全て小文字にリネームする。

buildディレクトリを削除して、再度ビルド・実行すると、動く。

hbstudy #19

URL:http://atnd.org/events/11691

http://heartbeats.jp/hbstudy/2011/01/hbstudy19.html

場所:ハロー貸会議室 新宿B+C

Control Group(cgroups)の概要について(レッドハット株式会社 平さん)

cgroupはクラウド化のコアテクノロジーの1つとなる

cgroupsとは

  • プロセスを束ねる(グループ化)
  • 束ねたプロセスをコントロールする
  • 複数のグループを作成でき、階層化もできる

cgroupの歴史

Googleエンジニアがポストしたパッチから始まったらしい

いろいろな利用法

  • システムリソースのモニタリングにも利用できる
  • DBの負荷を90%まで、バックアップの負荷を10%に割り振る

利用にあたって

cgroupは/etc/fstabに書くものではない
cgroupへのアクセスは仮想ファイルシステムをマウントして、中にあるファイルを編集する。
設定や参照で使うコマンドは

  • echo
  • cat
  • find

で十分

質疑応答

  • swapを0に設定できるか
    →できる
  • 1つのプロセスを複数グループに参加できるか
    →できない、1プロセス1グループ
    →別のグループに参加することですでに参加しているグループから削除される仕組み