2010年8月29日

LVM - VGからPVを削除

物理ハードディスクを交換などするために、VG(ボリュームグループ)からPV(物理ボリューム)を削除する手順例を示す。


確認環境

  • RHEL 5.4 on VMware Server 2

状況確認

[root@localhost ~]# vgdisplay -v VG0001
...
--- Physical volumes ---
PV Name               /dev/sdb1
PV UUID               EhMTvI-k3fq-eoRV-Hwkd-iA7G-p3Lk-QjSOsC
PV Status             allocatable
Total PE / Free PE    999 / 986
PV Name               /dev/sdb2
PV UUID               zbmif7-hWP2-2VA2-sFNp-vbSw-O7Ce-rMErmL
PV Status             allocatable
Total PE / Free PE    999 / 999

/dev/sdb1を削除したいが、PEの割り当てが行われてしまっている。

PEの割り当て移動

[root@localhost ~]# pvmove /dev/sdb1
/dev/sdb1: Moved: 100.0%
[root@localhost ~]#
[root@localhost ~]# vgdisplay -v VG0001
...
--- Physical volumes ---
PV Name               /dev/sdb1
PV UUID               EhMTvI-k3fq-eoRV-Hwkd-iA7G-p3Lk-QjSOsC
PV Status             allocatable
Total PE / Free PE    999 / 999
PV Name               /dev/sdb2
PV UUID               zbmif7-hWP2-2VA2-sFNp-vbSw-O7Ce-rMErmL
PV Status             allocatable
Total PE / Free PE    999 / 986

/dev/sdb1のPEの割り当てが、すべて/dev/sdb2に移動した

PEのVGからの削除

[root@localhost ~]# vgreduce VG0001 /dev/sdb1
Removed "/dev/sdb1" from volume group "VG0001"
[root@localhost ~]# vgdisplay -v VG0001
...
--- Physical volumes ---
PV Name               /dev/sdb2
PV UUID               zbmif7-hWP2-2VA2-sFNp-vbSw-O7Ce-rMErmL
PV Status             allocatable
Total PE / Free PE    999 / 986
[root@localhost ~]#

例は偶々同じディスクの別のパーティションだが、違うディスクならこれで交換可能になる

LVM 上のファイルシステム(ext3)の作成

LVMを使い、ファイルシステムを作成、マウントするまでの一連の手順例を示す。


確認環境

  • RHEL 5.4 on VMware Server 2

パーティションを2つ用意する

