Làm cách nào để thay đổi kích thước phân vùng bằng dòng lệnh mà không sử dụng GUI trên máy chủ?


45

Tôi chỉ có quyền truy cập vào máy chủ qua thiết bị đầu cuối và tôi không thể sử dụng các công cụ đồ họa như GParted!
Tôi muốn tạo một phân vùng mới từ một phần gốc (khoảng 768mb) để trao đổi.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  1.3G   18G   7% /
udev             10M     0   10M   0% /dev
tmpfs           199M  4.9M  194M   3% /run
tmpfs           100M   12K  100M   1% /run/user
tmpfs           5.0M  4.0K  5.0M   1% /run/lock

Câu trả lời:


37

Bạn không thể thu nhỏ / chỉnh sửa phân vùng nếu bất kỳ phân vùng nào trên thiết bị lưu trữ được gắn kết. Vì vậy, để ngắt kết nối và chỉnh sửa hệ thống tập tin gốc, HĐH cần phải tắt máy. Sau đó khởi động vào một hệ thống trực tiếp và chỉnh sửa phân vùng như được mô tả trong các câu trả lời khác.

Giải pháp thay thế: tập tin hoán đổi

Thay thế cho việc tạo toàn bộ phân vùng, tệp hoán đổi cung cấp khả năng thay đổi kích thước của nó một cách nhanh chóng và dễ dàng được loại bỏ hoàn toàn hơn. Trao đổi tập tin có thể được cắm nóng . tức là có thể được thêm và xóa mà không ngắt kết nối / tắt HĐH.

  1. Tạo một tệp 512 MB được gọi là /swapfile. Đây sẽ là tập tin trao đổi của chúng tôi.

    fallocate -l 512M /swapfile  
    

    HOẶC LÀ

    dd if=/dev/zero of=/swapfile bs=1M count=512
    
  2. Đặt quyền phù hợp (vì tệp hoán đổi có thể đọc được trên thế giới là một lỗ hổng lớn cục bộ):

    chmod 600 /swapfile
    
  3. Sau khi tạo tệp có kích thước chính xác, định dạng tệp để trao đổi:

    mkswap /swapfile
    
  4. Kích hoạt tệp hoán đổi:

    swapon /swapfile
    
  5. Chỉnh sửa /etc/fstabvà thêm một mục cho tệp hoán đổi:

    /swapfile none swap defaults 0 0
    

Thêm chi tiết tại wiki linux arch .


Tôi nghĩ rằng đây là câu trả lời dễ dàng và hiệu quả nhất =)! Có ý nghĩa trong việc sử dụng một tập tin thay vì một phân vùng mặc dù?
Alaa Ali

2
Hiệu suất hơi thấp nếu tập tin bị phân mảnh. Không có lợi thế về hiệu suất đối với tệp hoán đổi liền kề hoặc phân vùng, cả hai đều được xử lý theo cùng một cách.
totti

1
Tôi nghĩ rằng đây là giải pháp tốt nhất. Vì bạn không định dạng, thu nhỏ hoặc thay đổi phân vùng (bảng), nên không có nguy cơ mất dữ liệu.
R110

28

Trước hết, điều quan trọng là phải biết rằng bạn không thể thay đổi kích thước để thu nhỏ phân vùng gốc nếu bạn đang sử dụng nó (Điều này được gọi là thu hẹp trực tuyến). Bạn chỉ có thể phát triển nó trực tuyến. Điều này được hỗ trợ bởi resize2fslệnh. Tôi sẽ giả sử như sau:

  • Bạn không muốn mất thông tin của mình trên phân vùng gốc.
  • Bạn không có quyền truy cập vật lý vào ổ cứng để sử dụng LiveCD. Điều này có thể áp dụng cho một môi trường ảo hoặc từ xa. Trong trường hợp ảo, bạn vẫn có thể quản lý để khởi động từ LiveCD nếu bạn đặt VM khởi động từ LiveCD. Đây là giả định VM hỗ trợ xuất GUI GUI từ nơi bạn sẽ chạy ứng dụng Gparted để thay đổi kích thước một cách dễ dàng. Nhưng vì điều này ít có khả năng tôi cho rằng bạn không thể.

