CentOS7 新規ボリューム追加

VirtualBox のCentOS7 にXウィンドウズをインストールしようとしたら容量が足りず検索したところ、[設定]-[ストレージ]から新規ストレージの追加ができるようなので試みました。

が、しかしOSインストール時にパーティションを「標準パーティション」、「ext4」で作ってしまったので論理ボリューム拡張できずここで詰みました。CentOS7 のデフォルトは「xfs」だったのですね。CentOS7以前のresize2fs コマンドが通らずエラーが出るのでハマりました。xfs_growfs コマンドを通すためフォーマットも「LVM」、「xfs」でOSインストールからやり直しです。(うわぁ~ん

改めてOS再インストール後、新規ボリューム作成。

[コントローラー: SATA] を選択すると下のアイコンから追加ボタンが現れるのでウィザードから[新規追加]していきます。[ハードディスクのファイルタイプ] は私の場合、[VDI] で作ったので[VDI] にチェックして次へ。

[仮想ハードディスクファイル] に適当な名前を付けて容量を8GB と多めに取りました。[作成] ボタンをクリックしてOSを起動します。

# ll /dev/sd*

とコマンドするとストレージに/dev/sdb が追加されていることが確認できます。

これから新規ディスクにパーティションを作って論理ボリューム拡張して容量を増やしていきます。まず、fdisk /dev/sdb から。

# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x31600b47.
コマンド (m でヘルプ):

プロンプトで p と打つとパーティションが確認できます。はい、何もありませんね。

コマンド (m でヘルプ): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x31600b47

デバイス ブート 始点 終点 ブロック Id システム

コマンド (m でヘルプ):

新しくパーティションを作成していきますのでプロンプト n と打ちます。

コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):

Primary かextended か聞かれるのでprimary の p です。

Select (default p): p
パーティション番号 (1-4, default 1): 1

パーティション番号は、1 と入力します。次にセクター番号を設定します。開始を2048 、終了を16777215 とします。

最初 sector (2048-16777215, 初期値 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-16777215, 初期値 16777215): 16777215
Partition 1 of type Linux and of size 8 GiB is set

コマンド (m でヘルプ):

再び、p で確認すると/dev/sdb1 が作られていることが確認できます。

コマンド (m でヘルプ): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x31600b47

デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 16777215 8387584 83 Linux

コマンド (m でヘルプ):

プロンプトから t でパーティションの種類(8e)を選択します。

コマンド (m でヘルプ): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

プロンプトから w で設定を書き込みます。

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

ここからpvcreate コマンドで物理ボリューム作成、vgextend コマンドからボリュームグループ拡張、lvextend コマンドから論理ボリューム拡張して、

xfs_growfs /dev/cl/root でルートディレクトリを拡張していきます。

df でルートの使用率を見ると、36%から16%に空き容量が増えました。

SSDのフォーマット

amazon.co.jp でポチった
Crucial [ Micron製 ] 内蔵SSD 2.5インチ MX300 525GB ( 3D TLC NAND / SATA 6Gbps / 3年保証 )正規代理店 CT525MX300SSD1

をフォーマットしました。まず、2.5インチHDDケースに取り付けて、LinuxのUSBポートに接続。dmseg コマンドでデバイス名を確認。

usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
usb-storage: device scan complete
scsi 7:0:0:0: Direct-Access     Crucial_ CT525MX300SSD1        PQ: 0 ANSI: 4
sd 7:0:0:0: Attached scsi generic sg4 type 0
sd 7:0:0:0: [sdd] 1025610768 512-byte logical blocks: (525 GB/489 GiB)

最後列に近いログに[sdd]で認識されているらしいので、

# fdisk /dev/sdd

p 状態表示

コマンド (m でヘルプ): p
ディスク /dev/sdd: 525.1 GB, 525112713216 バイト
ヘッド 255, セクタ 63, シリンダ 63841
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x45764ba9

n 新規パーティション作成で最初と最後のシリンダを指定します。

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-63841, default 1): 1
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-63841, default 63841):  63841

w 操作を書き込み

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

sdd1 をext4形式でフォーマット

# mkfs -t ext4 /dev/sdd1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
32055296 inodes, 128200700 blocks
6410035 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
3913 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

 マウントして終了です。

# mkdir /mnt/backup
# mount /dev/sdd1 /mnt/backup

