Lake-N97なmini PCにハードディスク(HDD)を増設しましたので、SSD長寿命化のために書き込みの多い領域を移動します。【注*1】
C:¥Users内のドキュメントフォルダ等を別ドライブに移動する方法はGUIでもできますが、
書き込みの多い、隠しフォルダ("AppData"フォルダ等*2)を移動しない場合、
SSDへの書き込み回数の低減効果は少なくなります。
今回は、ユーザー領域(C:¥Users)を、隠しフォルダも含めて、丸ごと、SSD(ドライブC)からHDD(ドライブD)に変更します。
(2025年1月12日一部修正、2025年1月13日追記)
1.は、前回と被りますが、ご容赦いただければ幸いです🙇♂️。
1.システムイメージの作成(システムバックアップ)
今回も、システムが起動しなくなる事もあり得る作業ですので、
まずは、システムイメージを作成しておきます。
ナビゲーション | : | コントールパネル>バックアップと復元(Windows7)
>システムイメージの作成 |
システムイメージバックアップ用のUSBドライブに保存することにしました。
この後の作業で、混乱しない様にUSBドライブは外しておきます。
2.ユーザー領域(C:¥Users)の移動準備
(1)コマンドプロンプトの起動
ユーザー領域の移動は、セーフモードでも出来ないので、工夫が必要です。
「スタート」ボタンをクリックし「スタートメニュー」から「電源」ボタンをクリック。
電源のメニューが表示されるので、キーボードの【Shift】キーを押しながらの「再起動]をクリック。
(2)ドライブの確認
まずドライブレターがどうなっているか確認します(*3)。
”diskpart”コマンドを使って、ドライブレターの割り当て状況を確認します。
X:¥Windows¥Ssystem32>diskpart |
Microsoft DiskPart バージョン 10.0.22621.1 Copyright (C) Microsoft Corporation. |
DISKPART>list volume |
このままではジャンクションが張れません。
(3)ドライブレターの変更(必要に応じて)
一旦、追加したHDDのドライブレターを適当なものに変えます。
DISKPART>select volume=0 |
ボリューム 0 が選択されました。 |
DISKPART> assign letter=z |
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。 |
SSDのドライブレターを”C”に変えます。
DISKPART>select volume=1 |
ボリューム 1 が選択されました。 |
DISKPART> assign letter=c |
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。 |
HDDのドライブレターを”D”に変えます。
DISKPART>select volume=0 |
ボリューム 0 が選択されました。 |
DISKPART> assign letter=d |
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。 |
DISKPART> list volume |
"EXIT"でdiskpartから抜けます。
ドライブレターの変更を反映させるために、
一旦、”Exit”コマンドでコマンドプロンプトを抜けた後、
再びコマンドプロンプトを起動します。
3.ユーザー領域の移動
(1)ユーザー領域(C:¥Users)のコピー
robocopyコマンド[*4]で”C:\Usres”ディレクトリを”D:\Users”にコピーします。
この時、すべての情報がコピーされるように” /E /COPYALL /XJ /MIR”【*5】オプションを、robocopyコマンドに与えます。
c:¥Users¥hoge>robocopy C:¥Users D:¥Users /E /COPYALL /XJ /MIR |
(*6)
(2)ユーザーフォルダ名の変更
一応、念のため、元のファオルダを残しておきます。
x:¥>c: |
c:¥>rename Users Users.orig |
- セーフモードでないと、フォルダが何らかのプログラムに利用されている場合、コマンドが成功しない事があります。
- また、仮に成功しても、通常モードでこれを実行すると、作業中に、お手上げの状態になる事があります。
(3)ジャンクションの作成
”C:¥”上に、”mklink”コマンド[*7]、もしくは”junction”コマンド[*8]で”D:¥Users”へのジャンクションを作成します。
今回は、”mklink”コマンドを使います。
ジャンクション作成は"/J"オプションをコマンドに与えます。
c:¥>mklink /J C:¥Users D:¥Users |
4.プログラムデータ領域の移動(2025年1月13日追記)
(1)プログラムデータ領域(C:¥ProgramData)のコピー
robocopyコマンドで、各アプリが利用する隠しフォルダである”C:\ProgramData”ディレクトリを”D:\ProgramData”にコピーします。
この時、すべての情報がコピーされるように” /E /COPYALL /XJ”オプションを、robocopyコマンドに与えます。
c:¥Users¥hoge>robocopy C:¥ProgramData D:¥ProgramData /E /COPYALL /XJ |
(2)プログラムデータフォルダ名の変更
一応、念のため、元のファオルダを残しておきます。
x:¥>c: |
c:¥>attrib -H ProgramData 【注*9】 |
c:¥>rename ProgramData ProgramData.orig |
(3)ジャンクションの作成
”C:¥”上に、D:¥ProgramData”へのジャンクションを作成します。
c:¥>mklink /J C:¥ProgramData D:¥ProgramData |
5.動作確認
再起動して、通常モードで立ち上げます。
ログインして、”ドキュメント”当たりのフォルダに何かファイルやフォルダを作って、Dドライブ上にできているか確認します。
新しい、ファイルやフォルダがDドライブ上にできていれば、SSDへ書き込まれずに、HDDに書き込まれていきます
このままでも、実用上はほぼ問題はないはずなのですが、
後々、トラブルの原因にならない様に、
次回はレジストリを触ります。
出典・引用・備考
*1:この投稿の内容は、特定の機種並びに特定の環境での確認結果になります。
同等機種や異なる環境での動作他を保証するものではありませんので、ご留意いただけます様お願いいたします。
*2:この"AppData"フォルダの下にある、"Roaming"フォルダに、アプリを使うたびに、アプリが一時ファイルを次々に書き込んでいきます。
*3:今回、HDDを増設した際に、HDDが”ディスク0”になっていました。
システム修復におけるコマンドプロンプトでは、ディスク番号の小さい方から、ドライブレターが割り当てられるので、確認したうえで、ドライブレターを変更します。
*4:"robocopy"、2024/05/28、日本マイクロソフト株式会社、https://learn.microsoft.com/ja-jp/sysinternals/downloads/junction、最終閲覧日2025年1月5日
*5:2025年1月12日修正。
オプション”/MIR”では、シンボリックリンクやジャンクションを、無限再帰コピーするような動きとなる事があるため。
*6:コピー自体はドライブレターの変更前に行ってしまっていたので、スクリーンショットは、C/Dが逆になってますことをご容赦いただければ幸いです🙇♂️。
*7:"mklink"、2023/03/09、日本マイクロソフト株式会社、https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/mklink、最終閲覧日2025年1月5日
*8:"Junction v1.07"、2023/08/22、日本マイクロソフト株式会社、https://learn.microsoft.com/ja-jp/sysinternals/downloads/junction、最終閲覧日2025年1月5日
*9:隠しフォルダのため、属性を変更しないとフォルダ名を変更できません。