맨위로가기

/dev/zero

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

/dev/zero는 유닉스 계열 운영체제에서 사용되는 특수 파일의 일종으로, 읽을 때 널 문자(0x00)를 반환하며 데이터 소스로 활용될 수 있다. 쓰기 동작은 성공하지만 아무런 영향을 미치지 않으며, 메모리에 매핑하면 익명 메모리를 사용하는 효과를 가진다. 1988년 SunOS 4.0에서 익명 메모리를 이용한 공유 라이브러리 매핑을 위해 도입되었으나, 이후 `MAP_ANONYMOUS` 플래그 지원으로 인해 사용 목적이 변화했다. `dd` 유틸리티를 사용하여 파일 시스템 파티션 데이터를 널 문자로 덮어쓰거나, 특정 크기의 파일을 생성하는 데 활용될 수 있으며, 희소 파일 생성에도 사용된다.

더 읽어볼만한 페이지

  • 장치 파일 - /dev/random
    /dev/random은 리눅스 커널에서 제공하는 난수 장치 파일로, 안전한 난수 생성을 위해 사용되며, 엔트로피 풀이 비어있을 경우 블로킹되는 특징을 가진다.
  • 장치 파일 - 널 장치
    널 장치는 Version 5 Unix에서 처음 소개된 특수 파일로, 의도하지 않은 출력 스트림을 버리거나 입력 스트림을 위해 빈 파일 역할을 하며, 유닉스 및 유닉스 계열 운영체제에서 메시지 출력을 제어하는 데 활용된다.
  • 유닉스 파일 시스템 기술 - 아이노드
    아이노드는 파일 시스템에서 파일의 메타데이터를 저장하는 자료 구조이며, 파일 소유자, 접근 권한, 파일 크기 등의 정보를 포함하고, 파일 시스템 드라이버가 파일 정보에 접근하도록 돕는다.
  • 유닉스 파일 시스템 기술 - 널 장치
    널 장치는 Version 5 Unix에서 처음 소개된 특수 파일로, 의도하지 않은 출력 스트림을 버리거나 입력 스트림을 위해 빈 파일 역할을 하며, 유닉스 및 유닉스 계열 운영체제에서 메시지 출력을 제어하는 데 활용된다.
/dev/zero

2. 기능

/dev/zero는 읽기 요청 시 요청한 만큼의 널 문자(0x00)를 반환한다.

/dev/null과 달리 /dev/zero는 데이터의 소스(source)로 사용될 수 있다. /dev/zero에 대한 쓰기 동작은 성공하지만 아무런 영향을 미치지 않는다.

/dev/zero를 메모리에 매핑(mmap)하면 익명 메모리를 사용하는 것과 같은 효과를 가진다. (파일에 연결되지 않은 메모리)

3. 역사

`/dev/zero`는 익명 메모리를 사용하여 공유 라이브러리에 매핑 가능한 BSS 세그먼트를 허용하기 위해 1988년 SunOS-4.0에 도입되었다.[3] HP-UX 8.x는 `/dev/zero`를 열 필요 없이 익명 메모리를 직접 매핑하는 mmap()에 MAP_ANONYMOUS 플래그를 도입했다.[4] 1990년대 후반 이후, MAP_ANONYMOUS[5] 또는 MAP_ANON은 대부분의 유닉스 버전에서 지원되어 `/dev/zero`의 원래 목적이 사라졌다.[6]

4. 예

`dd` 유틸리티를 사용하여 파일 시스템 파티션의 데이터를 널 문자로 덮어씌워 삭제 (로우 레벨 포맷) 할 수 있다.[10]

```bash

dd if=/dev/zero of=/dev/''''

```

널 문자로 채워진, foobar라는 이름의 1 MiB 파일을 생성할 수 있다.[10]

```bash

dd if=/dev/zero of=foobar count=1024 bs=1024

```

블록 크기 값은 SI(십진)값으로 줄 수 있다. (예: GB, MB 등) 1 GB 파일을 생성하는 예시는 다음과 같다.

```bash

dd if=/dev/zero of=foobar count=1 bs=1GB

```

0바이트로만 채워진 읽기 파일을 만드는 대신 수많은 파일 시스템들은 또한 희소 파일의 생성도 지원하며, 이는 실제 공간을 덜 사용하면서 읽기 시 0을 반환한다.[11]

`cp` 명령어를 사용하여 데이터를 삭제할 수 있다.

```bash

cp /dev/zero /dev/<대상 드라이브 또는 파티션>

```

(이것은 안전한 삭제를 수행하지 않으며, 데이터를 전혀 파괴하지 못할 수 있고, 필요한 시간보다 훨씬 더 오래 걸릴 수 있다. 이러한 목적으로는 TRIM을 지원하는 장치의 경우 ''blkdiscard''와 같은 도메인별 도구가 선호될 수 있다.)

`head` 명령어를 사용하여 특정 크기의 파일을 생성할 수 있다. 널 문자로 채워진 1 MiB 파일 ''foobar'' 생성 예시는 다음과 같다.

```bash

head -c $(( 1024 * 1024 )) /dev/zero > foobar

```

실제로 0 바이트로만 채워진 파일을 만드는 대신, 많은 파일 시스템은 읽을 때 0을 반환하지만 실제 공간을 덜 사용하는 희소 파일 생성을 지원한다. 이를 수행하는 고전적인 방법 (도메인별 ''truncate'' 유틸리티 없이)은 1 GiB 파일을 만드는 것이다.

```bash

dd bs=1 seek=$(( 1024 * 1024 * 1024 - 1 )) count=1 < /dev/zero > foobar

```

이는 출력에서 위치 ''seek''·''bs''=1GiB−1로 이동하여 /dev/zero에서 ''count''·''bs''=1 바이트를 복사하여 파일에 하나의 데이터 블록만 포함하도록 한다.

참조

[1] 서적 Advanced Linux Programming https://books.google[...] Sams Publishing
[2] 서적 Linux System Programming: Talking Directly to the Kernel and C Library https://books.google[...] O'Reilly Media, Inc.
[3] 웹사이트 "C" run-time program bootstrap from SunOS, contributed to CSRG for inclusion in 4.4BSD https://minnie.tuhs.[...]
[4] 웹사이트 HP-UX 8.0.7 install media https://archive.org/[...] 1992-07-22
[5] 웹사이트 So what the heck is anonymous memory https://web.archive.[...] 2019-09-09
[6] 웹사이트 MAP_ANON description in mmap(2) https://web.archive.[...] 2019-09-09
[7] 웹사이트 zero(4): data sink - Linux man page https://linux.die.ne[...] 2024-10-29
[8] 서적 Advanced Linux Programming https://books.google[...] Sams Publishing
[9] 서적 Linux System Programming: Talking Directly to the Kernel and C Library https://books.google[...] O'Reilly Media, Inc.
[10] 서적 Olker https://books.google[...] Prentice Hall Professional 2002
[11] 문서 희소 파일



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com