SSD固態(tài)驅動器和SD卡的寫入次數(shù)是有限的。為了充分利用這種存儲類型,我們需要進行一些調整以最大限度地延長 SSD 和 SD 卡的使用壽命和性能。
iotop 命令監(jiān)控讀/寫
iotop全稱Input/Output top是一個Linux命令,用于顯示和監(jiān)控Linux磁盤IO的詳細信息,也可以獲取進程IO的使用情況。
它產(chǎn)生類似于top命令的輸出。它通常需要root權限才能運行。系統(tǒng)管理員使用它來跟蹤可能導致高磁盤I/O讀/寫的進程。
可以使用您的Linux發(fā)行版的包管理器安裝iotop命令,安裝完成后運行命令iotop-oPa
監(jiān)控磁盤的IO詳細信息。
sudo apt install iotop #Denbian
sudo yum -y install iotop #CentOS Fedora
iotop -oPa
然后讓iotop
命令監(jiān)控幾分鐘或幾小時,具體取決于磁盤I/O使用的強度。使您可以輕松識別占用磁盤I/O的進程即可。
對于非必要的進程,可以禁止自動啟動,對于必須的進程可以選擇優(yōu)化程序減少對磁盤IO的請求。
例如我們在文章Linux 性能:磁盤I/O是否降低應用程序性能提到的優(yōu)化MySQL減少對磁盤IO的讀寫。
使用mount 命令的noatime掛載選項
在etc/fstab文件中使用mount
命令的noatime
選項停止記錄文件系統(tǒng)的讀取訪問時間。
mount
命令noatime
選項消除了系統(tǒng)對讀取文件時進行時間戳寫入的需要。由于寫入成本非常高,這通常會帶來可觀的性能提升。
etc/fstab文件是文件系統(tǒng)的靜態(tài)掛載表,它包含掛載文件系統(tǒng)的描述信息。當系統(tǒng)啟動時系統(tǒng)將會讀取此文件掛載設備。
請使用你喜歡的文本編輯器編輯etc/fstab
。在本教程中我們使用vim編輯文件etc/fstab
,修改完成后保存文件并退出vim。
sudo vim etc/fstab
/dev/sdx / ext4 discard,noatime,errors=remount-ro 0 1
etc/fstab
將臨時目錄掛載為tmpfs
tmpfs全稱Temporary File System,是Unix/Linux操作系統(tǒng)中實現(xiàn)的臨時文件存儲規(guī)范。
它雖然是一個可掛載的文件系統(tǒng),但數(shù)據(jù)存儲在內(nèi)存中,而不是持久性存儲設備中。
tmpfs文件系統(tǒng)的結構類似于RAM磁盤,它顯示為虛擬磁盤驅動器并托管磁盤文件系統(tǒng)。
如果您的系統(tǒng)有足夠的內(nèi)存,您可以將一些臨時目錄掛載為tmpfs。這將會減少對SSD的不必要寫入。請使用你喜歡的文本編輯器,再次編輯etc/fstab
。
以下etc/fstab
文件會將tmpfs設備掛載在/tmp和/var/tmp目錄,最后還使用noatime掛載選項減少寫入。
sudo vim etc/fstab
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
etc/fstab
避免頻繁使用交換空間
這是對使用交換分區(qū)的系統(tǒng),對SSD和SD卡推薦的調整。這將減少系統(tǒng)的swappiness值,從而減少磁盤I/O操作。
在降低系統(tǒng)的swappiness值之前請先閱讀教程Linux性能:為什么你應該添加交換空間swap。
如果您有足夠的可用內(nèi)存并了解風險,則可以完全避免添加交換空間或使用交換空間。
您還可以使用systemd-swap僅在必要時啟用自動交換。另外閱讀zram-generator或zram-swap。
如果需要降低swappiness值,請在Debian/Ubuntu/Red Hat/CentOS使用vim編輯器修改etc/sysctl.conf文件。
sudo vim etc/sysctl.conf
vm.swappiness=10
減少日志寫入
禁用Apache、Nginx、郵件服務器和其它服務的訪問日志。系統(tǒng)穩(wěn)定后,您可以將系統(tǒng)日志級別從info降級到warn或者error級別。
或者,如果你不在意丟失日志文件,甚至可以將tmpfs臨時文件系統(tǒng)掛載在/var/log目錄。
請再次使用你喜歡的文本編輯器,編輯etc/fstab文件添加以下掛載tmpfs設備的描述信息。
sudo vim etc/fstab
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
將更多具有大量I/O的目錄掛載到tmpfs
例如,將WordPress 緩存目錄從磁盤掛載到tmpfs。運行命令tmpfs /full/path/to/wp-content/cache tmpfs defaults, size=1G 0 0
。
tmpfs /full/path/to/wp-content/cache tmpfs defaults, size=1G 0 0
profile-sync-daemon 僅適用于桌面
如果您沒有優(yōu)化Web服務器并使用Firefox、Chrome等,請安裝profile-sync-daemon。
Profile-sync-daemon (PSD) 是一個小型偽守護程序,旨在管理您在tmpfs中的瀏覽器配置文件,并定期將其同步回您的物理磁盤HDD或者SSD。
I/O 輸入輸出調度器
考慮從CFQ切換到NOOP或Deadline,兩者都在SSD和SD卡上提供更好的性能。要查看當前使用I/O調度器。
請運行命令cat /sys/block/sdX/queue/scheduler
。記得將替換sdX替換為你的SSD設備的名稱,X不是磁盤分區(qū),例如是sda,sdb。
例如命令echo "deadline" | sudo tee /sys/block/sda/queue/scheduler
修改I/O 輸入輸出調度器為deadline。
cat /sys/block/sdX/queue/scheduler
echo "deadline" | sudo tee /sys/block/sda/queue/scheduler
TRIM
TRIM允許Linux丟棄SSD不再使用的數(shù)據(jù)塊。因此刪除文件時,SSD可以將數(shù)據(jù)寫入塊,而無需執(zhí)行繁瑣的刪除過程。
從本質上講,TRIM可確保你的SSD的性能不會因為使用久后而導致性能降低太多。
要在Linux啟用TRIM。首先請檢查etc/fstab
文件確認你已為SSD設備使用掛載選項discard
。運行命令cat etc/fstab
。
然后檢查您的SSD或SD卡是否支持TRIM,運行命令sudo hdparm -I /dev/sdx | grep "TRIM supported"
,Sd的X不是磁盤分區(qū),例如是sda,sdb。
sudo hdparm -I /dev/sdx | grep "TRIM supported"
sudo systemctl status fstrim.timer
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
● fstrim.timer - Discard unused blocks once a week
Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Sun 2023-01-01 21:43:57 HKT; 1h 16min left
Trigger: Mon 2023-01-02 00:00:00 HKT; 3h 32min left
Triggers: ● fstrim.service
Docs: man:fstrim
Jan 01 21:43:57 myfreax systemd[1]: Started Discard unused blocks once a week.
進一步提高SSD和SD卡的性能/壽命
使用更大的SD卡。 寫入根據(jù)存儲大小擴展,因此存儲越大,重復寫入相同區(qū)域的次數(shù)越少,意味著磨損越少。
最后一分錢一分貨,便宜的SSD和SD卡通常不會使用長久,也不會有那么好的性能。
要檢查SSD和SD卡的壽命,請運行命令sudo smartctl -a /dev/sdxx
,sdxx
是你SSD/SD卡的分區(qū)在。
要關注SSD的壽命可以只看行SMART overall-health self-assessment test result: PASSED?;蛘哌\行命令sudo smartctl -H /dev/sdb4
。
sudo yum install smartmontools -y
sudo apt-get install smartmontools -y
sudo smartctl -a /dev/sdxx
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.15.0-56-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Samsung based SSDs
Device Model: Samsung SSD 850 EVO 120GB
Serial Number: S21VNSAG415755B
LU WWN Device Id: 5 002538 da024519b
Firmware Version: EMT01B6Q
User Capacity: 120,034,123,776 bytes [120 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2, ATA8-ACS T13/1699-D revision 4c
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Sun Jan 1 20:35:52 2023 HKT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
-
Linux
+關注
關注
87文章
11213瀏覽量
208736 -
SD卡
+關注
關注
2文章
558瀏覽量
63753 -
SSD
+關注
關注
20文章
2839瀏覽量
117137 -
命令
+關注
關注
5文章
678瀏覽量
21966
發(fā)布評論請先 登錄
相關推薦
評論