Làm thế nào để mở rộng một phân vùng ext4 và hệ thống tập tin?


44

Tôi có một đĩa 400 GB với phân vùng ext4 320 GB. Tôi muốn phát triển phân vùng ext4 để sử dụng không gian bên trái (80GB dung lượng trống).

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+

Làm thế nào tôi có thể làm điều này?

Tôi đã thấy mọi người sử dụng resize2fsnhưng tôi không hiểu nếu nó thay đổi kích thước phân vùng.

Một giải pháp khác là sử dụng fdisknhưng tôi không muốn xóa phân vùng và mất dữ liệu. Làm thế nào tôi có thể đơn giản phát triển phân vùng mà không mất bất kỳ tập tin?

Lưu ý: Tôi đang nói về một phân vùng dữ liệu chưa được gắn mà không có LVM và tôi có các bản sao lưu, nhưng tôi muốn tránh mất thời gian cho việc khôi phục.


Loại câu hỏi này đã được hỏi và trả lời một số lần mà tôi biết. Bạn đã tham khảo tài liệu lưu trữ ở đây?
mdpc

Câu trả lời:


45

Bạn phải bắt đầu với phân vùng chưa từng có. Nếu bạn không thể ngắt kết nối nó (ví dụ: phân vùng gốc của bạn hoặc thứ gì khác mà hệ thống cần chạy), hãy sử dụng cái gì đó như System Cứu CD thay thế.

  1. Chạy partedhoặc gpartednếu bạn thích GUI và thay đổi kích thước phân vùng để sử dụng thêm dung lượng. Tôi thích gpartedvì nó cung cấp cho bạn một biểu diễn đồ họa đẹp, rất giống với biểu đồ bạn đã vẽ trong câu hỏi của mình.

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (chỉ để tìm hiểu xem bạn có ở bên an toàn không)

  4. Kể lại phân vùng của bạn.

Mặc dù tôi chưa bao giờ thấy điều này thất bại, trước tiên hãy sao lưu dữ liệu của bạn!


5
Các resize2fstrang người đàn ông nói: Nếu hệ thống tập tin được gắn kết, nó có thể được sử dụng để mở rộng kích thước của gắn hệ thống tập tin, giả sử sự hỗ trợ hạt nhân trên mạng thay đổi kích thước. (Theo văn bản này, nhân Linux 2.6 hỗ trợ thay đổi kích thước trực tuyến cho các hệ thống tệp được gắn kết bằng ext3 và ext4.). Tuy nhiên, thay đổi kích thước hệ thống tệp được gắn kết là một hoạt động nguy hiểm hơn, vì hạt nhân có thể dễ dàng đóng băng hoặc gặp sự cố trong khi chạy mã hiếm khi được thực thi, khiến hệ thống tệp của bạn ở trạng thái xấu.
200_success

1
Đúng - nhưng bạn không muốn làm rối tung bảng phân vùng của mình với hệ thống tệp được gắn kết. Đó là lý do tại sao tôi bắt đầu với fs chưa từng có.
Flup

1
Đối với ext4, có thể resize4fsthay vào đó là trên RHEL 5.
Zac Thompson

1
Phát triển phân vùng với hệ thống tệp gốc của bạn sẽ hoạt động tốt miễn là: 1.Bạn không thay đổi số khu vực bắt đầu. 2.Bạn khởi động lại sau khi thay đổi bảng phân vùng trước khi thực hiện bước tiếp theo.
kasperd

chia tay từ chối thay đổi kích thước phân vùng ext4 trên CentOS 6.
Revierpost

21

Có, bạn có thể phát triển EXT4 fs trực tuyến nếu bạn đã phân vùng. Bạn đã sắp xếp phân vùng chưa? Bạn đã có LVM?

sudo resize2fs /dev/drive_to_grow

fdisksẽ thay đổi kích thước phân vùng của bạn, đúng, nhưng nếu đây là phân vùng gốc (hoặc nếu thực tế là bất kỳ phân vùng được gắn kết nào) thì nó sẽ phải được ngắt kết nối trước. Vì vậy, ngoại tuyến rất có thể!

