LVM을 사용하지 않고 하드 드라이브를 추가할 때 파일 시스템을 확장할 수 있는 방법이 있습니까? 그것들은 무엇입니까?
답변1
이 답변에서는 결과 장치를 "볼륨"이라고 부르고 이를 생성하는 데 사용된 파티션을 "장치"라고 하겠습니다.
LVM은 이 도구를 내부적으로 사용하여 dmsetup
볼륨을 설정하고 저장 공간의 일부를 사용하여 메타데이터(예: 장치 설정 방법에 대한 정보)를 저장합니다.
대안은 dmsetup
메타데이터에 대한 저장 공간을 명시적으로 할당하지 않고 장치를 수동으로 생성하는 것입니다. 또한 이미 데이터가 포함된 파티션에서 이 기능을 사용할 수도 있습니다. 현재 ext4 파일 시스템인 /dev/sda5 드라이브가 있다고 가정합니다. 100GB 크기이므로 정확한 섹터 크기를 얻으려면 다음을 실행하세요.
# blockdev --getsz /dev/sda5
195310000
새로운 300GB 하드 드라이브 sdb가 있고 이를 사용하여 sda5를 확장하려고 한다고 가정해 보겠습니다. 너할 수 있다이를 위해 파티션 테이블 대신 전체 sdb 장치를 사용하십시오. 하지만 장기적으로 건강을 유지하려면 나중에 디스크가 어떻게 사용되었는지 기억할 수 있도록 전체 디스크에 걸쳐 있는 파티션을 만드는 것이 더 나을 수도 있습니다. 따라서 blockdev가 보고하는 크기인 sdb1이 있습니다.
# blockdev --getsz /dev/sdb1
583984375
따라서 이 두 가지를 병합하려면 가장 먼저 해야 할 일은 이전 장치를 제거하는 것입니다. 물론, 그 전에라도 문제가 생기면 데이터를 백업해 두시기 바랍니다. 따라서 백업 프로세스 후에 다음을 실행하십시오.
# umount /dev/sda5
확인. 참고: 저는 systemd가 있는 시스템에서 이 작업을 시도한 적이 없으므로 수동 제거를 취소할 가능성을 방지할 수 있는 더 좋은 방법이 있는지 확인하십시오.
다음으로 새 볼륨을 설정하는 명령이 포함된 파일을 생성합니다. 일부 수동 계산이 필요합니다. 기본적으로 우리가 만든 파일은 새 볼륨의 각 부분이 디스크에 있는 위치를 한 번에 한 줄씩 알려줍니다. 따라서 우리는 섹터 0-195309999(총 섹터 195310000개)를 장치 /dev/sda5의 섹터 0-195309999에 매핑하기를 원합니다. 그런 다음 섹터 195310000-779294374(총 583984375 섹터)를 장치 /dev/sdb1의 섹터 0-583984374에 매핑하려고 합니다. 이를 위해 다음 줄을 사용하여 /etc/mybigvolume.dmsetup.txt 파일을 생성합니다.
0 195310000 linear /dev/sda5 0
195310000 583984375 linear /dev/sdb1 0
라인당 형식(섹터의 모든 단위 = 512바이트):
<offset inside volume> <number of sectors> "linear" <source device> <source device offset>
따라서 큰 소리로 읽으면 이 줄의 의미는 다음과 같습니다.
대상 볼륨의 섹터는 0에서 시작하여 /dev/sda5 장치에 있는 195310000 섹터 앞으로 이동하며 /dev/sda5 내의 섹터 0에서 시작합니다.
대상 볼륨의 섹터는 195310000에서 시작하여 /dev/sdb1 장치에 있는 583984375 섹터 앞으로 확장되며, /dev/sdb1 내의 섹터 0에서 시작됩니다.
참고 사항: 숫자를 더 쉽게 이해할 수 있도록 나중에 끝에 또 다른 동일한 300G 디스크를 추가하려는 경우 파일 내용은 다음과 같습니다.
0 195310000 linear /dev/sda5 0
195310000 583984375 linear /dev/sdb1 0
779294375 583984375 linear /dev/sdc1 0
원래 예제로 돌아가서 파일을 생성한 후 이제 볼륨을 설정하여 사용할 수 있습니다. 우리는 dmsetup create
이러한 목적 으로 그것을 사용합니다 .
# dmsetup create mybigvolume < /etc/mybigvolume.dmsetup.txt
모든 것이 제대로 진행되었다면, 즉 아무것도 출력되지 않았다면 이제 새 볼륨이 /dev/mapper/mybigvolume
195310000 + 583984375 = 779294375 섹터라는 새 장치로 존재해야 합니다. 확인해 봅시다:
# blockdev --getsz /dev/mapper/mybigvolume
779294375
당신은 실행할 수 있습니다
# dmsetup table
언제든지 dmsetup을 사용하여 어떤 장치가 설정되어 있는지 확인하세요.
응! 이제 고려해야 할 몇 가지 중요한 사항이 있습니다.
이제 디스크에 액세스하려면 /dev/mapper/mybigvolume을 사용하여 시작해야 합니다. 언제나. /dev/sda5를 사용하면 파일 시스템이 손상될 수 있습니다. 따라서 더 이상 /dev/sda5가 없는지 확인하십시오. 물론,
/etc/mybigvolume.dmsetup.txt
dmsetup 구성을 저장하는 위치는 제외됩니다.파일 시스템은 새로운 여유 공간을 사용하도록 명시적으로 요청할 때까지 디스크의 처음 195,310,000개 섹터만 사용합니다. 자세한 내용은 파일 시스템 관리 도구를 확인하세요. LVM을 사용하는 경우에도 이 단계가 필요합니다.
이 설정(예: dmsetup 구성)은 재부팅할 때까지만 유지됩니다. 따라서
dmsetup create ...
파일 시스템을 마운트하기 전에 부팅 시 명령을 자동으로 실행하도록 시스템을 구성하거나, 부팅할 때마다 수동으로 명령을 실행한 다음 볼륨을 수동으로 마운트해야 합니다. 전자가 수행되는 방법은 주로 Linux 배포판에 따라 다릅니다. 그러나 이는 cryptsetup이 구현되는 방식과 유사할 것입니다(dmsetup은 장치를 설정하는 데에도 사용됩니다).
/etc/fstab의 항목 예:
/dev/mapper/mybigvolume /data ext4 defaults,noatime 0 0
마지막으로 지적하고 싶은 점은 볼륨 오류의 위험이 단일 장치 오류의 위험보다 확실히 높다는 것입니다. 하지만 나는 당신의 설정을 모릅니다. 아마도 이 /dev/mapper/mybigvolume을 raid-1 배열의 일부로 사용하고 있을 것입니다! 어쨌든, 행운을 빌어요! :)
추신. 그냥 마음 편하게 물어봐!
답변2
파일 시스템이 Btrfs이고 마운트된 경우 여기에 장치(예: HDD 또는 파티션)를 추가할 수 있습니다. 예:
btrfs device add /dev/sdc2 /current/mountpoint
man 8 btrfs-device
자세히보다. 반품:여러 장치에서 Btrfs 사용. 여기에는 장치 매퍼 드라이버가 전혀 포함되지 않습니다. 파일 시스템 자체가 일반적인 LVM 작업을 수행합니다.
나는 ZFS가 유사하다고 생각합니다. 즉, 자체적으로 여러 장치를 처리할 수 있습니다. 유용한 검색어: "zpool에 디스크 추가".