
ZFS 파일 시스템은 즉시 사용 가능한 대용량, RAID 미러링 및 부패 방지 메커니즘을 제공합니다. ZFS와 함께 Ubuntu를 설치하는 방법과 미러링된 풀을 만드는 방법을 알아봅니다.
ZFS란 무엇입니까?
ZFS는 Solaris 운영 체제와 함께 사용하기 위해 Sun Microsystems에서 시작된 고급 파일 시스템입니다. 2009년 Oracle이 Sun을 인수한 후 ZFS는 이제 Oracle Corporation의 소유가 되었습니다.
그러나 2005년부터 이타주의의 전형적인 행동으로 Sun은 ZFS의 오픈 소스 버전을 출시했습니다. 필연적으로 이것은 Linux로 이식되어 더 많은 노출을 얻었습니다. ZFS의 오픈 소스 버전인 openZFS는 OpenZFS 프로젝트에서 관리 및 유지 관리합니다.
ZFS는 고용량, 내결함성 파일 시스템입니다. ZFS는 원래 Zettabyte 파일 시스템의 약자였습니다. ZFS 아키텍처는 다른 파일 시스템의 일반적인 64비트 대신 128비트를 기반으로 합니다. 더 큰 숫자 값으로 작업할 수 있다는 것은 ZFS가 제타바이트의 저장소를 처리할 수 있게 한 요인 중 하나입니다. 그것이 의미하는 바를 이해하기 위해 제타바이트는 10억 테라바이트입니다.
요즘 ZFS는 최대 256개의 파일 저장을 지원합니다. 제비바이트. 제비바이트(270 바이트)가 제타바이트(1021 바이트), 그러나 크기 순서는 아닙니다. ZFS에는 단순한 용량보다 훨씬 더 많은 것이 있습니다. ZFS는 자체 볼륨 관리자 및 RAID 컨트롤러로 작동합니다. 데이터 손상을 방지하는 쓰기 시 실제 복사와 같은 기능이 내장되어 있습니다. 파일 시스템 풀링, 복제 및 복사를 제공하는 기능과 RAID와 유사한 기능을 기본적으로 결합합니다.
Ubuntu는 몇 년 동안 ZFS를 제공했지만 항상 경고 및 주의 사항이 있습니다. Ubuntu 20.10에서는 경고가 제거되었습니다. Canonical은 공식적으로 ZFS를 지원하지만 전체 디스크 설정에서만 지원합니다. 해당 지원을 받으려면 Ubuntu를 설치할 때 ZFS를 설치해야 합니다. ZFS 옵션은 여전히 숨겨져 있지만, 더 이상 대담하거나 무모한 사람들을 위한 것이 아닙니다.
2021년 10월에 Ubuntu 21.10이 출시될 예정이므로 Ubuntu의 ZFS 제품이 어떻게 성숙해지고 있는지 확인하는 것이 좋습니다.
관련된: Ubuntu에서 ZFS를 설치하고 사용하는 방법(그리고 원하는 이유)
설치 중 ZFS 옵션 찾기
Ubuntu를 설치하는 동안 “설치 유형” 화면에서 Ubuntu를 설치하려는 디스크를 지우거나 다른 작업을 수행하도록 선택할 수 있습니다. “고급 기능” 버튼을 클릭합니다.

“고급 기능” 대화 상자가 나타납니다.

“디스크 지우기 및 ZFS 사용” 라디오 버튼을 선택하고 “확인” 버튼을 클릭합니다.
“설치 유형” 화면에 “ZFS 선택됨”이 표시되어 ZFS를 사용하기로 선택했음을 보여줍니다.

