Linux 커널은 버전 2.6.33부터 TRIM을 지원하므로 우분투에서 TRIM을 지원해야합니다.
기본적으로 TRIM이 활성화되어 있습니까? 아니면 일부 설정을 변경하거나 추가 소프트웨어를 설치해야 작동합니까? 그렇다면 어떻게?
Linux 커널은 버전 2.6.33부터 TRIM을 지원하므로 우분투에서 TRIM을 지원해야합니다.
기본적으로 TRIM이 활성화되어 있습니까? 아니면 일부 설정을 변경하거나 추가 소프트웨어를 설치해야 작동합니까? 그렇다면 어떻게?
답변:
Ubuntu 14.10 및 15.04에서는 TRIMming이 지원하는 모든 SSD에서 매주 자동으로 발생합니다 fstrim
.
$ tail -n1 /etc/cron.weekly/fstrim
/sbin/fstrim --all || true
15.04부터 Ubuntu는 systemd 및 타이머를 사용합니다 ( man systemd.timer
, Arch wiki )
systemctl list-timers
systemctl status fstrim.timer
Ubuntu 14.04부터 예약 된 TRIM은 Intel, SAMSUNG, OCZ, Patriot 및 Sandisk SSD에 기본적으로 활성화되어 있습니다. 다른 브랜드가있는 경우 다음 명령을 실행하여 공급 업체 확인을 비활성화 할 수 있습니다.
sed -i 's/exec fstrim-all/exec fstrim-all --no-model-check/g' /etc/cron.weekly/fstrim
(또는 파일을 편집 /etc/cron.weekly/fstrim
하고 추가하십시오 --no-model-check
)
TRIM, 수동, 예약 및 자동을 수행하는 세 가지 방법이 있습니다.
우분투에서는 다음과 fstrim
같이 수행 할 수 있습니다 .
sudo fstrim /
그러나 아래 섹션에 설명 된대로 예약 또는 자동 TRIM이 활성화 된 경우에는 필요하지 않습니다.
참고 : 들어 우분투 11.04 및 이전 시스템, fstrim을 사용할 수 없습니다 그래서 당신은 사용해야 wiper.sh
와 함께 제공 hdparm
에/usr/share/doc/hdparm/contrib/wiper.sh.gz
이것은 현재 권장되는 방법이며 Ubuntu 14.04의 기본값마다 활성화 될 예정 입니다. 이전 버전의 우분투 (11.10에서 13.10)에서 수동으로 활성화하는 방법은 다음과 같습니다.
주간 CRON 작업 스크립트 파일을 작성하십시오.
gksudo gedit /etc/cron.weekly/fstrim
파일에 다음 코드를 붙여 넣은 다음 파일을 저장하고 닫습니다.
#! /bin/sh
# By default we assume only / is on an SSD.
# You can add more SSD mount points, separated by spaces.
# Make sure all mount points are within the quotes. For example:
# SSD_MOUNT_POINTS='/ /boot /home /media/my_other_ssd'
SSD_MOUNT_POINTS='/'
for mount_point in $SSD_MOUNT_POINTS
do
fstrim $mount_point
done
위의 내용은 루트 파일 시스템 만 /
SSD에 있다고 가정합니다 . 하나 이상의 SSD에있는 마운트 지점이 더 있으면 SSD_MOUNT_POINTS
코드에 설명 된대로 추가하십시오 .
스크립트를 실행 가능하게 만드십시오.
sudo chmod +x /etc/cron.weekly/fstrim
그리고 마지막으로 테스트하십시오.
sudo /etc/cron.weekly/fstrim
오류가 없으면 cron 작업이 제대로 작동하는 것입니다.
자동 TRIM은 EXT4 파일 시스템과 함께 Ubuntu 10.10 (커널 2.6.33)부터 지원되었습니다. 그러나 모든 삭제 후 실시간으로 TRIM 명령을 SSD로 보내는 것은 일부 드라이브에서 평소보다 삭제 속도가 훨씬 느리다는 것을 인식했습니다. 따라서 크론 작업 (위 설명)을 통한 주간 스케줄 TRIM이 권장됩니다.
드라이브 또는 파티션에서 자동 TRIM을 활성화하려면의 discard
옵션 으로 마운트해야합니다 fstab
. 먼저 fstab을 백업 한 다음 편집을 위해 엽니 다.
sudo cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab
discard
SSD 드라이브 또는 각 파티션의 fstab 옵션 항목 (쉼표로 구분)에 추가하십시오 .
UUID=00000000-0000-0000-0000-000000000000 / ext4 discard,errors=remount-ro 0 1
fstab을 닫고 저장 한 다음 재부팅하면 자동 TRIM이 작동합니다.
TRIM이 작동 중인지 테스트하려면 다음 명령 ( source )을 실행하십시오.
cd / # Replace with SSD file system
sudo dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
sudo hdparm --fibmap tempfile
출력에서 아래 번호를 복사하고 begin_LBA
SSD의 장치 이름을 확인하십시오 ( System->Administration->Disk Utility
예 : sda, sdb, sdc ...).
다음을 실행하되 [ADDRESS]
(begin_LBA) 및 sdX
(SSD 장치 이름)을 위에서 얻은 세부 사항으로 바꾸십시오 .
sudo hdparm --read-sector [ADDRESS] /dev/sdX
출력은 해당 섹터에 대한 긴 문자열이어야합니다.
sudo rm tempfile
sync
hdparm
위 의 명령을 반복하십시오 .
sudo hdparm --read-sector [ADDRESS] /dev/sdX
0 만 받으면 자동 TRIM이 작동하는 것입니다. 그러나 파일을 제거한 후에도 섹터가 비어 있지 않으면 잠시 기다렸다가 명령을 다시 실행하십시오.
/
/boot
/usr
와 /opt
나는 나의 또 다른 하드 디스크를 사용하고 있습니다 /home
. 나는 가서 cd / #sdc
지시를 계속하지만 결코 0을 얻지 못합니다. 미리 감사드립니다!
sync
뒤에 a를 추가 할 수 있습니다 dd
.
암호화를 사용하는 경우 여기에 게시 된 솔루션은 도움이되지 않습니다. 암호화 계층에서도 TRIM 지원을 활성화해야하기 때문입니다. 커널 버전 3.1 이상과 cryptsetup 버전 1.4 이상으로이 작업을 수행 할 수 있으며 둘 다 Ubuntu 12.04에 포함되어 있습니다.
LUKS 암호화 파티션에 대한 TRIM 설정에 대한 내 안내서를 찾으 십시오.
우분투 및 데비안의 LUKS 암호화 파티션에서 TRIM을 활성화하는 방법
이 단계별 안내에서는 cryptsetup 1.4 이상 및 커널 3.1 이상에 대한 암호화 된 SSD 파티션에 대한 TRIM 기술을 활용할 수 있습니다. 이는 번거 로움없는 SSD 경험으로 이어집니다.
"TRIM을 통해 SSD는 가비지 수집 오버 헤드를 처리 할 수 있으며, 그렇지 않으면 관련 블록에 대한 향후 쓰기 작업이 미리 느려지 게됩니다."
설정 예
단일 드라이브로 SSD가 장착 된 노트북, Linux는 LUKS 암호화 논리 파티션을 통해 LVM 스왑 파티션이있는 단일 ext4 LVM 루트 파티션에 설치됩니다.
SSD : / dev / sda
sudo fdisk -l /dev/sda
/dev/sda1 # boot partition (83) (unencrypted, ext4)
/dev/sda2 # extended partition
/dev/sda5 # logical partition (83) with LUKS encryption
ls /dev/mapper
/dev/mapper/sda5_crypt # encrypted LUKS device in physical /dev/sda5 partition
/dev/mapper/volumegroup-root # rootpartition sda5_crypt
/dev/mapper/volumegroup-swap # swap partition sda5_crypt
어떻게
/ etc / fstab 파일에서 암호화 된 LVM 볼륨의 파일 시스템 옵션에 폐기 매개 변수를 추가하십시오. 이렇게하면 LVM 파티션의 파일 시스템이 TRIM을 사용하려는 것으로 인식합니다.
/dev/mapper/volumegroup-root / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
마지막 단계로는 충분하지 않습니다. LUKS가 TRIM 사용을 인식하지 않는 한 보안상의 이유로 LVM 파티션의 파일 시스템에서 오는 모든 TRIM 작업을 효과적으로 차단합니다. LUKS가 LVM 파티션의 폐기 동작을 승인하도록 / etc / crypttab의 cryptdevice 옵션에 폐기 매개 변수를 추가하십시오.
sda5_crypt UUID=e364d03f-[...]6cd7e none luks,discard
initramfs를 다시 빌드하십시오. crypttab 옵션은 저장되어 부팅시 사용됩니다.
sudo update-initramfs -c -k all
재부팅하십시오.
TRIM이 활성화되어 있는지 확인하십시오.
sudo dmsetup table /dev/mapper/sda5_crypt --showkeys
마지막 명령에 이와 같은 결과가 표시되면 (끝 부분에 1 개의 allow_discards) 설정이 완료된 것입니다.
0 77656056 crypt aes-cbc-essiv:sha256 abc[...]c7a0c 0 8:5 2056 1 allow_discards
결과
TRIM이 활성화되었습니다. 번거 로움없는 SSD를 즐기십시오!