Tang dung luong o root trong linux

Tang dung luong o root trong linux

Trên các hệ thống hạ tầng cloud, sau khi sizing (bổ sung dung lượng) ổ đĩa ảo (volume), ta cần phải thực hiện thêm một vài lệnh đặc thù trên từng phân vùng ổ đĩa (partition) để hệ thống thực sự nhận diện được dung lượng mới thêm.

Chú ý: Trước khi cập nhật dụng lượng trên ổ đĩa có chứa dữ liệu quan trọng thì ta nên backup dữ liệu hoặc tạo snapshot cho ổ đĩa đó trên các hệ thống cloud mà có hỗ trợ tính năng snapshot.

Các bước cơ bản​

Sau đó, thực hiện cập nhật dung lượng phân vùng theo các bước sau:

  1. Việc tăng thêm dung lượng cho ổ đĩa ảo không đồng thời tăng dung lượng cho phân vùng bên trong nó. Do đó, ta cần phải kiểm tra xem phân vùng cần tăng thêm dung lượng có nằm bên trong ổ đĩa vừa được bổ sung dung lượng hay không.
  2. Thực hiện các câu lệnh đặc thù để tăng dung lượng cho các phân vùng dựa trên định dạng của phân vùng đó.

Nội dung bài viết hiện tại chỉ hướng dẫn cách tăng dung lượng phân vùng cho các sử dụng định dạng: xfs, ext4 trên các máy chủ ảo của AWS, GCP, Azure hoặc VMWare.

Các bước chi tiết​

Trong ví dụ sau, giả sử bạn đã tăng dung lượng ổ đĩa...

1. Kiểm tra định dạng của phân vùng cần tăng bằng câu lệnh df -hT​

Sau đây là kết quả mà bạn sẽ nhận được

$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext4 8.0G 1.9G 6.2G 24% /
/dev/xvdf1 xfs 8.0G 45M 8.0G 1% /data

2. Kiểm tra phân vùng cần tăng dung lượng có nằm trong ổ đĩa đã được bổ sung dung lượng không bằng lệnh lsblk​

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 16G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 30G 0 disk
└─xvdf1 202:81 0 8G 0 part /data

Từ kết quả trên ta thấy:

  • Ổ đĩa /dev/xvda có 1 phân vùng là /dev/xvda1. Trong khi dung lượng ổ đĩa là 16G thì dung lượng phân vùng chỉ có 8G nên có thể tăng dung lượng cho phân vùng /dev/xvda1.
  • Ổ đĩa /dev/xvdf có 1 phân vùng là /dev/xvdf1. Trong khi dung lượng ổ đĩa là 30G thì dung lượng phân vùng chỉ có 8G nên có thể tăng dung lượng cho phân vùng /dev/xvdf1.

3. Thực hiện tăng dung lượng phân vùng bằng lệnh growpart​

Nếu phân vùng có định dạng xfs, dùng lệnh xfs_growfs:​

Nếu xfs_growfs chưa tồn tại thì cài đặt bằng cách:

Nếu phân vùng có định dạng ext4, dùng lệnh resize2fs:​

Kiểm tra lại kết quả thay đổi với df -h​

$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 16G 1.9G 14G 12% /
/dev/xvdf1 30G 45M 30G 1% /data

Bài viết có tham khảo và dịch lại từ: Extending a Linux file system after resizing a volume - Amazon Elastic Compute Cloud

Vì nhiều lý do, dung lượng của một ổ cứng… có thể được mở rộng. Chẳng hạn do lấy snapshot của ổ cứng dung lượng nhỏ restore vào ổ cứng dung lượng lớn. Hoặc do sử dụng chức năng mở rộng dung lượng mà các hạ tầng cloud hiện đại (AWS, Digital Ocean, Bizfly…) cho phép.

Trong những trường hợp như thế, kích thước các phân vùng thường sẽ không thay đổi theo và ta phải thao tác để điều khiển.

Thăm dò trạng thái ổ cứng và phân vùng

Công việc thường bắt đầu bằng việc kiểm tra sự chênh lệch về dung lượng. Kết quả trông có thể như sau, để ý ổ cứng có tên vdb:

[root@ecshost ~]# lsblk
vda     252:0    0   80G  0 disk
├─vda1  252:1    0 79.9G  0 part /
├─vda14 252:14   0    4M  0 part
└─vda15 252:15   0  106M  0 part /boot/efi
vdb     252:16   0  120G  0 disk
└─vdb1  252:17   0  100G  0 part /media/heap

Bước tiếp theo là kiểm tra bảng phân vùng hiện tại. Kết quả trông có thể như dưới đây, để ý phân vùng /dev/vdb1. Nếu giá trị của SystemLinux thì có nghĩa là ổ cứng đang sử dụng bảng phân vùng dạng MBR. Nếu giá trị của SystemGPT thì nghĩa là ổ cứng đang sử dụng bảng phân vùng dạng GPT.

[root@ecshost ~]# fdisk -lu /dev/vdb
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9277b47b

Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux

Tiếp theo, kiểm tra định dạng đang sử dụng cho phân vùng muốn được mở rộng. Trong ví dụ dưới đây là ext4.

[root@ecshost ~]# blkid /dev/vdb1
/dev/vdb1: UUID="e97bf1e2-fc84-4c11-9652-73********24" TYPE="ext4"

Tiếp theo, kiểm tra trạng thái của bảng phân vùng. Sử dụng lệnh e2fsck -n /dev/vdb1 cho phân vùng ext* và lệnh xfs_repair -n /dev/vdb1 cho phân vùng xfs. Nếu phân vùng không mang trạng thái clean thì nên cân nhắc backup ổ cứng và dò lỗi trước.

[root@ecshost ~]# e2fsck -n /dev/vdb1
Warning! /dev/vdb1 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/vdb1: clean, 11/1310720 files, 126322/5242624 blocks

Mở rộng phân vùng

Sử dụng parted để mở rộng thông tin dung lượng trong bảng phân vùng:

  1. Chạy lệnh parted /dev/vdb để mở trình parted
  2. Chạy sub command print để thăm dò bảng phân vùng
  3. Dialog Fix/Ignore/Cancel? sẽ hiện ra, nhập Fix
  4. Chạy lệnh quit để thoát trình parted

Sau đó, chạy trình growpart <ổ> <partition của ổ> để mở rộng dung lượng cho phân vùng. Chẳng hạn growpart /dev/vdb 1.


Tham khảo:

  1. https://partners-intl.aliyun.com/help/doc-detail/25452.htm#section-vvb-gcs-bhm
  2. https://docs.amazonaws.cn/en_us/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

 2,819 total views,  25 views today