LVMの論理ボリュームのオンライン拡張

2011/02/12PC::Linux/BSD

ファイルサーバーとして運用しているサーバーでは、LVMを利用し動的に容量拡張ができるようにしています。今回、ファイルサーバーの空き容量がなくなったため、論理ボリュームをオンライン*1で拡張してみました。その時のメモ。

*1 : ここでのオンラインはマウントした状態という意味です

環境

  • Debian GNU/Linux 5.0/amd64
  • LVM環境
    • PV: /dev/sdb
    • VG名: vg01
    • LV名: lv01
    • ファイルシステム: xfs
  • 新規追加ディスク: /dev/sdc

現状確認

df

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda3             9.2G  446M  8.3G   5% /
tmpfs                 250M     0  250M   0% /lib/init/rw
udev                   10M  620K  9.4M   7% /dev
tmpfs                 250M     0  250M   0% /dev/shm
/dev/sda1             122M   22M   94M  19% /boot
/dev/sda7              17G  173M   16G   2% /home
/dev/sda5             7.4G  559M  6.5G   8% /usr
/dev/sda6             1.9G   39M  1.8G   3% /var/log
/dev/mapper/vg01-lv01
                      1.0T 1018G  6.3G 100% /data

今回は/dev/mapper/vg01-lv01となっている論理ボリュームを拡張します。

PVの状況

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               vg01
  PV Size               1.00 TB / not usable 32.00 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              32767
  Free PE               0
  Allocated PE          32767
  PV UUID               (UUID値)

本サーバーでは、現在のところLVMのPVは/dev/sdbだけの状態です。

VGの状況

# vgdisplay 
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1023.97 GB
  PE Size               32.00 MB
  Total PE              32767
  Alloc PE / Size       32767 / 1023.97 GB
  Free  PE / Size       0 / 0   
  VG UUID               (UUID値)

今回はこのボリュームグループvg01へ物理ボリュームを追加します。

LVの状況

# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/vg01/lv01
  VG Name                vg01
  LV UUID                (UUID値)
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1023.97 GB
  Current LE             32767
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

vg01へPVを追加後、この論理ボリュームlv01を拡張します。

実際に拡張する

1. /dev/sdcをPVに追加する

以下のコマンドを実行することで/dev/sdcがPVへ追加されます。

# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created

正しく追加されているか確認します。

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               vg01
  PV Size               1.00 TB / not usable 32.00 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              32767
  Free PE               0
  Allocated PE          32767
  PV UUID               (UUID値)
   
  "/dev/sdc" is a new physical volume of "750.00 GB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               750.00 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               (UUID値)

先ほどまではなかった/dev/sdcが表示されており、正しくPVへ追加されていることが確認できます。

2. PV /dev/sdcを既存VG vg01へ追加する

以下のコマンドでPV /dev/sdcを既存VG vg01へ追加します。

# vgextend vg01 /dev/sdc
  Volume group "vg01" successfully extended

確認してみます。

# vgdisplay 
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.73 TB
  PE Size               32.00 MB
  Total PE              56766
  Alloc PE / Size       32767 / 1023.97 GB
  Free  PE / Size       23999 / 749.97 GB
  VG UUID               (UUID値)

VG sizeの容量が増え、また、未割り当てのPE数が増えていることが確認できます。

3. 既存LV lv01を拡張する

以下のコマンドで既存論理ボリュームlv01を拡張します。今回はすべてのPEをlv01へ割り当てるため、+100%FREEとしています。

# lvextend -l +100%FREE /dev/vg01/lv01 
  Extending logical volume lv01 to 1.73 TB
  Logical volume lv01 successfully resized

確認してみます。

# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/vg01/lv01
  VG Name                vg01
  LV UUID                (UUID値)
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1.73 TB
  Current LE             56766
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

LVのサイズが正しく拡張されていることが確認できます。

4. ファイルシステムを拡張する

