12/08/2018, 15:54

Hướng dẫn cách mở rộng disk Linux LVM khi mở rộng ổ cứng máy ảo

Bài viết này mình sẽ hướng dẫn các bạn cách nâng cấp ổ cứng server elastic search nói riêng và ổ cứng cho server Linux sử dụng LVM nói chung. I. Các bước chuẩn bị trước khi tiến hành nâng cấp. 1.Query get tổng số lượng các object trước khi tiến hành nâng cấp disk. (ví dụ cho trường hợp get số ...

Bài viết này mình sẽ hướng dẫn các bạn cách nâng cấp ổ cứng server elastic search nói riêng và ổ cứng cho server Linux sử dụng LVM nói chung.

I. Các bước chuẩn bị trước khi tiến hành nâng cấp.

1.Query get tổng số lượng các object trước khi tiến hành nâng cấp disk. (ví dụ cho trường hợp get số lượng object candidates, company)

curl http://localhost:9200/candidates/_count
curl http://localhost:9200/companies/_count

2.Get thông tin primary shard & replicas shard và ghi ra file before.txt để sau khi tiến hành nâng cấp xong sẽ so sánh lại.

curl -XGET http://localhost:9200/_cat/shards > before.txt

II. Tiến hành nâng cấp mở rộng ổ cứng

Một số chú ý quan trọng: Bạn phải rất cẩn thận khi làm việc với các lệnh trong bài viết này vì nó có thể làm mất data. Nếu như bạn đang làm việc trên máy ảo thì cần phải tạo snapshot trước khi tiến hành các thao tác. hoặc là cần có back up data trước khi tiến hành các thao tác.

1. Identifying the partition type

Chúng ta cần kiểm tra chắc chắn rằng partition của chúng ta đang thao tác là Linux LVM

fdisk -l

Như bạn có thể thấy là /dev/sda5 ở trên là Linux LVM và nó có ID là 8e. 8e là mã hex để thể hiện nó là type kiểu Linux LVM. Như vậy chúng ta đã kiểm tra được đang làm việc trên Linux LVM rồi.

Như thông tin trong ảnh bên dưới thì ổ cứng hiện tại là 20GB và nó đang được đặt trong logical với tên là /dev/mapper/Mega-root nơi mà chúng ta sẽ mở rộng ổ cứng mới.

2. Increasing the virtual hard disk

Tiếp theo chúng ta cần thay đổi ổ cứng của máy ảo từ 20GB thành 30GB bằng cách thay đổi setting của VMWare.

3. Detect the new disk space

Như vậy là chúng ta đã tăng được ổ cứng ở tầng hardware rồi, tiếp theo chúng ta sẽ tạo partition mới dựa trên ổ cứng này.

Trước khi chúng ta có thể làm được điều này thì cần phải check được "unallocated disk" đã được phát hiện ở server chưa. Bạn có thể sử dụng lệnh "fdisk -l" để xem danh sách primay disk. Tuy nhiên bạn có thể sẽ nhìn thấy list giống như trạng thái ban đầu, ở thời điểm này bạn không cần phải restart server mà vẫn có thể check được thay đổi bằng command dưới đây.

echo "- - -" > /sys/class/scsi_host/host0/scan

THeo như hình ảnh bên dưới thì chúng ta có thể xác nhận được là đã hiển thị bao gồm cả ổ cứng mới.

4. Partition the new disk space

Như bạn đã thấy chúng ta đang làm việc với /dev/sda và chúng ta sẽ tạo primary partition mới bằng cách sử dụng fdisk.

fdisk /dev/sda

Chúng ta sẽ làm theo hướng dẫn như bên dưới và nhập theo kí tự in đậm. Chú ý chọn m để có thể get tất cả commands liên quan đến fdisk

‘n’ là để thêm partition mới

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n

‘p’ là để tạo primary partition

Command action
   l   logical (5 or over)
   p   primary partition (1-4)
p

Chúng ta đã có /dev/sda1 và /dev/sda2 như trên vì vậy sử dụng 3 để tạo /dev/sda3

Partition number (1-4): 3

Tiếp theo enter 2 lần để nhận default cylinders đầu và cuối

First cylinder (2611-3916, default 2611): "enter"
Using default value 2611
Last cylinder, +cylinders or +size{K,M,G} (2611-3916, default 3916): "enter"
Using default value 3916

‘t’ là để thay đổi system ID của partition, trong trường hợp này sẽ thay đổi về 3 vừa được tạo ở trên.

Command (m for help): t
Partition number (1-5): 3

Mã code hex 8e là code cho Linux LVM

Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

‘w’ là để ghi vào bảng các disk và exit.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Bạn có thể thấy cảnh báo cần reboot lại nhưng nếu bạn ko thấy partition mới bằng cách sử dụng "fdisk -l" thì có thể chạy "partprobe -s" để quét lại bảng partition.

5. Increasing the logical volume

Sử dụng lệnh pvcreate để tạo physical volume sử dụng LVM.

  Device /dev/sda3 not found (or ignored by filtering).

để không phải reboot lại thì bạn phải sử dụng partprobe/partx sau đó thực hiện lại lệnh pvcreate.

root@Mega:~# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created

Tiếp theo kiểm tra xem tên hiện tại của volume group bằng lệnh vgdisplay.

root@Mega:~# vgdisplay
  --- Volume group ---
  VG Name               Mega
...
VG Size               19.76 GiB

Bây giờ mở rộng "Mega" bằng cách add thêm physical volume /dev/sda3 bằng lệnh pvcreate

root@Mega:~# vgextend Mega /dev/sda3
  Volume group "Mega" successfully extended

Sử dụng lệnh pvscan để scan tất cả disk cho physical volumes. Nó sẽ bao gồm /dev/sda5 ban đầu và physical volume vừa thêm /dev/sda3

root@Mega:~# pvscan
  PV /dev/sda5   VG Mega   lvm2 [19.76 GiB / 0    free]
  PV /dev/sda3   VG Mega   lvm2 [10.00 GiB / 10.00 GiB free]
  Total: 2 [29.75 GiB] / in use: 2 [29.75 GiB] / in no VG: 0 [0   ]

Tiếp theo là tăng logical volume Đầu tiên kiểm tra đường dẫn của logical volume sử dụng lvdisplay

root@Mega:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/Mega/root

Extend logical volume sử dụng

root@Mega:~# lvextend /dev/Mega/root /dev/sda3
 Extending logical volume root to 28.90 GiB
 Logical volume root successfully resized

Bước cuối cùng là resize lại file system sử dụng resize2fs

root@Mega:~# resize2fs /dev/Mega/root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/Mega/root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 2
Performing an on-line resize of /dev/Mega/root to 7576576 (4k) blocks.
The filesystem on /dev/Mega/root is now 7576576 blocks long.

Và bây giờ sử dụng df để kiểm tra dung lượng ổ cứng available

III. Các bước chuẩn bị trước khi tiến hành nâng cấp.

1.Query get tổng số lượng các object sau khi tiến hành nâng cấp disk và so sánh với lúc trước khi nâng cấp. (ví dụ cho trường hợp get số lượng object candidates, company)

curl http://localhost:9200/candidates/_count
curl http://localhost:9200/companies/_count

2.Get thông tin primary shard & replicas shard và ghi ra file after.txt và so sánh với file before.txt.

curl -XGET http://localhost:9200/_cat/shards > after.txt
diff before.txt after.txt

Tham khảo. https://www.rootusers.com/how-to-increase-the-size-of-a-linux-lvm-by-expanding-the-virtual-machine-disk/

0