[root@localhost ~]# parted /dev/sdb
GNU Parted 1.8.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) unit s
(parted) p
モデル: VMware, VMware Virtual S (scsi)
ディスク /dev/sdb: 16777215s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号  開始  終了  サイズ  ファイルシステム  名前  フラグ
(parted) mkpart PV0001 34 8192033
(parted) mkpart PV0002 8192034 16384033
(parted) p
モデル: VMware, VMware Virtual S (scsi)
ディスク /dev/sdb: 16777215s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号  開始      終了       サイズ    ファイルシステム  名前    フラグ
1    34s       8192033s   8192000s                    PV0001
2    8192034s  16384033s  8192000s                    PV0002
(parted) set 1 lvm on
(parted) set 2 lvm on
(parted) p
モデル: VMware, VMware Virtual S (scsi)
ディスク /dev/sdb: 16777215s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号  開始      終了       サイズ    ファイルシステム  名前    フラグ
1    34s       8192033s   8192000s                    PV0001  lvm
2    8192034s  16384033s  8192000s                    PV0002  lvm
(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
[root@localhost ~]#

PV(物理ボリューム)を作成する

 [root@localhost ~]# pvcreate /dev/sdb1
   Physical volume "/dev/sdb1" successfully created
[root@localhost ~]# pvcreate /dev/sdb2
   Physical volume "/dev/sdb2" successfully created
[root@localhost ~]#

-VG(ボリュームグループ)を作成する

 [root@localhost ~]# vgcreate VG0001 /dev/sdb1 /dev/sdb2
   Volume group "VG0001" successfully created
[root@localhost ~]# vgdisplay -v VG0001
     Using volume group(s) on command line
     Finding volume group "VG0001"
   --- Volume group ---
   VG Name               VG0001
   System ID
   Format                lvm2
   Metadata Areas        2
   Metadata Sequence No  1
   VG Access             read/write
   VG Status             resizable
   MAX LV                0
   Cur LV                0
   Open LV               0
   Max PV                0
   Cur PV                2
   Act PV                2
   VG Size               7.80 GB
   PE Size               4.00 MB
   Total PE              1998
   Alloc PE / Size       0 / 0
   Free  PE / Size       1998 / 7.80 GB
   VG UUID               df1tDl-kc4W-HJ59-ceKG-gT53-tTQE-TnIitZ
   --- Physical volumes ---
   PV Name               /dev/sdb1
   PV UUID               2unt61-yw10-r4w0-3lrK-QWkB-NOME-qUAA3k
   PV Status             allocatable
   Total PE / Free PE    999 / 999
   PV Name               /dev/sdb2
   PV UUID               ZgRKbB-cLU0-1CfP-Ltls-yzoW-DDWZ-L06KWv
   PV Status             allocatable
   Total PE / Free PE    999 / 999
[root@localhost ~]#

LV(論理ボリューム)を作成する

 [root@localhost ~]# lvcreate -L 50M -n LV0001 VG0001
   Rounding up size to full physical extent 52.00 MB
   Logical volume "LV0001" created
[root@localhost ~]# vgdisplay -v VG0001
     Using volume group(s) on command line
     Finding volume group "VG0001"
   --- Volume group ---
   VG Name               VG0001
   System ID
   Format                lvm2
   Metadata Areas        2
   Metadata Sequence No  2
   VG Access             read/write
   VG Status             resizable
   MAX LV                0
   Cur LV                1
   Open LV               0
   Max PV                0
   Cur PV                2
   Act PV                2
   VG Size               7.80 GB
   PE Size               4.00 MB
   Total PE              1998
   Alloc PE / Size       13 / 52.00 MB
   Free  PE / Size       1985 / 7.75 GB
   VG UUID               df1tDl-kc4W-HJ59-ceKG-gT53-tTQE-TnIitZ
   --- Logical volume ---
   LV Name                /dev/VG0001/LV0001
   VG Name                VG0001
   LV UUID                j5nadW-oI19-qRZl-FqY4-CbxW-nx3q-ZWIpVz
   LV Write Access        read/write
   LV Status              available
   # open                 0
   LV Size                52.00 MB
   Current LE             13
   Segments               1
   Allocation             inherit
   Read ahead sectors     auto
   - currently set to     256
   Block device           253:0
   --- Physical volumes ---
   PV Name               /dev/sdb1
   PV UUID               2unt61-yw10-r4w0-3lrK-QWkB-NOME-qUAA3k
   PV Status             allocatable
   Total PE / Free PE    999 / 986
   PV Name               /dev/sdb2
   PV UUID               ZgRKbB-cLU0-1CfP-Ltls-yzoW-DDWZ-L06KWv
   PV Status             allocatable
   Total PE / Free PE    999 / 999
[root@localhost ~]#

ファイルシステム(ext3)を作成する

 [root@localhost ~]# mke2fs -j /dev/VG0001/LV0001
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
13328 inodes, 53248 blocks
2662 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=54525952
7 block groups
8192 blocks per group, 8192 fragments per group
1904 inodes per group
Superblock backups stored on blocks:
         8193, 24577, 40961
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]#

マウントする

 [root@localhost ~]# mount /dev/VG0001/LV0001 /mnt
[root@localhost ~]# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/sda2             10154020   3557088   6072812  37% /
/dev/sda1               256666     37292    206122  16% /boot
tmpfs                    62192         0     62192   0% /dev/shm
/dev/mapper/VG0001-LV0001
                          51559      4956     43941  11% /mnt
[root@localhost ~]# ls /mnt
lost+found
[root@localhost ~]#

LVM - VGにPVを追加

VG(ボリュームグループ)のサイズを増量するために、PV(物理ボリューム)を追加する手順例を示す。


確認環境

  • RHEL 5.4 on VMware Server 2

状況確認

[root@localhost ~]# vgdisplay -v VG0001
...
--- Physical volumes ---
PV Name               /dev/sdb2
PV UUID               zbmif7-hWP2-2VA2-sFNp-vbSw-O7Ce-rMErmL
PV Status             allocatable
Total PE / Free PE    999 / 986
[root@localhost ~]#

