「ソリッドステートドライブ」の版間の差分
(→Hdparm で "frozen" 状態と表示される: 一部翻訳) |
(同期) |
||
(同じ利用者による、間の36版が非表示) | |||
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 をデータで埋める前と後でのパフォーマンスへの影響を表しています。 |
||
− | Most SSDs support the [[wikipedia:ATA_TRIM|ATA_TRIM command]] for sustained long-term performance and wear-leveling. A [https://www.techspot.com/review/737-ocz-vector-150-ssd/page9.html TechSpot article] shows performance benchmark examples of before and after filling an SSD with data. |
||
+ | {{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]。}} |
||
− | As of Linux kernel version 3.8 onwards, support for TRIM was continually added for the different [[filesystems]]. See the following table for an indicative overview: |
||
+ | |||
+ | Linux カーネルバージョン 3.8 以降、異なる[[ファイルシステム]]に対する TRIM のサポートが継続的に追加されました。概要は以下の表を見てください: |
||
{| class="wikitable sortable" |
{| class="wikitable sortable" |
||
− | ! |
+ | ! ファイルシステム !! 連続的な TRIM <br> ({{ic|discard}} オプション) !! 定期的な TRIM <br> (''fstrim'') !! 参照<br> と備考 |
|- |
|- |
||
− | | [[ |
+ | | [[Bcachefs]] || {{Yes}} || {{No}} || |
|- |
|- |
||
+ | | [[Btrfs]] || {{Yes}} || {{Yes}} || カーネル 6.2 から非同期 discard がデフォルトで[[Btrfs#SSD TRIM|有効化]]されています。 |
||
− | | [[Wikipedia:exFAT|exFAT]] || {{Yes}} || {{Yes}} || ''fstrim'' is supported since kernel 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] |
||
|- |
|- |
||
| [[ext3]] || {{Yes}} || {{Yes}} || |
| [[ext3]] || {{Yes}} || {{Yes}} || |
||
|- |
|- |
||
− | | [[ext4]] || {{Yes}} || {{Yes}} || |
+ | | [[ext4]] || {{Yes}} || {{Yes}} || [https://docs.kernel.org/admin-guide/ext4.html?highlight=discard,%20nodiscard(*)#options] の "discard, nodiscard(*)" |
|- |
|- |
||
| [[F2FS]] || {{Yes}} || {{Yes}} || |
| [[F2FS]] || {{Yes}} || {{Yes}} || |
||
42行目: | 44行目: | ||
| [[JFS]] || {{Yes}} || {{Yes}} || [https://www.phoronix.com/scan.php?page=news_item&px=MTE5ODY] |
| [[JFS]] || {{Yes}} || {{Yes}} || [https://www.phoronix.com/scan.php?page=news_item&px=MTE5ODY] |
||
|- |
|- |
||
− | | [[Wikipedia:NILFS|NILFS2]] || {{Yes}} || {{Yes}} || |
+ | | [[Wikipedia:ja:NILFS|NILFS2]] || {{Yes}} || {{Yes}} || |
+ | |- |
||
+ | | rowspan=2 | [[NTFS]] |
||
+ | | {{Yes}} || {{No}} || [https://docs.kernel.org/filesystems/ntfs3.html ntfs3] カーネルドライバは連続的な TRIM のみをサポートしています。 |
||
|- |
|- |
||
+ | | {{No}} || {{Yes}} || [[NTFS-3G]] ドライバは定期的な TRIM のみをサポートしています。 |
||
− | | [[NTFS-3G]] || {{No}} || {{Yes}} || since version 2015.3.14, [https://www.mail-archive.com/ntfs-3g-devel@lists.sourceforge.net/msg01093.html] |
||
|- |
|- |
||
− | | [[VFAT]] || {{Yes}} || {{Yes}} || ''fstrim'' |
+ | | [[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}} |
|} |
|} |
||
+ | {{Warning|TRIM を試みる前に、SSD が TRIM をサポートしていることを確認する必要があります。さもないと、データを失うかもしれませんよ!}} |
||
− | {{Warning|Users need to be certain that their SSD supports TRIM before attempting to use it. Data loss can occur otherwise!}} |
||
+ | TRIM のサポートを確認するには、以下を実行してください: |
||
− | To verify TRIM support, run: |
||
$ lsblk --discard |
$ lsblk --discard |
||
− | + | そして、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 をサポートしていません。 |
||
− | Alternatively, [[install]] {{Pkg|hdparm}} package and run: |
||
− | |||
− | {{hc|# hdparm -I /dev/sda {{!}} grep TRIM| |
||
− | * Data Set Management TRIM supported (limit 1 block) |
||
− | }} |
||
− | |||
− | {{Note|There are different types of TRIM support defined by the specification. Hence, the output may differ depending what the drive supports. See [[Wikipedia:Trim (computing)#ATA]] for more information.}} |
||
==== 定期的な TRIM ==== |
==== 定期的な TRIM ==== |
||
− | + | {{Pkg|util-linux}} パッケージは {{ic|fstrim.service}} と {{ic|fstrim.timer}} [[systemd]] ユニットファイルを提供しています。タイマーを[[有効化]]すれば毎週サービスが実行されます。このサービスは、''discard'' 操作をサポートしているデバイス上のマウント済みのファイルシステムすべてに対して {{man|8|fstrim}} を実行します。 |
|
− | |||
− | The timer relies on the timestamp of {{ic|/var/lib/systemd/timers/stamp-fstrim.timer}} (which it will create upon first invocation) to know whether a week has elapsed since it last ran. Therefore there is no need to worry about too frequent invocations, in an ''anacron''-like fashion. |
||
− | |||
− | To query the units activity and status, see [[journalctl]]. To change the periodicity of the timer or the command run, [[edit]] the provided unit files. |
||
+ | タイマーは最後に実行してから一週間経過したことを知るために (最初に実行したときに作成される) {{ic|/var/lib/systemd/timers/stamp-fstrim.timer}} のタイムスタンプを使います。そのため、''anacron'' のように、何度も頻繁に実行される恐れはありません。 |
||
− | ==== 継続的な TRIM ==== |
||
+ | ユニットの活動と状態を取得するには、[[journalctl]] を見てください。タイマーの周期や実行されるコマンドを変更するには、提供されているユニットファイルを[[編集]]してください。 |
||
− | {{Note|There is no need to enable continuous TRIM if you run {{ic|fstrim}} periodically. If you want to use TRIM, use either periodic TRIM or continuous TRIM.}} |
||
+ | ==== 連続的な TRIM ==== |
||
− | Instead of issuing TRIM commands once in a while (by default once a week if using {{ic|fstrim.timer}}), it is also possible to issue TRIM commands each time files are deleted instead. The latter is known as the continuous TRIM. |
||
+ | TRIM コマンドを定期的に ({{ic|fstrim.timer}} を使用する場合はデフォルトで1週間に1度) 発行するのではなく、ファイルが削除されるたびに TRIM コマンドを発行することも可能です。後者は、連続的な TRIM (continuous TRIM) として知られています。 |
||
− | {{Warning|Before [[Wikipedia:Serial ATA#SATA revision 3.1|SATA 3.1]] all TRIM commands were non-queued, so continuous trimming would produce frequent system freezes. In this case, applying [[#Periodic TRIM]] less often is better alternative. Similar issue holds also for a number of devices, see {{ic|ata_device_blacklist}} in [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/ata/libata-core.c Linux source code], for which queued TRIM command execution was blacklisted due to serious data corruption. In such case, depending on the device, the system may be forced to send non-queued TRIM commands the SSD instead of queued TRIM. See [[Wikipedia:Trim_(computing)#Disadvantages]] for details.}} |
||
+ | {{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|Continuous TRIM is not the most preferred way to issue TRIM commands among the Linux community. For example, Ubuntu enables periodic TRIM by default [https://askubuntu.com/questions/1034169/is-trim-enabled-on-my-ubuntu-18-04-installation], Debian does not recommend using [[Debian:SSDOptimization#Mounting SSD filesystems|continuous TRIM]] and Red Hat recommends using periodic TRIM over using continuous TRIM if feasible [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 を有効化します: |
||
− | Using the {{ic|discard}} option for a mount in {{ic|/etc/fstab}} enables continuous TRIM in device operations: |
||
/dev/sda1 / ext4 defaults,'''discard''' 0 1 |
/dev/sda1 / ext4 defaults,'''discard''' 0 1 |
||
− | {{Note|1= |
+ | {{Note|1=XFS {{ic|/}} パーティションの場合、{{ic|/etc/fstab}} 内で discard オプションを指定しても、うまく行きません。[https://bbs.archlinux.org/viewtopic.php?id=143254 このスレッド]によると、{{ic|1=rootflags=discard}} [[カーネルパラメータ]]を使用して設定しなければならないようです。}} |
+ | ext4 ファイルシステムでは、''tune2fs'' を使って {{ic|discard}} フラグを[[アクセス制御リスト#ACL の有効化|デフォルトマウントオプション]]として設定することもできます: |
||
− | On the ext4 filesystem, the {{ic|discard}} flag can also be set as a [[Access Control Lists#Enable ACL|default mount option]] using ''tune2fs'': |
||
# tune2fs -o discard /dev/sd'''XY''' |
# tune2fs -o discard /dev/sd'''XY''' |
||
+ | 外部ドライブの場合は、{{ic|/etc/fstab}} 内のエントリではなくデフォルトマウントオプションを使うと便利です。そのようなパーティションは、他のマシンでもデフォルトのオプションを使ってマウントされるからです。この方法では、すべてのマシンで {{ic|/etc/fstab}} を編集する必要はありません。 |
||
− | Using the default mount options instead of an entry in {{ic|/etc/fstab}} is particularly useful for external drives, because such partition will be mounted with the default options also on other machines. This way, there is no need to edit {{ic|/etc/fstab}} on every machine. |
||
− | {{Note| |
+ | {{Note|デフォルトマウントオプションは、{{ic|/proc/mounts}} にリストアップされません。}} |
==== デバイス全体を trim する ==== |
==== デバイス全体を trim する ==== |
||
+ | 一度に SSD 全体を trim したい場合 (例えば、新しいインストールのためや、そのドライブを売りたい場合など)、[[ソリッドステートドライブ/メモリセルの消去#blkdiscard による一般的な方法|blkdiscard]] コマンドが使えます。 |
||
− | If you want to trim your entire SSD at once, ''e.g.'' for a new install or if you want to sell the drive, you can use the [[Solid state drive/Memory cell clearing#Common method with blkdiscard|blkdiscard]] command. |
||
==== 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/ |
+ | * [[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. |
||
=== パフォーマンスを最大化する === |
=== パフォーマンスを最大化する === |
||
+ | [[パフォーマンスの向上#ストレージデバイス]] のヒントに従ってドライブのパフォーマンスを最大化しましょう。 |
||
− | Follow the tips in [[Improving performance#Storage devices]] to maximize the performance of your drives. |
||
==== セクタサイズ ==== |
==== セクタサイズ ==== |
||
− | + | [[Advanced Format#NVMe ソリッドステートドライブ]] を見てください。 |
|
==== SSD のメモリセルのクリア ==== |
==== SSD のメモリセルのクリア ==== |
||
+ | 時々、SSD のセルを完全にリセットしてデバイスにインストールした時と同じ初めの状態にすることで[https://www.anandtech.com/show/2738/8 製造時の書き込みパフォーマンス]を取り戻したいと思うことがあるかもしれません。SSD の書き込みパフォーマンスはネイティブの TRIM サポートを使っていても時間経過で落ちていきます。TRIM はファイル削除に対するセーフガードとして働くだけで、増加保存などの代わりにはなりません。 |
||
− | On occasion, users may wish to completely reset an SSD's cells to the same virgin state they were at the time the device was installed, thus restoring it to its [https://www.anandtech.com/show/2738/8 factory default write performance]. Write performance is known to degrade over time even on SSDs with native TRIM support: TRIM only safeguards against file deletes, not replacements such as an incremental save. |
||
+ | [[ソリッドステートドライブ/メモリセルの消去#SATA ドライブ|#SATA]] や [[ソリッドステートドライブ/メモリセルの消去#NVMe ドライブ|#NVMe]] の場合、[[ソリッドステートドライブ/メモリセルの消去]] に書かれている適切な手順に従うことでリセットすることができます。 |
||
− | The reset can be accomplished by following the appropriate procedure denoted in [[SSD memory cell clearing]], either for [[Solid state drive/Memory cell clearing#SATA drive|#SATA]] or [[Solid state drive/Memory cell clearing#NVMe drive|#NVMe]] SSDs. |
||
+ | {{Note|リセットする目的がデータの消去ならば、SSD のコントローラに頼って安全に消去を行うことを望まない場合があるでしょう (例えば、あなたが SSD の製造業者を信頼していなかったり、潜在的なバグを不安に思っていたりする場合など)。この場合、手動消去を行う例やさらなる情報を [[ディスクの完全消去#フラッシュメモリ]] で見てください。}} |
||
− | {{Note|If the reason for the reset is to wipe data, you may not want to rely on the SSD controller to perform it securely, ''e.g.'' if you do not trust the manufacturer or are wary of potential bugs. In this case, see [[Securely wipe disk#Flash memory]] for further information and examples to perform a manual wipe.}} |
||
=== セキュリティ === |
=== セキュリティ === |
||
− | ==== |
+ | ==== 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" に設定する必要があります |
+ | 例えば、Intel DH67CL/BL マザーボードの場合、設定にアクセスするには物理的なジャンパによってマザーボードを "maintenance mode" に設定する必要があります。[https://sstahlman.blogspot.in/2014/07/hardware-fde-with-intel-ssd-330-on.html?showComment=1411193181867#c4579383928221016762] |
− | {{Warning|よくわからないときは |
+ | {{Warning|よくわからないときは ''hdparm'' を使って上記の'''ロック'''セキュリティ設定を変更しないで下さい。}} |
SSD を消去するときは、[[ディスクの完全消去#hdparm]] や [[ソリッドステートドライブ/メモリセルの消去]] を見て下さい。 |
SSD を消去するときは、[[ディスクの完全消去#hdparm]] や [[ソリッドステートドライブ/メモリセルの消去]] を見て下さい。 |
||
− | ===== スリープから復帰したあとに SSD 状態を |
+ | ===== スリープから復帰したあとに SSD 状態を frozen モードにする ===== |
+ | SSD は S3 スリープから復帰すると SEC1 状態 (セキュリティ無効、未ロック、非 frozen) に戻っていることが多く、[[ソリッドステートドライブ/メモリセルの消去]] で説明されているように ATA SECURITY ERASE UNIT コマンドに対して脆弱になっています。 |
||
− | When waking up from sleep, the SSD will most likely have lost its "frozen" status, leaving it vulnerable to [https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase ATA SECURE ERASE] commands like those described in [[/Memory cell clearing]]. |
||
+ | この問題を回避するために、[[電源管理/サスペンドとハイバネート#/usr/lib/systemd/system-sleep のフック|スリープからの復帰後]]にスクリプトを実行することができます: |
||
− | In order to prevent this issue, a script can be run [[Power management#Hooks in /usr/lib/systemd/system-sleep|after waking up from 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 も含む) に発行することもできます。 |
||
==== ハードウェア暗号化 ==== |
==== ハードウェア暗号化 ==== |
||
+ | [[#Frozen モード]] で説明されているように、BIOS でストレージデバイス (SSD/HDD) のパスワードを設定すると、それをサポートしているデバイスのハードウェア暗号化も初期化される場合があります。デバイスが OPAL 規格にも準拠している場合、パスフレーズを設定する機能が BIOS に無くとも、これを行える場合があります。[[自己暗号化ドライブ]] を見てください。 |
||
− | As noted in [[#Hdparm shows "frozen" state]] setting a password for a storage device (SSD/HDD) in the BIOS may also initialize the hardware encryption of devices supporting it. If the device also conforms to the OPAL standard, this may also be achieved without a respective BIOS feature to set the passphrase, see [[Self-encrypting drives]]. |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
− | + | あなたが今遭遇している問題は、Linux 固有でないファームウェアのバグである可能性があります。ゆえに、SSD に影響を与える問題のトラブルシューティングに挑戦する前に、以下のアップデートが利用可能であるかをチェックするべきです: |
|
− | * SSD のファームウェアをアップデートする。[[#ファームウェアのアップデート]] を参照。 |
||
− | * マザーボードの BIOS/UEFI をアップデートする。[[Linux から BIOS を書き換える]]を参照。 |
||
+ | * [[#ファームウェア|SSD のファームウェア]] |
||
− | ファームウェアのバグであったとしても、解決できることがあります。ファームウェアにアップデートが存在しなかったり、ファームウェアのアップデートをしたくない場合、以下のセクションを見て下さい。 |
||
+ | * [[Linux から BIOS を書き換える|マザーボードの BIOS/UEFI ファームウェア]] |
||
+ | |||
+ | ファームウェアのバグであったとしても、解決できることがあります。ファームウェアにアップデートが存在しなかったり、ファームウェアのアップデートをしたくない場合、以下のセクションが役に立つかもしれません。 |
||
=== NCQ エラーを解消する === |
=== NCQ エラーを解消する === |
||
− | SSD や SATA チップセットによっては Linux Native Command Queueing (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 を無効にするには、[[ブートローダー]]の設定におけるカーネルコマンドラインに {{ic|1=libata.force=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 ([[ |
+ | 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 を無効化してみてください。 |
|
+ | |||
+ | === 外部 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 === |
||
− | + | 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 イメージを使ってファームウェアをアップデートする方法を提供しています。[ |
+ | Crucial は ISO イメージを使ってファームウェアをアップデートする方法を提供しています。[https://www.crucial.com/usa/en/support-ssd SSD サポートページ]から製品を選んで "Manual Boot File" をダウンロードすることでイメージを入手できます。 |
− | {{Note|Crucial が提供している ISO イメージはハイブリッドでは |
+ | {{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: |
||
− | + | https://www.tomshardware.com/news/Crucial-m4-Firmware-BSOD,14544.html |
|
− | See the following web |
+ | See the following web page for firmware updates: |
− | + | https://www.crucial.com/usa/en/support-ssd |
|
− | http://www.micron.com/products/solid-state-storage/client-ssd#software |
||
}} |
}} |
||
− | 上記の |
+ | 上記の警告が表示された場合は、重要なデータをバックアップしてから'''直ちにアップグレードを行うこと'''が推奨されます。ISO イメージと Grub を使用して Crucial MX100 のファームウェアをアップデートする手順は [https://www.rojtberg.net/1008/updating-crucial-mx100-firmware-with-ubuntu/ こちら] を参照してください。 |
=== Intel === |
=== Intel === |
||
− | Intel は [https://downloadcenter.intel.com/download/ |
+ | 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 |
+ | 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 スティックからファームウェアアップデートを実行したい場合は、[ |
+ | (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 は、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 として実行してください。 |
||
== 参照 == |
== 参照 == |
||
* [https://www.reddit.com/r/archlinux/comments/rkwjm/what_should_i_keep_in_mind_when_installing_on_ssd/ SSD に Arch をインストールすることについての Reddit における討論] |
* [https://www.reddit.com/r/archlinux/comments/rkwjm/what_should_i_keep_in_mind_when_installing_on_ssd/ SSD に Arch をインストールすることについての Reddit における討論] |
||
− | * [ |
+ | * [https://lore.kernel.org/linux-btrfs/20120830215008.GB2879@localhost.localdomain/ Re: Varying Leafsize and Nodesize in Btrfs] |
− | * [ |
+ | * [https://lore.kernel.org/linux-btrfs/5052700D.4020003@gmail.com/ Re: SSD alignment and Btrfs sector size] |
* [https://forums.anandtech.com/threads/erase-block-alignment-misinformation.2266113/ Erase Block (Alignment) Misinformation?] |
* [https://forums.anandtech.com/threads/erase-block-alignment-misinformation.2266113/ Erase Block (Alignment) Misinformation?] |
||
* [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://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 の UNMAP、ATA_TRIM コマンドが無ければ、空きメモリブロックがなくなると、1つセルに書き込む前にそのセルを削除するためにデータを移動しなければならないため、ディスクコントローラは書き込み操作により多くの時間を消費するようになってしまいます (Wikipedia:ja:ライトアンプリフィケーション を参照): TechSpot のベンチマークでは、SSD をデータで埋める前と後でのパフォーマンスへの影響を表しています。
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 のサポートを確認するには、以下を実行してください:
$ lsblk --discard
そして、DISC-GRAN (discard granularity) と DISC-MAX (discard max bytes) 列の値を確認してください。値が 0 でなければ、TRIM をサポートしていることを意味します。
SATA SSD の場合にのみ、hdparm パッケージは、hdparm -I /dev/sda | grep TRIM
を root ユーザとして実行することにより、TRIM サポートを検出することができます。hdparm は、NVMe SSD をサポートしていません。
定期的な TRIM
util-linux パッケージは fstrim.service
と fstrim.timer
systemd ユニットファイルを提供しています。タイマーを有効化すれば毎週サービスが実行されます。このサービスは、discard 操作をサポートしているデバイス上のマウント済みのファイルシステムすべてに対して fstrim(8) を実行します。
タイマーは最後に実行してから一週間経過したことを知るために (最初に実行したときに作成される) /var/lib/systemd/timers/stamp-fstrim.timer
のタイムスタンプを使います。そのため、anacron のように、何度も頻繁に実行される恐れはありません。
ユニットの活動と状態を取得するには、journalctl を見てください。タイマーの周期や実行されるコマンドを変更するには、提供されているユニットファイルを編集してください。
連続的な TRIM
TRIM コマンドを定期的に (fstrim.timer
を使用する場合はデフォルトで1週間に1度) 発行するのではなく、ファイルが削除されるたびに TRIM コマンドを発行することも可能です。後者は、連続的な TRIM (continuous TRIM) として知られています。
/etc/fstab
内で discard
オプションを使うことにより、デバイスオペレーションでの連続的な TRIM を有効化します:
/dev/sda1 / ext4 defaults,discard 0 1
ext4 ファイルシステムでは、tune2fs を使って discard
フラグをデフォルトマウントオプションとして設定することもできます:
# tune2fs -o discard /dev/sdXY
外部ドライブの場合は、/etc/fstab
内のエントリではなくデフォルトマウントオプションを使うと便利です。そのようなパーティションは、他のマシンでもデフォルトのオプションを使ってマウントされるからです。この方法では、すべてのマシンで /etc/fstab
を編集する必要はありません。
デバイス全体を trim する
一度に SSD 全体を trim したい場合 (例えば、新しいインストールのためや、そのドライブを売りたい場合など)、blkdiscard コマンドが使えます。
LVM
ファイルシステムから論理ボリュームへ渡された TRIM 要求は、自動的に物理ボリュームへ渡されます。追加の設定は必要ありません。
デフォルトでは、LVM のオペレーション (lvremove、lvreduce、そしてその他すべて) は物理ボリュームに TRIM 要求を発行しません。これは、vgcfgrestore(8) を使って以前のボリュームグループ設定を復元できるようにするためです。/etc/lvm/lvm.conf
内の issue_discards
は、論理ボリュームがその基底となる物理ボリュームの領域をもはや使用しなくなった時に、その物理ボリュームに discard 要求を送信するかどうかを制御します。
dm-crypt
ルート以外のファイルシステムの場合、/etc/crypttab
を編集して、SSD 上の暗号化されているブロックデバイスのオプションリストに discard
を追加してください (dm-crypt/システム設定#crypttab を見てください)。
ルートファイルシステムの場合、dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート の指示に従って、ブートローダーの設定に適切なカーネルパラメータを追加してください。
パフォーマンスを最大化する
パフォーマンスの向上#ストレージデバイス のヒントに従ってドライブのパフォーマンスを最大化しましょう。
セクタサイズ
Advanced Format#NVMe ソリッドステートドライブ を見てください。
SSD のメモリセルのクリア
時々、SSD のセルを完全にリセットしてデバイスにインストールした時と同じ初めの状態にすることで製造時の書き込みパフォーマンスを取り戻したいと思うことがあるかもしれません。SSD の書き込みパフォーマンスはネイティブの TRIM サポートを使っていても時間経過で落ちていきます。TRIM はファイル削除に対するセーフガードとして働くだけで、増加保存などの代わりにはなりません。
#SATA や #NVMe の場合、ソリッドステートドライブ/メモリセルの消去 に書かれている適切な手順に従うことでリセットすることができます。
セキュリティ
Frozen モード
一部のマザーボードファームウェアは初期化時に ATA SECURITY FREEZE LOCK コマンドを SATA デバイスに発行します。これによりドライブは frozen モードになり、SEC2 状態 (セキュリティ無効、未ロック、frozen 状態) に遷移します。同様に、一部の SSD (と HDD) も工場出荷時にこの状態にすでに設定されています。このことは hdparm と smartctl の出力から確認できます:
# 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]
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 ファームウェアのアップデートができます。
Crucial
Crucial は ISO イメージを使ってファームウェアをアップデートする方法を提供しています。SSD サポートページから製品を選んで "Manual Boot File" をダウンロードすることでイメージを入手できます。
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 はサポートされていません。
(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 イメージを抽出してください:
$ 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
パーティションに抽出し、GRUB や Syslinux でそれらを起動して、ファームウェアをアップデートしてください。
参照:
- SanDisk Extreme SSD 手動ファームウェアアップデート バージョン R211
- SanDisk Ultra SSD 手動ファームウェアアップデート バージョン 365A13F0
- SanDisk Ultra+ SSD 手動ファームウェアアップデート バージョン X2316RL - "H2" モデルと "HP" モデルのうちどちらが使用されているかを確認するには、
smartctl -i dev/disk/by-id/*SanDisk!(*part*)
を root として実行してください。