mkfs가 너무 느립니다

mkfs가 너무 느립니다

Virtualbox 하이퍼바이저에서는 ubuntu 16.04에서 xfs 볼륨을 포맷하는 것이 매우 느리지만 Nutanix 내에서 실행되는 가상 머신에서는 그렇지 않습니다.

Virtualbox
100GB => 초
2TB => 초

Nutanix(하이퍼컨버지드)
100GB => 4분
2TB => 30분 이상

parted -l -s | grep "Error: * unrecognised disk label"
Error: /dev/sdg: unrecognised disk label

parted /dev/sdg mklabel gpt
Information: You may need to update /etc/fstab.

parted -- /dev/sdg mkpart primary xfs 1 -1
Information: You may need to update /etc/fstab.

time mkfs.xfs /dev/sdg1
meta-data=/dev/sdg1              isize=512    agcount=4, agsize=6553472 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0
data     =                       bsize=4096   blocks=26213888, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=12799, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

real     4m7.653s
user    0m0.004s
sys       0m0.028s

한 하이퍼바이저에서는 드라이브 포맷이 그렇게 오래 걸리고 mkfs다른 하이퍼바이저에서는 거의 즉시 포맷되는 이유는 무엇입니까?

답변1

이는 하이퍼컨버지드 하이퍼바이저가 SSD를 사용하기 때문입니다. mkfs 명령은 기본적으로 NODISCARD(TRIM이라고도 함) 형식을 사용합니다.

트림 없이 mkfs를 실행하려면 -KXFS 및 ext4 -E nodiscard에서 이 옵션을 사용하십시오.

XFS

mkfs.xfs -K /dev/sdx 

외부 4

mkfs.ext4 -E nodiscard 

경고: 기존 데이터가 없는 새 볼륨에만 -K 또는 -E를 사용하십시오.

기존 데이터가 있는 드라이브에서 -K 또는 -E 옵션을 사용하면 데이터를 덮어쓸 때까지 공간이 낭비됩니다.

답변2

공식 Red Hat 과정(Red Hat System Administration II - RH134)에서 다음과 같이 mkfs.xfs를 사용하여 VDO 볼륨을 포맷하는 경우:

# mkfs.xfs -K /dev/mapper/vdo1

명확하게 정의됨:

"이전 mkfs.xfs 명령의 -K 옵션은 파일 시스템에서 사용되지 않은 블록이 즉시 삭제되는 것을 방지하여 명령이 더 빠르게 반환되도록 합니다."

답변3

mkfs -t xfs /dev/md6 이 명령은 Ubuntu에서는 시간이 오래 걸리고 RHEL에서는 매우 빠릅니다.

mkfs.xfs -K /dev/sdx 매우 빠른 것 같지만...정보만 출력하는 것처럼 보입니다.. 실제로 작업이 수행되었는지 확인하려면 time 명령을 사용하는 것이 더 좋습니다.

time mkfs.xfs -K /dev/md6 mkfs.xfs: /dev/md6에는 기존 파일 시스템(xfs)이 포함되어 있는 것 같습니다. mkfs.xfs: 강제로 덮어쓰려면 -f 옵션을 사용하세요.

실제 0m0.005s 사용자 0m0.000s 시스템 0m0.000s

시간 mkfs.xfs -K /dev/md6 -f 메타데이터=/dev/md6 isize=512 agcount=32, agsize=24416912 blks=sectsz=512 attr=2, projid32bit=1=crc=1 finobt=1, sparse = 0 데이터 = bsize = 4096 청크 = 781340832, imaxpct = 5 = sunit = 16 swidth = 32 blks 이름 지정 = 버전 2 bsize = 4096 ascii-ci = 0 ftype = 1 로그 = 내부 로그 bsize = 4096 청크 = 381520, 버전 = 2 = sectsz=512 sunit=16 blks, 지연 카운트=1 realtime=none extsz=4096 블록=0, rtextents=0

실제 0m0.572s 사용자 0m0.000s 시스템 0m0.188s

답변4

RHEL 7.9에서 동일한 문제가 발생했습니다. Mpath와 함께 외부 스토리지 SAN을 사용하는 경우 SAN의 경우 BOND 또는 NIC 팀을 사용하는 경우 mkfs.xfx가 매우 느립니다. 다른 버전의 RHEL 7.5를 사용하여 OS를 다시 두 번 다시 설치했습니다. 동일한 설정으로 RHEL 프로덕션에 여러 서버가 있지만 NIC 팀 구성(루핑)이 없습니다. 새 (문제) 서버에서 제거하고 완벽하게 작동하는 서버를 사용해 보았습니다. mkfs 명령을 실행할 때 LUN의 청크가 삭제되고 실행이 루프에서 발생하며 연결이 외부 저장소로 계속 변경되므로 속도가 매우 느린 것 같습니다. 일주일 동안 인터넷 검색을 하고 RHEL 지원 포털을 확인했지만 운이 없었습니다. 마침내 nic 팀을 제거하고 작동했습니다.

관련 정보