Cách thay đổi kích thước phân vùng LVM gốc trong Fedora mà không cần LiveCD hoặc Khởi động lại


24

Tôi có một máy ảo gần đây có hình ảnh đĩa của nó tăng từ 20 GB lên 50 GB và fdisk -lxác minh rằng VM có thể thấy kích thước mới này. Bây giờ tôi cần thay đổi kích thước phân vùng LVM gốc của mình để lấp đầy thêm 30GB.

Tôi đã tìm thấy một số bài viết về thay đổi kích thước LVM, nhưng một số bài viết thay đổi kích thước phân vùng gốc, tất cả đều cho rằng bạn cần khởi động từ LiveCD. Có cách nào để làm điều này mà không cần gỡ xuống máy chủ? Máy chủ rất quan trọng, vì vậy tôi muốn giảm thiểu thời gian chết.

Chỉnh sửa: Đầu ra của fdisk -l:

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 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
Disk identifier: 0x00097c90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 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 identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 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 identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table

Chỉnh sửa: Làm cách nào để thay đổi kích thước phân vùng vật lý? fdisk có thể thấy không gian trống, nhưng tôi không biết cách thay đổi kích thước phân vùng LVM chính để sử dụng nó. Tôi đã thử khởi động vào LiveCD và sử dụng resizelệnh parted'd , nhưng tất cả những gì nó mang lại cho tôi là lỗi "Không thể phát hiện hệ thống tệp". Tôi tìm thấy hướng dẫn này , trong đó nói rằng tôi cần xóa phân vùng và tạo một phân vùng mới với kích thước chính xác, nhưng điều đó nghe có vẻ rất nguy hiểm.

Chỉnh sửa cuối cùng: resizeLệnh của Parted không thể thay đổi kích thước các phân vùng LVM. Đi hình. Thay vào đó, tôi chỉ cần xóa phân vùng cũ và tạo một phân vùng mới với phạm vi mới, như được nêu trong liên kết ở trên, và điều đó đã thay đổi kích thước chính xác phân vùng LVM. Sau đó tôi đã làm theo lời khuyên dưới đây để thay đổi kích thước khối lượng và hệ thống tập tin bên trong phân vùng LVM.


Chỉ cho chúng tôi đầu ra của fdisk - l. Bạn đã thay đổi kích thước phân vùng và không chỉ âm lượng phải không?
Zoredache

@Zoredache, tôi đã thêm đầu ra cho câu hỏi.
Cerin

Câu trả lời:


32

Bạn có thể phát triển một khối lượng logic trực tuyến. Bạn sẽ phải ngắt kết nối nó để thu nhỏ nó (yêu cầu Chế độ LiveCD / Cứu hộ.)

  1. pvresize /dev/sda2(giả sử phân vùng LVM của bạn là sda2. Thay thế theo yêu cầu.)
  2. lvextend /dev/mapper/root -l+100%FREE (hoặc, bất cứ khối lượng logic gốc nào của bạn được gọi.)
  3. resize2fs /dev/mapper/root (giả sử ext2 / 3/4)

1
Cá nhân tôi thích lvextend -L [size][unit] /dev/group/volume, nếu chỉ vì tôi có thể mở rộng âm lượng thêm 10 gigabyte bằng cách chỉ định-L +10G
Hubert Kario

Vâng, nhưng OP yêu cầu; Now I need to resize my root LVM partition to fill the extra 30GB.(Đó là tăng âm lượng hợp lý theo không gian trống có sẵn.)
Aaron Copley

"Kích thước mới (1076 phạm vi) phù hợp với kích thước hiện tại (1076 phạm vi)"
Cerin

7
Tôi nghĩ thủ thuật này rất gọn gàng: Nếu bạn thêm -rtùy chọn vào lvextend, nó sẽ móc fsadmđể thay đổi kích thước FS. Điều này sẽ làm cho bước thứ 3 trở nên dư thừa.
Jodie C

3
Lưu ý câu trả lời này giả định rằng phân vùng đã được mở rộng để lấp đầy không gian trống và chỉ cần các khối lượng logic cần được cập nhật. Các pvresize /dev/sda2lệnh không có gì cho đến khi phân vùng / dev / sda2 has been resized với chia tay hoặc fdisk. Tôi đã phải thay đổi kích thước của tôi với fdisk vì chia tay trên hệ thống của tôi sẽ không hiển thị hoặc không có lệnh thay đổi kích thước. Thay đổi kích thước Fdisk liên quan đến việc xóa và tạo lại phân vùng.
Jason

2

Hệ thống của bạn đã thực sự thay đổi từ 20 đến 50 GB? Điều đó có vẻ thực sự kỳ lạ vì thiết bị sda2 của bạn là ~ 40GB, lv_root hiển thị 36GB và trao đổi hiển thị 6GB.

