기계가 있습니다:
[root@SERVER ~]# df -mP
Filesystem 1048576-blocks Used Available Capacity Mounted on
/dev/sda2 124685 7462 110897 7% /
tmpfs 12016 0 12016 0% /dev/shm
/dev/sda1 485 102 358 23% /boot
/dev/sdb1 32131 48 30444 1% /var/foobar1
/dev/sdb2 16009 420 14770 3% /var/foobar2
/dev/sdb3 988 6 930 1% /var/foobar3
/dev/sdb5 988 2 935 1% /var/foobar4
/dev/sdb6 988 17 919 2% /var/foobar5
/dev/mapper/datvg-FOO 125864 81801 37663 69% /var/FOOBAR6
1.2.3.4:/var/FOOBAR7 193524 128878 54816 71% /var/FOOBAR7
[root@SERVER ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datvg 1 1 0 wz--n- 204.94g 79.94g
[root@SERVER ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
FOO datvg -wi-ao---- 125.00g
[root@SERVER ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
sda 8:0 0 128G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 123.7G 0 part /
└─sda3 8:3 0 3.8G 0 part [SWAP]
sdb 8:16 0 256G 0 disk
├─sdb1 8:17 0 32G 0 part /var/foobar1
├─sdb2 8:18 0 16G 0 part /var/foobar2
├─sdb3 8:19 0 1G 0 part /var/foobar3
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 1G 0 part /var/foobar4
├─sdb6 8:22 0 1G 0 part /var/foobar5
└─sdb7 8:23 0 205G 0 part
└─datvg-FOO (dm-0) 253:0 0 125G 0 lvm /var/FOOBAR6
[root@SERVER ~]#
[root@SERVER ~]# grep ^Red /etc/issue
Red Hat Enterprise Linux Server release 6.8 (Santiago)
[root@SERVER ~]#
질문: / 및 /var와 같은 FS용 LVM을 사용하려면 어떻게 마이그레이션할 수 있나요? LVM으로 동일한 "파티션"을 생성하고 이전 FS에서 파일을 복사하시겠습니까? 기계는 어떻게 시작되나요? /boot는 /dev/sda1에 남아 있을 수 있습니다.
답변1
/에서는 약 7.4GB만 사용하고 LVM에는 79GB의 여유 공간이 있으므로 예, /
(및 다른 )에 대해 /var
새 LV를 만들고 / 및 /var의 파일을 복사할 수 있습니다. 복사 용으로 추천드립니다 rsync
.
예를 들어 새 / 및 /var를 /target 및 /target/var로 설치하려면 다음을 수행합니다.
rsync --archive --sparse --one-file-system --delete-during --delete-excluded \
--force --numeric-ids --hard-links / /var /target/
다음 옵션을 사용하도록 선택할 수도 있습니다.
--human-readable --human-readable --verbose --stats --progress
단일 사용자 모드로 재부팅하고 프로세스를 완료할 수 있는 충분한 여유 시간이 생길 때까지 이 작업을 필요한 만큼 반복할 수 있습니다. 예:
- 단일 사용자 모드로 재부팅
- 마운트
/
및/boot
RW(아직 RW가 아닌 경우) - 설치
/target
하고/target/var
위와 같이 - 위에서 언급했듯이 마지막 rsync
for i in proc dev sys dev/pts run boot; do mount -o bind /$i /target/$i; done
chroot /target
/etc/fstab
/ 및 /var에 대한 장치/uuid/레이블 편집 및 변경- 달리기
update-grub
- 출구
for i in proc sys dev/pts dev boot var /; do umount /target/$i ; done
- 재시작
재부팅 후 모든 것이 제대로 작동하면 /dev/sda2
LVM VG에 (이전 루트 파티션)을 추가 할 수 있습니다 datvg
.
원하는 경우 /boot
(다음으로 설치 /target/boot
)에 대한 LV를 생성하고 rsync 등을 사용하여 설치할 수도 있습니다. /
(주변 루프에서 부팅을 제거하는 것 외에도 /var
원래 바인딩이 설치되는 것을 원하지 않습니다)for
mount -o bind
/boot
/target/boot
그런 다음 스왑용 LV도 생성하고 전체 LV를 /dev/sda
LVM VG에 추가할 수 있습니다(sda의 모든 파티션을 제거하고 /dev/sda1
해당 파티션을 생성 및 추가).
또 다른 옵션: Clonezilla는 훌륭합니다!
그런데 또 다른 방법은 다음을 사용하는 것입니다.클론속CD 또는 USB 스틱을 사용하여 LVM 파티션을 만든 다음 cz를 사용하여 / 및 /boot를 LVM에 복제합니다. 이 작업을 마지막으로 수행한 지 시간이 오래 걸려서 정확히 기억나지는 않지만, 아마도 여전히 /target(및 /target/var, /target/boot)을 마운트하고, 마운트를 바인드하고, fstab 및 update-grub
.
실제로 위의 루프는 부팅 가능한 이미지에 대한 사용자 정의 스크립트로 생성된 별칭에서 복사되고 약간 수정되었습니다 for
. 따라서 이 루프가 필요할 가능성이 높습니다.tftp
clonezilla
루트 셸에 사용 가능한 별칭을 사용하여 시작됩니다.
alias prepare-chroot-target='for i in proc dev sys dev/pts ; do mount -o bind /$i /target/$i ; done'
선택적 추가 읽기(BTRFS 프로모션)
VM에 대한 파티션을 생성해야 하기 때문에 LVM을 사용하지 않는 경우(파티션 및 대부분의 다른 블록 장치는 VM에 대한 .qcow2 또는 원시 파일보다 빠릅니다) 다음을 사용하는 것이 좋습니다.BTFS LVM 대신. LVM보다 더 유연하고 사용하기 쉽습니다. 예를 들어 하위 볼륨 할당을 늘리거나 줄이는 것은 사소한 일입니다.
btrfs
매우 유용한 기능을 가지고 있으며 수행할 수 있습니다.제자리에서 변환ext3 또는 ext4에서 btrfs로.
불행하게도 해당 위키 페이지에는 이제 다음과 같은 경고가 표시됩니다.
경고: 4.0 커널부터 이 기능은 더 이상 일반적으로 사용되지 않거나 완전히 테스트되지 않으며 변환이 안정적으로 작동하지 않는다는 일부 보고가 있습니다. 자유롭게 시도해 보되 백업이 있는지 확인하십시오.
너할 수 있다내부 변환을 수행하고 /
디렉터리 /var/foobar*
를 btrfs로 마이그레이션한 다음 sdb의 절반을 btrfs/(RAID-1 미러로)에 추가하고 나머지 절반은 추가 저장소(또는 btrfs) 또는 LVM에 사용합니다. 안타깝게도 같은 크기의 디스크 쌍이 없습니다.
내부 변환을 수행하지 않기로 선택한 경우(아마도 현명한 일임) 프로세스는 /target/{,boot,var}
사용자를 위한 Btrfs 볼륨과 및 /target
하위 볼륨에 대한 LVM 파티션을 생성하는 대신 위의 rsync 방법과 유사합니다. 별도의 스왑 파티션이 필요합니다(디스크 스왑을 잊어버리고 RAM 블록 장치에 메인라인 커널 압축을 사용하거나 스왑이 필요하지 않도록 RAM을 추가하거나 둘 중 하나)./target/boot
/target/var
zram
그러나 데이터 및 구성 파일을 백업하고 배포판 설치 프로그램 CD 또는 USB를 부팅하고 처음부터 다시 설치한 다음(파티션 레이아웃을 신중하게 계획한 후) 선택한 백업 부분(/home, /)을 복원하는 것이 더 쉽습니다. usr/local, /etc의 일부 구성 파일).
더 많은 선택적 추가 읽기(ZFS 프로모션)
드라이브 불일치를 고려하면 btrfs가 더 나은 옵션일 수 있지만 ZFS를 언급하지 않고 btrfs를 언급하는 것은 불가능합니다.
가상 머신에 블록 장치를 제공해야 하고 btrfs와 같은 유연성을 원하며 메인라인이 아닌 커널 모듈을 설치하는 데 신경 쓰지 않는다면 다음을 사용하십시오.ZFSbtrfs 대신.
btrfs가 수행하는 거의 모든 작업을 수행합니다(불행히도 재조정은 제외하고 풀에 디스크를 추가만 할 수 있으며 디스크를 제거하거나 레이아웃을 변경할 수는 없습니다).더있다을 사용하면 ZVOL(풀의 스토리지를 사용하는 블록 장치)과 하위 볼륨을 생성할 수 있습니다.
오늘날에는 Debian이나 Ubuntu 및 기타 여러 배포판에 ZFS를 쉽게 설치할 수 있습니다. 배포판은 패키지( 커널용 모듈을 포함 spl-dkms
하고 자동으로 빌드함)를 제공합니다. zfs-dkms
dkms 모듈을 구축하는 데는 꽤 시간이 걸리지만 그 외에는 다른 패키지 세트를 설치하는 것만큼 간단하고 간단합니다.
불행히도 ZFS로 변환하는 것은 위의 프로세스만큼 쉽지 않습니다. rootfs를 ZFS 자체로 변환하는 것은 상당히 어려운 프로세스입니다. 와 마찬가지로 btrfs
ZFS를 잘 지원하는 배포판을 사용하여 데이터 및 구성 파일 등을 백업하고 처음부터 머신을 다시 빌드하는 것이 더 쉬울 것입니다(Ubuntu가 아마도 최선의 선택일 것입니다)Linux의 ZFS현재).
설상가상으로 ZFS에서는 vdev의 모든 파티션이나 디스크가 동일한 크기여야 하므로(그렇지 않으면 vdev의 크기는 그 안에 있는 가장 작은 장치만큼만 커질 수 있음) zpool에 sda와 sdb의 약 절반만 추가할 수 있습니다. . 나머지 sdb는 btrfs, ext4, xfs 또는 LVM일 수도 있습니다(ZFS로 ZVOL을 만들 수 있으므로 이는 의미가 없습니다).
저는 데비안에서 ZFS를 사용하고 있습니다. (드디어 ZFS가 배포판 자체에 포함되어 기본 데비안 패키지를 사용할 수 있게 되어 다행입니다.) 나는 몇 년 동안(적어도 2011년부터) 그것을 사용해 왔습니다. 추천. 그 자체로 매우 유용한 btrfs의 재조정 기능과 풀에서 vdev를 제거하거나(현재 ZFS에서는 불가능) RAID-1에서 RAIDZ-1로 변환할 수 있는 기능이 있었으면 좋겠습니다.
RAID-1에서 RAID-5, RAID-6 또는 RAID-10으로의 온라인 변환을 수행하는 btrfs의 기능도 훌륭하지만 아마도 사용하지 않을 것입니다. 저는 ZFS용 RAID-Z를 포함하여 모든 형태의 RAID-5/RAID-6을 거의 포기했습니다(제 생각에는 성능 비용과 정리 또는 재동기화 시간이 그만한 가치가 없습니다).선호하다RAID-1 또는 RAID-10 - 풀에 원하는 만큼 RAID-1 vdev를 추가할 수 있습니다(이렇게 하면 RAID-1을 RAID-10으로 효과적으로 변환하거나 기존 RAID에 더 많은 미러 쌍을 추가할 수 있습니다). 10).
어쨌든 저는 가상 머신에서 ZVOL을 광범위하게 사용하므로 btrfs는 옵션이 아닙니다.