Cách tăng kích thước của phân vùng Linux mà không cần khởi động lại

Tác giả NetworkEngineer, T.Mười 24, 2021, 12:31:21 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách tăng kích thước của phân vùng Linux mà không cần khởi động lại


Một máy chủ Linux điển hình thường được triển khai từ hình ảnh có một đĩa lưu trữ duy nhất là /dev/vda. Nếu chúng ta nhìn vào điều đó bằng cách sử dụng lệnh fdisk chúng ta sẽ thấy rằng đĩa này được chia thành hai phân vùng. Cái đầu tiên /dev/vda1 là phân vùng khởi động, nơi hệ điều hành cư trú. Phân vùng thứ hai /dev/vda2 được cấu hình là không gian swap.

Mã nguồn [Chọn]
root@vietnetwork:~# fdisk -l /dev/vda

Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 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
Disklabel type: dos
Disk identifier: 0x0041f8a8

Device     Boot    Start       End  Sectors Size Id Type
/dev/vda1           2048  96471039 96468992  46G 83 Linux
/dev/vda2       96471040 104857599  8386560   4G 82 Linux swap / Solaris


Trong ví dụ trên, tổng dung lượng lưu trữ 50 GB được chia thành 46 GB không gian có thể sử dụng lưu trữ và 4 GB để làm phân vùng swap. Điều gì sẽ xảy ra nếu sau khi cài đặt, chúng ta thấy rằng 46 GB dung lượng ổ đĩa là không đủ nhưng chúng ta không muốn thêm bất kỳ đĩa cứng nào bổ sung? Mục đích của chúng ta là tăng dung lượng phân vùng có sẵn trên đĩa cứng của hệ thống.

Điều này có thể được thực hiện với sự gián đoạn tối thiểu. Chúng ta không cần phải khởi động lại máy chủ.

Yêu cầu:

  • Máy chủ Linux với một đĩa cứng được cài đặt còn dư dung lượng.
  • Quyền truy cập SSH.
  • Lệnh partprobe. Có thể được cài đặt từ gói parted trên hầu hết các bản phân phối Linux.
  • Các lệnh fdisk, swapoff, mkswap, swapon và resize2fs. Có thể có sẵn theo mặc định.
  • Ảnh chụp nhanh hiện tại hoặc bản sao lưu khác của hệ thống bạn đang làm việc. Chỉ để được an toàn và dự phòng rủi ro hoặc thao tác sai xảy ra.

1. Cách tăng kích thước của phân vùng Linux mà không cần khởi động lại.

Sau khi bạn đã tăng dung lượng ổ đĩa, mất khoảng một phút và ổ cứng của bạn lớn hơn.
Sau đó, chúng ta cần tắt tính phân vùng swap vì vậy hãy đảm bảo rằng bạn có thể sống trong vài phút mà không có dung lượng swapi:

Mã nguồn [Chọn]
root@vietnetwork:~# swapoff -a
Sau khi phân vùng swap đã bị vô hiệu hóa, chúng ta cần phải cấu hình lại các phân vùng bằng cách sử dụng lệnh fdisk
Trước tiên, chúng ta sẽ xóa hai phân vùng hiện có. Chúng ta chạy lệnh fdisk /dev/vda và sau đó sử dụng tùy chọn d để xóa phân vùng 2, và sau đó xóa phân vùng 1. Làm theo ví dụ dưới đây:

Mã nguồn [Chọn]
root@vietnetwork:~# fdisk /dev/vda

Command (m for help): d
Partition number (1,2, default 2):

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Bây giờ chúng ta tạo lại các phân vùng của mình. Trong ví dụ, chúng ta có 4 GB cho phân vùng swap. Vì vậy, chúng ta cần giữ ít nhất nhiều dung lượng cho phân vùng swap này.

Tạo lại /dev/vda1 trước. Nhấn n để tạo một phân vùng mới. Nhập p để tạo phân vùng chính. Chúng ta có thể nhấn Enter để chấp nhận giá trị mặc định là 2048 cho khu vực đầu tiên. Sau đó nhập kích thước cho phân vùng. Bạn có thể nhập giá trị bằng GB, vì vậy nếu chúng ta tăng ổ đĩa lên 100 GB, thì chúng ta trừ 4 GB để swap và nhập + 96G cho 96 GB.

Mã nguồn [Chọn]
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): +96G

Created a new partition 1 of type 'Linux' and of size 96 GiB.


