Làm thế nào để di chuyển / var đến một phân vùng hiện có?


16

Tôi có một / phân vùng chứa / var và quá nhỏ. Tôi có một phân vùng hiện có với đủ không gian.

Đây là df của tôi:

File system          Size. Occ. Avai. %Ful. Monté sur
/dev/sda1             5,0G  4,5G  289M  95% /
tmpfs                 242M     0  242M   0% /lib/init/rw
udev                   10M  2,7M  7,4M  27% /dev
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda2              15G  406M   14G   3% /home

Làm cách nào để chuyển thư mục / var từ sda1 sang sda2?

Câu trả lời:


19

Chuyển sang chế độ một người dùng và đảm bảo rằng bất kỳ quá trình ghi nào /varđược dừng lại. (Kiểm tra với lsof | grep /var)

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old# bạn có thể xóa /var.oldkhi hoàn tất để lấy lại khoảng trống
  • mkdir -p /var
  • mount -o bind /home/var /var
  • cập nhật của bạn /etc/fstabđể làm cho liên kết gắn kết vĩnh viễn.

/etc/fstab

 /home/var /var        none    bind

Thks! Làm cách nào tôi có thể vào chế độ người dùng? Thư mục 'var' sẽ ở trong / nhà?
Jérémie

Có, sẽ luôn có một /home/varthư mục nếu bạn giải quyết vấn đề theo cách này. Một cách bạn có thể vào chế độ người dùng bằng cách khởi động lại và chọn chế độ người dùng duy nhất từ ​​menu Khởi động.
Zoredache

Tôi không thực sự chắc chắn nếu điều này sẽ làm việc tốt mọi lúc. Nếu bạn đang sử dụng phiên bản mới hơn (khò khè), bạn có thể ổn vì nó có hệ thống tập tin / chạy. OTOH: sớm trong các tệp quy trình khởi động có thể được mở trong / var trước khi nó được gắn kết.
cstamas

1
@cstamas, Có / var trên một hệ thống tệp riêng biệt được hỗ trợ và luôn luôn như vậy. Có / var riêng biệt thậm chí còn được đề xuất là một điều tốt trong FHS và các tài liệu Debian chính thức.
Zoredache

Ok, tôi nghĩ bạn đúng. Nó chỉ là lạ đối với tôi để làm điều này với gắn kết ràng buộc.
cstamas

5

Bạn cũng có thể dùng:

 mkdir /home/var
 <move contents of /var to /home/var -- however you want; EX: mv /var/* /home/var>
 mv /var /var.old
 ln -s /home/var /var

Điều này có vẻ dễ dàng hơn nhiều so với việc loay hoay với các công cụ fstab và mount.


1
Không chắc chắn tại sao bất cứ ai sẽ bỏ phiếu này. Điều này sẽ làm việc hoàn toàn tốt. Một liên kết sym nên hoạt động tốt. Tôi chỉ sử dụng gắn kết liên kết cho những thứ khác, vì vậy tôi có xu hướng nghĩ về những người đầu tiên.
Zoredache

1
Để thêm vào điều này, nó có thể không an toàn, nhưng thực tế nó hoạt động. Gần đây tôi đã thực hiện điều này trên một máy trước khi đưa nó vào sản xuất. Tôi nên thận trọng nếu đó là một máy đang được sử dụng hoặc có nhiều quy trình đang chạy. Trong trường hợp của tôi, nó là một máy chủ mới chỉ chạy tomcat.
AJ Brown

1
Symlinking / var hoạt động, nhưng thay vì làm như vậy, tôi thích đặt một mục trong / etc / fstab, để ghi nhớ chính tôi về phân vùng / khối lượng nào tôi đặt cái gì, và tại sao (bạn có thể thêm nhận xét). Cách này cũng dễ hiểu hơn đối với tôi về những gì tôi phải thay đổi trong cấu hình nếu tôi cần thay đổi một cái gì đó trong phần cứng của mình.
gerlos

1
Tôi không thể thấy nó sẽ hoạt động như thế nào. Tôi muốn nó hoạt động, nhưng những thứ cơ bản như init use / var, phải không?
Sue Spence

1

Di chuyển /varmà không thay đổi sang chế độ người dùng đơn

Khi tôi tiếp quản một máy chủ ảo mới được cung cấp cho tôi bởi công ty lưu trữ của chủ nhân, tôi đã tạo ra các khối lượng logic bổ sung cho varhomeđó là các thư mục thông thường trong phân vùng gốc. Vì nhà cung cấp máy chủ ảo không cung cấp giao diện giống như KVM mà tôi có thể truy cập máy chủ ở chế độ một người dùng, nên các câu trả lời trên không thể áp dụng cho thiết lập của tôi. Tôi hy vọng câu trả lời này hữu ích cho những người khác trong tình huống tương tự (Tôi đã giữ các chi tiết LVM nhưng chúng có thể bị bỏ qua vì nó không liên quan đặc biệt cho dù hệ thống tệp mới được tạo trên một ổ đĩa logic hay phân vùng đĩa).

Tạo và sử dụng /varhệ thống tập tin mới với LVM

Tạo hệ thống tập tin cho ổ đĩa mới var, gắn kết nó (sử dụng một thư mục tạm thời) và sao chép các tập tin từ hiện tại /varsang hệ thống tập tin mới. Khi sao chép tệp với rsync, hãy sử dụng -a, --archivetùy chọn của nó để giữ dấu thời gian, quyền sở hữu, chế độ, v.v. và -X, --xattrstùy chọn của nó để bảo toàn các thuộc tính mở rộng như nhãn bảo mật được sử dụng bởi AppArmor và SELinux.

sudo lvcreate -L 60GB -n var VolGroup00
sudo mkfs.ext4 /dev/VolGroup00/var
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new
sudo rsync -raX /var/ /var.new/

Cập nhật bảng hệ thống tập tin

Định cấu hình hệ thống tệp mới sẽ được sử dụng làm điểm gắn kết mới /varbằng cách thêm dòng sau vào /etc/fstab. Lưu ý rằng 0được sử dụng làm số vượt qua (trường cuối cùng) để hệ thống tập tin sẽ không được kiểm tra tự động ( fsck) sau một số lần khởi động lại nhất định (Tôi không có quyền truy cập để đăng nhập vào máy chủ ở chế độ một người dùng).

/dev/mapper/VolGroup00-var    /var    ext4  defaults  0 0

Vì tôi không thể thay đổi sang chế độ một người dùng, hãy khởi động lại máy tính để sử dụng âm lượng mới này /var.

Khôi phục không gian đĩa từ hệ thống tập tin gốc

Sau khi máy đã khởi động lại, hãy thực hiện các bước sau để dọn sạch thư mục tạm thời và xóa các /vartệp cũ khỏi hệ thống tệp gốc:

  1. Xóa điểm gắn kết tạm thời:

    sudo rmdir /var.new
    
  2. Tạo một điểm gắn kết mới để tạo một đường dẫn thay thế cho các tệp trên /varthư mục cũ trên hệ thống tệp gốc (hiện tại nó bị che khuất bởi các /varhệ thống tệp mới được gắn trên thư mục):

    sudo mkdir /old-root
    sudo mount /dev/mapper/VolGroup00-root /old-root/
    sudo rm -rf /old-root/var/*
    sudo umount /old-root/
    sudo rmdir /old-root/
    
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.