“계속” 버튼을 클릭하고 평소와 같이 설치를 완료합니다.
컴퓨터에 여러 개의 하드 드라이브가 설치된 경우 ZFS에서 사용할 방법을 선택할 수 있습니다. Ubuntu는 제안된 구성을 제공하지만 자신에 맞게 조정할 수 있습니다.
하지만 Ubuntu를 설치한 후 하드 드라이브를 추가하면 어떻게 될까요? 새 저장소를 사용하도록 ZFS를 어떻게 구성합니까? 그것이 우리가 다음에 살펴볼 것입니다.
추가 하드 드라이브 추가
우리는 이 기사를 연구하는 데 사용한 테스트 머신의 단일 하드 드라이브에 ZFS와 함께 Ubuntu를 설치했습니다. 2개의 하드 드라이브를 추가하여 컴퓨터에 총 3개의 하드 드라이브를 제공했습니다. 하나의 하드 드라이브에는 Ubuntu가 설치되어 있었고 두 개의 새 드라이브는 비어 있고 포맷되지 않았으며 마운트되지 않았습니다.
가장 먼저 해야 할 일은 Ubuntu가 새 하드 드라이브를 참조하는 방법을 식별하는 것입니다. NS lsblk 명령은 컴퓨터에 설치된 모든 블록 장치를 나열합니다. 결과에서 보고 싶은 출력 열을 구체적으로 지정할 수 있습니다.
lsblk -o name,size,fstype,type,mountpoint

NS -o (출력) 옵션 다음에 보고 싶은 열이 옵니다. 우리는 다음을 선택했습니다:
- 이름: Ubuntu가 하드 드라이브를 나타내는 데 사용하는 이름입니다.
- 크기: 하드 드라이브의 크기입니다. 하드 드라이브에 둘 이상의 파티션이 있는 경우 모두 나열되고 각 파티션의 크기가 표시됩니다.
- fstype: 하나의 하드 드라이브 또는 파티션인 파일 시스템.
- 유형: 라인이 디스크, 파티션, CD-ROM 드라이브 또는 루프백 의사 장치를 참조하는지 여부.
- 마운트 포인트: 하드 드라이브 또는 파티션에 있는 파일 시스템의 마운트 지점입니다.
무리가 있다 squashfs 루프백 장치, 번호 매기기 loop0 ~을 통해loop6. 스냅 애플리케이션을 설치할 때마다 이러한 유사 장치 중 하나가 생성됩니다. 스냅이 각 스냅 응용 프로그램을 감싸는 것은 캡슐화 및 샌드박싱의 일부입니다.
첫 번째 하드 드라이브는 다음과 같이 나열됩니다. /dev/sda. 5개의 파티션이 있는 32GB 드라이브입니다. /dev/sda1 ~을 통해 /dev/sda5. 그들은 다른 방식으로 포맷됩니다. 이것은 Ubuntu를 설치할 때 컴퓨터에 있던 드라이브입니다.
두 개의 새로운 하드 드라이브는 다음과 같이 나열됩니다. /dev/sdb 그리고 /dev/sdc. 그것들도 32GB 드라이브이지만 포맷되지 않았고 마운트되지도 않았습니다.
풀, RAID 0, RAID 1
새로운 하드 리브를 활용하기 위해 수영장. 원하는 만큼 풀에 드라이브를 추가할 수 있습니다. 두 가지 방법이 있습니다. RAID 0 구성에서 각 하드 드라이브의 모든 저장 공간을 사용할 수 있도록 풀을 구성하거나 풀이 풀에서 가장 작은 하드 드라이브의 저장 공간만 제공하도록 구성할 수 있습니다. RAID 1 구성에서.
RAID 0의 장점은 공간입니다. 그러나 선호하는 구성과 매우 권장되는 구성은 RAID 1입니다. RAID 1은 풀의 모든 드라이브에서 데이터를 미러링합니다. 즉, 하드 드라이브 오류가 발생할 수 있으며 파일 시스템과 데이터는 여전히 안전하고 컴퓨터는 여전히 작동합니다. 손상된 드라이브를 교체하고 새 드라이브를 풀에 추가할 수 있습니다.
대조적으로 RAID 0에서는 단일 하드 드라이브 오류로 인해 손상된 드라이브를 교체하고 백업에서 복원을 수행할 때까지 시스템을 작동할 수 없습니다.
RAID 1 풀에 있는 드라이브가 많을수록 더 강력합니다. RAID 1에 필요한 최소 드라이브는 2개입니다. 두 드라이브 중 하나에 장애가 발생하면 불편하지만 재앙은 아닙니다. 그러나 동시에 두 개의 하드 드라이브에 장애가 발생하면 물론 더 큰 문제가 될 것입니다. 따라서 답은 여유가 있는 한 많은 하드 드라이브를 풀링하는 것으로 보입니다.
그러나 물론 실제로는 단일 풀에 할당하기를 원하거나 할당할 수 있는 드라이브 수에는 제한이 있습니다. 8개의 예비 하드 드라이브가 있는 경우 2개의 4개 드라이브 RAID 1 풀을 설정하는 것이 단일 8개 드라이브 풀보다 하드웨어를 더 잘 사용할 수 있습니다. 그리고 RAID 1 풀은 풀에서 가장 작은 하드 드라이브의 스토리지만 제공할 수 있으므로 항상 단일 풀에서 동일한 크기의 드라이브를 사용하도록 하십시오.
RAID 1 풀 생성
우리는 새로운 하드 드라이브를 다음과 같이 식별했습니다. /dev/sdb 그리고 /dev/sdc . ZFS RAID 1 풀을 만들려면 다음 명령을 사용합니다.
sudo zpool create cloudsavvyit mirror /dev/sdb /dev/sdc
명령의 구성 요소는 다음과 같습니다.
-
수도: 시스템 구성을 변경하고 있으므로 다음을 사용해야 합니다.
sudo루트 권한을 얻으려면. - 즈풀: ZFS 풀 관리 명령입니다.
-
창조하다: 이것은 우리가 원하는 행동입니다
zpool우리를 위해 수행합니다. - 클라우드 사비잇: 생성하려는 풀의 이름입니다.
- 거울: 우리는 데이터를 모든 드라이브에 미러링하여 RAID 1 풀을 제공하기를 원합니다. “미러” 옵션을 생략하면 RAID 0 풀이 생성됩니다.
- /dev/sdb: 새로운 하드 드라이브의 첫 번째 제품입니다.
- /dev/sdc: 우리의 새로운 하드 드라이브의 두 번째.
“cloudsavvyit”을 풀을 호출할 이름으로 바꾸고 다음을 바꿉니다. /dev/sdb 그리고 /dev/sdc 새 하드 드라이브의 식별자로.