Đầu ra của bạn fdisk -lcho thấy tổng số lĩnh vực /dev/sda104857600. Các lĩnh vực cuối cùng được sử dụng /dev/sda283886079. Điều này cho tôi biết rằng bạn chưa điều chỉnh kích thước phân vùng để sử dụng tất cả không gian có sẵn trên ổ đĩa. Lệnh pvresize không thay đổi bảng phân vùng. Bạn cần thay đổi bảng phân vùng trước.


1

Cài đặt gparted. Chạy dưới dạng root (sử dụng ssh -X hoặc x2go nếu từ xa). Chọn phân vùng. Nó sẽ hiển thị không gian trống qua cuối (bên phải). Nếu không, bạn cần khởi động lại cho máy ảo của mình để xem kích thước mới của thiết bị ảo. Đó nên là thời gian chết tối thiểu với systemd.

Nhấp chuột phải và chọn thay đổi kích thước. Kéo phần cuối đến phần cuối của đĩa. Hãy chắc chắn rằng bạn không chạm vào đầu. gparted có thể di chuyển một phân vùng trong khi thay đổi kích thước, nhưng điều đó, tất nhiên sẽ phá hủy một hệ thống đang chạy. Nhưng di chuyển cuối cùng là tốt. Xem lại hoạt động đang chờ xử lý, gparted sẽ thực hiện để đảm bảo bạn đang mở rộng và không di chuyển phân vùng. Nhấn vào áp dụng. gparted sẽ thay đổi phân vùng trên đĩa, sau đó phát hành ioctl kernel để đọc lại bảng phân vùng, thay đổi kích thước của thiết bị chặn trực tiếp. Sau đó, vì nó thấy nó là PV LVM, nó chạy pvresize cho bạn. Thoát gparted và bây giờ vss hiển thị không gian mới của bạn.

Tôi đã nghe tin đồn rằng chia tay có thể làm tất cả những điều đó mà không cần đến GUI, nhưng tôi chưa bao giờ có thể tìm ra voodoo. Parted phải là một trong những giao diện CLI tồi tệ nhất mà tôi từng thử sử dụng.

Không sử dụng fdisk, bạn phải xóa và phân bổ lại phân vùng để thay đổi kích thước và theo mặc định, nó sẽ xóa chữ ký LVM2 khi ghi. Tôi nghĩ rằng tôi đã thấy một tùy chọn "nâng cao" để tắt hành vi phá hoại đó, nhưng tôi chưa bao giờ thử nghiệm nó.

Bạn cũng có thể thử cfdisk (nguyền rủa fdisk). Nó có thể có một thay đổi kích thước phân vùng có thể sử dụng. Thật dễ dàng để chạy pvresize một cách thủ công và có một lệnh để nói với kernel để đọc lại bảng phân vùng. Nhưng tôi phải kiểm tra để đảm bảo nó không xóa chữ ký LVM như fdisk.


0

Nếu khối lượng vật lý LVM nằm trên một phân vùng thì không, bạn không thể thay đổi kích thước nó mà không cần khởi động lại.

Bạn có thể chỉnh sửa bảng phân vùng trên ổ đĩa, nhưng Linux sẽ từ chối sử dụng nó cho đến khi bạn khởi động lại.

Nếu bạn đang sử dụng XFS, hãy chuyển resize2fssang xfs_growfs.

Bạn có thể hiển thị các PV bạn sử dụng và LV trong nhóm âm lượng bằng cách sử dụng pvslvs.

PV trên đĩa thô

pvresize /dev/sda
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

PV trên một phân vùng

Trước tiên, bạn phải thay đổi kích thước phân vùng, sử dụng parted, fdiskhoặc công cụ tương tự cho điều đó. Hãy nhớ rằng những công cụ đó chỉ chỉnh sửa mô tả nơi phân vùng, chúng không di chuyển dữ liệu xung quanh. Nói cách khác, dễ dàng bạn chỉ có thể mở rộng phân vùng cuối cùng trên đĩa. Sau đó khởi động lại máy của bạn và sau đó bạn sẽ có thể thông báo cho LVM rằng nó có thêm dung lượng trống:

pvresize /dev/sda2
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

Sử dụng CD Live Gparted, sudo pvresize /dev/sda2báo cáo "1 khối lượng vật lý đã thay đổi kích thước", nhưng sudo lvextend /dev/mapper/VolGroup-lv_root -L +10Gkhông thành công với lỗi "không đủ dung lượng trống: 320 phạm vi cần thiết, nhưng chỉ có 0". sudo fdisk -lbáo cáo rằng tôi có sẵn 54G, trong khi sudo pvdisplaybáo cáo chỉ có 40G đang được sử dụng. Tại sao lvextend thất bại?
Cerin