Có 2 loại phân vùng mà bạn có thể thay đổi kích thước, phân vùng LVM hoặc phân vùng Logical Volume Manager hỗ trợ thay đổi kích thước trực tuyến (Thu nhỏ / Tăng trưởng) kể từ khi tạo ra thiên hà và các phân vùng tiêu chuẩn mà hầu hết chúng ta sử dụng. Ngay bây giờ, người duy nhất hỗ trợ thay đổi kích thước trực tuyến hoàn toàn 100% (Shrink / Grow) là hệ thống tập tin btrfs (vẫn đang được phát triển). Tôi sẽ giải thích cách thực hiện các phân vùng bình thường mà hầu hết chúng ta sử dụng trong hệ thống tập tin ext4.

Thay đổi kích thước (tăng trưởng) phân vùng

Để phát triển phân vùng của bạn, bạn có thể làm điều đó với root được gắn kết. Để làm điều này chỉ cần làm:

sudo resize2fs /dev/sda1

Với điều kiện bạn đã có không gian trống sẵn sàng để được hợp nhất. Sau đó tôi khuyên bạn nên khởi động lại để các thay đổi có hiệu lực chính xác. Lệnh trên sẽ thay đổi kích thước đến mức tối đa được phép. Nếu bạn muốn thay đổi kích thước thành một kích thước cụ thể thì chỉ cần thêm kích thước ở cuối:

sudo resize2fs /dev/sda1 25G

Lưu ý rằng nếu bạn muốn chỉ định 25,4 GB, bạn không thể sử dụng ".". bạn sẽ cần phải đi xuống một đơn vị đo. Trong trường hợp này từ GB đến MB, vì vậy nó sẽ trông như thế này:

sudo resize2fs /dev/sda1 25400M

Bằng cách này, bạn sẽ có một phân vùng 25,4G

Thay đổi kích thước (Thu nhỏ) phân vùng

Thu hẹp phân vùng là một quá trình gồm hai bước bao gồm:

  • Giảm kích thước của hệ thống tập tin theo số lượng cần thiết.
  • Giảm kích thước của thiết bị khối bên dưới để khớp với kích thước của hệ thống tệp.

Trước khi giảm dung lượng của hệ thống tệp, bạn cần giảm kích thước của thiết bị khối (Có thể là phân vùng hoặc ổ đĩa logic). Vì điều này không có sẵn cho bất kỳ hệ thống tệp ext * nào, bạn sẽ không thể thu nhỏ nó từ 20 GB thành 19,5 GB để tạo ra một trao đổi 500 MB.

Ngay cả Ext4 cũng không hỗ trợ thu nhỏ trực tuyến. Nếu bạn cố gắng làm điều đó, bạn sẽ nhận được những điều sau đây:

nhập mô tả hình ảnh ở đây

Đặt cược duy nhất của bạn theo như tôi biết là:

  • Cài đặt phiên bản Ubuntu khác trên cùng một máy chủ (Trên một phân vùng khác) sau đó có thể được sử dụng để thu nhỏ phân vùng gốc của Máy chủ Ubuntu gốc.

  • Cài đặt máy chủ Ubuntu từ đầu với kích thước bạn thực sự muốn

  • Sử dụng Ubuntu Server Live Image để thay đổi kích thước phân vùng. Trong trường hợp này, bạn sẽ cần đến màn hình này:

    nhập mô tả hình ảnh ở đây

    Và chọn tùy chọn Thay đổi kích thước như trong hình trên. Từ đó bạn sẽ chọn kích thước mới sẽ là gì vì từ đây bạn có thể ngắt kết nối thiết bị và thu nhỏ nó nếu bạn muốn.

Như một sự trợ giúp bổ sung ở đây là hệ thống tập tin gparted hỗ trợ http://gparted.org/features.php cung cấp một danh sách rất chi tiết về những cái được hỗ trợ và bao gồm nếu chúng có thay đổi kích thước trực tuyến đầy đủ. Btrfs là một trong số họ.


Tôi tò mò, có bất kỳ hệ thống tập tin nào khác hỗ trợ thu nhỏ trực tuyến không? zfs hoặc btrfs có thể?
Seth

Tôi đã thêm một liên kết ở phía dưới. Nhân cũng cần hỗ trợ điều này nếu hệ thống tập tin thay đổi kích thước trực tuyến một cách chính xác.
Luis Alvarado

