0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【備忘】Raid1とLVMで構成されている共有フォルダからHDDをひとつ除く

Posted at

はじめに

自宅のLinuxサーバーでSambaを使用して共有フォルダを使っています。
この共有フォルダの物理層は、Raid1のHDD×2で構成されています。
今回、この2つのHDDのうち1つを除くことにしました。
そして最終的には、Raidもやめることにしました。(大したデータが入っていなく、他で使いたくなったため)
ここにその時の手順を、備忘録として残そうと思います。
サーバーの再起動を除いて、ダウンタイムはほぼゼロで完了できました。

構成

現在の構成を表にすると概ね以下のようになります。

項目 バージョン等
ハードウェア基盤 VMware ESXi 7.0.0 (Build 16324942)
OS CentOS Linux 7 (仮想サーバー)
ソフトウェアRaid mdadm - v4.1 - 2018-10-01

作業前と作業後

作業前と作業後の構成図を示します。
image.png

やること

やることは概ね以下のようになります。

  1. Raidを構成しているHDDのひとつをRaidから除外。
  2. Raidから除外したHDDからパーティションを削除。
  3. Raidから除外したHDDをにパーティションを作成。
  4. Raidから除外したHDDのパーティションタイプを指定。
  5. Linuxを再起動。
  6. Raidから除外したHDDの情報を削除。
  7. 物理ボリュームを作成。
  8. 新規のボリュームグループを作成。
  9. 新規の論理ボリュームを作成。
  10. 作成した論理ボリュームをフォーマット。
  11. Raidを構成している残り1台のHDDから、新規作成した論理ボリュームのHDDへデータをコピー。
  12. Raidを削除。
  13. コピー元のHDDの初期化。

手順

手順をコマンドベースで残します。すべてrootユーザーで行っています。

現状確認

Raidの状態確認

# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdc[1] sdb[0]
      5851760832 blocks super 1.2 [2/2] [UU]
      bitmap: 0/44 pages [0KB], 65536KB chunk

