「ソリッドステートドライブ」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
 
(同じ利用者による、間の22版が非表示)
2行目: 2行目:
 
[[en:Solid state drive]]
 
[[en:Solid state drive]]
 
[[es:Solid State drive]]
 
[[es:Solid State drive]]
[[fr:Solid state drive]]
 
 
[[ru:Solid state drive]]
 
[[ru:Solid state drive]]
 
[[zh-hans:Solid state drive]]
 
[[zh-hans:Solid state drive]]
9行目: 8行目:
 
{{Related|ソリッドステートドライブ/メモリセルの消去}}
 
{{Related|ソリッドステートドライブ/メモリセルの消去}}
 
{{Related|ベンチマーク/データストレージデバイス}}
 
{{Related|ベンチマーク/データストレージデバイス}}
{{Related|パフォーマンスの最大化#ストレージデバイス}}
+
{{Related|パフォーマンスの向上#ストレージデバイス}}
{{Related|Flashcache}}
 
 
{{Related articles end}}
 
{{Related articles end}}
   
23行目: 21行目:
 
=== TRIM ===
 
=== TRIM ===
   
  +
ファイルの削除がファイルシステムレベルのみで処理される[https://www.redhat.com/sysadmin/linux-delete-file-rm]ハードドライブと比較して、SSD は、メモリブロックが解放されて再利用可能になったときにディスクコントローラに通知することで利益を得ます。SSD を構成するフラッシュセルは書き込み操作の度に少しづつ摩耗するため、ディスクコントローラは全てのセルに書き込み操作を分散させるアルゴリズムを使用します: この処理は[[Wikipedia:ja:ウェアレベリング|ウェアレベリング]]と呼ばれます。NVMe の [[Wikipedia:Trim (computing)#NVM_Express|DEALLOCATE]] や、SAS の [[Wikipedia:Trim (computing)#SCSI|UNMAP]]、[[Wikipedia:ATA_TRIM|ATA_TRIM]] コマンドが無ければ、空きメモリブロックがなくなると、1つセルに書き込む前にそのセルを削除するためにデータを移動しなければならないため、ディスクコントローラは書き込み操作により多くの時間を消費するようになってしまいます ([[Wikipedia:ja:ライトアンプリフィケーション]] を参照): [https://www.techspot.com/review/737-ocz-vector-150-ssd/page9.html TechSpot のベンチマーク]では、SSD をデータで埋める前と後でのパフォーマンスへの影響を表しています。
ほとんどの SSD は、長期的なパフォーマンスの維持とウェアレベリングのための [[wikipedia:ATA_TRIM|ATA_TRIM コマンド]]をサポートしています。[https://www.techspot.com/review/737-ocz-vector-150-ssd/page9.html TechSpot 記事]では、SSD をデータで埋める前と後でのパフォーマンスベンチマークの例が示されています。
 
  +
  +
{{Note|TRIM を使用したいのであれば、定期的な TRIM か連続的な TRIM のどちらか一方'''のみ'''を使用してください。連続的な TRIM は、TRIM コマンドを発行する方法として Linux コミュニティの間で最も好まれているわけでは'''ありません'''。例えば、Ubuntu は定期的な TRIM をデフォルトで有効化しており [https://askubuntu.com/questions/1034169/is-trim-enabled-on-my-ubuntu-18-04-installation]、Debian は [[Debian:SSDOptimization#Mounting SSD filesystems|連続的な TRIM]] の使用を推奨しておらず、Red Hat は可能であれば連続的な TRIM よりも定期的な TRIM を使用することを推奨しています [https://web.archive.org/web/20160917183831/https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Storage_Administration_Guide/ch02s04.html]。}}
   
 
Linux カーネルバージョン 3.8 以降、異なる[[ファイルシステム]]に対する TRIM のサポートが継続的に追加されました。概要は以下の表を見てください:
 
Linux カーネルバージョン 3.8 以降、異なる[[ファイルシステム]]に対する TRIM のサポートが継続的に追加されました。概要は以下の表を見てください:
30行目: 30行目:
 
! ファイルシステム !! 連続的な TRIM <br> ({{ic|discard}} オプション) !! 定期的な TRIM <br> (''fstrim'') !! 参照<br> と備考
 
! ファイルシステム !! 連続的な TRIM <br> ({{ic|discard}} オプション) !! 定期的な TRIM <br> (''fstrim'') !! 参照<br> と備考
 
|-
 
|-
| [[Btrfs]] || {{Yes}} || {{Yes}} ||
+
| [[Bcachefs]] || {{Yes}} || {{No}} ||
  +
|-
  +
| [[Btrfs]] || {{Yes}} || {{Yes}} || カーネル 6.2 から非同期 discard がデフォルトで[[Btrfs#SSD TRIM|有効化]]されています。
 
|-
 
|-
 
| [[Wikipedia:ja:exFAT|exFAT]] || {{Yes}} || {{Yes}} || ''fstrim'' はカーネル 5.13 以降、サポートされています。[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=654762df2ec7d61b05acc788afbffaba52d658fe]
 
| [[Wikipedia:ja:exFAT|exFAT]] || {{Yes}} || {{Yes}} || ''fstrim'' はカーネル 5.13 以降、サポートされています。[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=654762df2ec7d61b05acc788afbffaba52d658fe]
44行目: 46行目:
 
| [[Wikipedia:ja:NILFS|NILFS2]] || {{Yes}} || {{Yes}} ||
 
| [[Wikipedia:ja:NILFS|NILFS2]] || {{Yes}} || {{Yes}} ||
 
|-
 
|-
  +
| rowspan=2 | [[NTFS]]
| [[NTFS-3G]] || {{No}} || {{Yes}} || バージョン 2015.3.14 以降 [https://www.mail-archive.com/ntfs-3g-devel@lists.sourceforge.net/msg01093.html]
 
  +
| {{Yes}} || {{No}} || [https://docs.kernel.org/filesystems/ntfs3.html ntfs3] カーネルドライバは連続的な TRIM のみをサポートしています。
  +
|-
  +
| {{No}} || {{Yes}} || [[NTFS-3G]] ドライバは定期的な TRIM のみをサポートしています。
 
|-
 
|-
 
| [[VFAT]] || {{Yes}} || {{Yes}} || ''fstrim'' はカーネル 4.19 以降、サポートされています。[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f663b5b38fffeb31841f8bfaf0ef87a445b0ffee]
 
| [[VFAT]] || {{Yes}} || {{Yes}} || ''fstrim'' はカーネル 4.19 以降、サポートされています。[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f663b5b38fffeb31841f8bfaf0ef87a445b0ffee]
 
|-
 
|-
| [[XFS]] || {{Yes}} || {{Yes}} || [https://xfs.org/index.php/FITRIM/discard]
+
| [[XFS]] || {{Yes}} || {{Yes}} || [https://xfs.org/index.php/FITRIM/discard]{{Dead link|2024|03|03|status=SSL error}}
 
|}
 
|}
   
59行目: 64行目:
 
そして、DISC-GRAN (discard granularity) と DISC-MAX (discard max bytes) 列の値を確認してください。値が 0 でなければ、TRIM をサポートしていることを意味します。
 
そして、DISC-GRAN (discard granularity) と DISC-MAX (discard max bytes) 列の値を確認してください。値が 0 でなければ、TRIM をサポートしていることを意味します。
   
  +
SATA SSD の場合にのみ、{{Pkg|hdparm}} パッケージは、{{ic|hdparm -I /dev/sda {{!}} grep TRIM}} を [[ユーザーとグループ#概要|root ユーザ]]として実行することにより、TRIM サポートを検出することができます。{{Pkg|hdparm}} は、NVMe SSD をサポートしていません。
あるいは、{{Pkg|hdparm}} パッケージを[[インストール]]し、以下を実行してください:
 
 
{{hc|# hdparm -I /dev/sda {{!}} grep TRIM|
 
* Data Set Management TRIM supported (limit 1 block)
 
}}
 
 
{{Note|仕様によって定義されている TRIM のサポートには異なる種類があります。ゆえに、ドライブが何をサポートしているかによってこの出力は異なる場合があります。詳細は、[[Wikipedia:ja:TRIM#ATA]] を見てください。}}
 
   
 
==== 定期的な TRIM ====
 
==== 定期的な TRIM ====
76行目: 75行目:
   
 
==== 連続的な TRIM ====
 
==== 連続的な TRIM ====
 
{{Note|{{ic|fstrim}} を定期的に実行しているのであれば、連続的な TRIM を有効化する必要はありません。TRIM を使いたいのであれば、定期的な TRIM か連続的な TRIM のどちらか一方を使ってください。}}
 
   
 
TRIM コマンドを定期的に ({{ic|fstrim.timer}} を使用する場合はデフォルトで1週間に1度) 発行するのではなく、ファイルが削除されるたびに TRIM コマンドを発行することも可能です。後者は、連続的な TRIM (continuous TRIM) として知られています。
 
TRIM コマンドを定期的に ({{ic|fstrim.timer}} を使用する場合はデフォルトで1週間に1度) 発行するのではなく、ファイルが削除されるたびに TRIM コマンドを発行することも可能です。後者は、連続的な TRIM (continuous TRIM) として知られています。
   
{{Warning|[[Wikipedia:Serial ATA#SATA revision 3.1|SATA 3.1]] 以前ではすべての TRIM コマンドはキューされなかったので、連続的な TRIM はシステムを頻繁にフリーズさせていました。この場合、低頻度で [[#定期的な TRIM]] を適用するのがより良い代替策です。また、深刻なデータ破損ためキューに入れられた TRIM コマンドの実行がブラックリスト化されているデバイスの多くでも似たような問題が発生します ([https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/ata/libata-core.c Linux ソースコード]の {{ic|ata_device_blacklist}} を参照)。そのような場合、デバイスにも依りますが、システムはキューの TRIM コマンドではなく非キューの TRIM コマンドを SSD に送信することを強制される場合があります。詳細は [[Wikipedia:ja:TRIM#短所]] を見てください。}}
+
{{Warning|[[Wikipedia:Serial ATA#SATA revision 3.1|SATA 3.1]] 以前ではすべての TRIM コマンドはキューされなかったので、連続的な TRIM はシステムを頻繁にフリーズさせていました。この場合、低頻度で [[#定期的な TRIM]] を適用するのがより良い代替策です。また、深刻なデータ破損を引き起こすためキューに入れられた TRIM コマンドの実行がブラックリスト化されているデバイスの多くでも似たような問題が発生します ([https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/ata/libata-core.c Linux ソースコード]の {{ic|ata_device_blacklist}} を参照)。そのような場合、デバイスにも依りますが、システムはキューの TRIM コマンドではなく非キューの TRIM コマンドを SSD に送信することを強制される場合があります。詳細は [[Wikipedia:ja:TRIM#短所]] を見てください。}}
 
{{Note|連続的な TRIM は、TRIM コマンドを発行する方法として Linux コミュニティの間で最も好まれているわけではありません。例えば、Ubuntu は定期的な TRIM をデフォルトで有効化しており [https://askubuntu.com/questions/1034169/is-trim-enabled-on-my-ubuntu-18-04-installation]、Debian は [[Debian:SSDOptimization#Mounting SSD filesystems|連続的な TRIM]] の使用を推奨しておらず、Red Hat は可能であれば連続的な TRIM よりも定期的な TRIM を使用することを推奨しています [https://web.archive.org/web/20160917183831/https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Storage_Administration_Guide/ch02s04.html]。}}
 
   
 
{{ic|/etc/fstab}} 内で {{ic|discard}} オプションを使うことにより、デバイスオペレーションでの連続的な TRIM を有効化します:
 
{{ic|/etc/fstab}} 内で {{ic|discard}} オプションを使うことにより、デバイスオペレーションでの連続的な TRIM を有効化します:
105行目: 100行目:
 
==== LVM ====
 
==== LVM ====
   
  +
ファイルシステムから論理ボリュームへ渡された TRIM 要求は、自動的に物理ボリュームへ渡されます。追加の設定は必要ありません。
TRIM requests that get passed from the file system to the logical volume are automatically passed to the physical volume(s). No additional configuration is necessary.
 
   
  +
デフォルトでは、[[LVM]] のオペレーション (''lvremove''、''lvreduce''、そしてその他すべて) は物理ボリュームに TRIM 要求を発行しません。これは、{{man|8|vgcfgrestore}} を使って以前のボリュームグループ設定を復元できるようにするためです。{{ic|/etc/lvm/lvm.conf}} 内の {{ic|issue_discards}} は、論理ボリュームがその基底となる物理ボリュームの領域をもはや使用しなくなった時に、その物理ボリュームに discard 要求を送信するかどうかを制御します。
No [[LVM]] operations (''lvremove'', ''lvreduce'' and all others) issue TRIM requests to physical volume(s) by default. This is done to allow restoring previous volume group configuration with {{man|8|vgcfgrestore}}. The setting {{ic|issue_discards}} in {{ic|/etc/lvm/lvm.conf}} controls whether discards are sent to a logical volume's underlying physical volumes when the logical volume is no longer using the physical volumes' space.
 
   
  +
{{Note|{{ic|issue_discards}} の設定を変更する前に {{ic|/etc/lvm/lvm.conf}} 内のコメントをよく読んでください。この設定は、ファイルシステムからディスクへ渡される TRIM 要求 (例: ファイルシステム内でのファイル削除) には全く影響を与えませんし、シンプール内の領域管理にも影響を与えません。}}
{{Note|Carefully read the comment in {{ic|/etc/lvm/lvm.conf}} before changing the {{ic|issue_discards}} setting. It does not in any way affect TRIM requests that get passed from the file system to the disk (e.g. file deletions inside a file system) nor does it affect space management within a thin pool.}}
 
   
  +
{{Warning|{{ic|issue_discards}} を有効化すると、''vgcfgrestore'' によるボリュームグループメタデータの復元ができなくなります。LVM コマンドを誤って発行した場合のリカバリオプションは無くなります。}}
{{Warning|Enabling {{ic|issue_discards}} will prevent volume group metadata restoration with ''vgcfgrestore''. There will be no recovery options in case of a mistakenly issued LVM command.}}
 
   
 
==== dm-crypt ====
 
==== dm-crypt ====
   
  +
{{Warning|discard オプションは、暗号化されているブロックデバイスを通して discard 要求を渡せるようにします。これは、SSD ストレージのパフォーマンスを向上させるかもしれませんし、しないかもしれません[https://lore.kernel.org/linux-raid/508FA2C6.2050800@hesbynett.no/]。しかし、セキュリティに影響を与えます。詳細は以下の記事を見てください:
{{Warning|The discard option allows discard requests to be passed through the encrypted block device. This may or may not improve performance on SSD storage [https://lore.kernel.org/linux-raid/508FA2C6.2050800@hesbynett.no/] but has security implications. See the following for more information:
 
   
 
* [[Debian:SSDOptimization#Mounting SSD filesystems]]
 
* [[Debian:SSDOptimization#Mounting SSD filesystems]]
* [[dm-crypt/Specialties#Discard/TRIM support for solid state drives (SSD)]]
+
* [[dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート]]
 
}}
 
}}
   
  +
ルート以外のファイルシステムの場合、{{ic|/etc/crypttab}} を編集して、SSD 上の暗号化されているブロックデバイスのオプションリストに {{ic|discard}} を追加してください ([[dm-crypt/システム設定#crypttab]] を見てください)。
For non-root filesystems, configure {{ic|/etc/crypttab}} to include {{ic|discard}} in the list of options for encrypted block devices located on an SSD (see [[dm-crypt/System configuration#crypttab]]).
 
   
  +
ルートファイルシステムの場合、[[dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート]] の指示に従って、ブートローダーの設定に適切なカーネルパラメータを追加してください。
For the root filesystem, follow the instructions from [[dm-crypt/Specialties#Discard/TRIM support for solid state drives (SSD)]] to add the right kernel parameter to the bootloader configuration.
 
   
 
=== パフォーマンスを最大化する ===
 
=== パフォーマンスを最大化する ===
   
[[パフォーマンスの最大化#ストレージデバイス]] のヒントに従ってドライブのパフォーマンスを最大化しましょう。
+
[[パフォーマンスの向上#ストレージデバイス]] のヒントに従ってドライブのパフォーマンスを最大化しましょう。
   
 
==== セクタサイズ ====
 
==== セクタサイズ ====
   
[[Advanced Format#ソリッドステートドライブ]] を見てください。
+
[[Advanced Format#NVMe ソリッドステートドライブ]] を見てください。
   
 
==== SSD のメモリセルのクリア ====
 
==== SSD のメモリセルのクリア ====
143行目: 138行目:
 
=== セキュリティ ===
 
=== セキュリティ ===
   
==== Hdparm で "frozen" 状態と表示される ====
+
==== Frozen モード ====
   
一部のマザーボードの BIOS 初期化時に SATA デバイスに対して "security freeze" コマンドを発行します。同様に、一部の SSD ( HDD) の BIOS は、工場出荷時にすでに "security freeze" に設定されています。どちらにしても、以下出力のように、デバイスのパスワードセキュリティ設定が '''frozen''' になります:
+
一部のマザーボードファームウェアは初期化時に ATA SECURITY FREEZE LOCK コマンドを SATA デバイスに発行します。これによりドライブは frozen モードになり、SEC2 状態 (セキュリティ無効、未ロック、frozen 状態) に遷移します。同様に、一部の SSD ( HDD) 工場出荷時にこの状態にすでに設定されています。ことは [[hdparm]] と [[smartctl]] の出力から確認できます:
   
 
{{hc|head=# hdparm -I /dev/sda |output=
 
{{hc|head=# hdparm -I /dev/sda |output=
151行目: 146行目:
 
Master password revision code = 65534
 
Master password revision code = 65534
 
supported
 
supported
not enabled
+
'''not enabled'''
 
'''not locked'''
 
'''not locked'''
 
'''frozen'''
 
'''frozen'''
159行目: 154行目:
 
}}
 
}}
   
  +
{{hc|# smartctl -g security /dev/sda|
デバイスのフォーマットやオペレーティングシステムのインストールといった操作は、"security freeze" の影響を受けません。
 
  +
ATA Security is: Disabled, frozen [SEC2]
  +
}}
  +
  +
デバイスのフォーマットやオペレーティングシステムのインストールといった操作は、frozen モードの影響を受けません。
   
上記の出力は、デバイスが起動時に HDD パスワードによって'''ロックされていない'''こと、そして '''frozen''' 状態によってデバイスを (実行時にパスワードを設定してデバイスをロックさせてしまうような) マルウェアから保護していることを示しています。
+
上記の ''hdparm'' の出力は、デバイスが起動時に HDD パスワードによって'''ロックされていない'''こと、そして '''frozen''' 状態によってデバイスを (実行時にパスワードを設定してデバイスをロックさせてしまうような) マルウェアから保護していることを示しています。
   
 
"frozen" 状態のデバイスにパスワードを設定したい場合、それに対応しているマザーボード BIOS が必要です。[[自己暗号化ドライブ|ハードウェア暗号化]]に必要なので、多くのノートパソコンでサポートされていますが、デスクトップやサーバーのボードではサポートがあるかどうかはっきりしないことがあります。
 
"frozen" 状態のデバイスにパスワードを設定したい場合、それに対応しているマザーボード BIOS が必要です。[[自己暗号化ドライブ|ハードウェア暗号化]]に必要なので、多くのノートパソコンでサポートされていますが、デスクトップやサーバーのボードではサポートがあるかどうかはっきりしないことがあります。
   
例えば、Intel DH67CL/BL マザーボードの場合、設定にアクセスするには物理的なジャンパによってマザーボードを "maintenance mode" に設定する必要があります ([https://sstahlman.blogspot.in/2014/07/hardware-fde-with-intel-ssd-330-on.html?showComment=1411193181867#c4579383928221016762], [https://communities.intel.com/message/251978#251978] を参照)。
+
例えば、Intel DH67CL/BL マザーボードの場合、設定にアクセスするには物理的なジャンパによってマザーボードを "maintenance mode" に設定する必要があります[https://sstahlman.blogspot.in/2014/07/hardware-fde-with-intel-ssd-330-on.html?showComment=1411193181867#c4579383928221016762]
   
{{Warning|よくわからないときは {{ic|hdparm}} を使って上記の'''ロック'''セキュリティ設定を変更しないで下さい。}}
+
{{Warning|よくわからないときは ''hdparm'' を使って上記の'''ロック'''セキュリティ設定を変更しないで下さい。}}
   
 
SSD を消去するときは、[[ディスクの完全消去#hdparm]] や [[ソリッドステートドライブ/メモリセルの消去]] を見て下さい。
 
SSD を消去するときは、[[ディスクの完全消去#hdparm]] や [[ソリッドステートドライブ/メモリセルの消去]] を見て下さい。
   
===== スリープから復帰したあとに SSD 状態を "frozen" にする =====
+
===== スリープから復帰したあとに SSD 状態を frozen モードにする =====
   
スリープから復帰時に SSD "frozen" 状態を失っていることが多く、[[ソリッドステートドライブ/メモリセルの消去]] で説明されているように [https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase ATA SECURE ERASE] コマンドに対して脆弱になっています。
+
SSD は S3 スリープから復帰すると SEC1 状態 (セキュリティ無効、未ロック、非 frozen) に戻っていることが多く、[[ソリッドステートドライブ/メモリセルの消去]] で説明されているように ATA SECURITY ERASE UNIT コマンドに対して脆弱になっています。
   
この問題を回避するために、[[電源管理#/usr/lib/systemd/system-sleep のフック|スリープからの復帰後]]にスクリプトを実行することができます:
+
この問題を回避するために、[[電源管理/サスペンドとハイバネート#/usr/lib/systemd/system-sleep のフック|スリープからの復帰後]]にスクリプトを実行することができます:
   
 
{{hc|/usr/lib/systemd/system-sleep/ssd-freeze.sh|2=
 
{{hc|/usr/lib/systemd/system-sleep/ssd-freeze.sh|2=
188行目: 187行目:
 
fi
 
fi
 
}}
 
}}
  +
  +
システムに複数のストレージデバイスやポータブル USB ドライブが存在している場合、[[Hdparm#udev ルールによる永続的な設定]] に書かれてあるテクニックを利用して、{{ic|--security-freeze}} を全ドライブ (HDD も含む) に発行することもできます。
   
 
==== ハードウェア暗号化 ====
 
==== ハードウェア暗号化 ====
   
[[#Hdparm で "frozen" 状態と表示される]] で説明されているように、BIOS でストレージデバイス (SSD/HDD) のパスワードを設定すると、それをサポートしているデバイスのハードウェア暗号化も初期化される場合があります。デバイスが OPAL 規格にも準拠している場合、パスフレーズを設定する機能が BIOS に無くとも、これを行える場合があります。[[自己暗号化ドライブ]] を見てください。
+
[[#Frozen モード]] で説明されているように、BIOS でストレージデバイス (SSD/HDD) のパスワードを設定すると、それをサポートしているデバイスのハードウェア暗号化も初期化される場合があります。デバイスが OPAL 規格にも準拠している場合、パスフレーズを設定する機能が BIOS に無くとも、これを行える場合があります。[[自己暗号化ドライブ]] を見てください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
SSD の問題は Linux 固有の問題ないファームウェアのバグである可能性も存在します。SSD に関しては、問題のトラブルシューティングを始める前に、ファームウェアのアップデートが存在しない確認してみてください:
+
あなたが今遭遇している問題はLinux 固有でないファームウェアのバグである可能性があります。ゆえに、SSD に影響を与える問題のトラブルシューティングに挑戦する前に、以下のアップデートが利用可能であるをチェックするべきです:
* SSD のファームウェアをアップデートする。[[#ファームウェアのアップデート]] を参照。
 
* マザーボードの BIOS/UEFI をアップデートする。[[Linux から BIOS を書き換える]]を参照。
 
   
  +
* [[#ファームウェア|SSD のファームウェア]]
ファームウェアのバグであったとしても、解決できることがあります。ファームウェアにアップデートが存在しなかったり、ファームウェアのアップデートをしたくない場合、以下のセクションを見て下さい。
 
  +
* [[Linux から BIOS を書き換える|マザーボードの BIOS/UEFI ファームウェア]]
  +
  +
ファームウェアのバグであったとしても、解決できることがあります。ファームウェアにアップデートが存在しなかったり、ファームウェアのアップデートをしたくない場合、以下のセクションが役に立つかもしれません。
   
 
=== NCQ エラーを解消する ===
 
=== NCQ エラーを解消する ===
   
SSD や SATA チップセットによっては Linux Native Command Queueing (NCQ) が正しく動作しないことがあります。dmesg に以下のようなエラーが表示されます:
+
SSD や SATA チップセットによっては Linux Native Command Queueing (NCQ) が正しく動作しないことがあります。[[journal]] に以下のようなエラーが表示されます:
   
[ 9.115544] ata9: exception Emask 0x0 SAct 0xf SErr 0x0 action 0x10 frozen
+
ata9: exception Emask 0x0 SAct 0xf SErr 0x0 action 0x10 frozen
[ 9.115550] ata9.00: failed command: READ FPDMA QUEUED
+
ata9.00: failed command: READ FPDMA QUEUED
[ 9.115556] ata9.00: cmd 60/04:00:d4:82:85/00:00:1f:00:00/40 tag 0 ncq 2048 in
+
ata9.00: cmd 60/04:00:d4:82:85/00:00:1f:00:00/40 tag 0 ncq 2048 in
[ 9.115557] res 40/00:18:d3:82:85/00:00:1f:00:00/40 Emask 0x4 (timeout)
+
res 40/00:18:d3:82:85/00:00:1f:00:00/40 Emask 0x4 (timeout)
   
起動時に NCQ を無効にするには、[[ブートローダー]]の設定におけるカーネルコマンドラインに {{ic|1=libata.force=noncq}} を追加してください。ポート 1 のディスク 0 の NCQ だけを無効化するには次を使用: {{ic|1=libata.force=1.00:noncq}}。
+
起動時に NCQ を無効にするには、[[ブートローダー]]の設定におけるカーネルコマンドラインに {{ic|1=libata.force=noncq}} を追加してください。ポート 9 のディスク 0 の NCQ だけを無効化するには次を使用: {{ic|1=libata.force=9.00:noncq}}。
   
 
また、sysfs を使うことで再起動せずに特定のドライブの NCQ を無効化することもできます:
 
また、sysfs を使うことで再起動せずに特定のドライブの NCQ を無効化することもできます:
   
  +
# echo 1 > /sys/block/sdX/device/queue_depth
{{bc|
 
# echo 1 > /sys/block/sdX/device/queue_depth
 
}}
 
   
 
問題が解決しなかったり他の問題が発生する場合は、[[バグ報告ガイドライン|バグレポートを作成]]してください。
 
問題が解決しなかったり他の問題が発生する場合は、[[バグ報告ガイドライン|バグレポートを作成]]してください。
222行目: 222行目:
 
=== SATA の電源管理関連のエラーを解消する ===
 
=== SATA の電源管理関連のエラーを解消する ===
   
SATA Active Link Power Management ([[Wikipedia:Aggressive_Link_Power_Management|ALPM]]) が有効になっている場合にエラーを吐く SSD も存在します (例: Transcend MTS400)。ALPM はデフォルトで無効になっており、省電力デーモンによって有効になります (例: [[TLP]], [[Laptop Mode Tools]])。
+
SATA Active Link Power Management ([[wikipedia:Aggressive Link Power Management|ALPM]]) が有効になっている場合にエラーを吐く SSD も存在します (例: Transcend MTS400)。ALPM はデフォルトで無効になっており、省電力デーモンによって有効になります (例: [[TLP]], [[Laptop Mode Tools]])。
   
省電力デーモンを使っていて SATA 関連のエラーが表示される場合、バッテリーと AC 電源のプロファイルを {{ic|max_performance}} に設定して ALPM を無効化してみてください。
+
そのようなデーモンを使っていて SATA 関連のエラーが表示される場合、バッテリーと AC 電源のプロファイルを {{ic|max_performance}} に設定して ALPM を無効化してみてください。
  +
  +
=== 外部 SSD での TRIM サポート ===
  +
  +
いくつかの USB から SATA へのブリッジチップ (VL715、VL716 など) や USB から PCIe へのブリッジチップ ([https://icybox.de/en/product.php?id=71 IB-1817M-C31] のような外部 NVMe エンクロージャで使用されている [https://www.jmicron.com/PDF/brief/jms583.pdf JMicron JMS583] など) は、[[Wikipedia:ja:USB Attached SCSI|USB Attached SCSI]] ドライバ (Linux では "uas" と呼ばれています) を通して送信できる TRIM ライクなコマンドをサポートしています。
  +
  +
しかし、カーネルはこの機能を自動的に検出しない場合があり、この機能を使用しないかもしれません。
  +
問題のブロックデバイスが /dev/sdX であると仮定すると、{{Pkg|sg3_utils}} パッケージのコマンドを使えばそのケースに当てはまっているかどうかを確認できます:
  +
  +
# sg_readcap -l /dev/sdX
  +
  +
このコマンドの出力に "Logical block provisioning: lbpme=0" と始まる行がある場合、(LBPME) ビットがセットされていないためカーネルはそのデバイスが "[https://www.seagate.com/files/staticfiles/support/docs/manual/Interface%20manuals/100293068k.pdf#G4.1427908 Logical Block Provisioning Management]" をサポートしていないと推定していることを示しています。
  +
  +
この場合、デバイスの [https://www.seagate.com/files/staticfiles/support/docs/manual/Interface%20manuals/100293068k.pdf#G4.3076244 "Logical Block Provisioning" の "Vital Product Data" (VPD) ページ]でデータのアンマッピングのためのサポートされている機能を確認する必要があります。以下のコマンドでこれを行うことができます:
  +
  +
# sg_vpd -a /dev/sdX
  +
  +
出力から以下のような行を探してください:
  +
  +
Unmap command supported (LBPU): 1
  +
Write same (16) with unmap bit supported (LBPWS): 0
  +
Write same (10) with unmap bit supported (LBPWS10): 0
  +
  +
この例では、デバイスが "UNMAP" コマンドをサポートしていることを示しています。
  +
  +
以下のコマンドの出力を見てください:
  +
  +
$ cat /sys/block/sdX/device/scsi_disk/*/provisioning_mode
  +
  +
カーネルがデバイスのデータアンマッピング機能を検出していない場合、このコマンドはおそらく "full" を返します。
  +
"full" の他に、カーネルの SCSI ストレージドライバは現在以下の provisioning_mode 値が登録されています:
  +
  +
unmap
  +
writesame_16
  +
writesame_10
  +
writesame_zero
  +
disabled
  +
  +
上記の例の場合、"provisioning_mode" を "unmap" に設定することで、カーネルにそれを使用するように要求することができます:
  +
  +
# echo "unmap" >/sys/block/sdX/device/scsi_disk/*/provisioning_mode
  +
  +
このコマンドを実行すると即座に、/dev/sdX 上で "blkdiscard" のようなツールを使ったり、/dev/sdX 上にマウントされているファイルシステム上で "fstrim" を実行したりできるようになるはずです。
  +
  +
特定のベンダ/製品の外部デバイスが接続されたときに "provisioning_mode" を自動的に有効化したいならば、"[[udev]]" の機構を使うことで可能です。まず、USB Vendor と Product ID を調べてください:
  +
  +
$ cat /sys/block/sdX/../../../../../../idVendor
  +
$ cat /sys/block/sdX/../../../../../../idProduct
  +
  +
そして、[[udev]] ルールのファイルに以下の内容を記述してください (この例では、idVendor 152d と idProduct 0583 を使っています):
  +
  +
# echo 'ACTION=="add|change", ATTRS{idVendor}=="152d", ATTRS{idProduct}=="0583", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"' >>/etc/udev/rules.d/10-uas-discard.rules
  +
  +
(関連する idVendor/idProduct は {{ic|lsusb}} を使うことでも取得できます。)
   
 
== ファームウェア ==
 
== ファームウェア ==
  +
  +
デバイスのベンダーによってサポートされていれば、[[fwupd]] ユーティリティを使ってファームウェアをアップデートすることが推奨されます。
  +
  +
現在のファームウェアバージョンを確認するには:
  +
  +
# smartctl -i /dev/''ssd_device''
   
 
=== ADATA ===
 
=== ADATA ===
   
ADATALinux (i686) で利用できるユーティリティを、[http://www.adata.com/jp/support/driver/ ここ] にある彼らのサポートページに用意しています。モデルを選択すれば最新のファームウェアリンク表示されます。
+
Linux での SSD ファームウェアのアップデートADATA によってサポートされていません。Windowsのみ利用できるユーティリティ SSD ToolBox が ADATA によって ADATAの[https://www.adata.com/en/support/consumer?tab=downloads&download=driver サポートページ]と ADATA XPG[https://www.xpg.com/en/support/xpg?tab=downloads&download=driver サポートページ]で提供されています。ツールにより、監視、TRIM、ベンチマーク、ADATA SSD ファームウェアのアップデートできます。
   
  +
{{Warning|[[Wine]] を使ってファームウェアをアップデートすることは推奨されていません。Wine はハードウェアインターフェイスを扱うようには設計されておらず、不完全なファームウェアアップデートはデバイスを文鎮化させる可能性があります。}}
最新の Linux アップデートユーティリティはファームウェアと一緒に入っており root で実行してください。最初にバイナリファイルに対して適切なパーミッションを設定する必要があるかもしれません。
 
   
===Crucial===
+
=== Crucial ===
   
Crucial は ISO イメージを使ってファームウェアをアップデートする方法を提供しています。[http://www.crucial.jp/jpn/ja/support-ssd ここ] から製品を選んで "Manual Boot File" をダウンロードすることでイメージを入手できます。
+
Crucial は ISO イメージを使ってファームウェアをアップデートする方法を提供しています。[https://www.crucial.com/usa/en/support-ssd SSD サポートページ]から製品を選んで "Manual Boot File" をダウンロードすることでイメージを入手できます。
   
{{Note|Crucial が提供している ISO イメージはハイブリッドではありません。{{ic|dd}} コマンドを使ってイメージを [[MBR]] が存在しないデバイスにコピーした場合、デバイスが起動できなくなります。}}
+
{{Note|Crucial が提供している ISO イメージはハイブリッドではないようです。{{ic|dd}} コマンドを使って [[MBR]] が存在しないデバイスにイメージをコピーした場合、デバイスが起動できなくなります。{{Pkg|syslinux}} をインストールし、{{ic|isohybrid path/to/image.iso}} を実行してください。}}
   
M4 Crucial モデルを使っている場合、{{ic|smartctl}} でファームウェアのアップグレードが必要かどうかチェックすることが可能です:
+
M4 Crucial モデルを使っている場合、{{ic|smartctl}} でファームウェアのアップグレードが必要かどうかチェックすることが可能です
   
 
{{hc|$ smartctl --all /dev/sd'''X'''|
 
{{hc|$ smartctl --all /dev/sd'''X'''|
 
==> WARNING: This drive may hang after 5184 hours of power-on time:
 
==> WARNING: This drive may hang after 5184 hours of power-on time:
http://www.tomshardware.com/news/Crucial-m4-Firmware-BSOD,14544.html
+
https://www.tomshardware.com/news/Crucial-m4-Firmware-BSOD,14544.html
See the following web pages for firmware updates:
+
See the following web page for firmware updates:
http://www.crucial.com/support/firmware.aspx
+
https://www.crucial.com/usa/en/support-ssd
http://www.micron.com/products/solid-state-storage/client-ssd#software
 
 
}}
 
}}
   
上記のような警告が表示された場合は重要なデータをバックアップしてから'''直ちにアップグレードを行うこと'''が推奨されます。ISO イメージと Grub を使用して Crucial MX100 のファームウェアをアップデートする手順は [http://www.rojtberg.net/1008/updating-crucial-mx100-firmware-with-ubuntu/ こちら] を参照してください。
+
上記の警告が表示された場合は重要なデータをバックアップしてから'''直ちにアップグレードを行うこと'''が推奨されます。ISO イメージと Grub を使用して Crucial MX100 のファームウェアをアップデートする手順は [https://www.rojtberg.net/1008/updating-crucial-mx100-firmware-with-ubuntu/ こちら] を参照してください。
   
 
=== Intel ===
 
=== Intel ===
   
Intel は [https://downloadcenter.intel.com/download/18455 Intel® Solid-State Drive Toolbox] ソフトウェア対応していないオペレーティングシステム向けに、Linux ライブシステムベース [https://downloadcenter.intel.com/download/18363 Firmware Update Tool] を用意しています。
+
Intel は、Windows の [https://downloadcenter.intel.com/download/30380/ Intel® Memory and Storage Tool (GUI)] ソフトウェア対応していないオペレーティングシステム向けに、Linux ライブシステムベースとする [https://downloadcenter.intel.com/download/18363 Firmware Update Tool] を配布しています。
  +
  +
また、ファームウェアをリフラッシュできる、[https://downloadcenter.intel.com/download/29337/Intel-Memory-and-Storage-Tool-CLI-Command-Line-Interface-?product=83425 Intel Memory and Storage (MAS) Tool] という新しい Linux コマンドラインユーティリティもあります。{{AUR|intel-mas-cli-tool}} パッケージで利用できます。[https://downloadmirror.intel.com/646992/CLI-Intel-MAS-1.10-User-Guide-Public-342245-011US.pdf PDF のユーザガイド]があります。
  +
  +
ファームウェアの状態をチェックすると例えば以下のように表示されます:
  +
  +
{{hc|# intelmas show -intelssd 0|
  +
DevicePath : /dev/nvme0n1
  +
DeviceStatus : Healthy
  +
Firmware : 002C
  +
FirmwareUpdateAvailable : The selected Intel SSD contains current firmware as of this tool release.
  +
}}
  +
  +
システム上に1つしか SSD が存在しない場合、{{ic|-intelssd 0}} は省略できます。2番目の SSD は {{ic|-intelssd 1}} となります。
  +
  +
アップデートが利用できる場合は、{{ic|intelmas load -intelssd 0}} を実行することでアップデートできます。上記の PDF ユーザガイドでは、この手順は Linux で2回 (間に電源の切断と再投入を挟んで) 行う必要があると書かれています。すべてのデバイス用の最新のファームウェアは、MAS Tool 自体の一部として配布されており、別途ダウンロードする必要はありません。
   
===Kingston===
+
=== Kingston ===
   
  +
Sandforce ベースのドライバ向けに KFU ツールが利用できます ({{AUR|kingston_fw_updater}})。
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 のサポートページ] です。
 
   
 
===Mushkin===
 
===Mushkin===
268行目: 341行目:
 
OCZ は Linux 用の [https://www.ocz.com/us/download/clout Command Line Online Update Tool (CLOUT)] を用意しています。{{AUR|ocz-ssd-utility}}, {{AUR|ocztoolbox}}, {{AUR|oczclout}} パッケージでインストールすることができます。
 
OCZ は Linux 用の [https://www.ocz.com/us/download/clout Command Line Online Update Tool (CLOUT)] を用意しています。{{AUR|ocz-ssd-utility}}, {{AUR|ocztoolbox}}, {{AUR|oczclout}} パッケージでインストールすることができます。
   
===Samsung===
+
=== Samsung ===
   
Samsung は Magician Software 以外の方法によるアップデートを"サポートしない"としていますが、不可能ではありません。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 など)
+
Samsung は Magician ソフトウェア以外の方法によるアップデートを"サポートしない"としていますが、不可能ではありません。Magician ソフトウェアは、ファームウェアのアップデートを含むブータブルな USB ドライブを作成することできすが、Samsung もはやコンシューマ SSD 向けのソフトウェアを提供していません。また、Samsung は 、ファームウェアアップデートできる作成済みの[https://www.samsung.com/semiconductor/minisite/ssd/download/tools.html ブータブルな ISO イメージ]も提供しています。他のオプションは、{{AUR|samsung_magician-consumer-ssd}} によって提供されている、Samsung ''magician'' ユティリティを使うことです。Magician は Samsung ブランドの SSD のみをサポートしています。OEM (Lenovo など) 向けに Samsung によって造された SSD はサポートされていません。
   
 
{{Note|Samsung はファームウェアアップデートをわかりやすく提供していません。ファームウェアアップデートに関連するページが4つあり、それぞれで別々の方法が示されています。}}
 
{{Note|Samsung はファームウェアアップデートをわかりやすく提供していません。ファームウェアアップデートに関連するページが4つあり、それぞれで別々の方法が示されています。}}
   
(Microsoft Windows で Samsung の "Magician" ソフトウェアを使わずに) Linux で作成したライブ USB スティックからファームウェアアップデートを実行したい場合は、[http://fomori.org/blog/?p=933 この記事] を参照してください。
+
(Microsoft Windows で Samsung の "Magician" ソフトウェアを使わずに) Linux で作成したライブ USB スティックからファームウェアアップデートを実行したい場合は、[https://web.archive.org/web/20160322230114/fomori.org/blog/?p=933] を参照してください。注意点として、このブログ記事では Master Boot Record ([[MBR]]) を使ってブート可能な USB ドライブを作成する方法が説明されており、最近のマザーボートでは MBR がサポートされていないことがあります (例えば、[https://www.intel.com/content/www/us/en/support/articles/000057401/intel-nuc.html Intel NUC] はもはや MBR をサポートしていません)
  +
  +
==== Linux でのアップデート ====
  +
  +
SSD のファームウェアは以下に示すように (ブータブルな USB スティックを作らなくても) ネイティブにアップデートできます。まず、[https://www.samsung.com/semiconductor/minisite/ssd/download/tools Samsung downloads ページ]を開き、"Samsung SSD Firmware" セクションへ行き、あなたの SSD 用の最新のファームウェア (ISO イメージであるはずです) をダウンロードしてください。
  +
  +
{{Note|一部の ISO イメージには、以下で言及されている {{ic|initrd}} Linux イメージが欠落しています。その場合、代わりに [[#古い SSD]] を見てください。}}
  +
  +
ISO イメージから {{ic|initrd}} Linux イメージを抽出してください:
  +
  +
$ bsdtar xf ''samsung_ssd_firmware''.iso initrd
  +
  +
{{ic|root/fumagician/}} を抽出してください。このディレクトリには、ファームウェアのアップデートファイルが含まれています:
  +
  +
$ bsdtar xf initrd root/fumagician
  +
  +
最後に、{{ic|root/fumagician/fumagician}} を root 権限で実行し、(ファームウェアが正常にアップデートされたのであれば) システムを[[再起動]]してください。
  +
  +
再起動後にファームウェアのバージョンが変わっていない場合は、{{ic|root/fumagician/fumagician 2> log}} を実行して、出力されたログファイルからエラーを探してください。例えば、ログに 'unzip is not available' という記述がある場合は、unzip をインストールするか、initrd から抽出してください。
  +
  +
===== 古い SSD =====
  +
  +
SSD ファームウェアの ISO イメージのいくつかには、{{ic|initrd}} Linux イメージではなく FreeDOS イメージが含まれています。ゆえに、SSD ファームウェアのアップデートに必要なステップは上記とは異なります。以下の表は、そのような SSD (とそれに関連するパス) のリストです:
  +
  +
{| class="wikitable"
  +
! SSD モデル !! FreeDOS イメージパス !! ファームウェアパッケージパス
  +
|-
  +
| 470, 830 || {{ic|BTDSK.IMG}} || {{ic|SSR/}}
  +
|-
  +
| 840 || {{ic|isolinux/btdsk.img}} || rowspan="2" | {{ic|samsung/DSRD/}}
  +
|-
  +
| 840 EVO (mSATA), Pro || {{ic|ISOLINUX/BTDSK.IMG}}
  +
|}
  +
  +
まず、ISO イメージから FreeDOS イメージを抽出してください:
  +
  +
$ bsdtar xf ''samsung_ssd_firmware''.iso ''freedos_image_path''
  +
  +
FreeDOS イメージを {{ic|/mnt/}} にマウントしてください:
  +
  +
# mount ''freedos_image_path'' /mnt
  +
  +
Magician SSD 管理ユーティリティから ''Disk Number'' にある SSD のディスク番号を入手してください:
  +
  +
# magician --list
  +
  +
ファームウェアパッケージのパスを指定し、指定したディスクに対して SSD ファームウェアをアップデートしてください:
  +
  +
# magician --disk ''disk_num'' --firmware-update --fwpackage-path /mnt/''firmware_package_path''
  +
  +
最後に、(root 権限で実行した) {{ic|magician --list}} の出力から ''Firmware'' にあるバージョンを確認し、ファームウェアが正常にアップデートできたか検証してください。ファームウェアが正常にアップデートされたのであれば、システムを再起動してください。
   
 
=== SanDisk ===
 
=== SanDisk ===
   
SanDisk は SanDisk SSD Toolkit でサポートされていないオペレーティングシステムにおいて SSD のファームウェアアップデートをするための '''ISO ファームウェアイメージ'''を作成しています。SSD の''モデル''だけでなく、SSD の''容量''にあわせて適切なファームウェアを選択する必要があります (例: 60GB '''または''' 256GB)。適当な ISO ファームウェアイメージを焼いたら、PC を再起動して新しく作成した CD/DVD ブートディスクで起動してください (USB スティックからでも動作するかもしれません)
+
SanDisk はSanDisk SSD Toolkit でサポートされていないオペレーティングシステムにおいて SSD のファームウェアアップデートをするための ISO ファームウェアイメージを作成しています。
   
  +
適切な ''SSD モデル'' '''だけでなく'''、適切な SSD ''容量'' (例: 60 GB '''または''' 256GB) も合わせて、ファームウェアを選択しなければなりません。ISO ファームウェアイメージを焼いたあと、PC を再起動し、新しく作成した CD/DVD ブートディスクを起動してください (USB スティックでも動作するかもしれません)。
ISO イメージには Linux カーネルと initrd が含まれています。それらを {{ic|/boot}} パーティションに展開して [[GRUB]] や [[Syslinux]] で起動してファームウェアをアップデートしてください。
 
   
  +
ISO イメージには、Linux カーネルと initrd が含まれています。それらを {{ic|/boot}} パーティションに抽出し、[[GRUB]] や [[Syslinux]] でそれらを起動して、ファームウェアをアップデートしてください。
ファームウェアのアップデートが列挙された一つのページは存在しませんが (サイトがわかりづらい)、以下が関連するリンクです:
 
   
  +
参照:
* SanDisk Extreme SSD の [https://kb.sandisk.com/app/answers/detail/a_id/10127 ファームウェアのリリースノート] と [https://kb.sandisk.com/app/answers/detail/a_id/10476 手動ファームウェアアップデートのバージョン R211]。
 
  +
* SanDisk Ultra SSD の [https://kb.sandisk.com/app/answers/detail/a_id/10192 ファームウェアのリリースノート] と [https://kb.sandisk.com/app/answers/detail/a_id/10477 手動ファームウェアアップデートのバージョン 365A13F0]。
 
  +
* SanDisk Extreme SSD [https://forums.sandisk.com/t/sandisk-extreme-ssd-firmware-download-for-mac-and-linux-and-pc/74022 手動ファームウェアアップデート バージョン R211]
  +
* SanDisk Ultra SSD [https://forums.sandisk.com/t/sandisk-ultra-ssd-firmware-download-for-mac-and-linux-and-pc/74277 手動ファームウェアアップデート バージョン 365A13F0]
  +
* SanDisk Ultra+ SSD [https://forums.sandisk.com/t/sandisk-ultra-ssd-manual-firmware-update-version-x2316rl/74263 手動ファームウェアアップデート バージョン X2316RL] - "H2" モデルと "HP" モデルのうちどちらが使用されているかを確認するには、{{ic|smartctl -i dev/disk/by-id/*SanDisk!(*part*)}} を root として実行してください。
   
 
== 参照 ==
 
== 参照 ==
295行目: 421行目:
 
* [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's?]
 
* [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's?]
 
* [https://lore.kernel.org/linux-btrfs/jgui4j$th5$1@dough.gmane.org/ Btrfs support for efficient SSD operation (data blocks alignment)]
 
* [https://lore.kernel.org/linux-btrfs/jgui4j$th5$1@dough.gmane.org/ Btrfs support for efficient SSD operation (data blocks alignment)]
  +
* [https://serverfault.com/questions/356534/ssd-erase-block-size-lvm-pv-on-raw-device-alignment SSD, Erase Block Size & LVM: PV on raw device, Alignment]
 
  +
{{TranslationStatus|Solid state drive|2024-03-22|802360}}

2024年3月22日 (金) 09:48時点における最新版

関連記事

この記事では、ソリッドステートドライブ (SSD) や他のフラッシュメモリベースのストレージデバイスの取り扱いに関するトピックをカバーしています。

特定の目的のために SSD をパーティショニングしたい場合、フラッシュメモリ向けに最適化されたファイルシステムのリストで検討すると良いかもしれません。

一般的な利用では、自由にファイルシステムを選び、#TRIM を有効化すると良いでしょう。

使用法

TRIM

ファイルの削除がファイルシステムレベルのみで処理される[1]ハードドライブと比較して、SSD は、メモリブロックが解放されて再利用可能になったときにディスクコントローラに通知することで利益を得ます。SSD を構成するフラッシュセルは書き込み操作の度に少しづつ摩耗するため、ディスクコントローラは全てのセルに書き込み操作を分散させるアルゴリズムを使用します: この処理はウェアレベリングと呼ばれます。NVMe の DEALLOCATE や、SAS の UNMAPATA_TRIM コマンドが無ければ、空きメモリブロックがなくなると、1つセルに書き込む前にそのセルを削除するためにデータを移動しなければならないため、ディスクコントローラは書き込み操作により多くの時間を消費するようになってしまいます (Wikipedia:ja:ライトアンプリフィケーション を参照): TechSpot のベンチマークでは、SSD をデータで埋める前と後でのパフォーマンスへの影響を表しています。

ノート: TRIM を使用したいのであれば、定期的な TRIM か連続的な TRIM のどちらか一方のみを使用してください。連続的な TRIM は、TRIM コマンドを発行する方法として Linux コミュニティの間で最も好まれているわけではありません。例えば、Ubuntu は定期的な TRIM をデフォルトで有効化しており [2]、Debian は 連続的な TRIM の使用を推奨しておらず、Red Hat は可能であれば連続的な TRIM よりも定期的な TRIM を使用することを推奨しています [3]

Linux カーネルバージョン 3.8 以降、異なるファイルシステムに対する TRIM のサポートが継続的に追加されました。概要は以下の表を見てください:

ファイルシステム 連続的な TRIM
(discard オプション)
定期的な TRIM
(fstrim)
参照
と備考
Bcachefs Yes No
Btrfs Yes Yes カーネル 6.2 から非同期 discard がデフォルトで有効化されています。
exFAT Yes Yes fstrim はカーネル 5.13 以降、サポートされています。[4]
ext3 Yes Yes
ext4 Yes Yes [5] の "discard, nodiscard(*)"
F2FS Yes Yes
JFS Yes Yes [6]
NILFS2 Yes Yes
NTFS Yes No ntfs3 カーネルドライバは連続的な TRIM のみをサポートしています。
No Yes NTFS-3G ドライバは定期的な TRIM のみをサポートしています。
VFAT Yes Yes fstrim はカーネル 4.19 以降、サポートされています。[7]
XFS Yes Yes [8][リンク切れ 2024-03-03]
警告: TRIM を試みる前に、SSD が TRIM をサポートしていることを確認する必要があります。さもないと、データを失うかもしれませんよ!

TRIM のサポートを確認するには、以下を実行してください:

$ lsblk --discard

そして、DISC-GRAN (discard granularity) と DISC-MAX (discard max bytes) 列の値を確認してください。値が 0 でなければ、TRIM をサポートしていることを意味します。

SATA SSD の場合にのみ、hdparm パッケージは、hdparm -I /dev/sda | grep TRIMroot ユーザとして実行することにより、TRIM サポートを検出することができます。hdparm は、NVMe SSD をサポートしていません。

定期的な TRIM

util-linux パッケージは fstrim.servicefstrim.timer systemd ユニットファイルを提供しています。タイマーを有効化すれば毎週サービスが実行されます。このサービスは、discard 操作をサポートしているデバイス上のマウント済みのファイルシステムすべてに対して fstrim(8) を実行します。

タイマーは最後に実行してから一週間経過したことを知るために (最初に実行したときに作成される) /var/lib/systemd/timers/stamp-fstrim.timer のタイムスタンプを使います。そのため、anacron のように、何度も頻繁に実行される恐れはありません。

ユニットの活動と状態を取得するには、journalctl を見てください。タイマーの周期や実行されるコマンドを変更するには、提供されているユニットファイルを編集してください。

連続的な TRIM

TRIM コマンドを定期的に (fstrim.timer を使用する場合はデフォルトで1週間に1度) 発行するのではなく、ファイルが削除されるたびに TRIM コマンドを発行することも可能です。後者は、連続的な TRIM (continuous TRIM) として知られています。

警告: SATA 3.1 以前ではすべての TRIM コマンドはキューされなかったので、連続的な TRIM はシステムを頻繁にフリーズさせていました。この場合、低頻度で #定期的な TRIM を適用するのがより良い代替策です。また、深刻なデータ破損を引き起こすためキューに入れられた TRIM コマンドの実行がブラックリスト化されているデバイスの多くでも似たような問題が発生します (Linux ソースコードata_device_blacklist を参照)。そのような場合、デバイスにも依りますが、システムはキューの TRIM コマンドではなく非キューの TRIM コマンドを SSD に送信することを強制される場合があります。詳細は Wikipedia:ja:TRIM#短所 を見てください。

/etc/fstab 内で discard オプションを使うことにより、デバイスオペレーションでの連続的な TRIM を有効化します:

/dev/sda1  /           ext4  defaults,discard   0  1
ノート: XFS / パーティションの場合、/etc/fstab 内で discard オプションを指定しても、うまく行きません。このスレッドによると、rootflags=discard カーネルパラメータを使用して設定しなければならないようです。

ext4 ファイルシステムでは、tune2fs を使って discard フラグをデフォルトマウントオプションとして設定することもできます:

# tune2fs -o discard /dev/sdXY

外部ドライブの場合は、/etc/fstab 内のエントリではなくデフォルトマウントオプションを使うと便利です。そのようなパーティションは、他のマシンでもデフォルトのオプションを使ってマウントされるからです。この方法では、すべてのマシンで /etc/fstab を編集する必要はありません。

ノート: デフォルトマウントオプションは、/proc/mounts にリストアップされません。

デバイス全体を trim する

一度に SSD 全体を trim したい場合 (例えば、新しいインストールのためや、そのドライブを売りたい場合など)、blkdiscard コマンドが使えます。

LVM

ファイルシステムから論理ボリュームへ渡された TRIM 要求は、自動的に物理ボリュームへ渡されます。追加の設定は必要ありません。

デフォルトでは、LVM のオペレーション (lvremovelvreduce、そしてその他すべて) は物理ボリュームに TRIM 要求を発行しません。これは、vgcfgrestore(8) を使って以前のボリュームグループ設定を復元できるようにするためです。/etc/lvm/lvm.conf 内の issue_discards は、論理ボリュームがその基底となる物理ボリュームの領域をもはや使用しなくなった時に、その物理ボリュームに discard 要求を送信するかどうかを制御します。

ノート: issue_discards の設定を変更する前に /etc/lvm/lvm.conf 内のコメントをよく読んでください。この設定は、ファイルシステムからディスクへ渡される TRIM 要求 (例: ファイルシステム内でのファイル削除) には全く影響を与えませんし、シンプール内の領域管理にも影響を与えません。
警告: issue_discards を有効化すると、vgcfgrestore によるボリュームグループメタデータの復元ができなくなります。LVM コマンドを誤って発行した場合のリカバリオプションは無くなります。

dm-crypt

警告: discard オプションは、暗号化されているブロックデバイスを通して discard 要求を渡せるようにします。これは、SSD ストレージのパフォーマンスを向上させるかもしれませんし、しないかもしれません[9]。しかし、セキュリティに影響を与えます。詳細は以下の記事を見てください:

ルート以外のファイルシステムの場合、/etc/crypttab を編集して、SSD 上の暗号化されているブロックデバイスのオプションリストに discard を追加してください (dm-crypt/システム設定#crypttab を見てください)。

ルートファイルシステムの場合、dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート の指示に従って、ブートローダーの設定に適切なカーネルパラメータを追加してください。

パフォーマンスを最大化する

パフォーマンスの向上#ストレージデバイス のヒントに従ってドライブのパフォーマンスを最大化しましょう。

セクタサイズ

Advanced Format#NVMe ソリッドステートドライブ を見てください。

SSD のメモリセルのクリア

時々、SSD のセルを完全にリセットしてデバイスにインストールした時と同じ初めの状態にすることで製造時の書き込みパフォーマンスを取り戻したいと思うことがあるかもしれません。SSD の書き込みパフォーマンスはネイティブの TRIM サポートを使っていても時間経過で落ちていきます。TRIM はファイル削除に対するセーフガードとして働くだけで、増加保存などの代わりにはなりません。

#SATA#NVMe の場合、ソリッドステートドライブ/メモリセルの消去 に書かれている適切な手順に従うことでリセットすることができます。

ノート: リセットする目的がデータの消去ならば、SSD のコントローラに頼って安全に消去を行うことを望まない場合があるでしょう (例えば、あなたが SSD の製造業者を信頼していなかったり、潜在的なバグを不安に思っていたりする場合など)。この場合、手動消去を行う例やさらなる情報を ディスクの完全消去#フラッシュメモリ で見てください。

セキュリティ

Frozen モード

一部のマザーボードファームウェアは初期化時に ATA SECURITY FREEZE LOCK コマンドを SATA デバイスに発行します。これによりドライブは frozen モードになり、SEC2 状態 (セキュリティ無効、未ロック、frozen 状態) に遷移します。同様に、一部の SSD (と HDD) も工場出荷時にこの状態にすでに設定されています。このことは hdparmsmartctl の出力から確認できます:

# hdparm -I /dev/sda
Security: 
 	Master password revision code = 65534
 		supported
 	not	enabled
 	not	locked
 		frozen
 	not	expired: security count
 		supported: enhanced erase
 	4min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT.
# smartctl -g security /dev/sda
ATA Security is:  Disabled, frozen [SEC2]

デバイスのフォーマットやオペレーティングシステムのインストールといった操作は、frozen モードの影響を受けません。

上記の hdparm の出力は、デバイスが起動時に HDD パスワードによってロックされていないこと、そして frozen 状態によってデバイスを (実行時にパスワードを設定してデバイスをロックさせてしまうような) マルウェアから保護していることを示しています。

"frozen" 状態のデバイスにパスワードを設定したい場合、それに対応しているマザーボード BIOS が必要です。ハードウェア暗号化に必要なので、多くのノートパソコンでサポートされていますが、デスクトップやサーバーのボードではサポートがあるかどうかはっきりしないことがあります。

例えば、Intel DH67CL/BL マザーボードの場合、設定にアクセスするには物理的なジャンパによってマザーボードを "maintenance mode" に設定する必要があります。[10]

警告: よくわからないときは hdparm を使って上記のロックセキュリティ設定を変更しないで下さい。

SSD を消去するときは、ディスクの完全消去#hdparmソリッドステートドライブ/メモリセルの消去 を見て下さい。

スリープから復帰したあとに SSD 状態を frozen モードにする

SSD は S3 スリープから復帰すると SEC1 状態 (セキュリティ無効、未ロック、非 frozen) に戻っていることが多く、ソリッドステートドライブ/メモリセルの消去 で説明されているように ATA SECURITY ERASE UNIT コマンドに対して脆弱になっています。

この問題を回避するために、スリープからの復帰後にスクリプトを実行することができます:

/usr/lib/systemd/system-sleep/ssd-freeze.sh
#!/bin/sh
if [ "$1" = 'post' ]; then
	sleep 1
	if hdparm --security-freeze /dev/disk/by-id/ata-name-of-disk; then
		logger "$0: SSD freeze command executed successfully"
	else
		logger "$0: SSD freeze command failed"
	fi	
fi

システムに複数のストレージデバイスやポータブル USB ドライブが存在している場合、Hdparm#udev ルールによる永続的な設定 に書かれてあるテクニックを利用して、--security-freeze を全ドライブ (HDD も含む) に発行することもできます。

ハードウェア暗号化

#Frozen モード で説明されているように、BIOS でストレージデバイス (SSD/HDD) のパスワードを設定すると、それをサポートしているデバイスのハードウェア暗号化も初期化される場合があります。デバイスが OPAL 規格にも準拠している場合、パスフレーズを設定する機能が BIOS に無くとも、これを行える場合があります。自己暗号化ドライブ を見てください。

トラブルシューティング

あなたが今遭遇している問題は、Linux 固有でないファームウェアのバグである可能性があります。ゆえに、SSD に影響を与える問題のトラブルシューティングに挑戦する前に、以下のアップデートが利用可能であるかをチェックするべきです:

ファームウェアのバグであったとしても、解決できることがあります。ファームウェアにアップデートが存在しなかったり、ファームウェアのアップデートをしたくない場合、以下のセクションが役に立つかもしれません。

NCQ エラーを解消する

SSD や SATA チップセットによっては Linux Native Command Queueing (NCQ) が正しく動作しないことがあります。journal に以下のようなエラーが表示されます:

ata9: exception Emask 0x0 SAct 0xf SErr 0x0 action 0x10 frozen
ata9.00: failed command: READ FPDMA QUEUED
ata9.00: cmd 60/04:00:d4:82:85/00:00:1f:00:00/40 tag 0 ncq 2048 in
res 40/00:18:d3:82:85/00:00:1f:00:00/40 Emask 0x4 (timeout)

起動時に NCQ を無効にするには、ブートローダーの設定におけるカーネルコマンドラインに libata.force=noncq を追加してください。ポート 9 のディスク 0 の NCQ だけを無効化するには次を使用: libata.force=9.00:noncq

また、sysfs を使うことで再起動せずに特定のドライブの NCQ を無効化することもできます:

# echo 1 > /sys/block/sdX/device/queue_depth

問題が解決しなかったり他の問題が発生する場合は、バグレポートを作成してください。

SATA の電源管理関連のエラーを解消する

SATA Active Link Power Management (ALPM) が有効になっている場合にエラーを吐く SSD も存在します (例: Transcend MTS400)。ALPM はデフォルトで無効になっており、省電力デーモンによって有効になります (例: TLP, Laptop Mode Tools)。

そのようなデーモンを使っていて SATA 関連のエラーが表示される場合、バッテリーと AC 電源のプロファイルを max_performance に設定して ALPM を無効化してみてください。

外部 SSD での TRIM サポート

いくつかの USB から SATA へのブリッジチップ (VL715、VL716 など) や USB から PCIe へのブリッジチップ (IB-1817M-C31 のような外部 NVMe エンクロージャで使用されている JMicron JMS583 など) は、USB Attached SCSI ドライバ (Linux では "uas" と呼ばれています) を通して送信できる TRIM ライクなコマンドをサポートしています。

しかし、カーネルはこの機能を自動的に検出しない場合があり、この機能を使用しないかもしれません。 問題のブロックデバイスが /dev/sdX であると仮定すると、sg3_utils パッケージのコマンドを使えばそのケースに当てはまっているかどうかを確認できます:

# sg_readcap -l /dev/sdX

このコマンドの出力に "Logical block provisioning: lbpme=0" と始まる行がある場合、(LBPME) ビットがセットされていないためカーネルはそのデバイスが "Logical Block Provisioning Management" をサポートしていないと推定していることを示しています。

この場合、デバイスの "Logical Block Provisioning" の "Vital Product Data" (VPD) ページでデータのアンマッピングのためのサポートされている機能を確認する必要があります。以下のコマンドでこれを行うことができます:

# sg_vpd -a /dev/sdX

出力から以下のような行を探してください:

Unmap command supported (LBPU): 1
Write same (16) with unmap bit supported (LBPWS): 0
Write same (10) with unmap bit supported (LBPWS10): 0

この例では、デバイスが "UNMAP" コマンドをサポートしていることを示しています。

以下のコマンドの出力を見てください:

$ cat /sys/block/sdX/device/scsi_disk/*/provisioning_mode

カーネルがデバイスのデータアンマッピング機能を検出していない場合、このコマンドはおそらく "full" を返します。 "full" の他に、カーネルの SCSI ストレージドライバは現在以下の provisioning_mode 値が登録されています:

unmap
writesame_16
writesame_10
writesame_zero
disabled

上記の例の場合、"provisioning_mode" を "unmap" に設定することで、カーネルにそれを使用するように要求することができます:

# echo "unmap" >/sys/block/sdX/device/scsi_disk/*/provisioning_mode

このコマンドを実行すると即座に、/dev/sdX 上で "blkdiscard" のようなツールを使ったり、/dev/sdX 上にマウントされているファイルシステム上で "fstrim" を実行したりできるようになるはずです。

特定のベンダ/製品の外部デバイスが接続されたときに "provisioning_mode" を自動的に有効化したいならば、"udev" の機構を使うことで可能です。まず、USB Vendor と Product ID を調べてください:

$ cat /sys/block/sdX/../../../../../../idVendor
$ cat /sys/block/sdX/../../../../../../idProduct

そして、udev ルールのファイルに以下の内容を記述してください (この例では、idVendor 152d と idProduct 0583 を使っています):

# echo 'ACTION=="add|change", ATTRS{idVendor}=="152d", ATTRS{idProduct}=="0583", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"' >>/etc/udev/rules.d/10-uas-discard.rules

(関連する idVendor/idProduct は lsusb を使うことでも取得できます。)

ファームウェア

デバイスのベンダーによってサポートされていれば、fwupd ユーティリティを使ってファームウェアをアップデートすることが推奨されます。

現在のファームウェアバージョンを確認するには:

# smartctl -i /dev/ssd_device

ADATA

Linux での SSD ファームウェアのアップデートは ADATA によってサポートされていません。Windows でのみ利用できるユーティリティ SSD ToolBox が ADATA によって ADATAのサポートページと ADATA XPG のサポートページで提供されています。このツールにより、監視、TRIM、ベンチマーク、ADATA SSD ファームウェアのアップデートができます。

警告: Wine を使ってファームウェアをアップデートすることは推奨されていません。Wine はハードウェアインターフェイスを扱うようには設計されておらず、不完全なファームウェアアップデートはデバイスを文鎮化させる可能性があります。

Crucial

Crucial は ISO イメージを使ってファームウェアをアップデートする方法を提供しています。SSD サポートページから製品を選んで "Manual Boot File" をダウンロードすることでイメージを入手できます。

ノート: Crucial が提供している ISO イメージはハイブリッドではないようです。dd コマンドを使って MBR が存在しないデバイスにイメージをコピーした場合、デバイスが起動できなくなります。syslinux をインストールし、isohybrid path/to/image.iso を実行してください。

M4 Crucial モデルを使っている場合、smartctl でファームウェアのアップグレードが必要かどうかチェックすることが可能です。

$ smartctl --all /dev/sdX
==> WARNING: This drive may hang after 5184 hours of power-on time:
https://www.tomshardware.com/news/Crucial-m4-Firmware-BSOD,14544.html
See the following web page for firmware updates:
https://www.crucial.com/usa/en/support-ssd

上記の警告が表示された場合は、重要なデータをバックアップしてから直ちにアップグレードを行うことが推奨されます。ISO イメージと Grub を使用して Crucial MX100 のファームウェアをアップデートする手順は こちら を参照してください。

Intel

Intel は、Windows の Intel® Memory and Storage Tool (GUI) ソフトウェアに対応していないオペレーティングシステム向けに、Linux ライブシステムをベースとする Firmware Update Tool を配布しています。

また、ファームウェアをリフラッシュできる、Intel Memory and Storage (MAS) Tool という新しい Linux コマンドラインユーティリティもあります。intel-mas-cli-toolAUR パッケージで利用できます。PDF のユーザガイドがあります。

ファームウェアの状態をチェックすると例えば以下のように表示されます:

# intelmas show -intelssd 0
DevicePath : /dev/nvme0n1
DeviceStatus : Healthy
Firmware : 002C
FirmwareUpdateAvailable : The selected Intel SSD contains current firmware as of this tool release.

システム上に1つしか SSD が存在しない場合、-intelssd 0 は省略できます。2番目の SSD は -intelssd 1 となります。

アップデートが利用できる場合は、intelmas load -intelssd 0 を実行することでアップデートできます。上記の PDF ユーザガイドでは、この手順は Linux で2回 (間に電源の切断と再投入を挟んで) 行う必要があると書かれています。すべてのデバイス用の最新のファームウェアは、MAS Tool 自体の一部として配布されており、別途ダウンロードする必要はありません。

Kingston

Sandforce ベースのドライバ向けに KFU ツールが利用できます (kingston_fw_updaterAUR)。

Mushkin

マイナーな Mushkin ブランドのソリッドステートドライブも Sandforce コントローラーを使っており、ファームウェアをアップデートする Linux ユーティリティ (Kingston のものとほとんど同じ) が存在します。

OCZ

OCZ は Linux 用の Command Line Online Update Tool (CLOUT) を用意しています。ocz-ssd-utilityAUR, ocztoolboxAUR, oczcloutAUR パッケージでインストールすることができます。

Samsung

Samsung は Magician ソフトウェア以外の方法によるアップデートを"サポートしない"としていますが、不可能ではありません。Magician ソフトウェアは、ファームウェアのアップデートを含むブータブルな USB ドライブを作成することはできますが、Samsung はもはやコンシューマ SSD 向けのソフトウェアを提供していません。また、Samsung は 、ファームウェアをアップデートできる作成済みのブータブルな ISO イメージも提供しています。他のオプションは、samsung_magician-consumer-ssdAUR によって提供されている、Samsung の magician ユーティリティを使うことです。Magician は Samsung ブランドの SSD のみをサポートしています。OEM (Lenovo など) 向けに Samsung によって製造された SSD はサポートされていません。

ノート: Samsung はファームウェアアップデートをわかりやすく提供していません。ファームウェアアップデートに関連するページが4つあり、それぞれで別々の方法が示されています。

(Microsoft Windows で Samsung の "Magician" ソフトウェアを使わずに) Linux で作成したライブ USB スティックからファームウェアアップデートを実行したい場合は、[11] を参照してください。注意点として、このブログ記事では Master Boot Record (MBR) を使ってブート可能な USB ドライブを作成する方法が説明されており、最近のマザーボートでは MBR がサポートされていないことがあります (例えば、Intel NUC はもはや MBR をサポートしていません)。

Linux でのアップデート

SSD のファームウェアは以下に示すように (ブータブルな USB スティックを作らなくても) ネイティブにアップデートできます。まず、Samsung downloads ページを開き、"Samsung SSD Firmware" セクションへ行き、あなたの SSD 用の最新のファームウェア (ISO イメージであるはずです) をダウンロードしてください。

ノート: 一部の ISO イメージには、以下で言及されている initrd Linux イメージが欠落しています。その場合、代わりに #古い SSD を見てください。

ISO イメージから initrd Linux イメージを抽出してください:

$ bsdtar xf samsung_ssd_firmware.iso initrd

root/fumagician/ を抽出してください。このディレクトリには、ファームウェアのアップデートファイルが含まれています:

$ bsdtar xf initrd root/fumagician

最後に、root/fumagician/fumagician を root 権限で実行し、(ファームウェアが正常にアップデートされたのであれば) システムを再起動してください。

再起動後にファームウェアのバージョンが変わっていない場合は、root/fumagician/fumagician 2> log を実行して、出力されたログファイルからエラーを探してください。例えば、ログに 'unzip is not available' という記述がある場合は、unzip をインストールするか、initrd から抽出してください。

古い SSD

SSD ファームウェアの ISO イメージのいくつかには、initrd Linux イメージではなく FreeDOS イメージが含まれています。ゆえに、SSD ファームウェアのアップデートに必要なステップは上記とは異なります。以下の表は、そのような SSD (とそれに関連するパス) のリストです:

SSD モデル FreeDOS イメージパス ファームウェアパッケージパス
470, 830 BTDSK.IMG SSR/
840 isolinux/btdsk.img samsung/DSRD/
840 EVO (mSATA), Pro ISOLINUX/BTDSK.IMG

まず、ISO イメージから FreeDOS イメージを抽出してください:

$ bsdtar xf samsung_ssd_firmware.iso freedos_image_path

FreeDOS イメージを /mnt/ にマウントしてください:

# mount freedos_image_path /mnt

Magician SSD 管理ユーティリティから Disk Number にある SSD のディスク番号を入手してください:

# magician --list

ファームウェアパッケージのパスを指定し、指定したディスクに対して SSD ファームウェアをアップデートしてください:

# magician --disk disk_num --firmware-update --fwpackage-path /mnt/firmware_package_path

最後に、(root 権限で実行した) magician --list の出力から Firmware にあるバージョンを確認し、ファームウェアが正常にアップデートできたか検証してください。ファームウェアが正常にアップデートされたのであれば、システムを再起動してください。

SanDisk

SanDisk は、SanDisk SSD Toolkit でサポートされていないオペレーティングシステムにおいて SSD のファームウェアアップデートをするための ISO ファームウェアイメージを作成しています。

適切な SSD モデル だけでなく、適切な SSD 容量 (例: 60 GB または 256GB) も合わせて、ファームウェアを選択しなければなりません。ISO ファームウェアイメージを焼いたあと、PC を再起動し、新しく作成した CD/DVD ブートディスクを起動してください (USB スティックでも動作するかもしれません)。

ISO イメージには、Linux カーネルと initrd が含まれています。それらを /boot パーティションに抽出し、GRUBSyslinux でそれらを起動して、ファームウェアをアップデートしてください。

参照:

参照

翻訳ステータス: このページは en:Solid state drive の翻訳バージョンです。最後の翻訳日は 2024-03-22 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。