論理ボリュームは拡張されましたが、その中に格納されているファイルシステムは拡張前の容量として扱われていますので、拡張後の容量を扱えるようにする必要があります。
私の環境ではファイルシステムとしてxfsを利用していますのでxfs_growfsコマンドを実行します。ext3などのファイルシステムを利用している場合は、そのファイルシステム用のコマンドを実行してください。

# xfs_growfs /data(マウントポイントを指定します)
meta-data=/dev/mapper/vg01-lv01  isize=256    agcount=4, agsize=67106816 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=268427264, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096  
log      =internal               bsize=4096   blocks=32768, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 268427264 to 465027072

確認してみます。

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda3             9.2G  446M  8.3G   5% /
tmpfs                 250M     0  250M   0% /lib/init/rw
udev                   10M  628K  9.4M   7% /dev
tmpfs                 250M     0  250M   0% /dev/shm
/dev/sda1             122M   22M   94M  19% /boot
/dev/sda7              17G  173M   16G   2% /home
/dev/sda5             7.4G  559M  6.5G   8% /usr
/dev/sda6             1.9G   39M  1.8G   3% /var/log
/dev/mapper/vg01-lv01
                      1.8T 1018G  757G  58% /data

正しく拡張されていることが確認できました。

Kubuntu 10.10/i386 on ThinkPad X41 環境構築メモ

2011/02/08PC::Linux/BSD

環境

  • IBM ThinkPad X41
    • CPU: Intel Pentium M 778 (1.6GHz)
    • RAM: 1.5GB
    • HDD: 1.8" 60GB HDD
  • OS: Kubuntu 10.10/i386

日本語PPAの追加

$ wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
$ wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
$ sudo wget https://www.ubuntulinux.jp/sources.list.d/maverick.list -O /etc/apt/sources.list.d/ubuntu-ja.list
$ sudo apt-get update 

Kubuntuの既知の不具合の対応

Ubuntu Wiki - MaverickMeerkat/ReleaseNotes/jaにて記載されている既知の不具合の対応を行う。

ログアウト時にXサーバーがクラッシュしてKDMに戻らない

/etc/kde4/kdm/kdmrc

#TerminateServer=true

上記部分のコメントアウトを外す

TerminateServer=true

デスクトップ効果が再ログイン時に無効になる

[KDEシステム設定] - [デスクトップ効果] - [詳細]タブ から[機能チェックを無効にする]にチェックを入れる

日本語入力環境の構築

フロントエンドにiBus, バックエンドにGoogle日本語入力のオープンソース版であるMozcを用いた日本語入力環境を構築します。

必要パッケージのインストール

ibus-mozcパッケージを導入することで日本語入力環境に必要なパッケージが導入されます。

$ sudo apt-get install ibus-mozc

導入されるパッケージ

  • ibus-mozc
  • libcurl3
  • libprotobuf6
  • mozc-server
  • mozc-utils-gui

インプットメソッドの設定

iBusの言語パネルはデフォルトでは隠されているため、表示されるように設定を変更します。
また、デフォルトではシステムトレイにiBusのアイコンが2つ表示されるため、1つのみ表示されるように変更します。
[設定] - [Keyboard Input Method] - [一般]タブ

  • 言語パネルの表示: 常に表示する
  • システムトレイにアイコンを表示する: オフ
iBusが利用するインプットメソッドの設定

[設定] - [Keyboard Input Method] - [インプットメソッド]タブ

[日本語 - Anthy]を削除し、[日本語 - Mozc]を追加する

iBusの言語パネルのテーマ設定

iBusの起動タイミングが早すぎるためか、[KDEシステム設定]の[GTK+の外観]にてウィジットスタイルを変更してもGTK+のデフォルトテーマ*1であるReleighテーマで表示されてしまいます。
他のGTK+アプリケーションと同様にQtCurveテーマで表示されるようにgtk-chthemeにてGTK+テーマを設定します。

gtk-chthemeのインストール

$ sudo apt-get install gtk-chtheme