/dev/sdb2だけが登録されている

PV追加

[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@localhost ~]# vgextend VG0001 /dev/sdb1
Volume group "VG0001" successfully extended
[root@localhost ~]# vgdisplay -v VG0001
...
--- Physical volumes ---
PV Name               /dev/sdb2
PV UUID               zbmif7-hWP2-2VA2-sFNp-vbSw-O7Ce-rMErmL
PV Status             allocatable
Total PE / Free PE    999 / 986
PV Name               /dev/sdb1
PV UUID               EhMTvI-k3fq-eoRV-Hwkd-iA7G-p3Lk-QjSOsC
PV Status             allocatable
Total PE / Free PE    999 / 999

/dev/sdb1が追加された

portreserveを調べてみる

portreserveを用いたTCPポートの確保原理を示す。

動作原理について

以下の順序で動作。
  • portreserveが/etc/portreserveディレクトリ下で指定されたポートを確保
  • 例えば、CUPSサービスが、開始する
  • CUPSサービスが、portreserveが確保していたポートの解放を依頼
  • CUPSサービスが、portreserveが開放したポートを確保しにいく

起動順序について

起動スクリプト名は、S11portreserve。通常は、ネットワーク起動の後、Syslog起動前に起動される。
# ls /etc/rc*.d/rc*.d/*portreserve
/etc/rc0.d/K89portreserve /etc/rc4.d/S11portreserve /etc/rc1.d/K89portreserve
/etc/rc5.d/S11portreserve /etc/rc2.d/S11portreserve /etc/rc6.d/K89portreserve
/etc/rc3.d/S11portreserve
定義方法

/etc/portmapディレクトリ下にファイルを作成し、そのファイルに/etc/serviceで逆引き可能なサービス名を各行に書く。
# cat /etc/portreserve/cups
ipp
解除方法

以下
# portrelease cups
実際、CUPSの起動スクリプトには以下行がある。
# grep portrelease /etc/init.d/cups     [ -x /sbin/portrelease ] && /sbin/portrelease cups ....

以上


MBRをダンプしてみる

ハードディスクのMBR(マスターブートレコード)の設定状況を直接確認する方法を示す。



