/ var, / home을 별도의 파티션으로 이동


59

이 안내서를 읽은 후 일부 폴더 (예 : /var/home)를 별도의 파티션 으로 이동하려고합니다 .

3.2.1 지능형 파티션 구성표 선택

안내서에 따라 하나의 폴더를 성공적으로 이동할 수있었습니다 .

그러나 여러 폴더에서 작동하지 않는 것 같으며 모든 폴더가 적절한 폴더없이 파티션에 덤프됩니다.

, 및 별도의 파티션에 마운트 /var하고 싶습니다 . 누군가 나를 안내 할 수 있습니까?/home/tmp


각 디렉토리에 대해 여분의 파티션을 만들었습니까?
mreithub

@ mreithub 나는 이상적으로는 모두 동일한 파티션 내에 저장되고 폴더에 따라 다릅니다. 그런 식으로 공간에 대해 걱정할 필요없이 훨씬 간단합니다.
toffee.beanns

1
/var별도의 파티션을 두지 않는 것이 좋습니다 . 이점이 없습니다. 전체 OS를 단일 파티션 ( /) 에 유지하십시오 . OS가 아닌 것 (사용자 데이터 /home, 메일 스풀 (큰 경우)) /var/mail, 데이터베이스 (예 : /var/lib/mysql또는 )에 대해서만 별도의 파티션을 사용하십시오 /srv.
Gilles

7
@Gilles " 거기에는 아무런 이점이 없습니다 "?????? (물론 물음표가 더 필요할 수도 있습니다). 물론 이점이 있습니다. /는 대부분 정적입니다. / var는 거의 전적으로 동적입니다. / var을 별도의 파티션에 마운트하면 루트 파티션을 읽기 전용으로 마운트 할 수 있습니다. 이것이 Good Thing ™ 인 수많은 상황이 있습니다.
Auspex

답변:


73

1. 먼저 각 마운트 지점 (/ var, / home, / tmp)에 대한 파티션을 만들려면 할당되지 않은 공간이 필요합니다. 이를 위해 Gparted를 사용하십시오.

그런 다음 해당 파티션에 대한 파일 시스템을 생성하거나 (Gparted로도 수행 가능)

mkfs.ext4 /dev/sdaX

예를 들어 / dev / sdaX 장치에서 새 ext4 파일 시스템을 만들려면 (/ dev / sdaX를 자신의 장치로 교체)

3. / mnt 아래에 새 파일 시스템을 마운트하십시오.

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

4. 프로세스 중에 디렉토리에 rw 활동이 없도록 단일 사용자 모드로 이동하십시오.

init 1

5. 루트 비밀번호를 입력하십시오.

6. var로만 백업 데이터 (/ var 디렉토리 자체는 아님)

cd /var
cp -ax * /mnt/var

7. 데이터가 성공적으로 전송 된 후 / var 디렉토리의 이름을 바꾸십시오.

cd /
mv var var.old

8. 새로운 var 디렉토리를 만드십시오

mkdir var

9. 새 파티션을 마운트 해제하십시오.

umount /dev/sdaX

10. / var로 다시 마운트하십시오.

mount /dev/sdaX /var

11. 새 파티션을 포함하도록 / etc / fstab 파일을 편집하여 / var를 마운트 지점으로하여 부팅시 자동으로 마운트되도록합니다.

/dev/sdaX       /var     ext4    defaults    0 0

12. / home 및 / tmp에 대해 1-11 단계를 반복하십시오.

13. 마지막으로 멀티 태스킹 모드로 돌아갑니다.

init 5

예, gparted를 사용할 생각이었습니다. 답변 해주셔서 감사합니다. 나는 실제로 / home, / tmp, / var /, / opt, / usr /에 몇 개의 폴더를 위해 30GB의 공간을 확보 할 계획이다. ?
toffee.beanns

1
lvm을 사용하고 있었는데 gparted와 비교할 때 더 좋을까요?
toffee.beanns

LVM은 완전히 다른 주제입니다. LVM은 물리적 하드 디스크 위에 논리 볼륨을 생성하는 계층으로 사용됩니다. Gparted는 LVM 물리 볼륨을 생성하는 도구 일뿐입니다.
cioby23