수영장을 만드는 것은 약간 반성적입니다. 모든 것이 잘되면 무의식적으로 명령 프롬프트로 돌아갑니다. 우리는 사용할 수 있습니다 status 행동 zpool 새 풀의 상태를 확인하는 명령입니다.
sudo zpool status cloudsavvyit

새 풀이 생성되었으며 온라인 상태이며 두 개의 새 드라이브가 풀에 있으며 오류가 없습니다. 모든 것이 좋아 보입니다. 근데 수영장이 어디야? 있는지 보자 lsblk 장착된 위치를 보여줍니다.
lsblk -o name,size,fstype,type,mountpoint

우리는 우리의 새로운 하드 드라이브가 /dev/sdb 그리고 /dev/sdc 각각 두 개의 파티션으로 파티션되었지만 마운트 지점이 나열되지 않습니다. 풀은 일반 하드 드라이브처럼 마운트되지 않습니다. 예를 들어 항목이 없습니다. /etc/fstab ZFS 풀용 파일입니다. 기본적으로 마운트 지점은 루트 디렉터리에 생성됩니다. 풀과 이름이 같습니다.
ls /

마운트 지점을 다른 곳에서 생성하려면 다음을 사용하십시오. -m (마운트 지점) 옵션을 풀을 생성할 때 선택하고 마운트 지점을 생성할 경로를 제공합니다. 마운트 지점에 다른 이름을 지정할 수도 있습니다.
sudo zpool create -m /path/to/mount-point-name cloudsavvyit mirror /dev/sdb /dev/sdc
사용자에게 풀에 대한 액세스 권한 부여
풀은 존재하지만 루트 사용자만 풀에 데이터를 저장할 수 있습니다. 물론 그것은 우리에게 필요한 것이 아닙니다. 다른 사용자가 풀에 액세스할 수 있기를 바랍니다.
이를 달성하기 위해 다음을 수행합니다.
- 풀에 디렉터리를 만듭니다.
- 새 그룹을 만듭니다.
- 새 그룹을 디렉터리의 그룹 소유자로 설정합니다.
- 데이터 저장소에 액세스해야 하는 사용자를 새 그룹에 추가합니다.
이 체계는 뛰어난 유연성을 제공합니다. 우리는 필요한 만큼 많은 데이터 저장소 디렉토리를 생성할 수 있으며, 이를 소유하는 다른 그룹이 있습니다. 사용자에게 다른 저장 영역에 대한 액세스 권한을 부여하는 것은 적절한 그룹에 추가하는 것만큼 간단합니다.
우리는 사용할 것입니다 groupadd 사용자 그룹을 생성합니다. 우리 그룹은 “csavvy1″이라고 합니다. 우리는 다음을 사용할 것입니다 usermod “dave”라는 사용자를 새 그룹에 추가하는 명령입니다. NS -a (추가) 옵션은 사용자가 속한 기존 그룹 목록에 새 그룹을 추가합니다. 이 옵션이 없으면 사용자는 모든 기존 그룹에서 제거되고 새 그룹에 추가됩니다. 문제가 발생하므로 -a 옵션.
sudo groupadd csavvy1
sudo usermod -a -G csavvy1 dave

