아치리눅스에서 SSD TRIM 사용하기

2015-12-22

archlinux ssd trim linux note update tip

하드디스크에서 파일을 지우면, 디스크에서 완전히 파일을 지우지 않고 위치를 알려주는 연결만 끊었습니다. 그리고 다른 새 파일을 저장할 때, 덮어쓰기 했습니다. 완전히 지우고 새로 저장 하기엔 시간이 오래 걸리는 것이 그 이유입니다. 실제로 Windows 나 리눅스에서 파일을 지우거나 디스크를 “빠른 포맷” 으로 포맷하면, 파일이 완전히 지워지지 않고, 연결만 끊김니다. 나중에 덮어씌우면 되니까요.

하드디스크와 달리, SSD 는 덮어쓰기 기능이 없습니다. 그래서 실제로 파일을 완전히 지워주고 새로 저장해 줘야 합니다. 그런대 기존 OS 에서는 하드디스크에서 하던 것처럼 연결만 끊어서 SSD 에 불필요한 파일이 쌓이게 되고, SSD 의 성능 감소로 이어지게 됩니다. 그래서 파일을 지울때 연결만 지우는 것이 아닌 실제 파일까지 모두 지우는 TRIM 기능이 필요합니다.

Windows 의 경우 7 부터 기본적으로 이 기능이 켜져 있고, 리눅스의 경우는 Ubuntu 나 Linux Mint 가 최근 기본적으로 켜져서 나온다고 합니다. 아치 리눅스의 경우는, 아치를 기반으로 하는 배포판의 경우는 켜져 있는 경우도 있지만, 다른 아치리눅스 배포판이나 원래의 아치리눅스의 경우, 그렇치 않은 경우가 많으므로. 이번 포스트에서 SSD TRIM 을 아치리눅스에서 하는 방법을 알아봅시다.

수동으로 TRIM 하기

fstrim을 이용하여 TRIM 합니다.

sudo fstrim <TRIM할 리눅스 파티션> -v

예를들어 / 파티션을 TRIM 하는경우 아래와 같이 실행합니다.

sudo fstrim / -v

마운트 옵션 변경하기

대부분의 리눅스 배포판에서 사용되는 방법입니다. /etc/fstab을 수정합니다. 먼저 TRIM 할 파티션의 UUID 를 알아야 합니다. 아래 명령으로 UUID 를 알아냅니다.

lsblk -f
youngbin@youngbin-ultrabook ~> lsblk -f
NAME   FSTYPE LABEL        UUID                                 MOUNTPOINT
sda                                                             
├─sda1 ntfs   복구         66A8C7F0A8C7BCB5                     
├─sda2 vfat                1AC9-8CF1                            
├─sda3                                                          
├─sda4 ntfs   WINDOWS_MAIN 38B8006AB8002948                     
├─sda5 vfat                59C9-02ED                            /boot/efi
└─sda6 ext4                f50f4abf-fdcc-4263-9a5a-9ce0f9e080d8 /
sdb  

텍스트 에디터로 /etc/fstab 을 엽니다.

sudo gedit /etc/fstab

원하는 파티션에, discard 옵션을 추가합니다. discard 옵션은 파일이 지워질 때마다 TRIM 이 실행되도록 해 주는 옵션입니다.

수정 전 예시

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
#
UUID=f50f4abf-fdcc-4263-9a5a-9ce0f9e080d8 / ext4 defaults,rw,noatime 0 1
UUID=59C9-02ED /boot/efi vfat defaults,rw,noatime 0 0

수정 후 예시

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
#
UUID=f50f4abf-fdcc-4263-9a5a-9ce0f9e080d8 / ext4 defaults,rw,noatime,discard 0 1
UUID=59C9-02ED /boot/efi vfat defaults,rw,noatime 0 0

저장 후 재부팅 합니다.

systemd 서비스 이용.

제일 간단한 방법이 아닐까 싶습니다. 아치리눅스에서 제공하는 fstrim.service 또는, fstrim.timer 를 켜주면 됩니다. 아래 명령어를 이용해 켤 수 있습니다.

부팅할 때 마다 TRIM 하려면, fstrim.service 를 켭니다.

sudo systemctl enable fstrim.service

1주일에 한번씩 TRIM 하려면, fstrim.timer 를 켭니다.

sudo systemctl enable fstrim.timer

지금까지, 아치리눅스에서 TRIM 켜는 법을 알아봤습니다. 리눅스에서 SSD 를 사용 하신다면 TRIM 이 켜져있나 확인 하시고, 꼭 켜시기 바랍니다.

참고자료

광고 차단 소프트웨어를 사용하고 계신 것 같습니다. 혹시 글이 마음에 들었다면, 광고 차단을 해제해 주시거나 후원을 해 주시는 것은 어떤가요?

It seems like you're using ad block software, If you like the post, Would you like to disable that or donate me a bit?

AUR 에 아치리눅스 패키지 올리기

2015-12-13

아치리눅스에서 패키지를 설치하다 보면, 공식 저장소나 공식 미러가 아닌, AUR(Arch User Repository) 에서 패키지를 받는 경우도 있습니다. 보통 공식 저장소에서 제공되지 않는 것들을 AUR 을 통해 받습니다. 이러한 패키지들은 사용자들이 패키징해서 올려둔 것인데, 이 포스트를 통해 AUR 에 패키지를(정확히는 AUR 에 패키지 빌드에 필요한 사항을 기술한 파일인 PKGBUILD 라는 파일 및 스크립트를) 한번 올려봅시다.

Ubuntu Server 에 Docker 설치하고 설정하기.

2015-11-16

필자는 AWS EC2 VM에 도커(Docker)를 한번 설치하여, 이것저것 개발한 웹 앱과 서버 등을 돌려보기로 했습니다. 그러면서 포스팅으로도 정리하려 합니다. 먼저, 설치/설정을 대략 했는데, 이 포스트로 그 과정을 정리합니다. Docker?? 도커(Docker)는, 리눅스 컨테이너 기술을 기반으로, 앱을 배포할 때 필요한 모든 것을 하나의 컨테이너에 담아 OS에 상관없이 앱을 패키징하여 배포할 수 있도록 해 주는 프로그램 입니다.

Shoes

Fish 셸 설치하고, Oh My Fish 로 커스터마이징 하기

2015-07-30

필자는 기본적으로 리눅스 배포판에 있는 bash 를 사용하다가, 전에 한번 zsh 로 갈아탔고. 이번에는, fish 라는 셸로 갈아 탔습니다. 주변 친구 몇명이 쓰길래, 한번 써보 …