Di chuyển / var, / home để phân vùng riêng


59

Tôi đang cố gắng di chuyển một số thư mục (như /var/home) sang một phân vùng riêng sau khi đọc hướng dẫn này:

3.2.1 Chọn sơ đồ phân vùng thông minh

Tôi đã có thể di chuyển một thư mục thành công theo hướng dẫn này .

Tuy nhiên, nó dường như không hoạt động cho nhiều thư mục và tất cả các thư mục của tôi được đổ vào phân vùng mà không có các thư mục phù hợp.

Tôi muốn gắn kết /var, /home/tmpvào các phân vùng riêng biệt; ai đó có thể hướng dẫn tôi về điều này?


Bạn đã tạo một phân vùng bổ sung cho mỗi thư mục hoặc chỉ một?
mreithub

@mreithub tôi muốn nó là lý tưởng nhất được lưu trữ trong cùng một phân vùng và chỉ thay đổi theo thư mục. theo cách đó nó đơn giản hơn nhiều đối với tôi, không phải lo lắng về không gian.
kẹo bơ cứng.beanns

1
Tôi không khuyên bạn nên đặt /vartrên một phân vùng riêng. Không có lợi cho nó. Giữ toàn bộ hệ điều hành trên một phân vùng duy nhất ( /). Chỉ sử dụng các phân vùng riêng cho những thứ không phải là hệ điều hành - dữ liệu người dùng /home, bộ đệm thư (nếu bạn có một cái lớn) /var/mail, các cơ sở dữ liệu trong ví dụ /var/lib/mysqlhoặc /srv,
SO - ngừng trở nên xấu xa '

7
@Gilles " Không có lợi cho nó " ?????? (Có lẽ tôi cần nhiều dấu hỏi hơn). Tất nhiên là có lợi cho nó. / chủ yếu là tĩnh. / var gần như hoàn toàn năng động. Nếu bạn gắn kết / var trên một phân vùng riêng, bạn có thể gắn kết phân vùng gốc chỉ đọc. Có rất nhiều tình huống trong đó là một điều tốt.
Auspex

Câu trả lời:


73

1. Trước tiên, bạn cần một số không gian chưa phân bổ để tạo các phân vùng cho mỗi điểm gắn kết (/ var, / home, / tmp). Sử dụng Gparted cho việc này.

2. Sau đó, bạn cần tạo các hệ thống tệp cho các phân vùng đó (cũng có thể được thực hiện với Gparted) hoặc sử dụng:

mkfs.ext4 /dev/sdaX

ví dụ để tạo một hệ thống tập tin ext4 mới trên thiết bị / dev / sdaX (thay thế / dev / sdaX bằng thiết bị của riêng bạn)

3. Gắn hệ thống tập tin mới dưới / mnt

mkdir /mnt/var        
mount /dev/sdaX /mnt/var

4. Chuyển đến chế độ một người dùng để không có hoạt động rw trên thư mục trong quá trình

init 1

5. Nhập mật khẩu gốc của bạn.

6. Chỉ sao lưu dữ liệu trong var (không phải thư mục / var)

cd /var
cp -ax * /mnt/var

7. Đổi tên thư mục / var sau khi dữ liệu của bạn đã được chuyển thành công.

cd /
mv var var.old

8. Tạo thư mục var mới

mkdir var

9. Ngắt kết nối phân vùng mới.

umount /dev/sdaX

10. Kể lại dưới dạng / var

mount /dev/sdaX /var

11. Chỉnh sửa tập tin / etc / fstab để bao gồm phân vùng mới, với / var là điểm gắn kết, để nó sẽ được tự động gắn kết khi khởi động.

/dev/sdaX       /var     ext4    defaults    0 0

12. Lặp lại các bước 1-11 cho / home và / tmp.

13. Cuối cùng trở về chế độ đa nhiệm.

init 5

vâng tôi đã nghĩ đến việc sử dụng gparted. cảm ơn vì câu trả lời Tôi đang lên kế hoạch dành riêng dung lượng 30gb cho một vài thư mục này ?
kẹo bơ cứng.beanns

1
Tôi đã tìm kiếm về việc sử dụng lvm, điều đó sẽ tốt hơn so với gparted?
kẹo bơ cứng.beanns

LVM là một chủ đề hoàn toàn khác. LVM được sử dụng như một lớp để tạo ra các khối logic trên đầu các ổ cứng vật lý. Gparted chỉ là công cụ để tạo ra các khối vật lý LVM.
cioby23

1
Trên thực tế, cp -ax * /mnt/varlà một ý tưởng tồi , bởi vì nó sẽ bỏ qua các tập tin / thư mục ẩn. Thích cp -ax . /mnt/var. (@ cioby23, tôi nghĩ bạn nên cập nhật câu trả lời của mình)
berbt

