it-swarm-vi.com

Làm thế nào để di chuyển / usr đến một phân vùng mới?

Thư mục /usr của tôi cần được chuyển sang phân vùng mới. Làm thế nào tôi có thể làm điều này mà không xóa nội dung?

Điều này có thể được thực hiện trong khi Ubuntu đang chạy hay tôi cần sử dụng LiveCD cho việc này?

24
Nathan Osman

Sẽ an toàn nhất khi sử dụng Live CD, nhưng bạn có thể làm:

  • sao chép tất cả các tệp vào một phân vùng mới, đảm bảo rằng nội dung của /usr không thay đổi trong khi bạn đang làm điều này.
  • chỉnh sửa /etc/fstab để /usr sẽ được gắn vào lần khởi động lại tiếp theo
  • khởi động lại
  • xóa các tập tin cũ

Xem bên dưới để biết chi tiết về từng bước.

Lưu ý rằng bạn không thể gắn kết phân vùng mới trên /usr trong khi chạy vì sẽ có rất nhiều tệp trong /usr sẽ được mở.

Sao chép tập tin

Tôi sẽ sử dụng cp -a. -a là tùy chọn lưu trữ. Từ trang nam :

-a, --archive
          same as -dR --preserve=all
...
-d     same as --no-dereference --preserve=links
...
-P, --no-dereference
          never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
          preserve      the      specified      attributes       (default:
          mode,ownership,timestamps),  if  possible additional attributes:
          context, links, xattr, all
...
-R, -r, --recursive
          copy directories recursively

Chỉnh sửa/etc/fstab

Bạn cần biết UUID của phân vùng mới của bạn. Bạn có thể xem ánh xạ bằng cách thực hiện:

$ ls -l /dev/disk/by-uuid/

Và sau đó thêm dòng này vào /etc/fstab:

UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2

Thay đổi UUID thành UUID của bạn và thay đổi ext4 thành loại hệ thống tệp bạn đang sử dụng - bạn nên biết điều này nếu bạn đã thiết lập phân vùng.

Xóa các tập tin cũ

Sau khi khởi động lại, các tệp cũ trong /usr trên phân vùng gốc sẽ bị ẩn bởi phân vùng mới được gắn trên /usr. Nhưng chúng ta có thể sử dụng một số mount bind trickery để truy cập các tệp cũ và sau đó xóa chúng.

$ Sudo mount --bind / /mnt
$ Sudo rm -rf /mnt/usr/*
$ Sudo umount /mnt

Nhưng một số sai lầm nhỏ (giả sử, nhấn Enter khi bạn chỉ gõ Sudo rm -rf /mnt) có thể gây ra thảm họa, vì vậy tôi sẽ chỉ sử dụng phương pháp này nếu bạn rất tự tin vào những gì bạn đang làm, thực sự không thể đối phó với bất kỳ thời gian chết hoặc không có quyền truy cập vật lý vào máy và do đó không thể khởi động đĩa CD hoặc thẻ USB trực tiếp.

25
Hamish Downer

Vì hầu hết các thư viện được sử dụng là trong/usr, tôi không khuyên bạn nên di chuyển thư mục này trong khi chạy Ubuntu. Trong thực tế, bạn có thể nhận được thông báo lỗi khi bạn cố gắng làm điều này. Do đó, tốt nhất là sử dụng LiveCD.

Bạn có thể sử dụng một số khả năng để di chuyển/sao chép các tập tin cp, rsync, v.v. bạn muốn đảm bảo rằng bất kỳ liên kết tượng trưng nào được tạo và không chỉ sao chép. cp và rsync đều có tùy chọn cho việc này.

Sau khi di chuyển các tệp sang phân vùng khác, bạn cần thêm một mount khác trong/etc/fstab để gắn phân vùng mới vào/usr.

7
txwikinger

Chú ý: Tôi không biết tôi đang làm gì, tôi chỉ sao chép các lệnh và thực hiện theo đề xuất của người khác. Đây có thể là cách không chính xác để làm điều đó, nhưng nó hiệu quả với tôi (ít nhất là bây giờ).

Đây là cách tôi đã thực hiện (theo câu trả lời của Hamish và các bình luận):

  1. Sao chép tất cả các tệp mà phân vùng vừa tạo (thay thế bằng vị trí của phân vùng của bạn, nó sẽ trông giống như của tôi):

    rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c 
    
  2. Lúc này tôi mới nhận ra rằng nó đã sao chép mọi thứ vào thư mục /usr trên phân vùng, sẽ không hoạt động, vì vậy tôi đã sao chép mọi thứ (với trình quản lý tệp) từ thư mục đó đến thư mục gốc của phân vùng và thư mục trống đã bị xóa sau đó.

  3. Chỉnh sửa /etc/fstab (giống như trong câu trả lời của Hamish, tất nhiên, thay thế bằng UUID của bạn)

    UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2
    
  4. Một bước có vẻ không khôn ngoan lắm: Tôi đã thay đổi tên của phân vùng /usr hiện đang được gắn thành /usrBACKUP, để tôi biết rằng, khi tôi khởi động lại hệ thống, thực tế nó khởi động lại vào phân vùng mới được tạo, và không phải là phân vùng cũ. Sau đó, mọi thứ rối tung trên màn hình và tôi phải tắt nguồn bằng cách nhấn phím nguồn (thiên tài như tôi). Bỏ qua bước này nếu bạn không muốn trục trặc hệ thống của mình.

  5. Khởi động lại hệ thống

  6. Sau khi khởi động lại, hãy mở System Monitor hoặc ứng dụng tương tự để xem phân vùng /usr mới của bạn có được gắn hay không và kiểm tra an toàn xem mọi thứ có đúng như kế hoạch không.

  7. Sau khi kiểm tra xem mọi thứ có ổn không, bạn có thể xóa phân vùng /usr cũ của mình. Tôi sẽ giữ cho tôi chỉ trong trường hợp có điều gì đó không ổn.

1