gtk-chthemeがインストールされたらgtk-chthemeを起動し、QtCurveを選択し適用する。
これで再ログイン時にはiBusの言語パネルがQtCurveテーマで表示されるようになります。

*1 : だと思います

GUIフォントの変更

UbuntuフォントよりもVLゴシックフォントが好きなので、VLゴシックフォントで表示されるように変更。

必要パッケージのインストール

$ sudo apt-get install ttf-vlgothic

ttf-vlgothicをインストール後に、[KDEシステム設定] - [アプリケーションの外観] - [フォント]よりVLゴシックに変更する。

キーバインドの変更

左CtrlはAの隣になければ嫌な人なので。

$ xmodmap -pke > .Xmodmap

~/.Xmodmap に以下を追加

! CapsLockとControlの入れ替え
! 2回適用すると元に戻る
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L

トラックポイントで操作する

/usr/share/X11/xorg.conf.d/20-trackpoint.conf を作成する

Section "InputClass"
        Identifier      "IBM TrackPoint"
        MatchProduct    "TrackPoint"
        MatchDevicePath "/dev/input/event*"
        Driver          "evdev"
        # ホイールエミュレートする
        Option          "EmulateWheel" "true"
        # ホイールエミュレートに使用するボタン番号
        Option          "EmulateWheelButton" "2"
        # 1ノッチに対応するカーソル移動量?
        Option          "EmulateIntrtia" "20"
        # ホイールエミュレートのタイムアウト時間(ms)
        Option          "EmulateWheelTimeout" "100"
        # 3ボタンエミュレートをしない
        # 3ボタンエミュレートは、従来の2ボタンマウスを同時押し(確か)することで
        # センターボタン押下をエミュレートする機能
        Option          "Emulate3Buttons" "false"
        # ホイールエミュレート中のX方向の移動に対する発生するイベント
        #(ボタン番号)を定義
        # 第2引数はそれぞれ、左(マイナス)方向、右(プラス)方向
        Option          "XAxisMapping" "6 7"
        # ホイールエミュレート中のY方向の移動に対する発生するイベント
        #(ボタン番号)を定義
        # 第2引数はそれぞれ、下(マイナス)方向、上(プラス)方向
        Option          "YAxisMapping" "4 5"
        
        # Option        "ZAxisMapping" "A B C D"
        # ZAxisMappingはホイールエミュレート中のそれぞれの移動に対して
        # 発生するイベント(ボタン番号)を定義
        # A: 垂直マイナス, B: 垂直プラス, C: 水平マイナス, D: 水平プラス
EndSection

スワップの設定

X41のHDDは1.8インチで遅いため、通常使用時にはHDDへスワップアウトしないようにし、ハイバネーション時のみスワップパーティションが利用されるように設定する。

スワップパーティションが利用されないようにする

/etc/fstabの変更

# swap was on /dev/sda3 during installation
UUID=UUID値 none            swap    sw              0       0

上記スワップパーティションのオプションを以下のように変更

# swap was on /dev/sda3 during installation
UUID=UUID値 none            swap    sw,noauto       0       0

ハイバネーション時にのみスワップが有効化されるようにする

/etc/pm/sleep.d/05_swapctl

#!/bin/bash
#/etc/pm/sleep.d/20_swapctl
case "$1" in
        hibernate|suspend)
        swapon UUID=スワップパーティションのUUID値
                ;;
        thaw|resume)
                swapoff -a
                ;;
        *)
                ;;
esac

GTK+アプリケーションの日本語化

GIMPなどのアプリケーションが英語で表示されるため、日本語で表示されるようにする

$ sudo apt-get install language-pack-gnome-ja

導入されるパッケージ

  • language-pack-gnome-ja
  • language-pack-gnome-ja-base

pulseaudioの削除

これまでの経験からPulseAudioは重い印象を受けていたので削除。

$ sudo apt-get purge pulseaudio

削除されるパッケージ

  • pulseaudio*
  • pulseaudio-esound-compat*
  • pulseaudio-module-bluetooth*
  • pulseaudio-module-x11*