6
Vui lòng thêm một cuối cùng init 5để trả lời.
Robert Pollak

16

Nếu bạn muốn sử dụng tất cả chúng trên cùng một phân vùng, bạn có thể sử dụng LVMhoặc ba liên kết gắn kết đơn giản.

Để tạo ra một giải pháp dựa trên ràng buộc bạn

  1. tạo một phân vùng với một hệ thống tập tin
  2. chuyển sang chế độ cứu hộ (một người dùng vẫn cần một số thư mục)
  3. gắn kết nó như là /mnt/data
  4. Di chuyển tất cả các thư mục bạn muốn di chuyển. Sử dụng cpmv dir dir.oldcó thể an toàn hơn, nhưng vì tôi đã làm điều này sau khi cài đặt nên nó không thành vấn đề với tôi.

    mv /home /mnt/data/
    mv /var  /mnt/data/
    
  5. tạo các mục gắn kết liên kết thích hợp trong fstab, ví dụ tôi có

    UUID=01234567-89abc-def0-1234-567890abcde /mnt/data         ext4          noatime,nodiratime,relatime                           0       0
    
    # Binds
    /mnt/data/opt                             /opt              none          bind                                                  0       0
    /mnt/data/home                            /home             none          bind                                                  0       0
    /mnt/data/usr                             /usr              none          bind                                                  0       0
    
  6. khởi động lại


Trong mount(8)trang người đàn ông bên dưới nodiratimecó ghi: If noatime option is set, this option is not needed.Có lợi thế dự phòng nào trong việc bao gồm nó không?
brannerchinese

5

Cá nhân tôi sẽ sử dụng giải pháp gắn kết của @ Fabian hoặc sử dụng liên kết tượng trưng:

  1. tạo /etc/fstabmục nhập cho phân vùng mới (sử dụng blkidđể lấy UUID phù hợp cho phân vùng mới của bạn và đừng quên mkdir /mnt/data):

    UUID=01234567-89abc-def0-1234-567890abcde  /mnt/data  ext4  defaults  0 0
    
  2. Sử dụng mount -ahoặc một cái gì đó tương tự để gắn kết phân vùng mới

  3. di chuyển các thư mục gốc đến phân vùng mới của bạn:

    mv /var /mnt/data/
    mv /home /mnt/data/
    # ... (you get the point)
    
  4. Tạo liên kết tượng trưng

    ln -s /mnt/data/var /var
    ln -s /mnt/data/home /home
    # ...
    

Mặc dù phương pháp gắn kết có lẽ là giải pháp thực hành tốt nhất tôi thích loại này vì bạn không kết thúc với danh sách phân vùng dfvà dài không cần thiết mount.


1
Điều gì xảy ra với các phương thức tương ứng nếu một cái gì đó muốn / var trước khi nó được gắn kết? Tôi khá nghi ngờ rằng phương pháp liên kết sẽ sạch hơn, nhưng tôi thực sự không biết.
Auspex

@Auspex Không nên có sự khác biệt giữa hai phương thức liên quan (vì afaik tất cả các phân vùng cục bộ /etc/fstabđược gắn cùng lúc trong khi khởi động). Trước khi /mnt/datađược gắn kết, tất cả các liên kết tượng trưng của bạn sẽ là 'chết', vì vậy mọi nỗ lực đọc / ghi đối với chúng (và trên các thư mục con không tồn tại) sẽ thất bại (với ENOENT nếu tôi nhớ chính xác). Với các liên kết gắn kết, bạn nhận được khá nhiều kết quả tương tự nhưng các chương trình thực sự có thể ghi vào phân vùng gốc (nếu chúng cố gắng thông minh về các thư mục không tồn tại)
mreithub

1
Vâng, điều đó không đúng. Root được gắn kết đầu tiên và tôi đặc biệt hỏi vì lời khuyên "Chỉ đọc gốc" của Debian đề cập đến khả năng các tiến trình muốn truy cập / var trước khi được gắn kết. Nhưng trong trường hợp của tôi, nơi tôi có Raspberry Pi và đã thiết lập hệ thống tệp chỉ đọc trên / (vì thẻ SD tiếp tục bị hỏng khi mất điện vào máy), bạn đang khuyến khích tôi rằng một trong hai phương pháp sẽ hoạt động . Không có gì để ghi vào hệ thống tập tin gốc, vì đó là RO, vì vậy một trong hai trường hợp sẽ dẫn đến lỗi.
Auspex

0

Ngoài thủ tục đưa ra cioby23, tôi cũng phải làm:

  restorecon -R /var

để sshd bắt đầu.

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.