UNIX系ではHDDも所詮ファイル扱いなので、以下で可能。
[root@localhost ~]# hexdump -C -n 512 /dev/sda
00000000  eb 48 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.H..............|
00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 03 02  |.........|...t..|
00000040  81 00 00 80 41 b4 00 00  00 08 fa 90 90 f6 c2 80  |....A...........|
00000050  75 02 b2 80 ea 59 7c 00  00 31 c0 8e d8 8e d0 bc  |u....Y|..1......|
00000060  00 20 fb a0 40 7c 3c ff  74 02 88 c2 52 be 7f 7d  |. ..@|<.t...R..}|
00000070  e8 34 01 f6 c2 80 74 54  b4 41 bb aa 55 cd 13 5a  |.4....tT.A..U..Z|
00000080  52 72 49 81 fb 55 aa 75  43 a0 41 7c 84 c0 75 05  |RrI..U.uC.A|..u.|
00000090  83 e1 01 74 37 66 8b 4c  10 be 05 7c c6 44 ff 01  |...t7f.L...|.D..|
000000a0  66 8b 1e 44 7c c7 04 10  00 c7 44 02 01 00 66 89  |f..D|.....D...f.|
000000b0  5c 08 c7 44 06 00 70 66  31 c0 89 44 04 66 89 44  |\..D..pf1..D.f.D|
000000c0  0c b4 42 cd 13 72 05 bb  00 70 eb 7d b4 08 cd 13  |..B..r...p.}....|
000000d0  73 0a f6 c2 80 0f 84 ea  00 e9 8d 00 be 05 7c c6  |s.............|.|
000000e0  44 ff 00 66 31 c0 88 f0  40 66 89 44 04 31 d2 88  |D..f1...@f.D.1..|
000000f0  ca c1 e2 02 88 e8 88 f4  40 89 44 08 31 c0 88 d0  |........@.D.1...|
00000100  c0 e8 02 66 89 04 66 a1  44 7c 66 31 d2 66 f7 34  |...f..f.D|f1.f.4|
00000110  88 54 0a 66 31 d2 66 f7  74 04 88 54 0b 89 44 0c  |.T.f1.f.t..T..D.|
00000120  3b 44 08 7d 3c 8a 54 0d  c0 e2 06 8a 4c 0a fe c1  |;D.}<.T.....L...|
00000130  08 d1 8a 6c 0c 5a 8a 74  0b bb 00 70 8e c3 31 db  |...l.Z.t...p..1.|
00000140  b8 01 02 cd 13 72 2a 8c  c3 8e 06 48 7c 60 1e b9  |.....r*....H|`..|
00000150  00 01 8e db 31 f6 31 ff  fc f3 a5 1f 61 ff 26 42  |....1.1.....a.&B|
00000160  7c be 85 7d e8 40 00 eb  0e be 8a 7d e8 38 00 eb  ||..}.@.....}.8..|
00000170  06 be 94 7d e8 30 00 be  99 7d e8 2a 00 eb fe 47  |...}.0...}.*...G|
00000180  52 55 42 20 00 47 65 6f  6d 00 48 61 72 64 20 44  |RUB .Geom.Hard D|
00000190  69 73 6b 00 52 65 61 64  00 20 45 72 72 6f 72 00  |isk.Read. Error.|
000001a0  bb 01 00 b4 0e cd 10 ac  3c 00 75 f4 c3 00 00 00  |........<.u.....|
000001b0  00 00 00 00 00 00 00 00  9b ef 0e 00 00 00 80 01  |................|
000001c0  01 00 83 fe 3f 20 3f 00  00 00 a2 16 08 00 00 00  |....? ?.........|
000001d0  01 21 83 fe ff ff e1 16  08 00 d9 e5 3f 01 00 fe  |.!..........?...|
000001e0  ff ff 82 fe ff ff ba fc  47 01 c5 fa 3f 00 00 fe  |........G...?...|
000001f0  ff ff 0f fe ff ff 00 00  88 01 00 00 b8 00 55 aa  |..............U.|
00000200
[root@localhost ~]#

sshでのrootリモートログインを禁止する

Debianの場合

/etc/ssh/sshd_configを編集し、以下の行を設定

 

PermitRootLogin no

カーネルデバッグインフォの設定方法 - RHEL

カーネルデバッグ環境の追加設定方法。

※下記に示したのは特定バージョンでの例。
STEP1. カーネルバージョンの確認


[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-164.2.1.el5PAE #1 SMP Mon Sep 21 04:45:05 EDT
  2009 i686 i686 i386 GNU/Linux

STEP2. デバッグインフォ(debuginfo)の入手


[root@localhost ~]# wget http://ftp.redhat.com/pub/redhat/linux/enterprise/5Serv
er/en/os/i686/Debuginfo/kernel-PAE-debuginfo-2.6.18-164.2.1.el5.i686.rpm
...
[root@localhost ~]# wget http://ftp.redhat.com/pub/redhat/linux/enterprise/5Serv
er/en/os/i686/Debuginfo/kernel-debuginfo-common-2.6.18-164.2.1.el5.i686.rpm
...

STEP3. 既存のデバッグインフォパッケージの確認と削除


[root@localhost ~]# rpm -qa | grep debug
kernel-PAE-debuginfo-2.6.18-128.el5
kernel-debuginfo-common-2.6.18-128.el5
[root@localhost ~]# rpm -e kernel-PAE-debuginfo-2.6.18-128.el5
[root@localhost ~]# rpm -e kernel-debuginfo-common-2.6.18-128.el5
[root@localhost ~]# rpm -qa | grep debug
[root@localhost ~]#

STEP4. デバッグインフォのインストール


[root@localhost ~]# rpm -ivh kernel-debuginfo-common-2.6.18-164.2.1.el5.i686.rpm
...
[root@localhost ~]# rpm -ivh kernel-PAE-debuginfo-2.6.18-164.2.1.el5.i686.rpm
...

STEP5. 確認(crash>プロンプトが出ればOK)


[root@localhost ~]# crash
...
crash>

ブリッジインターフェイスの作成 - CnetOS/RHEL

KVM環境の構築にあたり、ホストOS(ハイパーバイザーOS)にブリッジインターフェイスの作成をおこなう。

STEP1.ブリッジインターフェイスの定義作成


STEP2.で追加設定する物理アドレスと同じIPアドレスを設定。

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=10.xxx.yyy.zzz
NETMASK=255.255.255.0
NETWORK=10.xxx.yyy.0
ONBOOT=yes
DELAY=0
[root@localhost ~]#

STEP2. 物理インターフェイスへの定義追加


下記例の最後の行の"BRIDGE=br0"を追加

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Broadcom Corporation NetXtreme BCM5715 Gigabit Ethernet
DEVICE=eth0
BOOTPROTO=static
BROADCAST=10.xxx.yyy.255
HWADDR=aa:bb:cc:dd:ee:ff
IPADDR=10.xxx.yyy.zzz
NETMASK=255.255.255.0
NETWORK=10.xxx.yyy.0
ONBOOT=yes
BRIDGE=br0
[root@localhost ~]#

STEP3. iptablesの定義変更(iptablesを有効にしている場合)

# iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
[root@localhost ~]# service iptables restart
ファイアウォールルールを適用中:                            [  OK  ]
チェインポリシーを ACCEPT に設定中nat filter               [  OK  ]
iptables モジュールを取り外し中                            [  OK  ]
#

STEP4. ネットワークの再起動

[root@localhost ~]# service network restart
インターフェース br0 を終了中:                             [  OK  ]
インターフェース eth0 を終了中:                            [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
IPv4 パケット転送を無効化中:  net.ipv4.ip_forward = 0
                                                           [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:                          [  OK  ]
インターフェース br0 を活性化中:                           [  OK  ]
[root@localhost ~]#


以上で終了。


<確認環境>

  • RHEL 5.5
  • bridge-utils-1.1-2 を追加インストール

Flash Playerをインストール - ubuntu + Firefox

Flash Playerは、Adobeから直接ダウンロードしてくる必要がある。OSSではないので、Ubuntuに入ることはない。

http://www.adobe.com/jp/products/flashplayer/ を開き、GET FLASHPLAYERのアイコンをクリック。

Ubuntuで無線LAN

Linuxの無線LAN設定はハードルが高いと思っていたが、手持ちの環境(FMV-B8230)では追加設定・インストール一切無しに無線LANがつながってしまった。
画面上部の携帯の電波レベルのようなアイコンがあったので、クリックすると周辺に無線LANのアクセスポイントが出てくる。適当に選択し、WEPキー入力の画面に答えると、その場で繋がってしまった。

��確認環境>


  • FMV-B8230 無線LANオプション付
  • 搭載チップは、"AR242x 802.11abg Wireless PCI Express Adapter" (lspciから確認)
  • ドライバは、"atk5k"を使用。(lsmodから確認)

USBメモリからLinuxを起動

仕事ではWindowsマシンとして使っているノートPCを、オフではLinuxマシンとして使えるように挑戦してみた。

前提

  • 仕事環境は、内蔵のHDD。このHDDには絶対に変更を加えない。
  • オフ環境は、USBメモリ(8GB)

手順


STEP1. BIOS設定

USBメモリからブートが出来るようPCのBIOS設定を行う。設定はPC毎のマニュアルを参照のこと。 起動順序を、CD → USB → HDDの順にしておくと良いだろう。

STEP2. UbuntuのインストールCDからブートする

説明割愛。インストールCDの準備方法や一般的なインストール方法は、ここを参照。

STEP3. USBメモリをインストール先に指定&ブートローダもUSBメモリへ

「ディスクの準備」の画面で、USBを選択(SD/MMC USB・・・となってたハズ)。 ブートローダのインストール先もUSBを選択。
(重要)ブートローダのインストールは、デフォルトは内蔵HDDとなってしまうので、間違うと内蔵HDDを壊してしまう。
あとはインストール完了を待つ。なお、去年からのVMWare上のUbuntu環境は本日でおしまい。

確認環境

  • FMV-B8230
  • Ubuntu 9.04 Desktop 日本語 Remix
  • USBメモリ(BUFFALO社 BSCRMSDU2シリーズ + KINGMAX 8GB microSDHC)

備考

同じ方法をCentOS(Red Hat Enterprise Linux)で試そうとしたところ、ブートローダのインストール先にUSBメモリを選択できなかった。

以上