[ 画像提供元 : Amazon ]
SSDも最近は安くなりました。上記は、120GBで5,000円そこそこと、かなりリーズナブルな価格となっていて、自分にも手が届くようになってきました。
そこで、個人的に使用していた Ubuntuのデスクトップを HDD(500GB) からSSD(120GB) へ交換することにしました。
このサイトでも、以下のように今までにディスク交換の記事をいくつか書きました。
ただ、いずれも容量が小さいものから同じかそれ以上の容量へのディスク交換手順になります。
今回は、ディスク容量が大きいHDDから小さいSSDへのディスク交換になりますから、これらの記事を参考にできません。
ディスク交換手順記事一覧
fdiskコマンド編
LVMを使用したディスク追加手順は、ディスクの追加手順をまとめてみた(LVM編) です。
LVMを使用したディスク交換手順は、ディスクの交換手順をまとめてみた(LVMパーティション&fdiskによるパーティション拡張編) です。
通常ディスクを使用したディスク追加手順は、ディスクの追加手順をまとめてみた(通常ディスク編) です。
通常ディスクを使用したディスク交換手順は、ディスクの交換手順をまとめてみた(通常パーティション&fdiskによるパーティション拡張編) です。
partedコマンド編
パーティションテーブルを MBR(msdos)からGPTへ移行する手順は、2TiB超えパーティションのためのMBR(msdos)からGPTへの移行 です。
LVMを使用したディスク交換手順は、ディスクの交換手順をまとめてみた(LVMパーティション&partedによるパーティション拡張編) です。
通常ディスクを使用したディスク交換手順は、ディスクの交換手順をまとめてみた(通常パーティション&partedによるパーティション拡張編) です。
ネット上にも様々な同様の記事がありますが、これらのほとんど記事が、やっぱり、ディスク容量が同じか あるいは 大きいことを前提に解説されています。
今回は、古いHDDからSSDへの切り替え時など発生する 容量が大きいディスクから小さいディスクへのディスク交換手順を簡単に解説してみたいと思います。
探せば、ネット上でも、容量の小さいディスクへの交換手順の解説記事があります。
ただ、その手順の多くは、元のディスクである容量の大きなディスク(パーティション、ファイルシステム)を交換するディスク容量まで小さくして、
一般的なディスク交換手順と同じようにできる・・・という手順解説が多いようです。
この手順で最もリスクが高いのは、元ディスクのパーティションのリサイズ、あるいは、再構築(削除して再作成)することです。
そもそも、パーティションのリサイズは、サイズアップが基本的に考えられており、サイズダウンには、対応できていない場合もあります。
もし、このパーティションの再構築で失敗したら、このディスクが二度と情報を読み出すことができなくなることもあります。
ここでは、元ディスクのパーティションに手を加えることなくそれらのリスクを回避し、ディスクの入れ替えを行ってみます。
(
ここでのファイルシステムは、ext4 について記載しています。
また、この記事は、http://askubuntu.com/questions/40372/how-to-move-ubuntu-to-an-ssd
を参考に、自分で確認したものです。
)
- 目次
- 履歴
2015年10月21日 初版
準備するもの
ここでは、あくまで例として 20GBの元ディスク(HDD)を10GBの交換用ディスク(SSD)へ入れ替えてみます。
(実環境での容量は、2015.10 現在では この10倍程度でしょうかね、
参照されている時期によっても現実的な数値は、変わりますので、ここではわかりやすいように 少ない数値で解説しています。)
これを前提に以下のものを準備します。
- 新しいSSD(ディスク) : ここでは 例として 10GのSSDとしています。
- Ubuntu Live CD(DVD) or USB : ここでは、Ubuntu Live DVD としています。
前準備 : 古いディスクの移行準備を行う
ここで行いたいことは、以下の2点です。
- 古いディスクの容量を新しいディスクに合わせる。
- 古いディスクのswap を削除する。
交換するディスク状態とメモリ状態を確認する
まずは、交換するディスク状態とメモリ状態を確認しておきます。
|
上記の例では、基本領域の後にスワップ領域があります。 これを削除しておきます。
交換するディスクの容量を新しいディスクに合わせる
上記の例では、df コマンドにて、使用量が 4.5G となっているので、
移行先の 10G の容量を考えれば、特段、容量を意識することはなさそうです。
もし、使用量が 多い場合は、移行先の 10G の容量の 約8割程度までディスク使用量を抑えるように
他のディスクへ移動させましょう。
やり方は、色々あると思います。シンボリックリンクでディレクトリを飛ばしてしまうのも1つの方法ですし、
増設ディスクに新たにパーティションを作成し、そこへ移動させても良いでしょう。
ここでは、詳細解説しませんが、必要なのは、移行するディスク容量内に交換するディスクの使用量を抑えることですので、
その点に注意をはらい作業を行ってください。
古いディスクのswap を削除する
swap の使用を停止します。
|
free コマンドで確認しておきます。
|
fdisk コマンドで swap 領域を削除します。
|
この設定が有効になるのは、再起動した後になります。
ここまでの作業を終えたら、一度、再起動してみましょう。
再起動しても動作に支障がないことを確認しておきます。
もし、ディスク交換で何らかの不具合が発生した際は、このディスクを使用すれば、もとに戻せるようにしておきます。
交換手順(1) : 新しいディスクへ古いディスク内容をコピーする
ここで行いたいことは、以下の3点です。
- 新しいディスクの取り付けを行う。
- 新しいディスクにパーティション作成する。
- 古いディスクの全ファイルを新しいディスクへコピーする。
電源断状態で、新しいディスクを取り付ける
まずは、電源断します。
|
shutdown -h now
とほぼ同じ動作をします。
shutdownコマンドに慣れている方は、そちらでもOKです。
電源断したら、交換する新しいディスクを取り付けます。
ただし、古いディスクから新しいディスクへ中身をコピーするまで、古いディスクも装着したままとします。
Ubuntu を Live CD(DVD) or USB で起動する
新しいディスクの取り付けを終えたら、電源投入ですが、ここでは、Live CD(DVD) or USB を使用します。
ディスクの入れ替え等々ストレージのメンテナンスは、通常のシステム状態で行うことはありません。
一般的に、シングル(ユーザ)モードやレスキューモード(リカバリモード)などで作業を行うことが求められます。
ここでは、後の作業で GRUBのインストールもありますので、Live CD(DVD) or USB を使用して作業を行うこととします。
(ここでは、Ubuntu 14.04 のLive DVD を使用したもので解説します。 )
DVD ドライブ に Live DVD を挿入します。
先に前もって準備していた Ubuntu Live DVD をDVD ドライブにセットします。
電源投入とともにBIOSの設定を確認しておきます。
DVDドライブからのブートを優先順位として1位にしておきます。
BIOSの設定は、各マザーボードによって異なりますので、各マニュアルなどを参照し確認しましょう。
確認を終えたら、再起動し Ubuntu を起動します。
シェル(ターミナル)を起動します。
まず、以下のように Ubuntu Live の選択画面が表示されます。
ここでは、左の言語選択にて 日本語を選択し、Ubuntu を試す をクリックします。
以下の初期画面が表示されます。
続けて、以下の番号順にクリックすることで シェル(ターミナル)を起動します。
ディスクを確認する
Ubuntuが起動できたら、まずは、ディスクが認識できているか確認します。
|
新しいディスクにパーティションを作成する
パーティションを作成する
次にコピー先となる新しいディスクにパーティションを作成します。
|
ファイルシステムを作成する
パーティションが作成できたら ext4 にて ファイルシステム を作成しておきます。
|
ディスクをコピーする
新しいディスクのパーティションの作成ができたら、そのパーティションへ古いディスクの全ファイルをコピーします。
|
交換手順(2) : 新しいディスクへ GRUB をインストールする
ここで行いたいことは、以下の3点です。
- 古いディスクを取り外す。
- 新しいディスクにGRUBをインストールする。
電源断状態で、古いディスクを取り外す
まずは、電源断します。
|
電源断したら、古いディスクを取り外します。
また、先に接続した新しいディスクのSATA接続先を取り外した古いディスクのそれに差し替えます。
Ubuntu を Live CD(DVD) or USB で起動する
ここの起動は、先の Ubuntu を Live CD(DVD) or USB で起動する を参照してください。
ディスクを確認する
Ubuntuが起動できたら、まずは、ディスクが認識できているか確認します。
ここでの例では、新しいディスクが sda になっていると思います。
|
GRUBをインストールする
新しいディスクへGRUBをインストールする
|
boot-repair を使ってGRUB を設定する
続けて GRUBの設定ですが、ここでは、便利なツール で boot-repair というものがあります。
これを使うとボタン一つで、GRUB の設定を行ってくれます。
では、早速、boot-repair をインストールし、起動してみましょう。
特に必要がない場合もありますので、一度、再起動されてみるのも良いかもしれません。
|
処理を終えたら、以下のような画面が起動するはずです。
Recommended Repair をクリックすると、自動でGRUBの設定を修復してくれます。
ここでは、Yesで処理を継続します。
最後に再起動してディスクを確認
システム再起動後、正しくディスクの交換および容量変更ができたか確認してみましょう。
|
ルートディレクトリ( /dev/sda1 ) の容量が 約10G となり、スワップ領域( Swap total )が 0 となっていますね。
(おまけ)SSD の寿命?を延ばす設定
SSD は、基本的に読み書きをすればするほど劣化する?と言われています。
これは、フラッシュメモリの特性で、同一セルを書き換えを寿命回数まで行うと、
セル自体が劣化してやがて電子を保持できなくなり、データの保持ができなくなります。
(出典 : https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%83%A1%E3%83%A2%E3%83%AA)
つまりは、書き込み回数に限界があるということです。
(厳密には、時間による寿命もあります。長期間書き換えがないと自然放電が起き、データが消去されます。)
一般的には、
SLC(Single Level Cell)タイプであれば、10万回程度
MLC(Multiple Level Cell)タイプであれば、1万回程度
TLC(Triple Level Cell)タイプであれば、5,000回程度
と言われています。
(最近では、さらに低下していると言われています。
TBW(TeraBytes Written : 書き込みができる総容量)で 80TB 以上が一般的なので、ざっと 500回程度が 補償される範囲で実運用では、その10倍程度が限界?)
一般的に廉価版は後者になります。
(最近では、SLCはほぼ見かけないのでMLCと思って間違いないかも・・です。
ただ、まだ多くはありませんが、TLCも出てきていますので要確認でしょう。)
また、キャッシュの有無も寿命に影響するといわれています。(キャッシュがあれば、書き込み回数を抑えられるからです。)
これらのことから、単純に SSDの寿命を延ばすには、書き込み回数を減らすことです。
そのための施策が以下のようなものになります。
swap を使用しない
これは、ここでの交換手順にも入れていますが、あくまで、メモリが十分にある場合です。
メモリが少ない場合は、システムが不安定になることもありますので、十分注意しましょう。
また、仮にswap を使用しなければならない場合であっても SSD の領域でなく、増設などのHDDの領域にswap パーティションを作成するようにしましょう。
これによって、SSDの延命はできるかもしれませんが、パフォーマンス的には落ちてしまうことは、十分、考慮の上、作業をされることをおすすめします。
また、swap の使用頻度を最小限にするように以下の設定を行ってみるのも良いと思います。
|
Windowsでいうところの ページングで、Windowsでは、これを無効化すると同等の効果を得るでしょう。
ディスクバッファキャッシュの書き込み間隔を長くする
ディスクバッファキャッシュは、ある一定の間隔でディスクへ書き込むことで解放されます。 ここでは、その間隔を長くすることでディスクへの書き込み回数を減らす?というものです。
|
デフォルトでは 5 秒間隔になっているところを 15 秒間隔に変更しています。
一応、メモリに一定時間あるデータの中で以下の指定時間を超えたものは
ディスクへ書き込む(先の dirty_writeback_centisecs の間隔で起動される pdflushデーモンが書き込む)ことになっていますから、
これも、少し伸ばしておきます。
|
ただ、これって書き込み回数が減るの?
正直、これで、どれだけの効果があるのかは疑問?です。
頻繁にアクセスしないのは確かですが、ここでの目的は同じセルに対して書き込み回数を減らすことなので、
この設定で果たして減るのかな?と思わなくもないです。(通常のHDDならシーク回数などを減らすことは十分に考えられますが・・・)
ファイル一覧データベースの更新頻度を行なう頻度を少なく
mlocate によって ファイル一覧データベース(/var/lib/mlocate/mlocate.db) が更新されますが、 この更新する量が多いので、できる限り更新回数を減らすようにしておきます。 ただ、この頻度を減らすとファイル検索で、新しいファイルの検索ができない場合などのデメリットもありますので、十分、注意が必要です。
|
Windowsでいうところの ファイル インデックス で、Windowsでは、これを無効化すると同等の効果を得るでしょう。
/tmp ディレクトリをメモリへ追い出す
/tmp ディレクトリは、Linuxにおいては、文字通り一時領域であって、システムリブートにて消去されます。 そこで、ディスク上にある必要性もないので、メモリへ割り当てます。 (あくまで、メモリに余裕がある場合です。メモリに余裕がない場合は、別ディスクなどへ移行されることをおすすめします。)
|
ここでは、512M を割り当てていますが、環境によって変更されると良いよ思います。
atime 更新を止める
各ファイルの最終アクセス日時(atime) の更新を止めることで、ファイルのアクセス毎に更新していた書き込み情報が無くなります。 これにより、更新回数が減るということです。 しかし、atime をもとにファイルの存在意義を確認しているツールなどもあり、 必ずしも停止してよいものかは疑問が残るところです。 ここでは、他のサイトでも紹介されている内容を以下に記載しておきますが、先の理由から、初心者の方には、おすすめしませんのであらかじめご了解ください。
|
この設定内容は、システムの再起動時に有効になります。
その他
ここまでに解説したもの以外にも以下のような対策があります。 自身の環境によって取り入れた方が良い場合は、設定しておきましょう。
- /var/log を別ディスクへ移動する (随時 書き込まれるログ情報を移動することになります)
- /home を別ディスクへ移動する (ブラウザキャッシュなどの一時領域を移動することになります)
- ハイバネーションを利用している場合、使用しないように設定する
- デフラグを利用しないように設定する(Windowsのみ)
(おまけ)trimが有効になっているか確認(パフォーマンス向上)
(この設定は、寿命を延ばすわけではありません。)
trimは、削除されたファイルおよびディレクトリの領域の初期化を行うコマンドです。
一般にファイルを削除しただけでは、ファイルの領域が初期されることはありません。
ある一定の間隔で、trimコマンドを実行することで、削除された領域の初期化を行うことで、次回、書き込み処理の効率化を図ることができるというものです。
Ubuntu 14 では、trimは有効になっています。
|
この cron は、fstrim-all を起動しているだけです。
手動でも、自前で一定間隔でfstrim-all を起動しても同じような効果を得られるでしょう。
あるいは、 /etc/fstab のオプションで “discard” を指定することでも同様の結果を得ることができるでしょう。
容量が小さいディスクへのコピーには、dd コマンドが使えないので cp コマンドで実施する方法です。 そのため、grubをインストールする必要がありますが、こちらがパーティションを再構築するより安全かと思います。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
コメントを投稿 :