Tôi có máy chủ Ubuntu trên máy vmware và kích thước đĩa của nó là 120G. Nhưng sau khi sử dụng giải pháp đầu tiên, tôi gặp lỗi này: Hệ thống tập tin đã dài 27262720 khối. Không có gì làm!
Dr.jacky

1
Cảm ơn bạn @ Mr.Hyde. Có một số vấn đề với Workstation 10 và thậm chí 11. Tôi muốn giới thiệu 12 và đối với Ubuntu, tôi cũng sẽ cập nhật lên LTS mới nhất hoặc LTS mới vì cũng có một số vấn đề. Trong trường hợp của tôi, tôi có VMware workstation 12.0.1 và Ubuntu 15.10 64 bit.
Luis Alvarado

3
Từ trang quản lý resize2fs:The resize2fs program does not manipulate the size of partitions.
ACK_stoverflow

6

Câu trả lời phụ thuộc vào việc bạn có thể ngắt kết nối phân vùng để thu nhỏ hay không. Trong trường hợp của bạn, có lẽ bạn không thể ngắt kết nối phân vùng. Trong Linux (UNIX / MAC OS), việc gắn một phân vùng có nghĩa là sử dụng hệ thống tệp và ánh xạ nó tới điểm gắn kết (trong trường hợp của bạn /). Ngắt kết nối có nghĩa là bạn ngừng sử dụng hệ thống tệp và xóa ánh xạ tới điểm gắn kết. Bạn không thể ngắt kết nối hệ thống tập tin có chứa hệ điều hành đang chạy của bạn.

Nếu phân vùng có thể được bỏ qua

Giả sử bạn muốn thu nhỏ phân vùng ext4 200GB khi /dev/sda4gắn vào /data. Hiện tại nó có chứa nhạc và phim hoặc tương tự, vì vậy bạn có thể tạm thời ngắt kết nối nó. Bạn muốn tạo một hoán đổi 4GB.

sudo umount /dev/sda4

để ngắt kết nối phân vùng.

sudo resize2fs /dev/sda4 196G

để thay đổi kích thước hệ thống tập tin ext4 thành 196 GB, giả sử rằng có đủ dung lượng. Bây giờ, bạn phải thu nhỏ phân vùng. Tôi hiện đang tin rằng bạn cần sử dụng cfdiskđể xóa phân vùng hiện có và tạo lại một phân vùng nhỏ hơn ở vị trí của nó. Sau đó, bạn cũng có thể tạo một phân vùng mới để trao đổi.

sudo cfdisk /dev/sda 

sẽ cung cấp cho bạn một gui dựa trên văn bản để kiểm tra bảng phân vùng của bạn. Tôi sẽ giới thiệu bạn đến printbảng phân vùng cho một tệp hoặc màn hình tại thời điểm đó và lưu ý cấu hình hiện tại làm bản sao lưu. Sau đó bạn có thể chọn /dev/sda4deletephân vùng. Ở vị trí của nó, free spacesẽ được hiển thị. Sử dụng newđể tạo một phân vùng mới với 196 GB ở vị trí của nó và đặt loại thành ext4. Sau đó, di chuyển đến không gian trống ở cuối và tạo phân vùng trao đổi 4GB với loại swap. Lưu ý: Tôi đã không kiểm tra các lệnh này, vì hiện tại tôi không thể chơi với tôi /.

Nếu phân vùng không thể được đếm

Bạn không thể thu nhỏ phân vùng ext3 / 4 đã gắn (xem trang chủ của resize2fs). Khi bạn đang chạy hệ điều hành của mình /, bạn không thể ngắt kết nối /. Điều đó có nghĩa là bạn phải khởi động một hệ điều hành khác (ví dụ từ khóa USB) để thực hiện các thay đổi.

Trong trường hợp của bạn, đó là một máy chủ từ xa (rất có thể là trên KVM), vì vậy bạn có thể không thể khởi động từ USB / hình ảnh hệ điều hành trực tiếp. Có thể có những cách khác để thay đổi phân vùng từ nhà cung cấp vServer của bạn thông qua GUI quản trị. Tôi tin rằng đó là đặt cược tốt nhất của bạn hiện tại.

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.