새 그룹 구성원 자격이 유효하려면 사용자는 로그아웃했다가 다시 로그인해야 합니다.
이제 풀에 “data1″이라는 디렉터리를 만듭니다.
sudo mkdir /cloudsavvyit/data1
NS chgrp 명령을 사용하여 디렉토리의 그룹 소유자를 설정할 수 있습니다.
sudo chgrp csavvy1 /cloudsavvyit/data1
마지막으로 다음을 사용하여 그룹 권한을 설정합니다. chmod . “s”는 SGID 특수 비트입니다. 이는 “data1” 디렉토리 내에 생성된 파일 및 디렉토리가 이 디렉토리의 그룹 소유자를 상속함을 의미합니다.
sudo chmod g+rwsx /cloudsavvyit/data1/

사용자가 로그아웃했다가 다시 로그인했습니다. 새 RAID 1 ZFS 풀의 새 데이터 저장소 디렉토리에 파일을 생성해 보겠습니다.
touch /cloudsavvyit/data1/new-file.txt
그리고 생성되었는지 봅시다.
ls /cloudsavvyit/data1 -lh

성공. data1 저장 영역 외부에 다른 파일을 생성하려고 하면 어떻게 될까요?
touch /cloudsavvyit/new-file2.txt

이것은 예상대로 실패합니다. 권한이 작동 중입니다. 우리 사용자는 액세스 권한이 부여된 데이터 저장소 디렉토리의 파일만 조작할 수 있습니다.
관련된: Linux에서 SUID, SGID 및 고정 비트를 사용하는 방법
수영장 파괴
이 명령에 주의하십시오. 계속하기 전에 백업이 있는지 확인하십시오. 정말로 원하고 풀에 다른 데이터 복사본이 있음을 확인한 경우 다음 명령을 사용하여 풀을 삭제할 수 있습니다.
sudo zpool destroy cloudsavvyit
“cloudsavvyit”을 제거할 풀의 이름으로 바꿉니다.
하드 드라이브가 하나만 있습니까?
하드 드라이브가 하나만 있거나 컴퓨터에 하드 드라이브가 여러 개 있지만 크기가 너무 다양하여 유용한 풀을 구성할 수 없는 경우에도 ZFS를 사용할 수 있습니다. RAID 미러링은 제공되지 않지만 내장된 부패 방지 및 데이터 보호 메커니즘은 여전히 가치 있고 설득력 있는 기능입니다.
그러나 RAID 미러링이 있든 없든 파일 시스템이 없다는 것은 백업을 무시할 수 있다는 것을 의미합니다.
관련된: 백업과 이중화: 차이점은 무엇입니까?