Bây giờ chúng ta tạo lại phân vùng swap theo một quy trình tương tự như trên. Nhấn n và sau đó nhấn p để tạo một phân vùng chính mới. Nhấn Enter để chấp nhận giá trị mặc định cho "First sector". Chúng ta cũng có thể nhấn Enter một lần nữa để chấp nhận giá trị mặc định cho "Last sector.

Mã nguồn [Chọn]
Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (201328640-209715199, default 201328640):
Last sector, +sectors or +size{K,M,G,T,P} (201328640-209715199, default 209715199):

Created a new partition 2 of type 'Linux' and of size 4 GiB.


Vì phân vùng thứ hai này sẽ được sử dụng cho không gian swap, chúng ta cần thay đổi loại phân vùng. Điều này có thể được thực hiện bằng cách nhấn tùy chọn t tại dấu nhắc của lệnh fdisk. Sau đó chúng ta nhấn phím 2 để chọn phân vùng thứ hai. Nếu bạn muốn xem danh sách các loại phân vùng có sẵn, hãy nhấn L, nếu không thì nhập 82 để chọn "Linux swap / Solaris".

Mã nguồn [Chọn]
Command (m for help): t
Partition number (1,2, default 2): 2
Partition type (type L to list all types): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden or  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ee  GPT
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fd  Linux raid auto
1c  Hidden W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep
1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot    ff  BBT
Partition type (type L to list all types): 82


Lệnh fdisk thông báo cho chúng ta rằng chúng ta đã thay đổi loại phân vùng với thông báo:

Mã nguồn [Chọn]
Changed type of partition 'Linux' to 'Linux swap / Solaris'.
Sau đó, chúng ta lưu bằng cách sử dụng tùy chọn w và được trả về một dấu nhắc cửa sổ dòng lệnh:

Mã nguồn [Chọn]
Command (m for help): w
Bạn có thể nhận được một thông báo như thế này trước lời nhắc cửa sổ dòng lệnh:

Mã nguồn [Chọn]
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: 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).


Chúng ta hãy quyên đi việc khởi động lại và thay vào đó nói với kernel về các phân vùng mới bằng cách sử dụng lệnh partprobe

Mã nguồn [Chọn]
root@vietnetwork:~# partprobe
Chúng ta sẽ được đưa trở lại dấu nhắc cửa sổ dòng lệnh mà không có đầu ra từ lệnh partprobe.

Bây giờ chúng ta cần thay đổi kích thước hệ thống tập tin của mình trên phân vùng mới /dev/vda1

Mã nguồn [Chọn]
root@vietnetwork:~# resize2fs /dev/vda1

resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3

Hệ thống tập tin trên /dev/vda1 hiện có độ dài 25165824 (4k) khối.

Khởi tạo phân vùng swap mới của /dev/vda2

Mã nguồn [Chọn]
root@vietnetwork:~# mkswap /dev/vda2

Setting up swapspace version 1, size = 4193276 KiB
no label, UUID=c55c25a2-a386-4653-8455-4d9030586dd2

Cuối cùng, chúng ta chỉnh sửa tập tin /etc/fstab và thay thế UUID cũ bằng UUID mới được trả về trong đầu ra của lệnh mkswap. Dòng cần thay đổi không có giá trị cho "mount point và đã đặt "type" là của phân vùng swap.

Mã nguồn [Chọn]
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=332f8fb5-ff1f-4297-b512-f2c93a277296 /               ext4    errors=remount-ro 0       1
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
UUID=c55c25a2-a386-4653-8455-4d9030586dd2       none    swap    sw      0       0


Sau khi chỉnh sửa xong tập tin /etc/fstab, chúng ta cần bật lại swap.

Mã nguồn [Chọn]
root@vietnetwork:~# swapon -a
2. Kiểm tra lại dung lượng.

Chúng ta có thể xác minh kích thước đĩa mới lớn hơn bằng cách sử dụng lệnh df và / hoặc lệnh fdisk.

Mã nguồn [Chọn]
Device     Boot     Start       End   Sectors Size Id Type
/dev/vda1            2048 201328639 201326592  96G 83 Linux
/dev/vda2       201328640 209715199   8386560   4G 82 Linux swap / Solaris


Chúng ta cũng có thể xác nhận rằng máy chủ không hề được khởi động lại bằng cách xem đầu ra của lệnh uptime.

Mã nguồn [Chọn]
$ uptime

23:54:21 up 7 days,  1:15,  1 user,  load average: 0.00, 0.01, 0.05

Chúng ta đã tăng dung lượng thành công các phân vùng với dung lượng đĩa có sẵn trên máy chủ Linux của chúng ta. Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, vui lòng để lại bên dưới bình luận.