1
사실, cp -ax * /mnt/varA는 나쁜 생각 은 숨김 파일 / 디렉토리들은 무시 것이기 때문에. 선호 cp -ax . /mnt/var합니다. (@ cioby23, 답을 업데이트해야한다고 생각합니다)
berbt

6
init 5답변에 최종 답변을 추가하십시오 .
Robert Pollak

16

동일한 파티션에서 모두 사용하려면 LVM세 개의 간단한 바인드 마운트를 사용하십시오.

바인드 기반 솔루션을 작성하려면

  1. 파일 시스템으로 파티션 만들기
  2. 복구 모드로 이동 (단일 사용자는 여전히 일부 폴더가 필요함)
  3. 로 장착 /mnt/data
  4. 이동하려는 모든 폴더를 이동하십시오. 사용 cp하고 mv dir dir.old더 안전 할 수 있지만 설치 후이 작업을 수행 했으므로 중요하지 않습니다.

    mv /home /mnt/data/
    mv /var  /mnt/data/
    
  5. fstab에서 적절한 바인드 마운트 항목을 작성하십시오 (예 :

    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. 재부팅


에서 mount(8)man 페이지 아래 nodiratime는 말한다 : If noatime option is set, this option is not needed.중복의 장점은 어쨌든 그것을 포함에 있습니까?
brannerchinese

5

개인적으로 @Fabian의 바인드 마운트 솔루션을 사용하거나 심볼릭 링크를 사용합니다.

  1. /etc/fstab새 파티션에 대한 항목을 작성 하십시오 (새 파티션에 blkid대한 올바른 UUID를 얻는 데 사용 하고 잊지 마십시오 mkdir /mnt/data).

    UUID=01234567-89abc-def0-1234-567890abcde  /mnt/data  ext4  defaults  0 0
    
  2. mount -a새 파티션을 마운트하기 위해 비슷한 것을 사용하십시오

  3. 원래 폴더를 새 파티션으로 이동하십시오.

    mv /var /mnt/data/
    mv /home /mnt/data/
    # ... (you get the point)
    
  4. 심볼릭 링크 만들기

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

바인드 마운트 방법은 아마도 가장 좋은 방법은 솔루션이지만 당신이 불필요하게 긴와 끝까지하지 않기 때문에 나는 가지이 하나를 선호 df하고 mount파티션 목록.


1
마운트하기 전에 / var를 원할 경우 각 방법은 어떻게됩니까? 오히려 bind 메소드가 더 깨끗할 것이라고 생각하지만 실제로는 모른다.
Auspex

@Auspex 두 가지 방법 사이에는 차이가 없어야합니다 ( /etc/fstab부팅시 모든 로컬 파티션 이 동시에 마운트 됨). /mnt/data마운트 되기 전에 모든 심볼릭 링크가 '죽어'있으므로, (및 올바르게 존재하지 않으면 ENOENT로) 해당 심볼 및 존재하지 않는 하위 디렉토리에 대한 모든 읽기 / 쓰기 시도가 실패합니다. 바인드 마운트를 사용하면 거의 같은 결과를 얻을 수 있지만 프로그램이 실제로 루트 파티션에 쓸 수 있습니다 (존재하지 않는 디렉토리에 대해 현명한 경우)
mreithub

1
글쎄, 그건 사실이 아닙니다. 루트가 먼저 마운트되고, 데비안의 "읽기 전용 루트"어드바이스가 마운트되기 전에 / var에 액세스하고자하는 프로세스의 가능성을 언급하기 때문에 특별히 요청했습니다. 그러나 내 경우에는 Raspberry Pi가 있고 읽기 전용 파일 시스템을 설정 한 경우 (전원이 기계로 꺼질 때 SD 카드가 계속 손상되기 때문에) 두 방법 중 하나가 작동하도록 장려하고 있습니다. . RO이므로 루트 파일 시스템에 아무것도 쓰지 않으므로 두 경우 모두 오류가 발생합니다.
Auspex

0

cioby23에 제공된 절차 외에도 다음을 수행해야했습니다.

  restorecon -R /var

sshd를 시작하기 위해.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.