<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Skyline</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Skyline"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Skyline"/>
	<updated>2026-05-25T23:59:09Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%BD%E3%83%AA%E3%83%83%E3%83%89%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96&amp;diff=22218</id>
		<title>ソリッドステートドライブ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%BD%E3%83%AA%E3%83%83%E3%83%89%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96&amp;diff=22218"/>
		<updated>2021-11-02T13:45:57Z</updated>

		<summary type="html">&lt;p&gt;Skyline: /* 欠点 */ 容量あたりの単価を更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ストレージ]]&lt;br /&gt;
[[en:Solid State Drives]]&lt;br /&gt;
[[it:Solid State Drives]]&lt;br /&gt;
[[ru:Solid State Drives]]&lt;br /&gt;
[[zh-hans:Solid State Drives]]&lt;br /&gt;
[[zh-hant:Solid State Drives]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ソリッドステートドライブ/NVMe}}&lt;br /&gt;
{{Related|ソリッドステートドライブ/メモリセルの消去}}&lt;br /&gt;
{{Related|ベンチマーク/データストレージデバイス}}&lt;br /&gt;
{{Related|パフォーマンスの最大化#ストレージデバイス}}&lt;br /&gt;
{{Related|Flashcache}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
この記事では SSD (solid state drive) について Linux と関係する様々なことを記述していますが、一般的な根本原則やキーポイントは Windows ファミリーや macOS など他のオペレーティングシステムで SSD を使っているユーザーも応用することができます。さらにそのような情報に加えて、Linux ユーザーはここに書かれた方法で SSD を最適化・調整することが可能です。&lt;br /&gt;
&lt;br /&gt;
==概要==&lt;br /&gt;
&lt;br /&gt;
===イントロダクション===&lt;br /&gt;
&lt;br /&gt;
Solid State Drive (SSD) は PnP デバイスではありません。パーティションアライメント、ファイルシステムの選択、TRIM サポートなどの特別事項は SSD の性能を最適化するために必要になります。この記事には Linux で SSD から最高の性能を引き出すための情報を集めています。コンテンツはトピックでまとめられており、必ずしも系統的または時系列順に並べられているわけではないので、実際に推奨事項をやろうとする前に記事全体を読むと良いでしょう。&lt;br /&gt;
&lt;br /&gt;
{{Note|この記事は Linux を動作させているユーザーを対象にしていますが BSD, macOS, Windows など他のオペレーティングシステムを使っているユーザーにも中身がほぼ全て当てはまります。}}&lt;br /&gt;
&lt;br /&gt;
===HDD に対する利点===&lt;br /&gt;
&lt;br /&gt;
*高速な読み込み速度 - 最新のデスクトップ HDD のおよそ2-3倍高速 (7,200 RPM で SATA2 インタフェースを使用した場合に比べて)。&lt;br /&gt;
*一定の読み込み速度 - デバイス全体で読み込み速度の低下がありません。HDD はドライブのヘッドが外縁から HDD プラッタの中心に移動するにつれパフォーマンスがだんだん低下します。&lt;br /&gt;
*極小のアクセス時間 - HDD よりおおよそ100倍高速。例えば、デスクトップ HDD の 12-20 ms (12,000-20,000 us) に対して 0.1 ms (100 us)。&lt;br /&gt;
*高度な信頼性。&lt;br /&gt;
*可動部が存在しない。&lt;br /&gt;
*熱の発生が少ない。&lt;br /&gt;
*消費電力が少ない - HDDが回転速度によって 10-30ワット消費するのに対して、SSDはアイドル状態で1ワット、読み書き中は1-2ワット。&lt;br /&gt;
*軽量 - モバイル端末のストレージに最適。&lt;br /&gt;
&lt;br /&gt;
===HDDに対する欠点===&lt;br /&gt;
&lt;br /&gt;
*容量単位のコスト (1GBあたり10から20セント近く、それに対してHDDでは1GBあたり1または2セント)。&lt;br /&gt;
*市販されているモデルの容量が HDD よりも少ない。&lt;br /&gt;
*セルの大きさによって回転メディアと異なるファイルシステムの最適化が必要。現代の OS はアクセスを最適化するためにフラッシュ変換レイヤを使用しており生のフラッシュアクセスは遮蔽されている。&lt;br /&gt;
*パーティションとファイルシステムを SSD の特性にあわせて調整する必要がある。ページサイズや消去ページサイズは自動検出されません。&lt;br /&gt;
*セルは劣化します。一般的に、50nm プロセスによる民生の MLC セルは10000回の書き込み、35nm では5000回の書き込み、25nm では3000回の書き込みが出来ます（小さくなればなるほど高密度で値段が安くなります）。書き込みが適当に散らばっていて、小さすぎず、セルにピッタリはまるようになったときに、容量の倍数である最終的な SSD の書き込みボリュームに移されます。日々の書き込みボリュームは耐用年数から差引かなければなりません。ただし、最新のハードウェアで行われた試験 [https://techreport.com/review/25889/the-ssd-endurance-experiment-500tb-update][https://techreport.com/review/26523/the-ssd-endurance-experiment-casualties-on-the-way-to-a-petabyte][https://techreport.com/review/27436/the-ssd-endurance-experiment-two-freaking-petabytes][https://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead] では SSD の劣化は無視できるほどで、人為的に書き込みボリュームを多くしても SSD の耐用年数は HDD と並ぶとされています。&lt;br /&gt;
*ファームウェアやコントローラーが複雑。たまにバグが存在することもあります。最新のコントローラーは HDD と匹敵するほどの電力を消費します。コントローラーにはガベージコレクションの付いたログ構造化ファイルシステムに相当するものが[https://lwn.net/Articles/353411/ 実装されています]。回転メディアにあわせて作られた SATA コマンドは変換されます。ファームウェアによってはオンザフライで圧縮を行います。反復書き込みをフラッシュ領域全体に散らばらせて、特定のセルがすぐに劣化するのをふせぎます。また、書き込みをまとめることで小さな書き込みがそれと同じ回数大きなセルを消去することにならないようにしています。最後にデータを含むセルを移動するので時間の経過によってセルが中身を失うことはありません。&lt;br /&gt;
*ディスクが満杯になるにつれてパフォーマンスが低下します。一般にガベージコレクションはあまり上手く実装されておらず、空き領域が完全に空のセルに集められているとは限りません。&lt;br /&gt;
&lt;br /&gt;
===購入前に考慮すべき事項===&lt;br /&gt;
&lt;br /&gt;
最新の SSD を買う前に見ておくべきポイントがいくつか存在します。&lt;br /&gt;
*[[wikipedia:TRIM|TRIM]] のネイティブサポートは不可欠です。SSD の寿命を伸ばして、少しずつおこる書き込み操作のパフォーマンスの減少を少なくします。&lt;br /&gt;
*適切な容量の SSD を買うことが重要です。カーネルが SSD パーティションを効率的に利用するために占有率は75%以下が望まれます。&lt;br /&gt;
&lt;br /&gt;
==SSD のパフォーマンスを最大化させるヒント==&lt;br /&gt;
=== パーティションアライメント ===&lt;br /&gt;
消去ブロックサイズに揃えたパーティションを使用することを強く推奨します。昔は、パーティション分けをするときに手動で計算して設定する必要がありました。現在では一般的なパーティションツールのほとんどが（最新バージョンを使っていれば）パーティションアライメントを自動的に行います:&lt;br /&gt;
* fdisk&lt;br /&gt;
* gdisk&lt;br /&gt;
* gparted&lt;br /&gt;
* parted&lt;br /&gt;
&lt;br /&gt;
パーティションが調整されているか確認するには、以下のように {{ic|/usr/bin/blockdev}} を使って問い合わせて下さい。&#039;0&#039; が返ってくれば、パーティションは揃えられています:&lt;br /&gt;
 # blockdev --getalignoff /dev/&amp;lt;partition&amp;gt;&lt;br /&gt;
 0&lt;br /&gt;
&lt;br /&gt;
=== TRIM ===&lt;br /&gt;
&lt;br /&gt;
ほとんどの SSD は長期間パフォーマンスを維持するために [[wikipedia:TRIM|ATA_TRIM コマンド]]をサポートしています。ベンチマーク前後などの詳細は、[https://sites.google.com/site/lightrush/random-1/howtoconfigureext4toenabletrimforssdsonubuntu この] チュートリアルを見て下さい。&lt;br /&gt;
&lt;br /&gt;
Linux カーネルバージョン 3.8 現在、次のファイルシステムが TRIM をサポートしています: [[Ext4]], [[Btrfs]], [[JFS]], VFAT, [[XFS]], [[F2FS]]。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|ntfs-3g}} バージョン 2015.3.14 から、[[NTFS]] ファイルシステムも TRIM がサポートされています [http://permalink.gmane.org/gmane.comp.file-systems.ntfs-3g.devel/1101]。&lt;br /&gt;
&lt;br /&gt;
VFAT はマウントフラグ {{ic|discard}} によって TRIM をサポートしています、カーネル4.19以降は{{ic|fstrim}}もサポートしています。&lt;br /&gt;
&lt;br /&gt;
この記事の[[#ファイルシステムの選択|ファイルシステムの選択]]のセクションにさらに詳しく書かれています。&lt;br /&gt;
&lt;br /&gt;
==== TRIM のサポートを確認する ====&lt;br /&gt;
&lt;br /&gt;
 # hdparm -I /dev/sda |grep TRIM&lt;br /&gt;
         *    Data Set Management TRIM supported (limit 1 block)&lt;br /&gt;
         *    Deterministic read data after TRIM&lt;br /&gt;
&lt;br /&gt;
&amp;quot;limit 1 block&amp;quot; や &amp;quot;limit 8 block&amp;quot; の意味は、[[wikipedia:TRIM#ATA]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== fstrim で定期的に TRIM を適用する ====&lt;br /&gt;
&lt;br /&gt;
{{Note|この方法は VFAT ファイルシステムでは使えません。}}&lt;br /&gt;
&lt;br /&gt;
({{Pkg|base}} と {{Grp|base-devel}} に含まれている) {{Pkg|util-linux}} パッケージには {{ic|fstrim.service}} と {{ic|fstrim.timer}} の [[systemd]] ユニットファイルが入っています。このタイマーを[[systemd#ユニットを使う|有効化]]すれば毎週サービスが実行され、discard をサポートしているデバイス上のマウント済みファイルシステム全てが trim されます。&lt;br /&gt;
&lt;br /&gt;
タイマーは最後に実行してから一週間経過したことを知るために (最初に実行したときに作成される) {{ic|/var/lib/systemd/timers/stamp-fstrim.timer}} のタイムスタンプを使います。そのため、何度も頻繁に実行される恐れはありません。&lt;br /&gt;
&lt;br /&gt;
{{ic|journalctl}} や {{ic|systemctl status}} コマンドを使うことでユニットの活動状態を調べることができます:&lt;br /&gt;
{{hc|# journalctl -u fstrim|2=&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;shows several log entries if enabled&amp;gt;&lt;br /&gt;
...}}&lt;br /&gt;
{{hc|# systemctl status fstrim|2=&lt;br /&gt;
● fstrim.service - Discard unused blocks&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/fstrim.service; static; vendor preset: disabled)&lt;br /&gt;
   Active: inactive (dead) since lun. 2015-06-08 00:00:18 CEST; 2 days ago&lt;br /&gt;
  Process: 18152 ExecStart=/sbin/fstrim -a (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Main PID: 18152 (code=exited, status=0/SUCCESS)&lt;br /&gt;
&lt;br /&gt;
juin 08 00:00:16 arch-clevo systemd[1]: Starting Discard unused blocks...&lt;br /&gt;
juin 08 00:00:18 arch-clevo systemd[1]: Started Discard unused blocks.&lt;br /&gt;
}}&lt;br /&gt;
{{Note|タイマーを調査したい時は {{ic|.timer}} 拡張子を指定するようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
タイマーの実行間隔を変更したい場合は、[[Systemd#ユニットファイルの編集|ユニットファイルを編集]]してください。&lt;br /&gt;
&lt;br /&gt;
==== マウントフラグで TRIM を有効にする ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|discard}} フラグを使ってパーティションをマウントする前に SSD が TRIM をサポートしていることを確認してください。そうしないとデータが喪失する可能性があります。残念ながら SSD の TRIM の実行に関する BIOS の品質はバラバラであり、ファイルシステム開発者 Theodore Ts&#039;o は {{ic|discard}} マウントフラグの使用を[http://thread.gmane.org/gmane.comp.file-systems.ext4/41974 推奨していません] 。あなたの使用しているハードウェアについて不安があるのならば、代わりに [[#fstrim で定期的に TRIM を適用する|fstrim で定期的に TRIM を適用する]]ようにしてください。また、TRIM の他の[[WikiPedia:Trim_(computing)#Shortcomings|欠点]]として、TRIM コマンドを実行すると特定のデバイス (特に Samsung 8* シリーズ) で深刻なデータ障害が発生する可能性があります [https://blog.algolia.com/when-solid-state-drives-are-not-that-solid/]。データの破損が確認された後 [https://github.com/torvalds/linux/blob/e64f638483a21105c7ce330d543fa1f1c35b5bc7/drivers/ata/libata-core.c#L4109-L4286]、Linux カーネルは多数の [https://github.com/torvalds/linux/blob/e64f638483a21105c7ce330d543fa1f1c35b5bc7/drivers/ata/libata-core.c#L4227 デバイス] で TRIM コマンドの実行をブラックリスト化しています (2015年7月現在)。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/fstab}} のエントリで {{ic|discard}} オプションを使うことで TRIM コマンドが有効になります:&lt;br /&gt;
&lt;br /&gt;
 /dev/sda2  /boot       ext4  defaults,noatime,&#039;&#039;&#039;discard&#039;&#039;&#039;   0  2&lt;br /&gt;
 /dev/sda1  /boot/efi   vfat  defaults,noatime,&#039;&#039;&#039;discard&#039;&#039;&#039;   0  2&lt;br /&gt;
 /dev/sda3  /           ext4  defaults,noatime,&#039;&#039;&#039;discard&#039;&#039;&#039;   0  2&lt;br /&gt;
&lt;br /&gt;
TRIM の一番大きな恩恵は速度です。SSD は効率的に [https://arstechnica.com/gadgets/2015/04/ask-ars-my-ssd-does-garbage-collection-so-i-dont-need-trim-right/ ガーベジコレクション] を行えるようになります。ただし、効果はモデルによって異なり、初期に製造された SSD の場合、逆効果が現れることもあります。このため、ディストリビューションによっては TRIM を使用しないように決定したところもあります (例えば Ubuntu。[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTUxOTY この記事] や [https://blueprints.launchpad.net/ubuntu/+spec/core-1311-ssd-trimming 関連するブループリント] を参照)。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* SSD でブロックデバイス暗号化を使っている場合 TRIM はデフォルトでは有効になりません。詳しくは [[Dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート|Dm-crypt/SSD の TRIM のサポート]]を参照。&lt;br /&gt;
* {{ic|fstrim}} を定期的に実行している場合 {{ic|discard}} フラグは必要ありません。&lt;br /&gt;
* ext3 の root パーティションで {{ic|discard}} フラグを使用すると読み取り専用でマウントされます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== tune2fs で TRIM を有効にする (非推奨) ====&lt;br /&gt;
&lt;br /&gt;
tune2fs を使って静的に trim フラグを設定することができます:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -o discard /dev/sd&#039;&#039;&#039;XY&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|この方法を使うと {{ic|mount}} で {{ic|discard}} オプションが[https://bbs.archlinux.org/viewtopic.php?id&amp;amp;#61;137314 現れなくなります]。}}&lt;br /&gt;
&lt;br /&gt;
==== LVM で TRIM を有効にする ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lvm/lvm.conf}} で {{ic|issue_discards}} オプションを有効にしてください。&lt;br /&gt;
&lt;br /&gt;
==== dm-crypt で TRIM を有効にする ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/crypttab}} を設定して SSD 上の暗号化されたブロックデバイスのオプションのリストに {{ic|discard}} を含めて下さい。この discard オプションは discard リクエストが暗号化されたブロックデバイスを通過するのを許可します。これによって SSD ストレージのパフォーマンスは向上しますが、セキュリティに影響があります。[[Dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート|このセクション]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== I/O スケジューラー ===&lt;br /&gt;
&lt;br /&gt;
デフォルトの [[wikipedia:CFQ|CFQ]] (Completely Fair Queuing) スケジューラから [[wikipedia:NOOP_scheduler|NOOP]] または [[wikipedia:Deadline_scheduler|Deadline]] に切り替えたほうが良いでしょう。後者の2つは SSD のパフォーマンスを加速させます。例えば、NOOP スケジューラは全ての I/O リクエストに対して、ディスクに物理的に近いものを並び替えたりグループ化することなく、一つのシンプルなキューを実行します。SSD においては全てのセクタでシーク時間は同じであり、シーク時間に基づいて I/O キューを並び替える必要性には説得力がありません。&lt;br /&gt;
&lt;br /&gt;
Arch ではデフォルトで CFQ スケジューラが有効にされています。{{ic|/sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler}} の中身を見て確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler|&lt;br /&gt;
noop deadline [cfq]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
表示されているスケジューラの中で角括弧で囲まれているのが現在使われているスケジューラです。&lt;br /&gt;
&lt;br /&gt;
ユーザーは再起動することなくスケジューラを変更することができます:&lt;br /&gt;
&lt;br /&gt;
 # echo noop &amp;gt; /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 $ sudo tee /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler &amp;lt;&amp;lt;&amp;lt; noop&lt;br /&gt;
&lt;br /&gt;
この方法は永続的ではありません (再起動で変更は失われます)。ファイルの中身をもう一度見て &amp;quot;noop&amp;quot; が使われるようになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== カーネルパラメータ (シングルデバイス) ====&lt;br /&gt;
&lt;br /&gt;
システムの唯一のストレージデバイスが SSD である場合、{{ic|1=elevator=noop}} [[カーネルパラメータ]]でシステム全体の I/O スケジューラを設定できます。&lt;br /&gt;
&lt;br /&gt;
====1つのデバイスまたは HDD/SSD 混合環境で udev を使って設定する====&lt;br /&gt;
&lt;br /&gt;
上の方法は確かに動作しますが、あくまで回避策と考えられています。つまり、デバイスのスケジューラを一番最初に実行するシステムを使うのが好ましいでしょう。この場合、それは udev で、設定するのに必要なのはシンプルな [[udev]] ルールだけです。&lt;br /&gt;
&lt;br /&gt;
設定するには、以下を作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/60-schedulers.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# set deadline scheduler for non-rotating disks&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;sd[a-z]&amp;quot;, ATTR{queue/rotational}==&amp;quot;0&amp;quot;, ATTR{queue/scheduler}=&amp;quot;deadline&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Deadline/CFQ をお望みのスケジューラに設定してください。次に起動した時に変更が適用されるはずです。新しいルールが適用されているか確認するには:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler  # where &#039;&#039;&#039;X&#039;&#039;&#039; is the device in question&lt;br /&gt;
&lt;br /&gt;
{{Note|上記の例で udev ルールの名前に60を使っていますが、終わりが {{ic|.rules}} であればどんな名前でも付けられます。}}&lt;br /&gt;
&lt;br /&gt;
=== SSD のスワップ領域 ===&lt;br /&gt;
&lt;br /&gt;
SSD 上にスワップパーティションを配置することが可能です。最新のデスクトップではメモリが2ギガ以上積まれておりスワップはほとんど使いません。ただしハイバネート機能を利用するシステムの場合は別です。以下のようにシステムの &amp;quot;swappiness&amp;quot; を減らすことで SSD にあるスワップへの書き込みを減らすことが推奨されます:&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
[[パフォーマンスの最大化#Swappiness|パフォーマンスの最大化]]の記事で推奨されているように行うこともできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/99-sysctl.conf|2=&lt;br /&gt;
vm.swappiness=1&lt;br /&gt;
vm.vfs_cache_pressure=50&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Hdparm で &amp;quot;frozen&amp;quot; 状態と表示される ===&lt;br /&gt;
&lt;br /&gt;
マザーボードの BIOS は初期化時に取り付けられたストレージデバイスに &amp;quot;security freeze&amp;quot; コマンドを実行することがあります。同様に SSD (や HDD) の BIOS もファクトリーにおいて &amp;quot;security freeze&amp;quot; に設定されていることがあります。どちらにしても、以下の出力のようにデバイスのパスワードセキュリティ設定が &amp;quot;frozen&amp;quot; になります:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=# hdparm -I /dev/sda |output=&lt;br /&gt;
 Security: &lt;br /&gt;
 	Master password revision code = 65534&lt;br /&gt;
 		supported&lt;br /&gt;
 	not	enabled&lt;br /&gt;
 	&#039;&#039;&#039;not	locked&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;frozen&#039;&#039;&#039;&lt;br /&gt;
 	not	expired: security count&lt;br /&gt;
 		supported: enhanced erase&lt;br /&gt;
 	4min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT. }}&lt;br /&gt;
&lt;br /&gt;
デバイスのフォーマットやオペレーティングシステムのインストールといった操作はこの &amp;quot;security freeze&amp;quot; の影響を受けません。&lt;br /&gt;
&lt;br /&gt;
上記の出力はデバイスが起動時に HDD パスワードによってロックされていないこと、そして凍結状態によってデバイスを (パスワードを設定してデバイスをロックさせてしまうような) マルウェアから保護していることがわかります。&lt;br /&gt;
&lt;br /&gt;
凍結状態のデバイスにパスワードを設定したい場合、それに対応しているマザーボード BIOS が必要です。[[Wikipedia:Hardware-based_full_disk_encryption|ハードウェア暗号化]]に必須なので、ノートパソコンでは大抵サポートされていますが、デスクトップやサーバーのボードではサポートがあるかどうかはっきりしないことがあります。例えば、Intel DH67CL/BL マザーボードの場合、設定にアクセスするには物理的なジャンパによってマザーボードを &amp;quot;maintenance mode&amp;quot; に設定する必要があります ([https://sstahlman.blogspot.in/2014/07/hardware-fde-with-intel-ssd-330-on.html?showComment=1411193181867#c4579383928221016762], [https://communities.intel.com/message/251978#251978] を参照)。&lt;br /&gt;
&lt;br /&gt;
{{Warning|よくわからないときは {{ic|hdparm}} を使って上記のロックセキュリティ設定を変更しないで下さい。}}&lt;br /&gt;
&lt;br /&gt;
SSD を消去するときは、[[ディスクの完全消去#hdparm]] や[[#SSD_Memory_Cell_Clearing|下のセクション]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== SSD Memory Cell Clearing ===&lt;br /&gt;
&lt;br /&gt;
時々、SSD のセルを完全にリセットしてデバイスにインストールした時と同じ初めの状態にすることで [https://www.anandtech.com/show/2738/8 製造時の書き込みパフォーマンス] を取り戻したいと思うことがあるかもしれません。SSD の書き込みパフォーマンスはネイティブの TRIM サポートを使っていても時間経過で落ちていきます。TRIM はファイル削除に対するセーフガードとして働くだけで、増加保存などの代わりにはなりません。&lt;br /&gt;
&lt;br /&gt;
リセットは [[ソリッドステートドライブ/メモリセルの消去|SSD メモリセルの消去]]の wiki 記事に書かれている3つのステップで簡単に行なえます。何らかの理由で SSD の BIOS を使わずにディスクのデータを消去したい場合は[[ディスクの完全消去#フラッシュメモリ]]を読んでください。&lt;br /&gt;
&lt;br /&gt;
==SSD の読み書きを最小化するヒント==&lt;br /&gt;
&lt;br /&gt;
SSD の使用で一番重要なテーマは読み書きが多い操作を SSD の代わりに RAM (Random Access Memory) や物理 HDD に配置するという&#039;シンプリシティ&#039;でしょう。そうすることで SSD をより長生きさせることができます。これは主として巨大な消去ブロックサイズのためで (場合によっては 512 KiB)、多数の小さな書き込みは大きな効果的な書き込みになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|書き込み増幅率が平凡な 10x で、書き込み/消去サイクルが標準的な 10000 である、32GB の SSD の場合、毎日 10GB のデータ書き込みを行うと、8年間で寿命が尽きるとされます。この数字はもっと容量が大きい SSD を使ったり書き込み増幅が少ない最新のコントローラを使うことで改善されます。また、ディスクの書き込みを制限するのにどの方法が必要なのか考えるときは [https://techreport.com/review/25889/the-ssd-endurance-experiment-500tb-update] を比較してください。}}&lt;br /&gt;
&lt;br /&gt;
プログラムがディスクにどれだけ書き込んでいるか確認するには {{ic|$ iotop -oPa}} を使ってディスクの書き込み順にソートしてください。&lt;br /&gt;
&lt;br /&gt;
=== 賢いパーティションスキーム ===&lt;br /&gt;
&lt;br /&gt;
*SSD と HDD 両方搭載しているシステムでは、読み書きを減らすために {{ic|/var}} パーティションは SSD ではなく磁気ディスク上に配置すると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
===noatime マウントフラグ===&lt;br /&gt;
&lt;br /&gt;
このフラグを {{ic|/etc/fstab}} で使うと、ファイルに関連付けられた atime 情報の更新によるファイルシステムの読み込みアクセスの記録が止められます。{{ic|noatime}} 設定によってファイルの読み込みだけでファイルシステムに書き込みを行うのを阻止することになります。前のセクションで説明しているように書き込みは負担が大きいため、ある程度パフォーマンスが向上する可能性があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|このオプションを有効にしても、ファイルが変更されたときのファイルの変更日時の情報は更新されます。}}&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1  /       ext4   defaults,&#039;&#039;&#039;noatime&#039;&#039;&#039;   0  1&lt;br /&gt;
 /dev/sda2  /home   ext4   defaults,&#039;&#039;&#039;noatime&#039;&#039;&#039;   0  2&lt;br /&gt;
&lt;br /&gt;
{{Note|この設定を使うと [[Mutt]] などのプログラムで問題がおこります。ファイルのアクセス日時がやがて変更日時よりも前になってしまうからです。{{ic|noatime}} の代わりに {{ic|relatime}} オプションを使うことでファイルの最終変更日時よりも atime が前にならないようにすることができます。また、maildir ストレージフォーマットを使うことでも mutt の問題は解決します。}}&lt;br /&gt;
&lt;br /&gt;
=== 頻繁に使うファイルを RAM に移動する ===&lt;br /&gt;
&lt;br /&gt;
==== ブラウザのプロファイル ====&lt;br /&gt;
&lt;br /&gt;
tmpfs を使って chromium, firefox, opera などのブラウザプロファイルを RAM へ&#039;&#039;簡単に&#039;&#039;マウントすることができ、また、rsync を使うことで HDD によるバックアップと同期させることができます。これによって速度が向上するだけでなく、SSD の読み書きサイクルを節約することにもなります。&lt;br /&gt;
&lt;br /&gt;
AUR には {{Pkg|profile-sync-daemon}} など、この手順を自動化するパッケージが複数存在します。&lt;br /&gt;
&lt;br /&gt;
==== その他 ====&lt;br /&gt;
&lt;br /&gt;
ブラウザプロファイルを RAM に移動するのと同じ理由で、(ウェブサーバーを動かしている場合) {{ic|/srv/http}} などの頻繁に利用するディレクトリを移動することもできます。{{Pkg|profile-sync-daemon}} の姉妹プロジェクトとして {{Pkg|anything-sync-daemon}} があり、同じ方法・セーフガードを使って&#039;&#039;&#039;あらゆる&#039;&#039;&#039;ディレクトリを RAM に同期させるよう定義することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== tmpfs でコンパイルする ===&lt;br /&gt;
&lt;br /&gt;
意図的に {{ic|/tmp}} でコンパイルすることで問題を少なくすることができます。Arch Linux はデフォルトで {{ic|/tmp}} を物理メモリの50%にします。メモリが 4GB 以上あるシステムならば、{{ic|/scratch}} を作成して tmpfs にマウントすることで物理メモリの50%以上を使うように設定できます。&lt;br /&gt;
&lt;br /&gt;
例えば物理メモリが 8GB あるマシンの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;$ mount | grep tmpfs&amp;lt;/nowiki&amp;gt;|2=&lt;br /&gt;
tmpfs     /scratch     tmpfs     nodev,nosuid,size=7G     0     0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳細については、[[Makepkg#コンパイル時間を短縮する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステムのジャーナリングを無効にする ===&lt;br /&gt;
&lt;br /&gt;
SSD で ext4 などのジャーナリングファイルシステムを使っている場合、ジャーナルを無効にすることで読み書きを減らすことができます。ただし、ジャーナリングを無効にしたファイルシステムを使用するときの明らかな欠点として、ちゃんとマウントが解除されていない (つまり、電源が落ちたり、カーネルが固まったりする) とデータが消失します。最新の SSD では、ほとんどの場合、あまり読み書きサイクルを増やさないでジャーナリングを有効にすることができると [http://tytso.livejournal.com/61830.html Ted Tso] は主張しています:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;{{ic|noatime}} でマウントされた ext4 ファイルシステムに書き込まれるデータの量 (単位はメガバイト)。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 操作 !! ジャーナル !! ジャーナルなし !! 減少率&lt;br /&gt;
|-&lt;br /&gt;
!git clone&lt;br /&gt;
|367.0&lt;br /&gt;
|353.0&lt;br /&gt;
|3.81 %&lt;br /&gt;
|-&lt;br /&gt;
!make&lt;br /&gt;
|207.6&lt;br /&gt;
|199.4&lt;br /&gt;
|3.95 %&lt;br /&gt;
|-&lt;br /&gt;
!make clean&lt;br /&gt;
|6.45&lt;br /&gt;
|3.73&lt;br /&gt;
|42.17 %&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;この結果は、make clean など、メタデータの変更が多い操作はディスクに書き込むデータ量がほぼ2倍になることを示しています。これは当然の結果です。なぜならメタデータが最終的にディスクに書き込まれる前に、メタデータブロックへの変更はまず全てジャーナルに書き込まれ、それからジャーナルのトランザクションが行われるからです。しかしながら、ファイルシステムのメタデータブロックを変更するだけでなくデータの書き込みも行うような一般的な操作では、違いはかなり少なくなります。&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|表にある make clean の例は、この記事の[[#tmpfs でコンパイルする|前のセクション]]で説明している tmpfs でコンパイルするのが何故推奨されているのかを示す典型例でしょう。}}&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムの選択 ==&lt;br /&gt;
&lt;br /&gt;
=== Btrfs ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:ja:Btrfs|Btrfs]] のサポートは Linux カーネルのメインライン 2.6.29 リリースから含まれています。ext4 の後継として使っているアーリーアダプターもいますが、人によってはまだ日常的な利用には適さないと感じるかもしれません。詳細は [[Btrfs]] の記事を読んで下さい。&lt;br /&gt;
&lt;br /&gt;
=== Ext4 ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:ja:Ext4|Ext4]] は SSD をサポートしているもうひとつのファイルシステムです。2.6.28 から安定していると考えられており日常的な利用ができるレベルまで成熟しています。ext4 のユーザーは [[fstab]] で {{ic|discard}} マウントオプションを使って (もしくは {{ic|tune2fs -o discard /dev/sdaX}} で) 明示的に TRIM コマンドのサポートを有効にする必要があります。&lt;br /&gt;
ext4 に関する詳細情報は[https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/filesystems/ext4.txt カーネルツリーの公式ドキュメント]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===XFS===&lt;br /&gt;
&lt;br /&gt;
ext4 や btrfs に加えて、[[wikipedia:ja:XFS|XFS]] も TRIM をサポートしていることを知っているユーザーは多くないでしょう。通常の方法で有効にすることができます。つまり、上述の discard オプションを利用するか、または fstrim コマンドを使うか選択することが可能です。詳細は [http://xfs.org/index.php/FITRIM/discard XFS wiki] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===JFS===&lt;br /&gt;
&lt;br /&gt;
Linux カーネルバージョン 3.7 から、完全な TRIM サポートが追加されました。現在、このトピックに関する情報はあまり揃っていませんが、[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTE5ODY Linux ニュースサイト] によって確かに取り上げられています。{{ic|discard}} マウントオプションにより、または fstrim を使う方法で有効にすることが可能です。&lt;br /&gt;
&lt;br /&gt;
===他のファイルシステム===&lt;br /&gt;
&lt;br /&gt;
他にも [[wikipedia:List_of_flash_file_systems#File systems optimized for flash memory, solid state media|SSD に特化して]]設計されたファイルシステムが存在します。[[F2FS]] などがあります。&lt;br /&gt;
&lt;br /&gt;
== ファームウェアのアップデート ==&lt;br /&gt;
&lt;br /&gt;
=== ADATA ===&lt;br /&gt;
&lt;br /&gt;
ADATA は Linux (i686) で利用できるユーティリティを、[http://www.adata.com/jp/support/driver/ ここ] にある彼らのサポートページに用意しています。モデルを選択すれば最新のファームウェアへのリンクが表示されます。&lt;br /&gt;
&lt;br /&gt;
最新の Linux アップデートユーティリティはファームウェアと一緒に入っており root で実行してください。最初にバイナリファイルに対して適切なパーミッションを設定する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
===Crucial===&lt;br /&gt;
&lt;br /&gt;
Crucial は ISO イメージを使ってファームウェアをアップデートする方法を提供しています。[http://www.crucial.jp/jpn/ja/support-ssd ここ] から製品を選んで &amp;quot;Manual Boot File&amp;quot; をダウンロードすることでイメージを入手できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|Crucial が提供している ISO イメージはハイブリッドではありません。{{ic|dd}} コマンドを使ってイメージを [[MBR]] が存在しないデバイスにコピーした場合、デバイスが起動できなくなります。}}&lt;br /&gt;
&lt;br /&gt;
M4 Crucial モデルを使っている場合、{{ic|smartctl}} でファームウェアのアップグレードが必要かどうかチェックすることが可能です:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ smartctl --all /dev/sd&#039;&#039;&#039;X&#039;&#039;&#039;|&lt;br /&gt;
==&amp;gt; WARNING: This drive may hang after 5184 hours of power-on time:&lt;br /&gt;
http://www.tomshardware.com/news/Crucial-m4-Firmware-BSOD,14544.html&lt;br /&gt;
See the following web pages for firmware updates:&lt;br /&gt;
http://www.crucial.com/support/firmware.aspx&lt;br /&gt;
http://www.micron.com/products/solid-state-storage/client-ssd#software&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記のような警告が表示された場合は重要なデータをバックアップしてから&#039;&#039;&#039;直ちにアップグレードを行うこと&#039;&#039;&#039;が推奨されます。ISO イメージと Grub を使用して Crucial MX100 のファームウェアをアップデートする手順は [http://www.rojtberg.net/1008/updating-crucial-mx100-firmware-with-ubuntu/ こちら] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Intel ===&lt;br /&gt;
&lt;br /&gt;
Intel は [https://downloadcenter.intel.com/download/18455 Intel® Solid-State Drive Toolbox] ソフトウェアが対応していないオペレーティングシステム向けに、Linux ライブシステムベースの [https://downloadcenter.intel.com/download/18363 Firmware Update Tool] を用意しています。&lt;br /&gt;
&lt;br /&gt;
===Kingston===&lt;br /&gt;
&lt;br /&gt;
Kingston は Sandforce コントローラを搭載しているドライブのファームウェアをアップデートする Linux ユーティリティを用意しています。Kingston の [https://www.kingston.com/jp/support/technical/category/ssd  SSD のサポートページ] で見つけることができます。使用している SSD のモデルにあわせてページを開いてください。例えば SH100S3 SSD のサポートは [https://www.hyperxgaming.com/jp/support/technical/products?model=sh100s3 HyperX のサポートページ] です。&lt;br /&gt;
&lt;br /&gt;
===Mushkin===&lt;br /&gt;
&lt;br /&gt;
マイナーな Mushkin ブランドのソリッドステートドライブも Sandforce コントローラーを使っており、ファームウェアをアップデートする Linux ユーティリティ (Kingston のものとほとんど同じ) が存在します。&lt;br /&gt;
&lt;br /&gt;
=== OCZ ===&lt;br /&gt;
&lt;br /&gt;
OCZ は Linux 用の [https://www.ocz.com/us/download/clout Command Line Online Update Tool (CLOUT)] を用意しています。{{AUR|ocz-ssd-utility}}, {{AUR|ocztoolbox}}, {{AUR|oczclout}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
===Samsung===&lt;br /&gt;
&lt;br /&gt;
Samsung は Magician Software 以外の方法によるアップデートを&amp;quot;サポートしない&amp;quot;としていますが、不可能ではありません。Magician Software を使ってファームウェアのアップデートを起動する USB ドライブを作成することができるようですが、一番簡単な方法はファームウェアのアップデート用のブータブル ISO イメージを使用することです。イメージは [https://www.samsung.com/semiconductor/minisite/ssd/download/tools.html ここ] から入手することが可能です。また、{{AUR|samsung_magician}}{{Broken package link|パッケージが存在しません}} パッケージでインストールすることができます。Magician がサポートしているのは Samsung ブランドの SSD だけです。OEM 供給されている Samsung 製の SSD はサポートされていません (Lenovo 向けの SSD など)。&lt;br /&gt;
&lt;br /&gt;
{{Note|Samsung はファームウェアアップデートをわかりやすく提供していません。ファームウェアアップデートに関連するページが4つあり、それぞれで別々の方法が示されています。}}&lt;br /&gt;
&lt;br /&gt;
(Microsoft Windows で Samsung の &amp;quot;Magician&amp;quot; ソフトウェアを使わずに) Linux で作成したライブ USB スティックからファームウェアアップデートを実行したい場合は、[http://fomori.org/blog/?p=933 この記事] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== SanDisk ===&lt;br /&gt;
&lt;br /&gt;
SanDisk は SanDisk SSD Toolkit でサポートされていないオペレーティングシステムにおいて SSD のファームウェアアップデートをするための &#039;&#039;&#039;ISO ファームウェアイメージ&#039;&#039;&#039;を作成しています。SSD の&#039;&#039;モデル&#039;&#039;だけでなく、SSD の&#039;&#039;容量&#039;&#039;にあわせて適切なファームウェアを選択する必要があります (例: 60GB &#039;&#039;&#039;または&#039;&#039;&#039; 256GB)。適当な ISO ファームウェアイメージを焼いたら、PC を再起動して新しく作成した CD/DVD ブートディスクで起動してください (USB スティックからでも動作するかもしれません)。&lt;br /&gt;
&lt;br /&gt;
ISO イメージには Linux カーネルと initrd が含まれています。それらを {{ic|/boot}} パーティションに展開して [[GRUB]] や [[Syslinux]] で起動してファームウェアをアップデートしてください。&lt;br /&gt;
&lt;br /&gt;
ファームウェアのアップデートが列挙された一つのページは存在しませんが (サイトがわかりづらい)、以下が関連するリンクです:&lt;br /&gt;
&lt;br /&gt;
* SanDisk Extreme SSD の [https://kb.sandisk.com/app/answers/detail/a_id/10127 ファームウェアのリリースノート] と [https://kb.sandisk.com/app/answers/detail/a_id/10476 手動ファームウェアアップデートのバージョン R211]。&lt;br /&gt;
* SanDisk Ultra SSD の [https://kb.sandisk.com/app/answers/detail/a_id/10192 ファームウェアのリリースノート] と [https://kb.sandisk.com/app/answers/detail/a_id/10477 手動ファームウェアアップデートのバージョン 365A13F0]。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
SSD の問題は Linux 固有の問題ではないファームウェアのバグである可能性も存在します。SSD に関しては、問題のトラブルシューティングを始める前に、ファームウェアのアップデートが存在しないか確認してみてください:&lt;br /&gt;
* SSD のファームウェアをアップデートする。[[#ファームウェアのアップデート]] を参照。&lt;br /&gt;
* マザーボードの BIOS/UEFI をアップデートする。[[Linux から BIOS を書き換える]]を参照。&lt;br /&gt;
&lt;br /&gt;
ファームウェアのバグであったとしても、解決できることがあります。ファームウェアにアップデートが存在しなかったり、ファームウェアのアップデートをしたくない場合、以下のセクションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== NCQ エラーを解消する ===&lt;br /&gt;
&lt;br /&gt;
SSD や SATA チップセットによっては Linux Native Command Queueing (NCQ) が正しく動作しないことがあります。dmesg に以下のようなエラーが表示されます:&lt;br /&gt;
&lt;br /&gt;
 [ 9.115544] ata9: exception Emask 0x0 SAct 0xf SErr 0x0 action 0x10 frozen&lt;br /&gt;
 [ 9.115550] ata9.00: failed command: READ FPDMA QUEUED&lt;br /&gt;
 [ 9.115556] ata9.00: cmd 60/04:00:d4:82:85/00:00:1f:00:00/40 tag 0 ncq 2048 in&lt;br /&gt;
 [ 9.115557] res 40/00:18:d3:82:85/00:00:1f:00:00/40 Emask 0x4 (timeout)&lt;br /&gt;
&lt;br /&gt;
起動時に NCQ を無効にするには、[[ブートローダー]]の設定におけるカーネルコマンドラインに {{ic|1=libata.force=noncq}} を追加してください。ポート 1 のディスク 0 の NCQ だけを無効化するには次を使用: {{ic|1=libata.force=1.00:noncq}}。&lt;br /&gt;
&lt;br /&gt;
また、sysfs を使うことで再起動せずに特定のドライブの NCQ を無効化することもできます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
# echo 1 &amp;gt; /sys/block/sdX/device/queue_depth&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
問題が解決しなかったり他の問題が発生する場合は、[[バグ報告ガイドライン|バグレポートを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
=== SATA の電源管理関連のエラーを解消する ===&lt;br /&gt;
&lt;br /&gt;
SATA Active Link Power Management ([[Wikipedia:Aggressive_Link_Power_Management|ALPM]]) が有効になっている場合にエラーを吐く SSD も存在します (例: Transcend MTS400)。ALPM はデフォルトで無効になっており、省電力デーモンによって有効になります (例: [[TLP]], [[Laptop Mode Tools]])。&lt;br /&gt;
&lt;br /&gt;
省電力デーモンを使っていて SATA 関連のエラーが表示される場合、バッテリーと AC 電源のプロファイルを {{ic|max_performance}} に設定して ALPM を無効化してみてください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.reddit.com/r/archlinux/comments/rkwjm/what_should_i_keep_in_mind_when_installing_on_ssd/ SSD に Arch をインストールすることについての Reddit における討論]&lt;br /&gt;
* [http://permalink.gmane.org/gmane.comp.file-systems.btrfs/19446 Re: Varying Leafsize and Nodesize in Btrfs]&lt;br /&gt;
* [http://thread.gmane.org/gmane.comp.file-systems.btrfs/19650/focus=19667 Re: SSD alignment and Btrfs sector size]&lt;br /&gt;
* [https://forums.anandtech.com/threads/erase-block-alignment-misinformation.2266113/ Erase Block (Alignment) Misinformation?]&lt;br /&gt;
* [https://superuser.com/questions/492084/is-alignment-to-erase-block-size-needed-for-modern-ssds Is alignment to erase block size needed for modern SSD&#039;s?]&lt;br /&gt;
* [http://thread.gmane.org/gmane.comp.file-systems.btrfs/15646 Btrfs support for efficient SSD operation (data blocks alignment)]&lt;br /&gt;
* [https://serverfault.com/questions/356534/ssd-erase-block-size-lvm-pv-on-raw-device-alignment SSD, Erase Block Size &amp;amp; LVM: PV on raw device, Alignment]&lt;/div&gt;</summary>
		<author><name>Skyline</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%BD%E3%83%AA%E3%83%83%E3%83%89%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96&amp;diff=22217</id>
		<title>ソリッドステートドライブ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%BD%E3%83%AA%E3%83%83%E3%83%89%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96&amp;diff=22217"/>
		<updated>2021-11-02T13:35:12Z</updated>

		<summary type="html">&lt;p&gt;Skyline: /* HDD に対する利点 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ストレージ]]&lt;br /&gt;
[[en:Solid State Drives]]&lt;br /&gt;
[[it:Solid State Drives]]&lt;br /&gt;
[[ru:Solid State Drives]]&lt;br /&gt;
[[zh-hans:Solid State Drives]]&lt;br /&gt;
[[zh-hant:Solid State Drives]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ソリッドステートドライブ/NVMe}}&lt;br /&gt;
{{Related|ソリッドステートドライブ/メモリセルの消去}}&lt;br /&gt;
{{Related|ベンチマーク/データストレージデバイス}}&lt;br /&gt;
{{Related|パフォーマンスの最大化#ストレージデバイス}}&lt;br /&gt;
{{Related|Flashcache}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
この記事では SSD (solid state drive) について Linux と関係する様々なことを記述していますが、一般的な根本原則やキーポイントは Windows ファミリーや macOS など他のオペレーティングシステムで SSD を使っているユーザーも応用することができます。さらにそのような情報に加えて、Linux ユーザーはここに書かれた方法で SSD を最適化・調整することが可能です。&lt;br /&gt;
&lt;br /&gt;
==概要==&lt;br /&gt;
&lt;br /&gt;
===イントロダクション===&lt;br /&gt;
&lt;br /&gt;
Solid State Drive (SSD) は PnP デバイスではありません。パーティションアライメント、ファイルシステムの選択、TRIM サポートなどの特別事項は SSD の性能を最適化するために必要になります。この記事には Linux で SSD から最高の性能を引き出すための情報を集めています。コンテンツはトピックでまとめられており、必ずしも系統的または時系列順に並べられているわけではないので、実際に推奨事項をやろうとする前に記事全体を読むと良いでしょう。&lt;br /&gt;
&lt;br /&gt;
{{Note|この記事は Linux を動作させているユーザーを対象にしていますが BSD, macOS, Windows など他のオペレーティングシステムを使っているユーザーにも中身がほぼ全て当てはまります。}}&lt;br /&gt;
&lt;br /&gt;
===HDD に対する利点===&lt;br /&gt;
&lt;br /&gt;
*高速な読み込み速度 - 最新のデスクトップ HDD のおよそ2-3倍高速 (7,200 RPM で SATA2 インタフェースを使用した場合に比べて)。&lt;br /&gt;
*一定の読み込み速度 - デバイス全体で読み込み速度の低下がありません。HDD はドライブのヘッドが外縁から HDD プラッタの中心に移動するにつれパフォーマンスがだんだん低下します。&lt;br /&gt;
*極小のアクセス時間 - HDD よりおおよそ100倍高速。例えば、デスクトップ HDD の 12-20 ms (12,000-20,000 us) に対して 0.1 ms (100 us)。&lt;br /&gt;
*高度な信頼性。&lt;br /&gt;
*可動部が存在しない。&lt;br /&gt;
*熱の発生が少ない。&lt;br /&gt;
*消費電力が少ない - HDDが回転速度によって 10-30ワット消費するのに対して、SSDはアイドル状態で1ワット、読み書き中は1-2ワット。&lt;br /&gt;
*軽量 - モバイル端末のストレージに最適。&lt;br /&gt;
&lt;br /&gt;
===欠点===&lt;br /&gt;
&lt;br /&gt;
*容量単位のコスト (1GBあたり1ドル近く、それに対して回転メディアでは1GBあたり10または20セント)。&lt;br /&gt;
*市販されているモデルの容量が HDD よりも少ない。&lt;br /&gt;
*セルの大きさによって回転メディアと異なるファイルシステムの最適化が必要。現代の OS はアクセスを最適化するためにフラッシュ変換レイヤを使用しており生のフラッシュアクセスは遮蔽されている。&lt;br /&gt;
*パーティションとファイルシステムを SSD の特性にあわせて調整する必要がある。ページサイズや消去ページサイズは自動検出されません。&lt;br /&gt;
*セルは劣化します。一般的に、50nm プロセスによる民生の MLC セルは10000回の書き込み、35nm では5000回の書き込み、25nm では3000回の書き込みが出来ます（小さくなればなるほど高密度で値段が安くなります）。書き込みが適当に散らばっていて、小さすぎず、セルにピッタリはまるようになったときに、容量の倍数である最終的な SSD の書き込みボリュームに移されます。日々の書き込みボリュームは耐用年数から差引かなければなりません。ただし、最新のハードウェアで行われた試験 [https://techreport.com/review/25889/the-ssd-endurance-experiment-500tb-update][https://techreport.com/review/26523/the-ssd-endurance-experiment-casualties-on-the-way-to-a-petabyte][https://techreport.com/review/27436/the-ssd-endurance-experiment-two-freaking-petabytes][https://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead] では SSD の劣化は無視できるほどで、人為的に書き込みボリュームを多くしても SSD の耐用年数は HDD と並ぶとされています。&lt;br /&gt;
*ファームウェアやコントローラーが複雑。たまにバグが存在することもあります。最新のコントローラーは HDD と匹敵するほどの電力を消費します。コントローラーにはガベージコレクションの付いたログ構造化ファイルシステムに相当するものが[https://lwn.net/Articles/353411/ 実装されています]。回転メディアにあわせて作られた SATA コマンドは変換されます。ファームウェアによってはオンザフライで圧縮を行います。反復書き込みをフラッシュ領域全体に散らばらせて、特定のセルがすぐに劣化するのをふせぎます。また、書き込みをまとめることで小さな書き込みがそれと同じ回数大きなセルを消去することにならないようにしています。最後にデータを含むセルを移動するので時間の経過によってセルが中身を失うことはありません。&lt;br /&gt;
*ディスクが満杯になるにつれてパフォーマンスが低下します。一般にガベージコレクションはあまり上手く実装されておらず、空き領域が完全に空のセルに集められているとは限りません。&lt;br /&gt;
&lt;br /&gt;
===購入前に考慮すべき事項===&lt;br /&gt;
&lt;br /&gt;
最新の SSD を買う前に見ておくべきポイントがいくつか存在します。&lt;br /&gt;
*[[wikipedia:TRIM|TRIM]] のネイティブサポートは不可欠です。SSD の寿命を伸ばして、少しずつおこる書き込み操作のパフォーマンスの減少を少なくします。&lt;br /&gt;
*適切な容量の SSD を買うことが重要です。カーネルが SSD パーティションを効率的に利用するために占有率は75%以下が望まれます。&lt;br /&gt;
&lt;br /&gt;
==SSD のパフォーマンスを最大化させるヒント==&lt;br /&gt;
=== パーティションアライメント ===&lt;br /&gt;
消去ブロックサイズに揃えたパーティションを使用することを強く推奨します。昔は、パーティション分けをするときに手動で計算して設定する必要がありました。現在では一般的なパーティションツールのほとんどが（最新バージョンを使っていれば）パーティションアライメントを自動的に行います:&lt;br /&gt;
* fdisk&lt;br /&gt;
* gdisk&lt;br /&gt;
* gparted&lt;br /&gt;
* parted&lt;br /&gt;
&lt;br /&gt;
パーティションが調整されているか確認するには、以下のように {{ic|/usr/bin/blockdev}} を使って問い合わせて下さい。&#039;0&#039; が返ってくれば、パーティションは揃えられています:&lt;br /&gt;
 # blockdev --getalignoff /dev/&amp;lt;partition&amp;gt;&lt;br /&gt;
 0&lt;br /&gt;
&lt;br /&gt;
=== TRIM ===&lt;br /&gt;
&lt;br /&gt;
ほとんどの SSD は長期間パフォーマンスを維持するために [[wikipedia:TRIM|ATA_TRIM コマンド]]をサポートしています。ベンチマーク前後などの詳細は、[https://sites.google.com/site/lightrush/random-1/howtoconfigureext4toenabletrimforssdsonubuntu この] チュートリアルを見て下さい。&lt;br /&gt;
&lt;br /&gt;
Linux カーネルバージョン 3.8 現在、次のファイルシステムが TRIM をサポートしています: [[Ext4]], [[Btrfs]], [[JFS]], VFAT, [[XFS]], [[F2FS]]。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|ntfs-3g}} バージョン 2015.3.14 から、[[NTFS]] ファイルシステムも TRIM がサポートされています [http://permalink.gmane.org/gmane.comp.file-systems.ntfs-3g.devel/1101]。&lt;br /&gt;
&lt;br /&gt;
VFAT はマウントフラグ {{ic|discard}} によって TRIM をサポートしています、カーネル4.19以降は{{ic|fstrim}}もサポートしています。&lt;br /&gt;
&lt;br /&gt;
この記事の[[#ファイルシステムの選択|ファイルシステムの選択]]のセクションにさらに詳しく書かれています。&lt;br /&gt;
&lt;br /&gt;
==== TRIM のサポートを確認する ====&lt;br /&gt;
&lt;br /&gt;
 # hdparm -I /dev/sda |grep TRIM&lt;br /&gt;
         *    Data Set Management TRIM supported (limit 1 block)&lt;br /&gt;
         *    Deterministic read data after TRIM&lt;br /&gt;
&lt;br /&gt;
&amp;quot;limit 1 block&amp;quot; や &amp;quot;limit 8 block&amp;quot; の意味は、[[wikipedia:TRIM#ATA]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== fstrim で定期的に TRIM を適用する ====&lt;br /&gt;
&lt;br /&gt;
{{Note|この方法は VFAT ファイルシステムでは使えません。}}&lt;br /&gt;
&lt;br /&gt;
({{Pkg|base}} と {{Grp|base-devel}} に含まれている) {{Pkg|util-linux}} パッケージには {{ic|fstrim.service}} と {{ic|fstrim.timer}} の [[systemd]] ユニットファイルが入っています。このタイマーを[[systemd#ユニットを使う|有効化]]すれば毎週サービスが実行され、discard をサポートしているデバイス上のマウント済みファイルシステム全てが trim されます。&lt;br /&gt;
&lt;br /&gt;
タイマーは最後に実行してから一週間経過したことを知るために (最初に実行したときに作成される) {{ic|/var/lib/systemd/timers/stamp-fstrim.timer}} のタイムスタンプを使います。そのため、何度も頻繁に実行される恐れはありません。&lt;br /&gt;
&lt;br /&gt;
{{ic|journalctl}} や {{ic|systemctl status}} コマンドを使うことでユニットの活動状態を調べることができます:&lt;br /&gt;
{{hc|# journalctl -u fstrim|2=&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;shows several log entries if enabled&amp;gt;&lt;br /&gt;
...}}&lt;br /&gt;
{{hc|# systemctl status fstrim|2=&lt;br /&gt;
● fstrim.service - Discard unused blocks&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/fstrim.service; static; vendor preset: disabled)&lt;br /&gt;
   Active: inactive (dead) since lun. 2015-06-08 00:00:18 CEST; 2 days ago&lt;br /&gt;
  Process: 18152 ExecStart=/sbin/fstrim -a (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Main PID: 18152 (code=exited, status=0/SUCCESS)&lt;br /&gt;
&lt;br /&gt;
juin 08 00:00:16 arch-clevo systemd[1]: Starting Discard unused blocks...&lt;br /&gt;
juin 08 00:00:18 arch-clevo systemd[1]: Started Discard unused blocks.&lt;br /&gt;
}}&lt;br /&gt;
{{Note|タイマーを調査したい時は {{ic|.timer}} 拡張子を指定するようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
タイマーの実行間隔を変更したい場合は、[[Systemd#ユニットファイルの編集|ユニットファイルを編集]]してください。&lt;br /&gt;
&lt;br /&gt;
==== マウントフラグで TRIM を有効にする ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|discard}} フラグを使ってパーティションをマウントする前に SSD が TRIM をサポートしていることを確認してください。そうしないとデータが喪失する可能性があります。残念ながら SSD の TRIM の実行に関する BIOS の品質はバラバラであり、ファイルシステム開発者 Theodore Ts&#039;o は {{ic|discard}} マウントフラグの使用を[http://thread.gmane.org/gmane.comp.file-systems.ext4/41974 推奨していません] 。あなたの使用しているハードウェアについて不安があるのならば、代わりに [[#fstrim で定期的に TRIM を適用する|fstrim で定期的に TRIM を適用する]]ようにしてください。また、TRIM の他の[[WikiPedia:Trim_(computing)#Shortcomings|欠点]]として、TRIM コマンドを実行すると特定のデバイス (特に Samsung 8* シリーズ) で深刻なデータ障害が発生する可能性があります [https://blog.algolia.com/when-solid-state-drives-are-not-that-solid/]。データの破損が確認された後 [https://github.com/torvalds/linux/blob/e64f638483a21105c7ce330d543fa1f1c35b5bc7/drivers/ata/libata-core.c#L4109-L4286]、Linux カーネルは多数の [https://github.com/torvalds/linux/blob/e64f638483a21105c7ce330d543fa1f1c35b5bc7/drivers/ata/libata-core.c#L4227 デバイス] で TRIM コマンドの実行をブラックリスト化しています (2015年7月現在)。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/fstab}} のエントリで {{ic|discard}} オプションを使うことで TRIM コマンドが有効になります:&lt;br /&gt;
&lt;br /&gt;
 /dev/sda2  /boot       ext4  defaults,noatime,&#039;&#039;&#039;discard&#039;&#039;&#039;   0  2&lt;br /&gt;
 /dev/sda1  /boot/efi   vfat  defaults,noatime,&#039;&#039;&#039;discard&#039;&#039;&#039;   0  2&lt;br /&gt;
 /dev/sda3  /           ext4  defaults,noatime,&#039;&#039;&#039;discard&#039;&#039;&#039;   0  2&lt;br /&gt;
&lt;br /&gt;
TRIM の一番大きな恩恵は速度です。SSD は効率的に [https://arstechnica.com/gadgets/2015/04/ask-ars-my-ssd-does-garbage-collection-so-i-dont-need-trim-right/ ガーベジコレクション] を行えるようになります。ただし、効果はモデルによって異なり、初期に製造された SSD の場合、逆効果が現れることもあります。このため、ディストリビューションによっては TRIM を使用しないように決定したところもあります (例えば Ubuntu。[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTUxOTY この記事] や [https://blueprints.launchpad.net/ubuntu/+spec/core-1311-ssd-trimming 関連するブループリント] を参照)。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* SSD でブロックデバイス暗号化を使っている場合 TRIM はデフォルトでは有効になりません。詳しくは [[Dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート|Dm-crypt/SSD の TRIM のサポート]]を参照。&lt;br /&gt;
* {{ic|fstrim}} を定期的に実行している場合 {{ic|discard}} フラグは必要ありません。&lt;br /&gt;
* ext3 の root パーティションで {{ic|discard}} フラグを使用すると読み取り専用でマウントされます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== tune2fs で TRIM を有効にする (非推奨) ====&lt;br /&gt;
&lt;br /&gt;
tune2fs を使って静的に trim フラグを設定することができます:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -o discard /dev/sd&#039;&#039;&#039;XY&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|この方法を使うと {{ic|mount}} で {{ic|discard}} オプションが[https://bbs.archlinux.org/viewtopic.php?id&amp;amp;#61;137314 現れなくなります]。}}&lt;br /&gt;
&lt;br /&gt;
==== LVM で TRIM を有効にする ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lvm/lvm.conf}} で {{ic|issue_discards}} オプションを有効にしてください。&lt;br /&gt;
&lt;br /&gt;
==== dm-crypt で TRIM を有効にする ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/crypttab}} を設定して SSD 上の暗号化されたブロックデバイスのオプションのリストに {{ic|discard}} を含めて下さい。この discard オプションは discard リクエストが暗号化されたブロックデバイスを通過するのを許可します。これによって SSD ストレージのパフォーマンスは向上しますが、セキュリティに影響があります。[[Dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート|このセクション]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== I/O スケジューラー ===&lt;br /&gt;
&lt;br /&gt;
デフォルトの [[wikipedia:CFQ|CFQ]] (Completely Fair Queuing) スケジューラから [[wikipedia:NOOP_scheduler|NOOP]] または [[wikipedia:Deadline_scheduler|Deadline]] に切り替えたほうが良いでしょう。後者の2つは SSD のパフォーマンスを加速させます。例えば、NOOP スケジューラは全ての I/O リクエストに対して、ディスクに物理的に近いものを並び替えたりグループ化することなく、一つのシンプルなキューを実行します。SSD においては全てのセクタでシーク時間は同じであり、シーク時間に基づいて I/O キューを並び替える必要性には説得力がありません。&lt;br /&gt;
&lt;br /&gt;
Arch ではデフォルトで CFQ スケジューラが有効にされています。{{ic|/sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler}} の中身を見て確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler|&lt;br /&gt;
noop deadline [cfq]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
表示されているスケジューラの中で角括弧で囲まれているのが現在使われているスケジューラです。&lt;br /&gt;
&lt;br /&gt;
ユーザーは再起動することなくスケジューラを変更することができます:&lt;br /&gt;
&lt;br /&gt;
 # echo noop &amp;gt; /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 $ sudo tee /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler &amp;lt;&amp;lt;&amp;lt; noop&lt;br /&gt;
&lt;br /&gt;
この方法は永続的ではありません (再起動で変更は失われます)。ファイルの中身をもう一度見て &amp;quot;noop&amp;quot; が使われるようになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== カーネルパラメータ (シングルデバイス) ====&lt;br /&gt;
&lt;br /&gt;
システムの唯一のストレージデバイスが SSD である場合、{{ic|1=elevator=noop}} [[カーネルパラメータ]]でシステム全体の I/O スケジューラを設定できます。&lt;br /&gt;
&lt;br /&gt;
====1つのデバイスまたは HDD/SSD 混合環境で udev を使って設定する====&lt;br /&gt;
&lt;br /&gt;
上の方法は確かに動作しますが、あくまで回避策と考えられています。つまり、デバイスのスケジューラを一番最初に実行するシステムを使うのが好ましいでしょう。この場合、それは udev で、設定するのに必要なのはシンプルな [[udev]] ルールだけです。&lt;br /&gt;
&lt;br /&gt;
設定するには、以下を作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/60-schedulers.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# set deadline scheduler for non-rotating disks&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;sd[a-z]&amp;quot;, ATTR{queue/rotational}==&amp;quot;0&amp;quot;, ATTR{queue/scheduler}=&amp;quot;deadline&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Deadline/CFQ をお望みのスケジューラに設定してください。次に起動した時に変更が適用されるはずです。新しいルールが適用されているか確認するには:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler  # where &#039;&#039;&#039;X&#039;&#039;&#039; is the device in question&lt;br /&gt;
&lt;br /&gt;
{{Note|上記の例で udev ルールの名前に60を使っていますが、終わりが {{ic|.rules}} であればどんな名前でも付けられます。}}&lt;br /&gt;
&lt;br /&gt;
=== SSD のスワップ領域 ===&lt;br /&gt;
&lt;br /&gt;
SSD 上にスワップパーティションを配置することが可能です。最新のデスクトップではメモリが2ギガ以上積まれておりスワップはほとんど使いません。ただしハイバネート機能を利用するシステムの場合は別です。以下のようにシステムの &amp;quot;swappiness&amp;quot; を減らすことで SSD にあるスワップへの書き込みを減らすことが推奨されます:&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
[[パフォーマンスの最大化#Swappiness|パフォーマンスの最大化]]の記事で推奨されているように行うこともできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/99-sysctl.conf|2=&lt;br /&gt;
vm.swappiness=1&lt;br /&gt;
vm.vfs_cache_pressure=50&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Hdparm で &amp;quot;frozen&amp;quot; 状態と表示される ===&lt;br /&gt;
&lt;br /&gt;
マザーボードの BIOS は初期化時に取り付けられたストレージデバイスに &amp;quot;security freeze&amp;quot; コマンドを実行することがあります。同様に SSD (や HDD) の BIOS もファクトリーにおいて &amp;quot;security freeze&amp;quot; に設定されていることがあります。どちらにしても、以下の出力のようにデバイスのパスワードセキュリティ設定が &amp;quot;frozen&amp;quot; になります:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=# hdparm -I /dev/sda |output=&lt;br /&gt;
 Security: &lt;br /&gt;
 	Master password revision code = 65534&lt;br /&gt;
 		supported&lt;br /&gt;
 	not	enabled&lt;br /&gt;
 	&#039;&#039;&#039;not	locked&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;frozen&#039;&#039;&#039;&lt;br /&gt;
 	not	expired: security count&lt;br /&gt;
 		supported: enhanced erase&lt;br /&gt;
 	4min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT. }}&lt;br /&gt;
&lt;br /&gt;
デバイスのフォーマットやオペレーティングシステムのインストールといった操作はこの &amp;quot;security freeze&amp;quot; の影響を受けません。&lt;br /&gt;
&lt;br /&gt;
上記の出力はデバイスが起動時に HDD パスワードによってロックされていないこと、そして凍結状態によってデバイスを (パスワードを設定してデバイスをロックさせてしまうような) マルウェアから保護していることがわかります。&lt;br /&gt;
&lt;br /&gt;
凍結状態のデバイスにパスワードを設定したい場合、それに対応しているマザーボード BIOS が必要です。[[Wikipedia:Hardware-based_full_disk_encryption|ハードウェア暗号化]]に必須なので、ノートパソコンでは大抵サポートされていますが、デスクトップやサーバーのボードではサポートがあるかどうかはっきりしないことがあります。例えば、Intel DH67CL/BL マザーボードの場合、設定にアクセスするには物理的なジャンパによってマザーボードを &amp;quot;maintenance mode&amp;quot; に設定する必要があります ([https://sstahlman.blogspot.in/2014/07/hardware-fde-with-intel-ssd-330-on.html?showComment=1411193181867#c4579383928221016762], [https://communities.intel.com/message/251978#251978] を参照)。&lt;br /&gt;
&lt;br /&gt;
{{Warning|よくわからないときは {{ic|hdparm}} を使って上記のロックセキュリティ設定を変更しないで下さい。}}&lt;br /&gt;
&lt;br /&gt;
SSD を消去するときは、[[ディスクの完全消去#hdparm]] や[[#SSD_Memory_Cell_Clearing|下のセクション]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== SSD Memory Cell Clearing ===&lt;br /&gt;
&lt;br /&gt;
時々、SSD のセルを完全にリセットしてデバイスにインストールした時と同じ初めの状態にすることで [https://www.anandtech.com/show/2738/8 製造時の書き込みパフォーマンス] を取り戻したいと思うことがあるかもしれません。SSD の書き込みパフォーマンスはネイティブの TRIM サポートを使っていても時間経過で落ちていきます。TRIM はファイル削除に対するセーフガードとして働くだけで、増加保存などの代わりにはなりません。&lt;br /&gt;
&lt;br /&gt;
リセットは [[ソリッドステートドライブ/メモリセルの消去|SSD メモリセルの消去]]の wiki 記事に書かれている3つのステップで簡単に行なえます。何らかの理由で SSD の BIOS を使わずにディスクのデータを消去したい場合は[[ディスクの完全消去#フラッシュメモリ]]を読んでください。&lt;br /&gt;
&lt;br /&gt;
==SSD の読み書きを最小化するヒント==&lt;br /&gt;
&lt;br /&gt;
SSD の使用で一番重要なテーマは読み書きが多い操作を SSD の代わりに RAM (Random Access Memory) や物理 HDD に配置するという&#039;シンプリシティ&#039;でしょう。そうすることで SSD をより長生きさせることができます。これは主として巨大な消去ブロックサイズのためで (場合によっては 512 KiB)、多数の小さな書き込みは大きな効果的な書き込みになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|書き込み増幅率が平凡な 10x で、書き込み/消去サイクルが標準的な 10000 である、32GB の SSD の場合、毎日 10GB のデータ書き込みを行うと、8年間で寿命が尽きるとされます。この数字はもっと容量が大きい SSD を使ったり書き込み増幅が少ない最新のコントローラを使うことで改善されます。また、ディスクの書き込みを制限するのにどの方法が必要なのか考えるときは [https://techreport.com/review/25889/the-ssd-endurance-experiment-500tb-update] を比較してください。}}&lt;br /&gt;
&lt;br /&gt;
プログラムがディスクにどれだけ書き込んでいるか確認するには {{ic|$ iotop -oPa}} を使ってディスクの書き込み順にソートしてください。&lt;br /&gt;
&lt;br /&gt;
=== 賢いパーティションスキーム ===&lt;br /&gt;
&lt;br /&gt;
*SSD と HDD 両方搭載しているシステムでは、読み書きを減らすために {{ic|/var}} パーティションは SSD ではなく磁気ディスク上に配置すると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
===noatime マウントフラグ===&lt;br /&gt;
&lt;br /&gt;
このフラグを {{ic|/etc/fstab}} で使うと、ファイルに関連付けられた atime 情報の更新によるファイルシステムの読み込みアクセスの記録が止められます。{{ic|noatime}} 設定によってファイルの読み込みだけでファイルシステムに書き込みを行うのを阻止することになります。前のセクションで説明しているように書き込みは負担が大きいため、ある程度パフォーマンスが向上する可能性があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|このオプションを有効にしても、ファイルが変更されたときのファイルの変更日時の情報は更新されます。}}&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1  /       ext4   defaults,&#039;&#039;&#039;noatime&#039;&#039;&#039;   0  1&lt;br /&gt;
 /dev/sda2  /home   ext4   defaults,&#039;&#039;&#039;noatime&#039;&#039;&#039;   0  2&lt;br /&gt;
&lt;br /&gt;
{{Note|この設定を使うと [[Mutt]] などのプログラムで問題がおこります。ファイルのアクセス日時がやがて変更日時よりも前になってしまうからです。{{ic|noatime}} の代わりに {{ic|relatime}} オプションを使うことでファイルの最終変更日時よりも atime が前にならないようにすることができます。また、maildir ストレージフォーマットを使うことでも mutt の問題は解決します。}}&lt;br /&gt;
&lt;br /&gt;
=== 頻繁に使うファイルを RAM に移動する ===&lt;br /&gt;
&lt;br /&gt;
==== ブラウザのプロファイル ====&lt;br /&gt;
&lt;br /&gt;
tmpfs を使って chromium, firefox, opera などのブラウザプロファイルを RAM へ&#039;&#039;簡単に&#039;&#039;マウントすることができ、また、rsync を使うことで HDD によるバックアップと同期させることができます。これによって速度が向上するだけでなく、SSD の読み書きサイクルを節約することにもなります。&lt;br /&gt;
&lt;br /&gt;
AUR には {{Pkg|profile-sync-daemon}} など、この手順を自動化するパッケージが複数存在します。&lt;br /&gt;
&lt;br /&gt;
==== その他 ====&lt;br /&gt;
&lt;br /&gt;
ブラウザプロファイルを RAM に移動するのと同じ理由で、(ウェブサーバーを動かしている場合) {{ic|/srv/http}} などの頻繁に利用するディレクトリを移動することもできます。{{Pkg|profile-sync-daemon}} の姉妹プロジェクトとして {{Pkg|anything-sync-daemon}} があり、同じ方法・セーフガードを使って&#039;&#039;&#039;あらゆる&#039;&#039;&#039;ディレクトリを RAM に同期させるよう定義することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== tmpfs でコンパイルする ===&lt;br /&gt;
&lt;br /&gt;
意図的に {{ic|/tmp}} でコンパイルすることで問題を少なくすることができます。Arch Linux はデフォルトで {{ic|/tmp}} を物理メモリの50%にします。メモリが 4GB 以上あるシステムならば、{{ic|/scratch}} を作成して tmpfs にマウントすることで物理メモリの50%以上を使うように設定できます。&lt;br /&gt;
&lt;br /&gt;
例えば物理メモリが 8GB あるマシンの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;$ mount | grep tmpfs&amp;lt;/nowiki&amp;gt;|2=&lt;br /&gt;
tmpfs     /scratch     tmpfs     nodev,nosuid,size=7G     0     0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳細については、[[Makepkg#コンパイル時間を短縮する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステムのジャーナリングを無効にする ===&lt;br /&gt;
&lt;br /&gt;
SSD で ext4 などのジャーナリングファイルシステムを使っている場合、ジャーナルを無効にすることで読み書きを減らすことができます。ただし、ジャーナリングを無効にしたファイルシステムを使用するときの明らかな欠点として、ちゃんとマウントが解除されていない (つまり、電源が落ちたり、カーネルが固まったりする) とデータが消失します。最新の SSD では、ほとんどの場合、あまり読み書きサイクルを増やさないでジャーナリングを有効にすることができると [http://tytso.livejournal.com/61830.html Ted Tso] は主張しています:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;{{ic|noatime}} でマウントされた ext4 ファイルシステムに書き込まれるデータの量 (単位はメガバイト)。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 操作 !! ジャーナル !! ジャーナルなし !! 減少率&lt;br /&gt;
|-&lt;br /&gt;
!git clone&lt;br /&gt;
|367.0&lt;br /&gt;
|353.0&lt;br /&gt;
|3.81 %&lt;br /&gt;
|-&lt;br /&gt;
!make&lt;br /&gt;
|207.6&lt;br /&gt;
|199.4&lt;br /&gt;
|3.95 %&lt;br /&gt;
|-&lt;br /&gt;
!make clean&lt;br /&gt;
|6.45&lt;br /&gt;
|3.73&lt;br /&gt;
|42.17 %&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;この結果は、make clean など、メタデータの変更が多い操作はディスクに書き込むデータ量がほぼ2倍になることを示しています。これは当然の結果です。なぜならメタデータが最終的にディスクに書き込まれる前に、メタデータブロックへの変更はまず全てジャーナルに書き込まれ、それからジャーナルのトランザクションが行われるからです。しかしながら、ファイルシステムのメタデータブロックを変更するだけでなくデータの書き込みも行うような一般的な操作では、違いはかなり少なくなります。&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|表にある make clean の例は、この記事の[[#tmpfs でコンパイルする|前のセクション]]で説明している tmpfs でコンパイルするのが何故推奨されているのかを示す典型例でしょう。}}&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムの選択 ==&lt;br /&gt;
&lt;br /&gt;
=== Btrfs ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:ja:Btrfs|Btrfs]] のサポートは Linux カーネルのメインライン 2.6.29 リリースから含まれています。ext4 の後継として使っているアーリーアダプターもいますが、人によってはまだ日常的な利用には適さないと感じるかもしれません。詳細は [[Btrfs]] の記事を読んで下さい。&lt;br /&gt;
&lt;br /&gt;
=== Ext4 ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:ja:Ext4|Ext4]] は SSD をサポートしているもうひとつのファイルシステムです。2.6.28 から安定していると考えられており日常的な利用ができるレベルまで成熟しています。ext4 のユーザーは [[fstab]] で {{ic|discard}} マウントオプションを使って (もしくは {{ic|tune2fs -o discard /dev/sdaX}} で) 明示的に TRIM コマンドのサポートを有効にする必要があります。&lt;br /&gt;
ext4 に関する詳細情報は[https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/filesystems/ext4.txt カーネルツリーの公式ドキュメント]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===XFS===&lt;br /&gt;
&lt;br /&gt;
ext4 や btrfs に加えて、[[wikipedia:ja:XFS|XFS]] も TRIM をサポートしていることを知っているユーザーは多くないでしょう。通常の方法で有効にすることができます。つまり、上述の discard オプションを利用するか、または fstrim コマンドを使うか選択することが可能です。詳細は [http://xfs.org/index.php/FITRIM/discard XFS wiki] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===JFS===&lt;br /&gt;
&lt;br /&gt;
Linux カーネルバージョン 3.7 から、完全な TRIM サポートが追加されました。現在、このトピックに関する情報はあまり揃っていませんが、[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTE5ODY Linux ニュースサイト] によって確かに取り上げられています。{{ic|discard}} マウントオプションにより、または fstrim を使う方法で有効にすることが可能です。&lt;br /&gt;
&lt;br /&gt;
===他のファイルシステム===&lt;br /&gt;
&lt;br /&gt;
他にも [[wikipedia:List_of_flash_file_systems#File systems optimized for flash memory, solid state media|SSD に特化して]]設計されたファイルシステムが存在します。[[F2FS]] などがあります。&lt;br /&gt;
&lt;br /&gt;
== ファームウェアのアップデート ==&lt;br /&gt;
&lt;br /&gt;
=== ADATA ===&lt;br /&gt;
&lt;br /&gt;
ADATA は Linux (i686) で利用できるユーティリティを、[http://www.adata.com/jp/support/driver/ ここ] にある彼らのサポートページに用意しています。モデルを選択すれば最新のファームウェアへのリンクが表示されます。&lt;br /&gt;
&lt;br /&gt;
最新の Linux アップデートユーティリティはファームウェアと一緒に入っており root で実行してください。最初にバイナリファイルに対して適切なパーミッションを設定する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
===Crucial===&lt;br /&gt;
&lt;br /&gt;
Crucial は ISO イメージを使ってファームウェアをアップデートする方法を提供しています。[http://www.crucial.jp/jpn/ja/support-ssd ここ] から製品を選んで &amp;quot;Manual Boot File&amp;quot; をダウンロードすることでイメージを入手できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|Crucial が提供している ISO イメージはハイブリッドではありません。{{ic|dd}} コマンドを使ってイメージを [[MBR]] が存在しないデバイスにコピーした場合、デバイスが起動できなくなります。}}&lt;br /&gt;
&lt;br /&gt;
M4 Crucial モデルを使っている場合、{{ic|smartctl}} でファームウェアのアップグレードが必要かどうかチェックすることが可能です:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ smartctl --all /dev/sd&#039;&#039;&#039;X&#039;&#039;&#039;|&lt;br /&gt;
==&amp;gt; WARNING: This drive may hang after 5184 hours of power-on time:&lt;br /&gt;
http://www.tomshardware.com/news/Crucial-m4-Firmware-BSOD,14544.html&lt;br /&gt;
See the following web pages for firmware updates:&lt;br /&gt;
http://www.crucial.com/support/firmware.aspx&lt;br /&gt;
http://www.micron.com/products/solid-state-storage/client-ssd#software&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記のような警告が表示された場合は重要なデータをバックアップしてから&#039;&#039;&#039;直ちにアップグレードを行うこと&#039;&#039;&#039;が推奨されます。ISO イメージと Grub を使用して Crucial MX100 のファームウェアをアップデートする手順は [http://www.rojtberg.net/1008/updating-crucial-mx100-firmware-with-ubuntu/ こちら] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Intel ===&lt;br /&gt;
&lt;br /&gt;
Intel は [https://downloadcenter.intel.com/download/18455 Intel® Solid-State Drive Toolbox] ソフトウェアが対応していないオペレーティングシステム向けに、Linux ライブシステムベースの [https://downloadcenter.intel.com/download/18363 Firmware Update Tool] を用意しています。&lt;br /&gt;
&lt;br /&gt;
===Kingston===&lt;br /&gt;
&lt;br /&gt;
Kingston は Sandforce コントローラを搭載しているドライブのファームウェアをアップデートする Linux ユーティリティを用意しています。Kingston の [https://www.kingston.com/jp/support/technical/category/ssd  SSD のサポートページ] で見つけることができます。使用している SSD のモデルにあわせてページを開いてください。例えば SH100S3 SSD のサポートは [https://www.hyperxgaming.com/jp/support/technical/products?model=sh100s3 HyperX のサポートページ] です。&lt;br /&gt;
&lt;br /&gt;
===Mushkin===&lt;br /&gt;
&lt;br /&gt;
マイナーな Mushkin ブランドのソリッドステートドライブも Sandforce コントローラーを使っており、ファームウェアをアップデートする Linux ユーティリティ (Kingston のものとほとんど同じ) が存在します。&lt;br /&gt;
&lt;br /&gt;
=== OCZ ===&lt;br /&gt;
&lt;br /&gt;
OCZ は Linux 用の [https://www.ocz.com/us/download/clout Command Line Online Update Tool (CLOUT)] を用意しています。{{AUR|ocz-ssd-utility}}, {{AUR|ocztoolbox}}, {{AUR|oczclout}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
===Samsung===&lt;br /&gt;
&lt;br /&gt;
Samsung は Magician Software 以外の方法によるアップデートを&amp;quot;サポートしない&amp;quot;としていますが、不可能ではありません。Magician Software を使ってファームウェアのアップデートを起動する USB ドライブを作成することができるようですが、一番簡単な方法はファームウェアのアップデート用のブータブル ISO イメージを使用することです。イメージは [https://www.samsung.com/semiconductor/minisite/ssd/download/tools.html ここ] から入手することが可能です。また、{{AUR|samsung_magician}}{{Broken package link|パッケージが存在しません}} パッケージでインストールすることができます。Magician がサポートしているのは Samsung ブランドの SSD だけです。OEM 供給されている Samsung 製の SSD はサポートされていません (Lenovo 向けの SSD など)。&lt;br /&gt;
&lt;br /&gt;
{{Note|Samsung はファームウェアアップデートをわかりやすく提供していません。ファームウェアアップデートに関連するページが4つあり、それぞれで別々の方法が示されています。}}&lt;br /&gt;
&lt;br /&gt;
(Microsoft Windows で Samsung の &amp;quot;Magician&amp;quot; ソフトウェアを使わずに) Linux で作成したライブ USB スティックからファームウェアアップデートを実行したい場合は、[http://fomori.org/blog/?p=933 この記事] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== SanDisk ===&lt;br /&gt;
&lt;br /&gt;
SanDisk は SanDisk SSD Toolkit でサポートされていないオペレーティングシステムにおいて SSD のファームウェアアップデートをするための &#039;&#039;&#039;ISO ファームウェアイメージ&#039;&#039;&#039;を作成しています。SSD の&#039;&#039;モデル&#039;&#039;だけでなく、SSD の&#039;&#039;容量&#039;&#039;にあわせて適切なファームウェアを選択する必要があります (例: 60GB &#039;&#039;&#039;または&#039;&#039;&#039; 256GB)。適当な ISO ファームウェアイメージを焼いたら、PC を再起動して新しく作成した CD/DVD ブートディスクで起動してください (USB スティックからでも動作するかもしれません)。&lt;br /&gt;
&lt;br /&gt;
ISO イメージには Linux カーネルと initrd が含まれています。それらを {{ic|/boot}} パーティションに展開して [[GRUB]] や [[Syslinux]] で起動してファームウェアをアップデートしてください。&lt;br /&gt;
&lt;br /&gt;
ファームウェアのアップデートが列挙された一つのページは存在しませんが (サイトがわかりづらい)、以下が関連するリンクです:&lt;br /&gt;
&lt;br /&gt;
* SanDisk Extreme SSD の [https://kb.sandisk.com/app/answers/detail/a_id/10127 ファームウェアのリリースノート] と [https://kb.sandisk.com/app/answers/detail/a_id/10476 手動ファームウェアアップデートのバージョン R211]。&lt;br /&gt;
* SanDisk Ultra SSD の [https://kb.sandisk.com/app/answers/detail/a_id/10192 ファームウェアのリリースノート] と [https://kb.sandisk.com/app/answers/detail/a_id/10477 手動ファームウェアアップデートのバージョン 365A13F0]。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
SSD の問題は Linux 固有の問題ではないファームウェアのバグである可能性も存在します。SSD に関しては、問題のトラブルシューティングを始める前に、ファームウェアのアップデートが存在しないか確認してみてください:&lt;br /&gt;
* SSD のファームウェアをアップデートする。[[#ファームウェアのアップデート]] を参照。&lt;br /&gt;
* マザーボードの BIOS/UEFI をアップデートする。[[Linux から BIOS を書き換える]]を参照。&lt;br /&gt;
&lt;br /&gt;
ファームウェアのバグであったとしても、解決できることがあります。ファームウェアにアップデートが存在しなかったり、ファームウェアのアップデートをしたくない場合、以下のセクションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== NCQ エラーを解消する ===&lt;br /&gt;
&lt;br /&gt;
SSD や SATA チップセットによっては Linux Native Command Queueing (NCQ) が正しく動作しないことがあります。dmesg に以下のようなエラーが表示されます:&lt;br /&gt;
&lt;br /&gt;
 [ 9.115544] ata9: exception Emask 0x0 SAct 0xf SErr 0x0 action 0x10 frozen&lt;br /&gt;
 [ 9.115550] ata9.00: failed command: READ FPDMA QUEUED&lt;br /&gt;
 [ 9.115556] ata9.00: cmd 60/04:00:d4:82:85/00:00:1f:00:00/40 tag 0 ncq 2048 in&lt;br /&gt;
 [ 9.115557] res 40/00:18:d3:82:85/00:00:1f:00:00/40 Emask 0x4 (timeout)&lt;br /&gt;
&lt;br /&gt;
起動時に NCQ を無効にするには、[[ブートローダー]]の設定におけるカーネルコマンドラインに {{ic|1=libata.force=noncq}} を追加してください。ポート 1 のディスク 0 の NCQ だけを無効化するには次を使用: {{ic|1=libata.force=1.00:noncq}}。&lt;br /&gt;
&lt;br /&gt;
また、sysfs を使うことで再起動せずに特定のドライブの NCQ を無効化することもできます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
# echo 1 &amp;gt; /sys/block/sdX/device/queue_depth&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
問題が解決しなかったり他の問題が発生する場合は、[[バグ報告ガイドライン|バグレポートを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
=== SATA の電源管理関連のエラーを解消する ===&lt;br /&gt;
&lt;br /&gt;
SATA Active Link Power Management ([[Wikipedia:Aggressive_Link_Power_Management|ALPM]]) が有効になっている場合にエラーを吐く SSD も存在します (例: Transcend MTS400)。ALPM はデフォルトで無効になっており、省電力デーモンによって有効になります (例: [[TLP]], [[Laptop Mode Tools]])。&lt;br /&gt;
&lt;br /&gt;
省電力デーモンを使っていて SATA 関連のエラーが表示される場合、バッテリーと AC 電源のプロファイルを {{ic|max_performance}} に設定して ALPM を無効化してみてください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.reddit.com/r/archlinux/comments/rkwjm/what_should_i_keep_in_mind_when_installing_on_ssd/ SSD に Arch をインストールすることについての Reddit における討論]&lt;br /&gt;
* [http://permalink.gmane.org/gmane.comp.file-systems.btrfs/19446 Re: Varying Leafsize and Nodesize in Btrfs]&lt;br /&gt;
* [http://thread.gmane.org/gmane.comp.file-systems.btrfs/19650/focus=19667 Re: SSD alignment and Btrfs sector size]&lt;br /&gt;
* [https://forums.anandtech.com/threads/erase-block-alignment-misinformation.2266113/ Erase Block (Alignment) Misinformation?]&lt;br /&gt;
* [https://superuser.com/questions/492084/is-alignment-to-erase-block-size-needed-for-modern-ssds Is alignment to erase block size needed for modern SSD&#039;s?]&lt;br /&gt;
* [http://thread.gmane.org/gmane.comp.file-systems.btrfs/15646 Btrfs support for efficient SSD operation (data blocks alignment)]&lt;br /&gt;
* [https://serverfault.com/questions/356534/ssd-erase-block-size-lvm-pv-on-raw-device-alignment SSD, Erase Block Size &amp;amp; LVM: PV on raw device, Alignment]&lt;/div&gt;</summary>
		<author><name>Skyline</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%BD%E3%83%AA%E3%83%83%E3%83%89%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96&amp;diff=22216</id>
		<title>ソリッドステートドライブ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%BD%E3%83%AA%E3%83%83%E3%83%89%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96&amp;diff=22216"/>
		<updated>2021-11-02T13:34:40Z</updated>

		<summary type="html">&lt;p&gt;Skyline: /* HDD に対する利点 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ストレージ]]&lt;br /&gt;
[[en:Solid State Drives]]&lt;br /&gt;
[[it:Solid State Drives]]&lt;br /&gt;
[[ru:Solid State Drives]]&lt;br /&gt;
[[zh-hans:Solid State Drives]]&lt;br /&gt;
[[zh-hant:Solid State Drives]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ソリッドステートドライブ/NVMe}}&lt;br /&gt;
{{Related|ソリッドステートドライブ/メモリセルの消去}}&lt;br /&gt;
{{Related|ベンチマーク/データストレージデバイス}}&lt;br /&gt;
{{Related|パフォーマンスの最大化#ストレージデバイス}}&lt;br /&gt;
{{Related|Flashcache}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
この記事では SSD (solid state drive) について Linux と関係する様々なことを記述していますが、一般的な根本原則やキーポイントは Windows ファミリーや macOS など他のオペレーティングシステムで SSD を使っているユーザーも応用することができます。さらにそのような情報に加えて、Linux ユーザーはここに書かれた方法で SSD を最適化・調整することが可能です。&lt;br /&gt;
&lt;br /&gt;
==概要==&lt;br /&gt;
&lt;br /&gt;
===イントロダクション===&lt;br /&gt;
&lt;br /&gt;
Solid State Drive (SSD) は PnP デバイスではありません。パーティションアライメント、ファイルシステムの選択、TRIM サポートなどの特別事項は SSD の性能を最適化するために必要になります。この記事には Linux で SSD から最高の性能を引き出すための情報を集めています。コンテンツはトピックでまとめられており、必ずしも系統的または時系列順に並べられているわけではないので、実際に推奨事項をやろうとする前に記事全体を読むと良いでしょう。&lt;br /&gt;
&lt;br /&gt;
{{Note|この記事は Linux を動作させているユーザーを対象にしていますが BSD, macOS, Windows など他のオペレーティングシステムを使っているユーザーにも中身がほぼ全て当てはまります。}}&lt;br /&gt;
&lt;br /&gt;
===HDD に対する利点===&lt;br /&gt;
&lt;br /&gt;
*高速な読み込み速度 - 最新のデスクトップ HDD のおよそ2-3倍高速 (7,200 RPM で SATA2 インタフェースを使用した場合に比べて)。&lt;br /&gt;
*一定の読み込み速度 - デバイス全体で読み込み速度の低下がありません。HDD はドライブのヘッドが外縁から HDD プラッタの中心に移動するにつれパフォーマンスがだんだん低下します。&lt;br /&gt;
*極小のアクセス時間 - HDD よりおおよそ100倍高速。例えば、デスクトップ HDD の 12-20 ms (12,000-20,000 us) に対して 0.1 ms (100 us)。&lt;br /&gt;
*高度な信頼性。&lt;br /&gt;
*可動部が存在しない。&lt;br /&gt;
*熱の発生が少ない。&lt;br /&gt;
*消費電力が少ない - HDD が回転速度によって 10-30ワット消費するのに対してアイドル状態で1ワット、読み書き中は1-2ワット。&lt;br /&gt;
*軽量 - モバイル端末のストレージに最適。&lt;br /&gt;
&lt;br /&gt;
===欠点===&lt;br /&gt;
&lt;br /&gt;
*容量単位のコスト (1GBあたり1ドル近く、それに対して回転メディアでは1GBあたり10または20セント)。&lt;br /&gt;
*市販されているモデルの容量が HDD よりも少ない。&lt;br /&gt;
*セルの大きさによって回転メディアと異なるファイルシステムの最適化が必要。現代の OS はアクセスを最適化するためにフラッシュ変換レイヤを使用しており生のフラッシュアクセスは遮蔽されている。&lt;br /&gt;
*パーティションとファイルシステムを SSD の特性にあわせて調整する必要がある。ページサイズや消去ページサイズは自動検出されません。&lt;br /&gt;
*セルは劣化します。一般的に、50nm プロセスによる民生の MLC セルは10000回の書き込み、35nm では5000回の書き込み、25nm では3000回の書き込みが出来ます（小さくなればなるほど高密度で値段が安くなります）。書き込みが適当に散らばっていて、小さすぎず、セルにピッタリはまるようになったときに、容量の倍数である最終的な SSD の書き込みボリュームに移されます。日々の書き込みボリュームは耐用年数から差引かなければなりません。ただし、最新のハードウェアで行われた試験 [https://techreport.com/review/25889/the-ssd-endurance-experiment-500tb-update][https://techreport.com/review/26523/the-ssd-endurance-experiment-casualties-on-the-way-to-a-petabyte][https://techreport.com/review/27436/the-ssd-endurance-experiment-two-freaking-petabytes][https://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead] では SSD の劣化は無視できるほどで、人為的に書き込みボリュームを多くしても SSD の耐用年数は HDD と並ぶとされています。&lt;br /&gt;
*ファームウェアやコントローラーが複雑。たまにバグが存在することもあります。最新のコントローラーは HDD と匹敵するほどの電力を消費します。コントローラーにはガベージコレクションの付いたログ構造化ファイルシステムに相当するものが[https://lwn.net/Articles/353411/ 実装されています]。回転メディアにあわせて作られた SATA コマンドは変換されます。ファームウェアによってはオンザフライで圧縮を行います。反復書き込みをフラッシュ領域全体に散らばらせて、特定のセルがすぐに劣化するのをふせぎます。また、書き込みをまとめることで小さな書き込みがそれと同じ回数大きなセルを消去することにならないようにしています。最後にデータを含むセルを移動するので時間の経過によってセルが中身を失うことはありません。&lt;br /&gt;
*ディスクが満杯になるにつれてパフォーマンスが低下します。一般にガベージコレクションはあまり上手く実装されておらず、空き領域が完全に空のセルに集められているとは限りません。&lt;br /&gt;
&lt;br /&gt;
===購入前に考慮すべき事項===&lt;br /&gt;
&lt;br /&gt;
最新の SSD を買う前に見ておくべきポイントがいくつか存在します。&lt;br /&gt;
*[[wikipedia:TRIM|TRIM]] のネイティブサポートは不可欠です。SSD の寿命を伸ばして、少しずつおこる書き込み操作のパフォーマンスの減少を少なくします。&lt;br /&gt;
*適切な容量の SSD を買うことが重要です。カーネルが SSD パーティションを効率的に利用するために占有率は75%以下が望まれます。&lt;br /&gt;
&lt;br /&gt;
==SSD のパフォーマンスを最大化させるヒント==&lt;br /&gt;
=== パーティションアライメント ===&lt;br /&gt;
消去ブロックサイズに揃えたパーティションを使用することを強く推奨します。昔は、パーティション分けをするときに手動で計算して設定する必要がありました。現在では一般的なパーティションツールのほとんどが（最新バージョンを使っていれば）パーティションアライメントを自動的に行います:&lt;br /&gt;
* fdisk&lt;br /&gt;
* gdisk&lt;br /&gt;
* gparted&lt;br /&gt;
* parted&lt;br /&gt;
&lt;br /&gt;
パーティションが調整されているか確認するには、以下のように {{ic|/usr/bin/blockdev}} を使って問い合わせて下さい。&#039;0&#039; が返ってくれば、パーティションは揃えられています:&lt;br /&gt;
 # blockdev --getalignoff /dev/&amp;lt;partition&amp;gt;&lt;br /&gt;
 0&lt;br /&gt;
&lt;br /&gt;
=== TRIM ===&lt;br /&gt;
&lt;br /&gt;
ほとんどの SSD は長期間パフォーマンスを維持するために [[wikipedia:TRIM|ATA_TRIM コマンド]]をサポートしています。ベンチマーク前後などの詳細は、[https://sites.google.com/site/lightrush/random-1/howtoconfigureext4toenabletrimforssdsonubuntu この] チュートリアルを見て下さい。&lt;br /&gt;
&lt;br /&gt;
Linux カーネルバージョン 3.8 現在、次のファイルシステムが TRIM をサポートしています: [[Ext4]], [[Btrfs]], [[JFS]], VFAT, [[XFS]], [[F2FS]]。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|ntfs-3g}} バージョン 2015.3.14 から、[[NTFS]] ファイルシステムも TRIM がサポートされています [http://permalink.gmane.org/gmane.comp.file-systems.ntfs-3g.devel/1101]。&lt;br /&gt;
&lt;br /&gt;
VFAT はマウントフラグ {{ic|discard}} によって TRIM をサポートしています、カーネル4.19以降は{{ic|fstrim}}もサポートしています。&lt;br /&gt;
&lt;br /&gt;
この記事の[[#ファイルシステムの選択|ファイルシステムの選択]]のセクションにさらに詳しく書かれています。&lt;br /&gt;
&lt;br /&gt;
==== TRIM のサポートを確認する ====&lt;br /&gt;
&lt;br /&gt;
 # hdparm -I /dev/sda |grep TRIM&lt;br /&gt;
         *    Data Set Management TRIM supported (limit 1 block)&lt;br /&gt;
         *    Deterministic read data after TRIM&lt;br /&gt;
&lt;br /&gt;
&amp;quot;limit 1 block&amp;quot; や &amp;quot;limit 8 block&amp;quot; の意味は、[[wikipedia:TRIM#ATA]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== fstrim で定期的に TRIM を適用する ====&lt;br /&gt;
&lt;br /&gt;
{{Note|この方法は VFAT ファイルシステムでは使えません。}}&lt;br /&gt;
&lt;br /&gt;
({{Pkg|base}} と {{Grp|base-devel}} に含まれている) {{Pkg|util-linux}} パッケージには {{ic|fstrim.service}} と {{ic|fstrim.timer}} の [[systemd]] ユニットファイルが入っています。このタイマーを[[systemd#ユニットを使う|有効化]]すれば毎週サービスが実行され、discard をサポートしているデバイス上のマウント済みファイルシステム全てが trim されます。&lt;br /&gt;
&lt;br /&gt;
タイマーは最後に実行してから一週間経過したことを知るために (最初に実行したときに作成される) {{ic|/var/lib/systemd/timers/stamp-fstrim.timer}} のタイムスタンプを使います。そのため、何度も頻繁に実行される恐れはありません。&lt;br /&gt;
&lt;br /&gt;
{{ic|journalctl}} や {{ic|systemctl status}} コマンドを使うことでユニットの活動状態を調べることができます:&lt;br /&gt;
{{hc|# journalctl -u fstrim|2=&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;shows several log entries if enabled&amp;gt;&lt;br /&gt;
...}}&lt;br /&gt;
{{hc|# systemctl status fstrim|2=&lt;br /&gt;
● fstrim.service - Discard unused blocks&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/fstrim.service; static; vendor preset: disabled)&lt;br /&gt;
   Active: inactive (dead) since lun. 2015-06-08 00:00:18 CEST; 2 days ago&lt;br /&gt;
  Process: 18152 ExecStart=/sbin/fstrim -a (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Main PID: 18152 (code=exited, status=0/SUCCESS)&lt;br /&gt;
&lt;br /&gt;
juin 08 00:00:16 arch-clevo systemd[1]: Starting Discard unused blocks...&lt;br /&gt;
juin 08 00:00:18 arch-clevo systemd[1]: Started Discard unused blocks.&lt;br /&gt;
}}&lt;br /&gt;
{{Note|タイマーを調査したい時は {{ic|.timer}} 拡張子を指定するようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
タイマーの実行間隔を変更したい場合は、[[Systemd#ユニットファイルの編集|ユニットファイルを編集]]してください。&lt;br /&gt;
&lt;br /&gt;
==== マウントフラグで TRIM を有効にする ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|discard}} フラグを使ってパーティションをマウントする前に SSD が TRIM をサポートしていることを確認してください。そうしないとデータが喪失する可能性があります。残念ながら SSD の TRIM の実行に関する BIOS の品質はバラバラであり、ファイルシステム開発者 Theodore Ts&#039;o は {{ic|discard}} マウントフラグの使用を[http://thread.gmane.org/gmane.comp.file-systems.ext4/41974 推奨していません] 。あなたの使用しているハードウェアについて不安があるのならば、代わりに [[#fstrim で定期的に TRIM を適用する|fstrim で定期的に TRIM を適用する]]ようにしてください。また、TRIM の他の[[WikiPedia:Trim_(computing)#Shortcomings|欠点]]として、TRIM コマンドを実行すると特定のデバイス (特に Samsung 8* シリーズ) で深刻なデータ障害が発生する可能性があります [https://blog.algolia.com/when-solid-state-drives-are-not-that-solid/]。データの破損が確認された後 [https://github.com/torvalds/linux/blob/e64f638483a21105c7ce330d543fa1f1c35b5bc7/drivers/ata/libata-core.c#L4109-L4286]、Linux カーネルは多数の [https://github.com/torvalds/linux/blob/e64f638483a21105c7ce330d543fa1f1c35b5bc7/drivers/ata/libata-core.c#L4227 デバイス] で TRIM コマンドの実行をブラックリスト化しています (2015年7月現在)。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/fstab}} のエントリで {{ic|discard}} オプションを使うことで TRIM コマンドが有効になります:&lt;br /&gt;
&lt;br /&gt;
 /dev/sda2  /boot       ext4  defaults,noatime,&#039;&#039;&#039;discard&#039;&#039;&#039;   0  2&lt;br /&gt;
 /dev/sda1  /boot/efi   vfat  defaults,noatime,&#039;&#039;&#039;discard&#039;&#039;&#039;   0  2&lt;br /&gt;
 /dev/sda3  /           ext4  defaults,noatime,&#039;&#039;&#039;discard&#039;&#039;&#039;   0  2&lt;br /&gt;
&lt;br /&gt;
TRIM の一番大きな恩恵は速度です。SSD は効率的に [https://arstechnica.com/gadgets/2015/04/ask-ars-my-ssd-does-garbage-collection-so-i-dont-need-trim-right/ ガーベジコレクション] を行えるようになります。ただし、効果はモデルによって異なり、初期に製造された SSD の場合、逆効果が現れることもあります。このため、ディストリビューションによっては TRIM を使用しないように決定したところもあります (例えば Ubuntu。[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTUxOTY この記事] や [https://blueprints.launchpad.net/ubuntu/+spec/core-1311-ssd-trimming 関連するブループリント] を参照)。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* SSD でブロックデバイス暗号化を使っている場合 TRIM はデフォルトでは有効になりません。詳しくは [[Dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート|Dm-crypt/SSD の TRIM のサポート]]を参照。&lt;br /&gt;
* {{ic|fstrim}} を定期的に実行している場合 {{ic|discard}} フラグは必要ありません。&lt;br /&gt;
* ext3 の root パーティションで {{ic|discard}} フラグを使用すると読み取り専用でマウントされます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== tune2fs で TRIM を有効にする (非推奨) ====&lt;br /&gt;
&lt;br /&gt;
tune2fs を使って静的に trim フラグを設定することができます:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -o discard /dev/sd&#039;&#039;&#039;XY&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|この方法を使うと {{ic|mount}} で {{ic|discard}} オプションが[https://bbs.archlinux.org/viewtopic.php?id&amp;amp;#61;137314 現れなくなります]。}}&lt;br /&gt;
&lt;br /&gt;
==== LVM で TRIM を有効にする ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lvm/lvm.conf}} で {{ic|issue_discards}} オプションを有効にしてください。&lt;br /&gt;
&lt;br /&gt;
==== dm-crypt で TRIM を有効にする ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/crypttab}} を設定して SSD 上の暗号化されたブロックデバイスのオプションのリストに {{ic|discard}} を含めて下さい。この discard オプションは discard リクエストが暗号化されたブロックデバイスを通過するのを許可します。これによって SSD ストレージのパフォーマンスは向上しますが、セキュリティに影響があります。[[Dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート|このセクション]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== I/O スケジューラー ===&lt;br /&gt;
&lt;br /&gt;
デフォルトの [[wikipedia:CFQ|CFQ]] (Completely Fair Queuing) スケジューラから [[wikipedia:NOOP_scheduler|NOOP]] または [[wikipedia:Deadline_scheduler|Deadline]] に切り替えたほうが良いでしょう。後者の2つは SSD のパフォーマンスを加速させます。例えば、NOOP スケジューラは全ての I/O リクエストに対して、ディスクに物理的に近いものを並び替えたりグループ化することなく、一つのシンプルなキューを実行します。SSD においては全てのセクタでシーク時間は同じであり、シーク時間に基づいて I/O キューを並び替える必要性には説得力がありません。&lt;br /&gt;
&lt;br /&gt;
Arch ではデフォルトで CFQ スケジューラが有効にされています。{{ic|/sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler}} の中身を見て確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler|&lt;br /&gt;
noop deadline [cfq]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
表示されているスケジューラの中で角括弧で囲まれているのが現在使われているスケジューラです。&lt;br /&gt;
&lt;br /&gt;
ユーザーは再起動することなくスケジューラを変更することができます:&lt;br /&gt;
&lt;br /&gt;
 # echo noop &amp;gt; /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 $ sudo tee /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler &amp;lt;&amp;lt;&amp;lt; noop&lt;br /&gt;
&lt;br /&gt;
この方法は永続的ではありません (再起動で変更は失われます)。ファイルの中身をもう一度見て &amp;quot;noop&amp;quot; が使われるようになっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== カーネルパラメータ (シングルデバイス) ====&lt;br /&gt;
&lt;br /&gt;
システムの唯一のストレージデバイスが SSD である場合、{{ic|1=elevator=noop}} [[カーネルパラメータ]]でシステム全体の I/O スケジューラを設定できます。&lt;br /&gt;
&lt;br /&gt;
====1つのデバイスまたは HDD/SSD 混合環境で udev を使って設定する====&lt;br /&gt;
&lt;br /&gt;
上の方法は確かに動作しますが、あくまで回避策と考えられています。つまり、デバイスのスケジューラを一番最初に実行するシステムを使うのが好ましいでしょう。この場合、それは udev で、設定するのに必要なのはシンプルな [[udev]] ルールだけです。&lt;br /&gt;
&lt;br /&gt;
設定するには、以下を作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/60-schedulers.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# set deadline scheduler for non-rotating disks&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;sd[a-z]&amp;quot;, ATTR{queue/rotational}==&amp;quot;0&amp;quot;, ATTR{queue/scheduler}=&amp;quot;deadline&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Deadline/CFQ をお望みのスケジューラに設定してください。次に起動した時に変更が適用されるはずです。新しいルールが適用されているか確認するには:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/block/sd&#039;&#039;&#039;X&#039;&#039;&#039;/queue/scheduler  # where &#039;&#039;&#039;X&#039;&#039;&#039; is the device in question&lt;br /&gt;
&lt;br /&gt;
{{Note|上記の例で udev ルールの名前に60を使っていますが、終わりが {{ic|.rules}} であればどんな名前でも付けられます。}}&lt;br /&gt;
&lt;br /&gt;
=== SSD のスワップ領域 ===&lt;br /&gt;
&lt;br /&gt;
SSD 上にスワップパーティションを配置することが可能です。最新のデスクトップではメモリが2ギガ以上積まれておりスワップはほとんど使いません。ただしハイバネート機能を利用するシステムの場合は別です。以下のようにシステムの &amp;quot;swappiness&amp;quot; を減らすことで SSD にあるスワップへの書き込みを減らすことが推奨されます:&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /proc/sys/vm/swappiness&lt;br /&gt;
&lt;br /&gt;
[[パフォーマンスの最大化#Swappiness|パフォーマンスの最大化]]の記事で推奨されているように行うこともできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/99-sysctl.conf|2=&lt;br /&gt;
vm.swappiness=1&lt;br /&gt;
vm.vfs_cache_pressure=50&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Hdparm で &amp;quot;frozen&amp;quot; 状態と表示される ===&lt;br /&gt;
&lt;br /&gt;
マザーボードの BIOS は初期化時に取り付けられたストレージデバイスに &amp;quot;security freeze&amp;quot; コマンドを実行することがあります。同様に SSD (や HDD) の BIOS もファクトリーにおいて &amp;quot;security freeze&amp;quot; に設定されていることがあります。どちらにしても、以下の出力のようにデバイスのパスワードセキュリティ設定が &amp;quot;frozen&amp;quot; になります:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=# hdparm -I /dev/sda |output=&lt;br /&gt;
 Security: &lt;br /&gt;
 	Master password revision code = 65534&lt;br /&gt;
 		supported&lt;br /&gt;
 	not	enabled&lt;br /&gt;
 	&#039;&#039;&#039;not	locked&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;frozen&#039;&#039;&#039;&lt;br /&gt;
 	not	expired: security count&lt;br /&gt;
 		supported: enhanced erase&lt;br /&gt;
 	4min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT. }}&lt;br /&gt;
&lt;br /&gt;
デバイスのフォーマットやオペレーティングシステムのインストールといった操作はこの &amp;quot;security freeze&amp;quot; の影響を受けません。&lt;br /&gt;
&lt;br /&gt;
上記の出力はデバイスが起動時に HDD パスワードによってロックされていないこと、そして凍結状態によってデバイスを (パスワードを設定してデバイスをロックさせてしまうような) マルウェアから保護していることがわかります。&lt;br /&gt;
&lt;br /&gt;
凍結状態のデバイスにパスワードを設定したい場合、それに対応しているマザーボード BIOS が必要です。[[Wikipedia:Hardware-based_full_disk_encryption|ハードウェア暗号化]]に必須なので、ノートパソコンでは大抵サポートされていますが、デスクトップやサーバーのボードではサポートがあるかどうかはっきりしないことがあります。例えば、Intel DH67CL/BL マザーボードの場合、設定にアクセスするには物理的なジャンパによってマザーボードを &amp;quot;maintenance mode&amp;quot; に設定する必要があります ([https://sstahlman.blogspot.in/2014/07/hardware-fde-with-intel-ssd-330-on.html?showComment=1411193181867#c4579383928221016762], [https://communities.intel.com/message/251978#251978] を参照)。&lt;br /&gt;
&lt;br /&gt;
{{Warning|よくわからないときは {{ic|hdparm}} を使って上記のロックセキュリティ設定を変更しないで下さい。}}&lt;br /&gt;
&lt;br /&gt;
SSD を消去するときは、[[ディスクの完全消去#hdparm]] や[[#SSD_Memory_Cell_Clearing|下のセクション]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== SSD Memory Cell Clearing ===&lt;br /&gt;
&lt;br /&gt;
時々、SSD のセルを完全にリセットしてデバイスにインストールした時と同じ初めの状態にすることで [https://www.anandtech.com/show/2738/8 製造時の書き込みパフォーマンス] を取り戻したいと思うことがあるかもしれません。SSD の書き込みパフォーマンスはネイティブの TRIM サポートを使っていても時間経過で落ちていきます。TRIM はファイル削除に対するセーフガードとして働くだけで、増加保存などの代わりにはなりません。&lt;br /&gt;
&lt;br /&gt;
リセットは [[ソリッドステートドライブ/メモリセルの消去|SSD メモリセルの消去]]の wiki 記事に書かれている3つのステップで簡単に行なえます。何らかの理由で SSD の BIOS を使わずにディスクのデータを消去したい場合は[[ディスクの完全消去#フラッシュメモリ]]を読んでください。&lt;br /&gt;
&lt;br /&gt;
==SSD の読み書きを最小化するヒント==&lt;br /&gt;
&lt;br /&gt;
SSD の使用で一番重要なテーマは読み書きが多い操作を SSD の代わりに RAM (Random Access Memory) や物理 HDD に配置するという&#039;シンプリシティ&#039;でしょう。そうすることで SSD をより長生きさせることができます。これは主として巨大な消去ブロックサイズのためで (場合によっては 512 KiB)、多数の小さな書き込みは大きな効果的な書き込みになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|書き込み増幅率が平凡な 10x で、書き込み/消去サイクルが標準的な 10000 である、32GB の SSD の場合、毎日 10GB のデータ書き込みを行うと、8年間で寿命が尽きるとされます。この数字はもっと容量が大きい SSD を使ったり書き込み増幅が少ない最新のコントローラを使うことで改善されます。また、ディスクの書き込みを制限するのにどの方法が必要なのか考えるときは [https://techreport.com/review/25889/the-ssd-endurance-experiment-500tb-update] を比較してください。}}&lt;br /&gt;
&lt;br /&gt;
プログラムがディスクにどれだけ書き込んでいるか確認するには {{ic|$ iotop -oPa}} を使ってディスクの書き込み順にソートしてください。&lt;br /&gt;
&lt;br /&gt;
=== 賢いパーティションスキーム ===&lt;br /&gt;
&lt;br /&gt;
*SSD と HDD 両方搭載しているシステムでは、読み書きを減らすために {{ic|/var}} パーティションは SSD ではなく磁気ディスク上に配置すると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
===noatime マウントフラグ===&lt;br /&gt;
&lt;br /&gt;
このフラグを {{ic|/etc/fstab}} で使うと、ファイルに関連付けられた atime 情報の更新によるファイルシステムの読み込みアクセスの記録が止められます。{{ic|noatime}} 設定によってファイルの読み込みだけでファイルシステムに書き込みを行うのを阻止することになります。前のセクションで説明しているように書き込みは負担が大きいため、ある程度パフォーマンスが向上する可能性があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|このオプションを有効にしても、ファイルが変更されたときのファイルの変更日時の情報は更新されます。}}&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1  /       ext4   defaults,&#039;&#039;&#039;noatime&#039;&#039;&#039;   0  1&lt;br /&gt;
 /dev/sda2  /home   ext4   defaults,&#039;&#039;&#039;noatime&#039;&#039;&#039;   0  2&lt;br /&gt;
&lt;br /&gt;
{{Note|この設定を使うと [[Mutt]] などのプログラムで問題がおこります。ファイルのアクセス日時がやがて変更日時よりも前になってしまうからです。{{ic|noatime}} の代わりに {{ic|relatime}} オプションを使うことでファイルの最終変更日時よりも atime が前にならないようにすることができます。また、maildir ストレージフォーマットを使うことでも mutt の問題は解決します。}}&lt;br /&gt;
&lt;br /&gt;
=== 頻繁に使うファイルを RAM に移動する ===&lt;br /&gt;
&lt;br /&gt;
==== ブラウザのプロファイル ====&lt;br /&gt;
&lt;br /&gt;
tmpfs を使って chromium, firefox, opera などのブラウザプロファイルを RAM へ&#039;&#039;簡単に&#039;&#039;マウントすることができ、また、rsync を使うことで HDD によるバックアップと同期させることができます。これによって速度が向上するだけでなく、SSD の読み書きサイクルを節約することにもなります。&lt;br /&gt;
&lt;br /&gt;
AUR には {{Pkg|profile-sync-daemon}} など、この手順を自動化するパッケージが複数存在します。&lt;br /&gt;
&lt;br /&gt;
==== その他 ====&lt;br /&gt;
&lt;br /&gt;
ブラウザプロファイルを RAM に移動するのと同じ理由で、(ウェブサーバーを動かしている場合) {{ic|/srv/http}} などの頻繁に利用するディレクトリを移動することもできます。{{Pkg|profile-sync-daemon}} の姉妹プロジェクトとして {{Pkg|anything-sync-daemon}} があり、同じ方法・セーフガードを使って&#039;&#039;&#039;あらゆる&#039;&#039;&#039;ディレクトリを RAM に同期させるよう定義することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== tmpfs でコンパイルする ===&lt;br /&gt;
&lt;br /&gt;
意図的に {{ic|/tmp}} でコンパイルすることで問題を少なくすることができます。Arch Linux はデフォルトで {{ic|/tmp}} を物理メモリの50%にします。メモリが 4GB 以上あるシステムならば、{{ic|/scratch}} を作成して tmpfs にマウントすることで物理メモリの50%以上を使うように設定できます。&lt;br /&gt;
&lt;br /&gt;
例えば物理メモリが 8GB あるマシンの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;$ mount | grep tmpfs&amp;lt;/nowiki&amp;gt;|2=&lt;br /&gt;
tmpfs     /scratch     tmpfs     nodev,nosuid,size=7G     0     0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳細については、[[Makepkg#コンパイル時間を短縮する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステムのジャーナリングを無効にする ===&lt;br /&gt;
&lt;br /&gt;
SSD で ext4 などのジャーナリングファイルシステムを使っている場合、ジャーナルを無効にすることで読み書きを減らすことができます。ただし、ジャーナリングを無効にしたファイルシステムを使用するときの明らかな欠点として、ちゃんとマウントが解除されていない (つまり、電源が落ちたり、カーネルが固まったりする) とデータが消失します。最新の SSD では、ほとんどの場合、あまり読み書きサイクルを増やさないでジャーナリングを有効にすることができると [http://tytso.livejournal.com/61830.html Ted Tso] は主張しています:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;{{ic|noatime}} でマウントされた ext4 ファイルシステムに書き込まれるデータの量 (単位はメガバイト)。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 操作 !! ジャーナル !! ジャーナルなし !! 減少率&lt;br /&gt;
|-&lt;br /&gt;
!git clone&lt;br /&gt;
|367.0&lt;br /&gt;
|353.0&lt;br /&gt;
|3.81 %&lt;br /&gt;
|-&lt;br /&gt;
!make&lt;br /&gt;
|207.6&lt;br /&gt;
|199.4&lt;br /&gt;
|3.95 %&lt;br /&gt;
|-&lt;br /&gt;
!make clean&lt;br /&gt;
|6.45&lt;br /&gt;
|3.73&lt;br /&gt;
|42.17 %&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;この結果は、make clean など、メタデータの変更が多い操作はディスクに書き込むデータ量がほぼ2倍になることを示しています。これは当然の結果です。なぜならメタデータが最終的にディスクに書き込まれる前に、メタデータブロックへの変更はまず全てジャーナルに書き込まれ、それからジャーナルのトランザクションが行われるからです。しかしながら、ファイルシステムのメタデータブロックを変更するだけでなくデータの書き込みも行うような一般的な操作では、違いはかなり少なくなります。&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|表にある make clean の例は、この記事の[[#tmpfs でコンパイルする|前のセクション]]で説明している tmpfs でコンパイルするのが何故推奨されているのかを示す典型例でしょう。}}&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムの選択 ==&lt;br /&gt;
&lt;br /&gt;
=== Btrfs ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:ja:Btrfs|Btrfs]] のサポートは Linux カーネルのメインライン 2.6.29 リリースから含まれています。ext4 の後継として使っているアーリーアダプターもいますが、人によってはまだ日常的な利用には適さないと感じるかもしれません。詳細は [[Btrfs]] の記事を読んで下さい。&lt;br /&gt;
&lt;br /&gt;
=== Ext4 ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:ja:Ext4|Ext4]] は SSD をサポートしているもうひとつのファイルシステムです。2.6.28 から安定していると考えられており日常的な利用ができるレベルまで成熟しています。ext4 のユーザーは [[fstab]] で {{ic|discard}} マウントオプションを使って (もしくは {{ic|tune2fs -o discard /dev/sdaX}} で) 明示的に TRIM コマンドのサポートを有効にする必要があります。&lt;br /&gt;
ext4 に関する詳細情報は[https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/filesystems/ext4.txt カーネルツリーの公式ドキュメント]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===XFS===&lt;br /&gt;
&lt;br /&gt;
ext4 や btrfs に加えて、[[wikipedia:ja:XFS|XFS]] も TRIM をサポートしていることを知っているユーザーは多くないでしょう。通常の方法で有効にすることができます。つまり、上述の discard オプションを利用するか、または fstrim コマンドを使うか選択することが可能です。詳細は [http://xfs.org/index.php/FITRIM/discard XFS wiki] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===JFS===&lt;br /&gt;
&lt;br /&gt;
Linux カーネルバージョン 3.7 から、完全な TRIM サポートが追加されました。現在、このトピックに関する情報はあまり揃っていませんが、[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTE5ODY Linux ニュースサイト] によって確かに取り上げられています。{{ic|discard}} マウントオプションにより、または fstrim を使う方法で有効にすることが可能です。&lt;br /&gt;
&lt;br /&gt;
===他のファイルシステム===&lt;br /&gt;
&lt;br /&gt;
他にも [[wikipedia:List_of_flash_file_systems#File systems optimized for flash memory, solid state media|SSD に特化して]]設計されたファイルシステムが存在します。[[F2FS]] などがあります。&lt;br /&gt;
&lt;br /&gt;
== ファームウェアのアップデート ==&lt;br /&gt;
&lt;br /&gt;
=== ADATA ===&lt;br /&gt;
&lt;br /&gt;
ADATA は Linux (i686) で利用できるユーティリティを、[http://www.adata.com/jp/support/driver/ ここ] にある彼らのサポートページに用意しています。モデルを選択すれば最新のファームウェアへのリンクが表示されます。&lt;br /&gt;
&lt;br /&gt;
最新の Linux アップデートユーティリティはファームウェアと一緒に入っており root で実行してください。最初にバイナリファイルに対して適切なパーミッションを設定する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
===Crucial===&lt;br /&gt;
&lt;br /&gt;
Crucial は ISO イメージを使ってファームウェアをアップデートする方法を提供しています。[http://www.crucial.jp/jpn/ja/support-ssd ここ] から製品を選んで &amp;quot;Manual Boot File&amp;quot; をダウンロードすることでイメージを入手できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|Crucial が提供している ISO イメージはハイブリッドではありません。{{ic|dd}} コマンドを使ってイメージを [[MBR]] が存在しないデバイスにコピーした場合、デバイスが起動できなくなります。}}&lt;br /&gt;
&lt;br /&gt;
M4 Crucial モデルを使っている場合、{{ic|smartctl}} でファームウェアのアップグレードが必要かどうかチェックすることが可能です:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ smartctl --all /dev/sd&#039;&#039;&#039;X&#039;&#039;&#039;|&lt;br /&gt;
==&amp;gt; WARNING: This drive may hang after 5184 hours of power-on time:&lt;br /&gt;
http://www.tomshardware.com/news/Crucial-m4-Firmware-BSOD,14544.html&lt;br /&gt;
See the following web pages for firmware updates:&lt;br /&gt;
http://www.crucial.com/support/firmware.aspx&lt;br /&gt;
http://www.micron.com/products/solid-state-storage/client-ssd#software&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記のような警告が表示された場合は重要なデータをバックアップしてから&#039;&#039;&#039;直ちにアップグレードを行うこと&#039;&#039;&#039;が推奨されます。ISO イメージと Grub を使用して Crucial MX100 のファームウェアをアップデートする手順は [http://www.rojtberg.net/1008/updating-crucial-mx100-firmware-with-ubuntu/ こちら] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Intel ===&lt;br /&gt;
&lt;br /&gt;
Intel は [https://downloadcenter.intel.com/download/18455 Intel® Solid-State Drive Toolbox] ソフトウェアが対応していないオペレーティングシステム向けに、Linux ライブシステムベースの [https://downloadcenter.intel.com/download/18363 Firmware Update Tool] を用意しています。&lt;br /&gt;
&lt;br /&gt;
===Kingston===&lt;br /&gt;
&lt;br /&gt;
Kingston は Sandforce コントローラを搭載しているドライブのファームウェアをアップデートする Linux ユーティリティを用意しています。Kingston の [https://www.kingston.com/jp/support/technical/category/ssd  SSD のサポートページ] で見つけることができます。使用している SSD のモデルにあわせてページを開いてください。例えば SH100S3 SSD のサポートは [https://www.hyperxgaming.com/jp/support/technical/products?model=sh100s3 HyperX のサポートページ] です。&lt;br /&gt;
&lt;br /&gt;
===Mushkin===&lt;br /&gt;
&lt;br /&gt;
マイナーな Mushkin ブランドのソリッドステートドライブも Sandforce コントローラーを使っており、ファームウェアをアップデートする Linux ユーティリティ (Kingston のものとほとんど同じ) が存在します。&lt;br /&gt;
&lt;br /&gt;
=== OCZ ===&lt;br /&gt;
&lt;br /&gt;
OCZ は Linux 用の [https://www.ocz.com/us/download/clout Command Line Online Update Tool (CLOUT)] を用意しています。{{AUR|ocz-ssd-utility}}, {{AUR|ocztoolbox}}, {{AUR|oczclout}} パッケージでインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
===Samsung===&lt;br /&gt;
&lt;br /&gt;
Samsung は Magician Software 以外の方法によるアップデートを&amp;quot;サポートしない&amp;quot;としていますが、不可能ではありません。Magician Software を使ってファームウェアのアップデートを起動する USB ドライブを作成することができるようですが、一番簡単な方法はファームウェアのアップデート用のブータブル ISO イメージを使用することです。イメージは [https://www.samsung.com/semiconductor/minisite/ssd/download/tools.html ここ] から入手することが可能です。また、{{AUR|samsung_magician}}{{Broken package link|パッケージが存在しません}} パッケージでインストールすることができます。Magician がサポートしているのは Samsung ブランドの SSD だけです。OEM 供給されている Samsung 製の SSD はサポートされていません (Lenovo 向けの SSD など)。&lt;br /&gt;
&lt;br /&gt;
{{Note|Samsung はファームウェアアップデートをわかりやすく提供していません。ファームウェアアップデートに関連するページが4つあり、それぞれで別々の方法が示されています。}}&lt;br /&gt;
&lt;br /&gt;
(Microsoft Windows で Samsung の &amp;quot;Magician&amp;quot; ソフトウェアを使わずに) Linux で作成したライブ USB スティックからファームウェアアップデートを実行したい場合は、[http://fomori.org/blog/?p=933 この記事] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== SanDisk ===&lt;br /&gt;
&lt;br /&gt;
SanDisk は SanDisk SSD Toolkit でサポートされていないオペレーティングシステムにおいて SSD のファームウェアアップデートをするための &#039;&#039;&#039;ISO ファームウェアイメージ&#039;&#039;&#039;を作成しています。SSD の&#039;&#039;モデル&#039;&#039;だけでなく、SSD の&#039;&#039;容量&#039;&#039;にあわせて適切なファームウェアを選択する必要があります (例: 60GB &#039;&#039;&#039;または&#039;&#039;&#039; 256GB)。適当な ISO ファームウェアイメージを焼いたら、PC を再起動して新しく作成した CD/DVD ブートディスクで起動してください (USB スティックからでも動作するかもしれません)。&lt;br /&gt;
&lt;br /&gt;
ISO イメージには Linux カーネルと initrd が含まれています。それらを {{ic|/boot}} パーティションに展開して [[GRUB]] や [[Syslinux]] で起動してファームウェアをアップデートしてください。&lt;br /&gt;
&lt;br /&gt;
ファームウェアのアップデートが列挙された一つのページは存在しませんが (サイトがわかりづらい)、以下が関連するリンクです:&lt;br /&gt;
&lt;br /&gt;
* SanDisk Extreme SSD の [https://kb.sandisk.com/app/answers/detail/a_id/10127 ファームウェアのリリースノート] と [https://kb.sandisk.com/app/answers/detail/a_id/10476 手動ファームウェアアップデートのバージョン R211]。&lt;br /&gt;
* SanDisk Ultra SSD の [https://kb.sandisk.com/app/answers/detail/a_id/10192 ファームウェアのリリースノート] と [https://kb.sandisk.com/app/answers/detail/a_id/10477 手動ファームウェアアップデートのバージョン 365A13F0]。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
SSD の問題は Linux 固有の問題ではないファームウェアのバグである可能性も存在します。SSD に関しては、問題のトラブルシューティングを始める前に、ファームウェアのアップデートが存在しないか確認してみてください:&lt;br /&gt;
* SSD のファームウェアをアップデートする。[[#ファームウェアのアップデート]] を参照。&lt;br /&gt;
* マザーボードの BIOS/UEFI をアップデートする。[[Linux から BIOS を書き換える]]を参照。&lt;br /&gt;
&lt;br /&gt;
ファームウェアのバグであったとしても、解決できることがあります。ファームウェアにアップデートが存在しなかったり、ファームウェアのアップデートをしたくない場合、以下のセクションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== NCQ エラーを解消する ===&lt;br /&gt;
&lt;br /&gt;
SSD や SATA チップセットによっては Linux Native Command Queueing (NCQ) が正しく動作しないことがあります。dmesg に以下のようなエラーが表示されます:&lt;br /&gt;
&lt;br /&gt;
 [ 9.115544] ata9: exception Emask 0x0 SAct 0xf SErr 0x0 action 0x10 frozen&lt;br /&gt;
 [ 9.115550] ata9.00: failed command: READ FPDMA QUEUED&lt;br /&gt;
 [ 9.115556] ata9.00: cmd 60/04:00:d4:82:85/00:00:1f:00:00/40 tag 0 ncq 2048 in&lt;br /&gt;
 [ 9.115557] res 40/00:18:d3:82:85/00:00:1f:00:00/40 Emask 0x4 (timeout)&lt;br /&gt;
&lt;br /&gt;
起動時に NCQ を無効にするには、[[ブートローダー]]の設定におけるカーネルコマンドラインに {{ic|1=libata.force=noncq}} を追加してください。ポート 1 のディスク 0 の NCQ だけを無効化するには次を使用: {{ic|1=libata.force=1.00:noncq}}。&lt;br /&gt;
&lt;br /&gt;
また、sysfs を使うことで再起動せずに特定のドライブの NCQ を無効化することもできます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
# echo 1 &amp;gt; /sys/block/sdX/device/queue_depth&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
問題が解決しなかったり他の問題が発生する場合は、[[バグ報告ガイドライン|バグレポートを作成]]してください。&lt;br /&gt;
&lt;br /&gt;
=== SATA の電源管理関連のエラーを解消する ===&lt;br /&gt;
&lt;br /&gt;
SATA Active Link Power Management ([[Wikipedia:Aggressive_Link_Power_Management|ALPM]]) が有効になっている場合にエラーを吐く SSD も存在します (例: Transcend MTS400)。ALPM はデフォルトで無効になっており、省電力デーモンによって有効になります (例: [[TLP]], [[Laptop Mode Tools]])。&lt;br /&gt;
&lt;br /&gt;
省電力デーモンを使っていて SATA 関連のエラーが表示される場合、バッテリーと AC 電源のプロファイルを {{ic|max_performance}} に設定して ALPM を無効化してみてください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.reddit.com/r/archlinux/comments/rkwjm/what_should_i_keep_in_mind_when_installing_on_ssd/ SSD に Arch をインストールすることについての Reddit における討論]&lt;br /&gt;
* [http://permalink.gmane.org/gmane.comp.file-systems.btrfs/19446 Re: Varying Leafsize and Nodesize in Btrfs]&lt;br /&gt;
* [http://thread.gmane.org/gmane.comp.file-systems.btrfs/19650/focus=19667 Re: SSD alignment and Btrfs sector size]&lt;br /&gt;
* [https://forums.anandtech.com/threads/erase-block-alignment-misinformation.2266113/ Erase Block (Alignment) Misinformation?]&lt;br /&gt;
* [https://superuser.com/questions/492084/is-alignment-to-erase-block-size-needed-for-modern-ssds Is alignment to erase block size needed for modern SSD&#039;s?]&lt;br /&gt;
* [http://thread.gmane.org/gmane.comp.file-systems.btrfs/15646 Btrfs support for efficient SSD operation (data blocks alignment)]&lt;br /&gt;
* [https://serverfault.com/questions/356534/ssd-erase-block-size-lvm-pv-on-raw-device-alignment SSD, Erase Block Size &amp;amp; LVM: PV on raw device, Alignment]&lt;/div&gt;</summary>
		<author><name>Skyline</name></author>
	</entry>
</feed>