iPod touch を Fedora 14 KDE Spin で利用する (1)

2011/01/24PC::Linux/BSD

Fedora 14 KDE Spin環境でiPod touchを利用できるようにしたときのメモ。
参照にした情報がFedora 12でiPhone/iPod touchを利用するものだったので、Fedora 14との相違点も含めて記録として残しておきます。

とりあえずiPod touchのファイルシステムをマウントできるようにするまでのまとめ。

環境

  • Fedora 14 KDE Spin/x86_64
  • iPod touch 1st Generation (8GB)
    • iOS 3.1.3 Jailbreaked
    • iTunes Synchronized

必要パッケージのインストール

以下のパッケージを導入します。

  • libusb (私の環境ではすでに導入されていました)
  • gtkpod
  • usbmuxd-devel
  • libplist-devel
  • libiphone-devel
  • ifuse
  • python-mutagen
  • sg3_utils-devel
# yum install libusb gtkpod
# yum install usbmuxd-devel libplist-devel libiphone-devel ifuse
# yum install python-mutagen
# yum install sg3_utils-devel

iPod touchをマウントするための環境整備

usbmuxdユーザーの追加 (私の環境では不要でした)

# useradd -r -c "usbmuxd daemon user" -d /media -s /bin/false usbmuxd
useradd: ユーザ 'usbmuxd' は既に存在します

udevルールの追加 (私の環境では不要でした)

/lib/udev/rules.d/85-usbmuxd.rules

# usbmuxd (iPhone "Apple Mobile Device" MUXer listening on /var/run/usbmuxd)

# Forces iPhone 1.0, 3G, 3GS, iPodTouch 1/2 and iPad to USB configuration 3 and run usbmuxd
ACTION=="add", SUBSYSTEM=="usb", OWNER="usbmuxd", ATTR{idVendor}=="05ac", ATTR{idProduct}=="129[0-9a-f]", ENV{USBMUX_SUPPORTED}="1", ATTR{bConfigurationValue}!="$attr{bNumConfigurations}", ATTR{bConfigurationValue}="$attr{bNumConfigurations}", RUN+="/usr/sbin/usbmuxd -u -U usbmuxd"

# Exit usbmuxd when the last device is removed
ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="5ac/129[0-9a-f]/*", ENV{INTERFACE}=="255/*", RUN+="/usr/sbin/usbmuxd -x"

fuse.confの作成

/etc/fuse.confを新規作成します。

/etc/fuse.conf
user_allow_other

マウントポイントの作成

マウントポイントを /mnt/kaedepod-touch を作成し、一般ユーザーでもマウントできるようにパーミッションを変更します。

# mkdir /mnt/kaedepod-touch
# chmod 777 /mnt/kaedepod-touch

iPod touchのマウント/アンマウント

マウント

マウントは以下のコマンドで実施します。

$ ifuse /mnt/kaedepod-touch

マウントされているかを確認します。

$ ls /mnt/kaedepod-touch/
DCIM        Podcasts    com.apple.itdbprep.postprocess.lock  iTunes_Control
Downloads   Purchases   com.apple.itunes.lock_sync           ifunbox_shortcut_utf16.txt
MobileCast  Recordings  com.apple.itunes.syncing             jailbreak.log
Photos      Safari      general_storage

アンマウント

アンマウントは以下のコマンドで実施します。
※ 必ずアンマウントしてからiPod touchを取り外す必要があります。

$ fusermount -u /mnt/kaedepod-touch/

その他

iTunesと同期していないiPod touchではHashInfoファイルを生成し、iTunes_Control/Device配下に配置する必要があるようです(未検証)。

下記コマンドの出力からiPod touchの40桁の英数字のシリアルナンバーを調べます。

# lsusb -v | grep -i iSerial

調べたシリアルナンバーをもとに、http://ihash.marcansoft.com/からHashInfoファイルを生成し、iPod touchの/iTunes_Control/Device/以下に格納します。

参考