1
@Cerin, bạn đã bỏ lỡ câu lệnh đầu tiên của Huberts cho một PV trên phân vùng. Trước tiên, bạn phải thay đổi kích thước phân vùng, sử dụng công cụ parted, fdisk hoặc tương tự cho điều đó .
Zoredache

@Zoredache, Ok, tốt, đó là toàn bộ câu hỏi của tôi. Tôi không biết làm thế nào để làm điều đó. Tôi vừa khởi động vào LiveCD Gparted và cố gắng sử dụng resizelệnh parted để tăng kích thước phân vùng chính, nhưng nó đã báo lỗi "Không thể phát hiện hệ thống tập tin". Làm thế nào để bạn thay đổi kích thước phân vùng bằng cách sử dụng parted hoặc fdisk?
Cerin

@Cerin: tìm kiếm SF hoặc đặt câu hỏi khác
Hubert Kario

0

Tôi sẽ xem xét kiểm tra ssm (quản lý lưu trữ hệ thống) nếu nó có sẵn trên bản phân phối của bạn.

Kiểm tra điều này để biết thêm một chút thông tin: /unix//a/293173

ssm xuất hiện để giúp thay đổi kích thước khối lượng logic dễ dàng hơn mà không phải tự làm mọi thứ.

Tôi đã có thể sử dụng để mở rộng phân vùng nhà của mình với nó sau khi khởi động lại hệ điều hành của mình và đăng nhập lần đầu dưới dạng root. (Phải khởi động lại tổng cộng hai lần, nhưng cuối cùng nó đã hoạt động và bây giờ tôi có thêm 50G có sẵn trong phân vùng / nhà của tôi.)


0

Sau khi kết hợp 25 cách, cuối cùng tôi cũng có giải pháp này. Nó không yêu cầu cd trực tiếp, nó hoàn toàn nhanh chóng.

Bước 1. định dạng phân vùng với parted (không có gui). Trong ví dụ này, kích thước tối đa của đĩa tăng từ 8BG lên 32 GB trong hộp ảo.

    # parted
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
       ....
    (parted) mkpart primary ext2 8590 100%
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
         3      8590MB  34,4GB  25,8GB   primary  ext2             lba
       ....
    (parted) set 3 lvm on
    (parted) set 3 lba off
    (parted) print
       ....
         3      8590MB  34,4GB  25,8GB   primary  ext2             lvm
       ....
    (parted) quit

Bước 2. Tạo một Khối lượng vật lý dựa trên phân vùng mới

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

Bước 3. Thêm âm lượng vật lý vào Nhóm âm lượng. Trong một máy chủ fedora 28 đơn giản, cài đặt nhóm âm lượng được gọi là fedora.

# vgextend fedora /dev/sda3
  Volume group "fedora" successfully extended

Bước 4. Thêm không gian có sẵn trong nhóm âm lượng vào âm lượng hợp lý. Trong một máy chủ fedora 28 đơn giản, cài đặt khối lượng logic được gọi là root.

# lvextend -l+100%FREE /dev/fedora/root
  Size of logical volume fedora/root changed from <6,20 GiB (1586 extents) to 30,19 GiB (7729 extents).
  Logical volume fedora/root successfully resized.

Bước 5. Nói với hệ thống tập tin trong khối lượng logic để sử dụng thêm không gian. Trong fedora hệ thống tập tin là xfs.

Chú ý! xfs_growfs sử dụng điểm gắn kết để xác định hệ thống tệp, không phải tên của hệ thống tệp bạn tìm thấy trong đầu ra df !!!!!!!

Lệnh 'xfs_growfs / dev / mapper / fedora-root' sẽ cho bạn biết / dev / mapper / fedora-root không phải là một hệ thống tệp XFS được gắn kết. Nếu bạn đang sử dụng một hệ thống tệp khác, hãy tham khảo https://www.tldp.org/HOWTO/LVM-HOWTO/extendlv.html

# xfs_growfs /
    data blocks changed from 1624064 to 7914496

Bước 6. Thưởng thức

# df
FileSystem               1K-blocks      Used   Available used% Mounted on
....
/dev/mapper/fedora-root   31647744   6492840    25154904  21% /
/dev/sda1                   999320    125576      804932  14% /boot
....

-1

Hãy thử kiểm tra

sudo dnf cài đặt testdisk

kiểm tra sudo

Chỉ cần đặt tạo tệp nhật ký Sau đó, nó sẽ liệt kê các phân vùng, - chọn phương tiện / phân vùng - sau đó nhập - và phân tích - tìm kiếm nhanh - chọn và viết

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.