나는 단지 하나의 VPS
액세스 권한 만 가지고 있습니다 SSH
. 다음에서 호스팅됩니다.OVH.
이것은 VPS
데비안 9(확장 버전)입니다. ( LVM
파티션이 없어요 )
크기 제한이 문제가 되어 100G 디스크를 추가로 주문했습니다.
디스크의 기본 크기는 25G입니다. 이미 일부 항목이 설치되어 있으며 모든 것을 재구성하고 싶지 않습니다.
결과lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 25G 0 disk
└─sda1 8:1 0 25G 0 part /
sdb 8:16 0 100G 0 disk
/var
볼륨의 내용을 확장하고 싶습니다 /dev/sda1
. 볼륨이 부팅 가능하며 현재 사용 중입니다.
내 사용 사례에 권장되는 것은 무엇입니까?
답변1
나는 당신이 찾고 있는 것이 해당 폴더의 모든 데이터를 유지하면서 마운트 지점을 /var
디스크의 새 파티션으로 변경하는 것이라고 믿습니다. sdb
이것은 실행 중인 서버이므로 특히 사용된 명령과 해당 플래그에 관해 최대한 설명하겠습니다.
또한 데이터 무결성 위험이 없도록 서버를 일종의 관리/대기/오프라인(현재 관리 연결 외에도) 모드로 설정하는 것이 좋습니다(적어도 데이터베이스 연결 및 기타 불필요한 소켓을 닫음).
새 디스크 /dev/sdb
파티션 나누기
sdb
먼저 파티션을 생성하여 설정 해야 합니다 . 여기서는 이것이 귀하의 서버에서 계속해서 성장할 것이라고 가정 /var
하여 거의 모든 용량을 sdb
여기에 할당하고(분명히 귀하의 서버 요구에 맞게 새 파티션의 크기를 조정할 수 있습니다) 그대로 두겠습니다. 필요한 경우 향후 사용을 위해 공간을 할당합니다.
parted
파티션 테이블을 생성하는 데 사용됩니다.sdb
$ sudo parted /dev/sdb mklabel gpt
다음으로, 디스크에 기본 파티션을 생성하고 실린더별로 정렬한 후 ext4
포맷합니다. 디스크 시작 부분의 여유 공간에 해당합니다 1024MB
. 이는 MBR을 쓰기에 충분합니다(그러나 필요한 경우 일부 잠재적인 복구 모드를 허용합니다). 끝 부속품은 100%
사용 가능한 공간의 끝까지 확장됩니다.
$ sudo parted -a cylinder /dev/sdb mkpart primary ext4 1024MB 100%
모든 것이 올바르게 생성되었는지 확인합니다(이 예제 출력은 즉시 생성되었지만 출력에는 새 파티션이 생성되어 /dev/sdb로 나열된 위치에 표시되는 두 디스크가 모두 표시되어야 합니다).
$ sudo parted -l
Model: [MODEL]
Disk /dev/sda: 25GB
Sector size (logical/physical): [*/*]
Partition Table: [mklabel]
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 25GB 25GB primary ext4 lba
Model: [MODEL]
Disk /dev/sdb: 100GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size Type File system Flags
1 1049MB 100GB 100GB primary ext4
모든 것이 좋아 보인다면 계속할 수 있습니다.
/var
에서 으로 데이터를 동기화합니다 sdb1
.
- 나는 무엇을 해야 합니까?
- 새
/mnt
폴더를 만들어sdb1
거기에 설치하세요. /var/*
데이터 복사sdb1
- 일관성을 확인하십시오.
diff
diff_var.log
정보가 일치하지 않는지 확인하세요 .
- 새
먼저 새 sdb1
파티션을 설치해야 합니다. 시스템에 이미 있을 수도 있지만 /mnt
그렇지 않은 경우 -p
첫 번째 명령의 플래그가 이를 처리합니다.
$ sudo mkdir -p /mnt/sdb1
$ sudo mount /dev/sdb1 /mnt/sdb1
- 다음으로 데이터를
rsync
작성/var/*
하고 데이터의 일관성을 확인합니다.
이 플래그는 함께 그룹화된 여러 다른 플래그 (하드 링크 플래그 제외 ) -a
에 대한 바로가기 이며 재귀적으로 거기에 있는 모든 것을 의미합니다. 이 플래그는 복사되는 파일 목록을 표시합니다. 이 폴더는 다음 위치에 생성됩니다.rsync
-H
rsync
-v
var
/dev/sdb1
$ sudo rsync -av /var/* /mnt/sdb1
- 완료되면
diff
재귀-r
플래그를 사용하여 서로 다른 두 파티션에 있는 두 폴더 간의 일관성을 확인합니다. 이것은 또 다른 시간이 걸리는 작업이 될 것입니다. 또한 출력을 로그 파일로 리디렉션하는 것이 좋습니다.
$ sudo diff -r /var /mnt/sdb1 > ~/diff_var.log
diff_var.log를 확인하면 다음과 유사한 줄이 있을 수 있습니다.
# socket - no point in copying directly
File /var/*/[socket] is a socket while file /mnt/sdb1/var/*/[socket] is a socket
# Self-explanatory, log file update between `diff` and `rsync`*
diff -r /var/log/* /mnt/sdb1/var/log/* differs
199369d199368
< Dec 12 13:05:01 * * *
# Broken symlink
diff: /var/*/*/ABC No such file or directory
diff: /mnt/sdb1/var/*/*/ABC No such file or directory
sdb1
파티션을 마운트 해제합니다 .
$ sudo umount /mnt/sdb1
새 항목 추가/etc/fstab
- 현재 백업
/etc/fstab
$ sudo cp /etc/fstab /etc/fstab.back
- 이는 테스트이므로 관련 단계를 완료하는 것이 좋습니다.
- UUID를 얻고 형식을
/dev/sdb1
다시 포맷하세요/etc/fstab
/etc/fstab
새 항목에서 새 파티션이 올바르게 설치되었는지 확인하십시오.
- UUID를 얻고 형식을
###Getting your UUID
$ sudo blkid -s UUID /dev/sdb1
/dev/sdb1: UUID="94c3f14d-508d-4621-9000-cbd4fc4c7445"
# var that holds a properly formatted line for /etc/fstab
$ my_uuid_sdb1=$(blkid -s UUID /dev/sdb1 | cut -d: -f2 | tr -d '"')
# echo it to make sure
$ echo $my_uuid_sdb1
UUID=94c3f14d-508d-4621-9000-cbd4fc4c7445
위 명령의 출력이 시스템에서 양호해 보이면 /etc/fstab
다음에 추가할 수 있습니다.
$ sudo echo "$my_uuid_sdb1 /mnt/sdb1 ext4 defaults 0 2" >> /etc/fstab
diff
이 두 파일을 확인하기 위해서입니다 fstab
.
# diff /etc/fstab /etc/fstab.back should only report one new line
$ sudo diff /etc/fstab /etc/fstab.back
33a34
< UUID=94c3f14d-508d-4621-9000-cbd4fc4c7445 /mnt/sdb1 ext4 defaults 0 2
테스트해 보면 mount -a
새 파티션에서 다음과 같이 성공적으로 설치되었음을 보고해야 합니다.
$ sudo mount -av
/ : ignored
/mnt/sdb1 : successfully mounted
#checking with ls to see if we can see /var folder structure
$ sudo ls /mnt/sdb1
******* cache local log ***** run ***** tmp
backups lib lock mail opt spool www ***
다시 제거
$ sudo umount /mnt/sdb1
/var
현재 를 백업 /var.back
하고 마운트 지점을 /dev/sdb1
다음으로 변경합니다./var
$ sudo mv /var /var.back
### remake /var dir in /
$ sudo mkdir /var
다시 편집하여 /etc/fstab
행이 올바르게 변경되었는지 확인하십시오(/etc/fstab 전체를 다시 확인하는 것이 가장 좋습니다).
# Use a visual editor and change /mnt/sdb1 to /var in /etc/fstab
# or use awk with gsub and inplace, directly from terminal
$ sudo awk -i inplace '/mnt\sdb1/gsub(/mnt\/sdb1/,"var")' /etc/fstab
$ sudo grep var /etc/fstab
UUID=94c3f14d-508d-4621-9000-cbd4fc4c7445 /var ext4 defaults 0 2
먼저 Mounted on을 사용하여 mount -av
마운트 지점 목록을 실행하고 확인합니다.df
sdb1
/var
$ sudo mount -av
$ sudo df -h /var
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 50.7G 6.9G 1.4G 14% /var
모든 것이 정상이면 서버를 다시 시작하십시오.