Như với bất kỳ điều gì liên quan đến hoạt động của đĩa / fs, tôi thực sự khuyên bạn nên sao lưu và kiểm tra, hiểu rõ, quá trình khôi phục.


Nếu bạn sử dụng, fdiskhãy chắc chắn kiểm tra bạn sử dụng MBR chứ không phải GPT (ví dụ với MBR lai).
stek29

2
Trên máy chủ debian Xen của tôi, tôi thay đổi kích cỡ khối lượng hợp lý của tôi với lvextend +40G /dev/vg0/volumeName, sau đó đăng nhập bằng root trong vm và bước vào resize2fs /dev/xvda2đó phát triển các hệ thống tập tin gốc chạy đến max mới. Tôi không chắc nếu điều đó là cần thiết, nhưng tôi đã khởi động lại vm sau hành động này. Mọi thứ có vẻ ổn.
rubo77

1
@ rubo77 Không, không cần khởi động lại,
Chris

5

Lưu ý, trên một số máy chủ VDS, trước tiên bạn có thể có phân vùng gốc không chính và cần thay đổi kích thước vùng chứa phân vùng mở rộng

Ví dụ: bạn vừa nâng cấp gói của mình và có một cái gì đó như:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4

Ở đây / dev / vda2 - là thùng chứa Mở rộng của bạn. Và / dev / vda5 - phân vùng chính mà chúng ta cần thay đổi kích thước thành không gian có sẵn đầy đủ.

Cách đơn giản nhất:

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space

Điều thực sự giúp tôi, là thấy rằng bạn có thể đặt thành ENDsố âm. Thông thường, bạn không biết kích thước linux chính xác của phân vùng đã thay đổi kích thước - bạn không biết cách đặt ENDđối số resizepart. Đặt nó thành -1ssẽ thay đổi kích thước phân vùng của bạn thành tối đa.
srigi

Lỗi: Mã thông báo không hợp lệ
-1s

3

Parted không hoạt động trên ext4 trên Centos. Tôi đã phải sử dụng fdisk để xóa và tạo lại phân vùng, cái mà tôi đã xác nhận (tôi đã xác thực) hoạt động mà không mất dữ liệu. Tôi đã làm theo các bước tại http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ . Tóm lại, đây là:

$ sudo fdisk /dev/sdx 
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx 
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w

1
Chào mừng bạn đến với Lỗi Máy chủ! Vui lòng tóm tắt các bước trong câu trả lời, để bảo vệ chống thối liên kết.
200_success

Đã sử dụng quy trình này nhưng sử dụng gdisk để tạo phân vùng. Điều này cho phép tôi lưu dữ liệu và tạo phân vùng> 2TB
pcnate

2

partedcó thể resizephân vùng và hệ thống tập tin của họ.


Cảm ơn, tôi đã sử dụng đồ họa và nó không hỗ trợ thay đổi kích thước phân vùng. Tôi đã thấy tùy chọn trên chương trình cli, nhưng bạn có thể cho tôi biết cách sử dụng nó một cách chắc chắn mà không mất dữ liệu không? Trong resize NUMBER START END, BẮT ĐẦU và KẾT THÚC số ngành? Làm sao tôi biết điều đó?
mimipc

Luôn luôn nên sao lưu dữ liệu của bạn trước khi thực hiện bất kỳ thao tác rủi ro nào như thay đổi kích thước phân vùng. partedhỗ trợ lựa chọn đơn vị - ví dụ: sử dụng shậu tố cho các cung Bhoặc GBcho byte, %cho tỷ lệ phần trăm kích thước thiết bị và cylcho hình trụ.
200_success

2

Bạn có thể sử dụng fdiskhoặc cfdisksửa đổi (hoặc tạo lại) phân vùng (chỉ cần chắc chắn rằng bạn sẽ không thay đổi ranh giới bắt đầu của nó), sau đó khởi động lại và resize2fs. Nhưng nói chung, tốt hơn là sử dụng LVM-2 thay vì MBR / GPT do nó cho phép bạn mang lại những thay đổi đó khi khởi động lại kernel.