unused devices: <none>
# mdadm --detail /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Wed Jan 13 07:48:12 2021
        Raid Level : raid1
        Array Size : 5851760832 (5.45 TiB 5.99 TB)
     Used Dev Size : 5851760832 (5.45 TiB 5.99 TB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Tue Jan 24 13:54:28 2023
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : FILEVM01:0  (local to host FILEVM01)
              UUID : 3954bb00:4a32a654:69751b93:d4e5a938
            Events : 36380

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

RaidはRaid1であり、/dev/sdb/dev/sdcで構成されていることがわかりました。

LVMの現状確認

# pvs
  PV         VG      Fmt  Attr PSize  PFree
  /dev/md0   VGroup1 lvm2 a--  <5.45t    0 
  /dev/sda3  VGroup0 lvm2 a--  48.75g    0 
# vgs
  VG      #PV #LV #SN Attr   VSize  VFree
  VGroup0   1   6   0 wz--n- 48.75g    0 
  VGroup1   1   1   0 wz--n- <5.45t    0 
# lvs
  LV        VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LVolume01 VGroup0 -wi-ao---- 30.00g                                                    
  LVolume02 VGroup0 -wi-ao----  4.00g                                                    
  LVolume03 VGroup0 -wi-ao----  2.00g                                                    
  LVolume04 VGroup0 -wi-ao----  1.00g                                                    
  LVolume05 VGroup0 -wi-ao----  8.00g                                                    
  LVolume06 VGroup0 -wi-ao----  3.75g                                                    
  LVolume11 VGroup1 -wi-ao---- <5.45t 

Raidのmd0が物理ボリュームとして指定されています。
共有フォルダのボリュームグループはVGroup1になります。
共有フォルダの論理ボリュームはLVolume11になります。

ファイルシステム確認

# df -mT
ファイルシス                  タイプ   1M-ブロック    使用  使用可 使用% マウント位置
devtmpfs                      devtmpfs         860       0     860    0% /dev
tmpfs                         tmpfs            872       0     872    0% /dev/shm
tmpfs                         tmpfs            872       1     871    1% /run
tmpfs                         tmpfs            872       0     872    0% /sys/fs/cgroup
/dev/mapper/VGroup0-LVolume01 ext4           30110    3750   24809   14% /
/dev/sda2                     ext4             976     195     715   22% /boot
/dev/sda1                     vfat             250      12     239    5% /boot/efi
/dev/mapper/VGroup0-LVolume05 ext4            7936    1319    6192   18% /var
/dev/mapper/VGroup0-LVolume04 ext4             976       3     907    1% /home
/dev/mapper/VGroup0-LVolume03 ext4            1952       7    1828    1% /tmp
/dev/mapper/VGroup0-LVolume06 ext4            3716      15    3493    1% /var/crash
/dev/mapper/VGroup1-LVolume11 ext4         5669426 2984245 2399435   56% /var/shared
tmpfs                         tmpfs            175       0     175    0% /run/user/1001

ファイルシステムはext4であることがわかりました。

変更作業

Raid1から片系のHDDを1台除外

# mdadm --manage /dev/md0 --fail /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0
# mdadm --manage /dev/md0 --remove /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md0

faulty状態にしてからremoveしないとmdadm: hot remove failed for /dev/sdc: Device or resource busyが発生したためこの手順になっています。

Raidの状態確認

# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdc[1](F) sdb[0]
      5851760832 blocks super 1.2 [2/1] [U_]
      bitmap: 0/44 pages [0KB], 65536KB chunk

unused devices: <none>
# mdadm --detail /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Wed Jan 13 07:48:12 2021
        Raid Level : raid1
        Array Size : 5851760832 (5.45 TiB 5.99 TB)
     Used Dev Size : 5851760832 (5.45 TiB 5.99 TB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Tue Jan 24 14:11:51 2023
             State : clean, degraded 
    Active Devices : 1
   Working Devices : 1
    Failed Devices : 1
     Spare Devices : 0

Consistency Policy : bitmap

              Name : FILEVM01:0  (local to host FILEVM01)
              UUID : 3954bb00:4a32a654:69751b93:d4e5a938
            Events : 36382

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       -       0        0        1      removed

       1       8       32        -      faulty   /dev/sdc

/dev/sdcが除外され、/dev/sdbだけになりました。

パーティションの削除

# fdisk /dev/sdc 

WARNING: The size of this disk is 6.0 TB (5992338370560 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID 
partition table format (GPT).

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.

コマンド (m でヘルプ): d
Selected partition 1
Partition 1 is deleted

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

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

fdiskコマンドを使います。dがパーティション削除で、wが上書き保存です。

パーティション再作成

# fdisk /dev/sdc

WARNING: The size of this disk is 6.0 TB (5992338370560 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID 
partition table format (GPT).

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.


コマンド (m でヘルプ): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
パーティション番号 (1-4, default 1): 
最初 sector (2048-4294967295, 初期値 2048): 
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-4294967294, 初期値 4294967294): 
初期値 4294967294 を使います
Partition 1 of type Linux and of size 2 TiB is set

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

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

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

パーティション削除と同時にできると思いますが、ここでは別で実行しました。
fdiskコマンドを使い、nで新規パーティション作成、tでパーティションタイプ指定になります。
パーティションタイプは8eLinux LVMです。
wで上書き保存します。

デバイス状態の確認

# fdisk -l /dev/sdc

Disk /dev/sdc: 5992.3 GB, 5992338370560 bytes, 11703785880 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x9cbb1901

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdc1            2048  4294967294  2147482623+  8e  Linux LVM

Raidから切り離した/dev/sdcにパーティションができあがり、パーティションタイプはLinux LVMになっています。

サーバー再起動

# shutdown -r now

ここでサーバーを再起動しました。

Raid情報の削除

# wipefs -a /dev/sdc
/dev/sdc: 4 bytes were erased at offset 0x00001000 (linux_raid_member): fc 4e 2b a9
/dev/sdc: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
/dev/sdc: calling ioclt to re-read partition table: 成功です

/dev/sdcをRaid情報から削除します。これをやっていないと、pvcreateが失敗しました。

LVMの作成

物理ボリュームの作成

# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
# pvs
  PV         VG      Fmt  Attr PSize  PFree 
  /dev/md0   VGroup1 lvm2 a--  <5.45t     0 
  /dev/sda3  VGroup0 lvm2 a--  48.75g     0 
  /dev/sdc           lvm2 ---  <5.45t <5.45t

物理ボリュームを作成しました。

ボリュームグループの作成

# vgcreate VGroup2 /dev/sdc
  Volume group "VGroup2" successfully created
# vgs
  VG      #PV #LV #SN Attr   VSize  VFree 
  VGroup0   1   6   0 wz--n- 48.75g     0 
  VGroup1   1   1   0 wz--n- <5.45t     0 
  VGroup2   1   0   0 wz--n- <5.45t <5.45t

ボリュームグループをVgroup2という名前で作成しました。

論理ボリュームの作成

# lvcreate -l 100%VG -n LVolume12 VGroup2
WARNING: LVM2_member signature detected on /dev/VGroup2/LVolume12 at offset 536. Wipe it? [y/n]: y
  Wiping LVM2_member signature on /dev/VGroup2/LVolume12.
  Logical volume "LVolume12" created.
# lvs
  LV        VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LVolume01 VGroup0 -wi-ao---- 30.00g                                                    
  LVolume02 VGroup0 -wi-ao----  4.00g                                                    
  LVolume03 VGroup0 -wi-ao----  2.00g                                                    
  LVolume04 VGroup0 -wi-ao----  1.00g                                                    
  LVolume05 VGroup0 -wi-ao----  8.00g                                                    
  LVolume06 VGroup0 -wi-ao----  3.75g                                                    
  LVolume11 VGroup1 -wi-ao---- <5.45t                                                    
  LVolume12 VGroup2 -wi-a----- <5.45t 

LVolume12という名前で論理ボリュームを作成しました。

フォーマット

# mkfs.ext4 /dev/mapper/VGroup2-LVolume12
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
182874112 inodes, 1462972416 blocks
73148620 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3611295744
44647 block groups
32768 blocks per group, 32768 fragments per group
4096 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, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

新しく作ったLVolume12という論理ボリュームをext4でフォーマットしました。

マウント

# mkdir /var/shared2
# mount /dev/mapper/VGroup2-LVolume12 /var/shared2

/var/shared2というディレクトリを新しく作成してマウントしました。

ファイルのコピー

# \cp -frp /var/shared/* /var/shared2/

Raidを構成しているHDDから、新しく論理ボリュームを作ったHDDへ、全ファイルをコピーしました。

fstab編集

# cat fstab

#
# /etc/fstab
# Created by anaconda on Sat May  1 00:52:40 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VGroup0-LVolume01 /                       ext4    defaults        1 1
UUID=4199baa8-8df4-431a-841d-27be41a9832c /boot                   ext4    defaults        1 2
UUID=7C33-B4A2          /boot/efi               vfat    umask=0077,shortname=winnt 0 0
/dev/mapper/VGroup0-LVolume04 /home                   ext4    defaults        1 2
/dev/mapper/VGroup0-LVolume03 /tmp                    ext4    defaults        1 2
/dev/mapper/VGroup0-LVolume05 /var                    ext4    defaults        1 2
/dev/mapper/VGroup0-LVolume06 /var/crash              ext4    defaults        1 2
/dev/mapper/VGroup0-LVolume02 swap                    swap    defaults        0 0
# /dev/VGroup1/LVolume11        /var/shared/            ext4    defaults        0 0
/dev/VGroup2/LVolume12        /var/shared2/           ext4    defaults        0 0

/etc/fstabを編集して、サーバー起動時にLVolume12/var/shared2にマウントされるようにします。

サーバー再起動

# shutdown -r now

削除作業

LVMを使用していたので、LVMから削除していきます。

論理ボリュームの削除

# lvremove /dev/VGroup1/LVolume11 
Do you really want to remove active logical volume VGroup1/LVolume11? [y/n]: y
  Logical volume "LVolume11" successfully removed
# lvs
  LV        VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LVolume01 VGroup0 -wi-ao---- 30.00g                                                    
  LVolume02 VGroup0 -wi-ao----  4.00g                                                    
  LVolume03 VGroup0 -wi-ao----  2.00g                                                    
  LVolume04 VGroup0 -wi-ao----  1.00g                                                    
  LVolume05 VGroup0 -wi-ao----  8.00g                                                    
  LVolume06 VGroup0 -wi-ao----  3.75g                                                    
  LVolume12 VGroup2 -wi-ao---- <5.45t

LVolume11が無くなってLVolume12が残っている状態です。

ボリュームグループの削除

# vgremove VGroup1 
  Volume group "VGroup1" successfully removed
# vgs
  VG      #PV #LV #SN Attr   VSize  VFree
  VGroup0   1   6   0 wz--n- 48.75g    0 
  VGroup2   1   1   0 wz--n- <5.45t    0 

VGroup1が削除されました。

物理ボリュームの削除

# pvremove /dev/md0
  Labels on physical volume "/dev/md0" successfully wiped.
# pvs
  PV         VG      Fmt  Attr PSize  PFree
  /dev/sda3  VGroup0 lvm2 a--  48.75g    0 
  /dev/sdc   VGroup2 lvm2 a--  <5.45t    0 

/dev/md0の物理ボリュームを削除しました。

Raidの削除

# mdadm --misc --stop /dev/md0
mdadm: stopped /dev/md0
# cat /proc/mdstat 
Personalities : [raid1] 
unused devices: <none>
# mdadm --misc --zero-superblock /dev/sdb

mdadm --misc --stopコマンドでRaidを削除しました。
mdadm --misc --zero-superblockコマンドでスーパーブロックを削除しました。

サーバーシャットダウン

あとは後片付けです。

# shutdown -h now

仮想サーバーをシャットダウンしました。

ESXiシャットダウン

ホストであるESXiをシャットダウンします。このときESXiはメンテナンスモードにします。

HDD取り外し

物理的にHDDを取り外しました。

ESXi起動

これだけでは仮想サーバーは起動しません。
取り外したHDDに対応するデータストアを削除します。

取り外したHDDのデータストアを削除

image.png
ESXiコンソールにログインして、対象の仮想サーバーの設定画面を開きます。
対応するデータストアを削除します。

メンテナンスモード解除と仮想サーバー起動

ESXiのメンテナンスモードを解除して、仮想サーバーを起動しました。
これで作業は完了です。

補足(個人的なもの)

参考サイト

https://futuremix.org/2009/05/linux-raid-mdadm-manage-remove-disk-partition
https://progzakki.sanachan.com/os/how-to-extend-logical-volume/
https://abelog.tech/archives/187
https://atmarkit.itmedia.co.jp/ait/articles/1909/12/news018.html
https://atmarkit.itmedia.co.jp/ait/articles/1909/13/news019.html
https://ex1.m-yabe.com/archives/3125

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?