http://qiita.com/ikuwow/items/c5832fd823e869825c80

sambaにマウント成功

amazon.co.jpでは発送に時間が掛かりそうだったので注文をキャンセルして、近くのケーズデンキで Logitec HDDケース 3.5HDD USB3.0 ファン付き LHR-EJU3F を調達。早速、Linuxに取り付けました。

いったん、自動マウントを解除してコマンドからHDDをマウント。

# mkdir /home/samba/share
# mount -t xfs -o defaults /dev/sdc /home/samba/share
# chown -R gusachan:nobody /home/samba/share
# chcon -t samba_share_t /home/samba/share -R

起動時にも自動マウントさせるため/etc/fstabの最下行に追加(UUIDはblkidコマンドで確認。)

UUID=xxxxxxxxxxxxxxxxxxxxxxxx /home/samba/share xfs defaults 0 0

システム再起動でWindowsのsambaフォルダから読み取りできました。

参考URL http://jlinuxer.dip.jp/?p=487

RAID1 リビルド失敗

その後、フォーマットしてパーティションしたHDD でRAID1 を構築しようとmdadm コマンドで/dev/md0 を作ろうとしましたが、busy と言われて受け付けてくれません。

# mdadm --create /dev/md0 --auto=yes --level=raid1 --raid-devices=2 missing /dev/sdb1
mdadm: Cannot open /dev/sdb1: Device or resource busy

仕方がないので、LSI Software RAID Configuration Utility 画面から、Rebuild メニューで500GB HDD を15時間掛けてリビルドしました。が、結果は失敗。

20151011035424

OS起動時に、Kernel Panic しました。GRUB から起動OS のバージョンを変えたり、シングルユーザーモードも試しましたが結果はNG。

Kernel panic - not syncing : Attenpted to kill init !
Pid : 1. com , : init Not tainted 2.6.32-573.7.1.el6.x86_64

RAID モードを解除して、AHCI モードでかろうじて起動しましたがユーティリティ画面でRAID 設定をやり直したところ、生きているHDD データも壊してしまいました。(涙目

wrong fs type bad option . bad superblock on /dev/sdb3
missing codepack or helper program . or other error
It some cases useful info is found in syslog . try dmesg

都合、4台の500GB HDD データを潰したことになりますが、予備で1TB のRAID1 HDD がありましたので交換。7月時点のバックアップでしたが、

・・・生きていました!無事ってすばらしい。

こんなこともあろうかと、Wordpress の投稿、画像は、[ダッシュボード] → [ツール] → [エクスポート] で、幸いバックアップを取って置いたのでインポートしてセーフでした。wordpress/wp-content/uploads/ の画像ディレクトリも保存していましたのでフォルダを転送するだけでした。後は、演習用のApache2 LAMP 構築の残骸を復習するくらいです。しかし、Bonding とLSI Software RAID Configuration Utility はなんとも克服しがたい鬼門ですね。サーバーを運用するためには、バックアップのスキルを高めたい所なのですが難しいですね。データ破壊したHDD はCentOS7 でも入れる予定です。

RAID1 HDD のフォーマット

またBonding の設定を誤ったので、RAID1 を組んでいるHDD 2台を取り出してクローン復元しようとした際に、HDD を書き潰してしまいました。フォーマットしようとして、fdisk -l /dev/sda でパーティションを見てみるとシリンダ境界が重なっていて fdisk /dev/sdb できません。

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          39      307200   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              39         561     4194304   82  Linux スワップ / Solaris
パーティション 2 は、シリンダ境界で終わっていません。
/dev/sda3             561       60667   482801664   83  Linux

そんな時は、fdisk -lu コマンドでセクタ単位で境界を調べることが出来ます。

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048      616447      307200   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2          616448     9005055     4194304   82  Linux スワップ / Solaris
パーティション 2 は、シリンダ境界で終わっていません。
/dev/sda3         9005056   974608383   482801664   83  Linux

fdisk /dev/sdb の後、コマンド:u でセクタ単位でのパーティション指定が可能です。

コマンド (m でヘルプ): u
セクタ数 の表示/項目ユニットを変更します
デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1   *        2048      616447      307200   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sdb2          616448     9005055     4194304   82  Linux スワップ / Solaris
パーティション 2 は、シリンダ境界で終わっていません。
/dev/sdb3         9005056   974608383   482801664   83  Linux