일반화하다
외부 드라이브를 "한 번만 쓸 수 있는 아카이브"로 설정한다고 가정해 보겠습니다. 외부 드라이브를 다시 포맷하고 업데이트되지 않을 일부 파일을 복사한 다음 내용을 읽어야 할 때까지 따로 보관해 두려고 합니다( 오래 전일 수도 있고 전혀 없을 수도 있음)은 다른 Linux 상자의 아카이브에서 가져온 것입니다. 또한 아카이브에서 최대한 많은 파일 공간을 확보할 수 있기를 원합니다. 즉, 파일 시스템이 자체 목적을 위해 가능한 한 적은 여유 공간을 사용하기를 원합니다.
구체적인 질문 1:저널링이 없는 ext2 또는 ext4 중 이 사용 사례에 더 적합한 파일 시스템은 무엇입니까?
나는 이전에 후자를 해본 적이 없기 때문에 (나는 보통고팟), 확인차:
구체적인 질문 2:이것이 로그 없는 ext4를 설치하는 "방법"입니까 mke2fs -t ext4 -O ^has_journal /dev/whatever
?
일반적인 질문 3:이 사용 사례에 더 나은 파일 시스템이 있습니까? 아니면 완전히 다른 것인가요?
세부 사항
다양한 외부 드라이브에 저장된 데드박스(따라서 업데이트되지 않은)의 이전 프로젝트에서 가져온 많은 파일이 있습니다. 총 크기(파일) ~= 250GB. 이것은 DVD로 쓰기에는 너무 크고(즉, 뭔가 빠진 것이 없다면 가져가기에는 너무 많습니다) 테이프 드라이브도 없습니다. 그래서 저는 오래된 USB2 HFS 외장 드라이브를 아카이브로 설정했습니다. 나는 "진짜 Linux" 파일 시스템을 선호하지만 이와 같은 파일 시스템도 선호합니다.
- 아카이브 드라이브에서 최소한의 공간만 차지합니다(넣고 싶은 것을 담을 수 있을 만큼 크지 않기 때문입니다.
- 앞으로 내가 사용하는 모든 상자(아마도 Linux)에서 읽을 것입니다.
나는 GParted를 사용하여 다음 순서를 수행할 계획입니다: [이전 파티션 삭제, 단일 새 파티션 생성, ext2 파일 시스템 생성, 레이블 재지정]. 그러나 나는 읽었다.여기저것
recent Linux kernels support a journal-less mode of ext4
which provides benefits not found with ext2
다음 텍스트를 확인하세요.man mkfs.ext4
"mke2fs -t ext3 -O ^has_journal /dev/hdXX"
will create a filesystem that does not have a journal
그래서 나는 알고 싶다
- 저널링이 없는 ext2 또는 ext4 중 이 사용 사례에 더 적합한 파일 시스템은 무엇입니까?
- ext4-minus-journal로 이동한다고 가정해 보겠습니다. 이를 설치하기 위한 명령줄인가요
mke2fs -t ext4 -O ^has_journal /dev/whatever
? - 이 사용 사례에 대한 또 다른 더 나은 파일 시스템이 있습니까?
답변1
나는 squashfs의 제안에 동의하지 않습니다. 일반적으로 squashfs를 원시 블록 장치에 쓰지 않고, 원시 블록 장치에 squashfs를 씁니다. 읽기 쉬운 tar 아카이브라고 생각하세요. 이는 여전히 기본 파일 시스템이 필요하다는 것을 의미합니다.
ext2
현재 사용을 제한하는 몇 가지 심각한 제한 사항이 있으므로 권장합니다 ext4
. 이는 보관을 위한 것이므로 계속 진행하기 위해 압축된 아카이브를 생성하게 됩니다. 이는 거의 변경되지 않는 소수의 상당히 큰 파일을 갖게 된다는 것을 의미합니다. 다음과 같이 최적화할 수 있습니다.
-I 128
단일 inode의 크기를 줄여서 inode 테이블의 크기를 줄이도록 지정합니다 .- 또한 이
-i
옵션을 사용하여 inode 테이블의 크기를 더 줄일 수도 있습니다. 이 값을 늘리면 더 적은 수의 inode가 생성되므로 inode 테이블이 더 작아집니다. 그러나 이는 파일 시스템이 평균적으로 파일당 더 많은 공간을 낭비한다는 것을 의미합니다. 그래서 그것은 절충안입니다. - 실제로 종료 로그를 사용할 수 있습니다
-O ^has_journal
. 하지만 이 방법을 사용하는 경우 파일 시스템을 읽기 전용으로 마운트하도록 기본 옵션을 설정하는 것이 좋습니다.fstab
또는 파일 시스템에서 기본값 기록을 사용할 수 있습니다tune2fs -E mount_opts=ro
(때때로 이 작업을 수행할 수 없음mkfs
). - 물론 데이터를 아카이브 파일로 압축하여 inode 낭비가 심각한 문제가 되지 않도록 해야 합니다. squashfs 이미지를 생성할 수도 있지만 xz 압축이 더 좋기 때문에 tar.xz 파일을 사용하는 것을 권장합니다.
- 또는
-m
옵션을 사용하여 예약된 블록 수를 줄일 수도 있습니다. 루트에 예약된 백분율을 설정합니다(기본값은 5).mkfs
tune2fs
오직. 0으로 설정하지 마십시오. 파일 시스템을 효율적으로 실행하려면 약간의 공간이 필요합니다.
답변2
스쿼시 FS요구 사항에 잘 맞는 압축 가능한 읽기 전용 파일 시스템으로, 몇 년 동안 커널에 사용되었으며 이미 널리 사용되고 있습니다(예: LiveCD). 사용자 공간 도구에 대한 최신 문서GitHub에서. 문서에서:
Squashfs는 Linux용 고도로 압축된 읽기 전용 파일 시스템입니다. gzip/xz/lzo/lz4 압축을 사용하여 파일, inode 및 디렉터리를 압축합니다. 시스템의 inode는 매우 작으며 모든 블록은 데이터 오버헤드를 최소화하기 위해 압축됩니다. 4K보다 큰 블록 크기, 최대 1Mbyte(기본 블록 크기 128K)를 지원합니다.
Squashfs는 일반적인 읽기 전용 파일 시스템 사용, 아카이브 사용(예: .tar.gz 파일을 사용할 수 있는 상황) 및 낮은 오버헤드가 필요한 제한된 블록 장치/메모리 시스템(예: 임베디드 시스템)을 위해 만들어졌습니다.
답변3
압축된 파일 시스템이 더 나은 서비스를 제공할 수 있습니다.
다양한 Linux 파일 시스템을 압축하는 방법이 있지만( FUSE
가능함) 일단 생성되면 읽기 전용이므로 squashfs
mksquashfs를 사용하여 파일 시스템을 생성하는 것을 고려할 수 있습니다.
Linux는 2.6.something부터 기본 커널에 squashfs를 포함하므로 거의 모든 Linux 상자에서 실행되어야 합니다.
btrfs
즉석 압축이 가능하다고 생각 하지만 직접 사용해 본 적은 없습니다. ZFS
작동합니다. 저는 FreeBSD에서 직접 사용합니다. 하지만 Linux 시스템에서 이를 읽기 전에 약간의 설정이 필요합니다.
로깅이 없는 ext2와 ext4에 대해서는 말할 수 없습니다. 저는 Linux에서 습관적으로 JFS와 XFS를 사용합니다.