1

Chỉ cần làm rõ cách tôi làm điều này cho bất cứ ai vẫn đang đọc chủ đề này.
Nếu đó là phân vùng khởi động mà bạn muốn thay đổi kích thước, thì bạn phải khởi động từ ổ đĩa "giải cứu" bootcd hoặc bootusb vốn chỉ là Live Linux. Điều này cho phép bạn chạy Linux trên máy khác sau đó là ổ đĩa bạn muốn thực hiện thay đổi.

Tôi nghĩ rằng cd hoặc usb "giải cứu" tốt nhất trong trường hợp này sẽ là USB hoặc CD được ghép nối có thể khởi động
trong đó bạn cần một hình ảnh cứu hộ
1. Phân vùng được mở rộng là phân vùng cuối cùng, nhưng bạn đã khởi động từ nó và không thể ngắt kết nối nó.
sda1 = boot (hoặc trao đổi)
sda2 = exchange (hoặc boot)
sda3 = /
Dung lượng không sử dụng

  1. Nếu phân vùng được mở rộng KHÔNG phải là phân vùng cuối cùng, bạn phải sử dụng hình ảnh khởi động gparted để di chuyển hoặc thay đổi kích thước các phân vùng.
    sda1 = boot
    sda2 = / (phân vùng được mở rộng không phải là cuối cùng)
    sda3 = hoán đổi
    không gian không sử dụng

Nếu bạn muốn thay đổi phân vùng được gắn kết không phải là phân vùng "gốc" (/), như / home là một phân vùng khác, thì không cần phải sử dụng hình ảnh cứu hộ. Điều này đặc biệt đúng nếu là phân vùng cuối cùng.
sda1 = boot
sda2 = /
sda3 = / home
không sử dụng không gian
-hoặc-
sda1 = /
sda2 = / home
không sử dụng không gian

Đây là tình huống tôi gặp phải khi chụp ảnh từ ổ đĩa nhỏ hơn hoặc SSD và chuyển nó sang ổ SSD lớn hơn.

Trong trường hợp này, bạn chỉ cần ngắt kết nối / nhà trong khi bạn mở rộng nó. Nhưng để ngắt kết nối / home, bạn cần đảm bảo rằng bạn không đăng nhập vào bất kỳ tài khoản người dùng nào có thư mục chính nằm trong đó. Vì thư mục gốc của người dùng "root" nằm ngay dưới gốc hệ thống / như trong / root, nếu bạn có thể đăng nhập vào root, thì bạn có thể ngắt kết nối / home

Tôi đăng xuất phiên GUI (KDE / Gnome / etc) và sử dụng [CTRL] + [ALT] + [F1] để hiển thị phiên shell.
Nếu bạn vừa đăng xuất khỏi một người dùng đăng nhập, có thể mất Linux 20-30 giây để hoàn tất việc đóng bất kỳ tệp nào, do đó bạn có thể gặp lỗi khi cố gắng vượt qua / home.
1. umount / home (Tôi thử lại lệnh này nếu nó không thành công trong tối đa 30 giây, sau đó đi xem các phiên khác để xem tôi có "cd / home / xxx" ở đâu đó không.)
2. parted / dev / sda
a. thay đổi kích thước x (x = phân vùng bạn muốn thay đổi kích thước, sử dụng "p" để lấy danh sách các phân vùng)
b. Nhập khu vực cuối cùng của resize = "-1" (trừ 1 có nghĩa là 1 khu vực từ cuối đĩa)
c. q (thoát khỏi parted)
3 resize2fs / dev / sda "x" (x = phân vùng sẽ được thay đổi kích thước. Điều này cũng nhắc lại hệ thống tập tin)
4. df -m (Tôi kiểm tra / home để xác minh nó đã thay đổi kích thước)
Tôi chưa bao giờ bị mất tập tin hoặc làm hỏng ổ đĩa bằng phương pháp này.

Chúc may mắn


Tuy nhiên, bạn không thực hiện sao lưu.
Deer Hunter
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.