Windows10 ユーザーフォルダを丸ごと別ドライブにマウントするには?

執筆:2019.03.16
編集:2019.03.22


Unixのように別ドライブに割り当てをする方法。

半導体メモリは、確率で電子抜けが発生するためHDDよりデータ損失のリスクを伴います。怖いですね!

SSDは、データ消失のリスクが高くまたデータの破損が生じても認識できないため、異常に気が付いた時にはデータの復旧は不可能であることが多い。
そこで、この記事では
メインドライブはSSD
ユーザーフォルダなどは、HDD
という構成にする方法を解説しています

この方法の欠点として、ユーザーフォルダがドライブのIDと関連付けられてしまうためRAID運用はできない。
HDDの交換時は、手動でマウント解除とマウントを行う必要がある

いきなり本番でやるとコケるので、仮想マシンなどで練習してからにしましょう。
またシステムに障害が生じた場合は、別の復旧用OSが必要になること、リンクしているドライブを変更するための知識が必要になります。

手順
既存Windowsの場合、
  1. バックアップ、ドライブのクローン。
  2. 新規のドライブを接続(パーティション設定とフォーマット済みのもの)
  3. ドライブルートのセキュリティ属性の設定
  4. 安全に、ユーザーフォルダの中身をドライブにコピー
  5. 新規フォルダにドライブをマウントする
  6. ユーザーフォルダを.bakなどに変更し、マウントしたフォルダの名称をユーザーフォルダに変更する
  7. Windowsを起動する
\users
\Programdata

詳しい設定方法は別記事で紹介したいと思います

★RAID運用する場合は、2通りのやり方がある。
  1. レジストリを操作して、microsoftの公式サイトで紹介のある正規の方法で保存ドライブを変更する方法
    品質の悪いアプリが場所の変更を読み取らないため、誤動作につながることがあるため注意が必要です。

  2. ドライブ番号を割り当ててドライブに対してジャンクションコピーする方法。
    違うドライブに2つ同じデータが見えるため、重複ファイルと間違って消去しないように注意する必要があるためお勧めしません。

なお、マイドキュメントの場所変更機能は、品質の悪いアプリが場所の変更を読み取らないため、誤動作につながることがあるため今回は紹介していません。


個別ユーザー単位でユーザーフォルダを移動する方法をみてみましょう。

ドライブマウント編(ジャンクション)
この方法のいいところは、パス情報に全く変更がなく移動してあることがわからない点です。
悪い点はドライブに不具合が生じた際にマウント(フォルダ ジャンクション)に関する知識が必要になることがあります。

ユーザーパスの変更編(レジストリ)
この変更方法のいいところは、RAIDできることです。
悪い点は、Windowsの仕様に準拠していないアプリが移動前のフォルダに読み書きしようとすることろです。

マイドキュメント移動編(プロパティから容易に変更できます)
この変更方法のいいところは、RAIDできることです。
悪い点は、Windowsの仕様に準拠していないアプリが移動前のフォルダに読み書きしようとすることろです。



ドライブマウント編(ジャンクション)

ここでは対象のユーザーをユーザー1、そのフォルダ名をC:\users\user1とします
よくわからない場合は、次に解説してある バックアップアプリを使う方法をお勧めします。

(1)ドライブのフルバックアップをしてください。クローンできるならそれが一番簡単です。
(2)フォルダに新しいドライブをマウントします
移動したい新しいドライブを接続します。ここでは、ドライブPとします(最終作業が終わったらドライブレターの割り当てを解除します)
コンピューターの管理:記憶域:ディスクの管理を開き、ドライブPのプロパティ、「ドライブ文字とパスの変更」をクリックします
追加:「次の空のNTFSフォルダーにマウントする」を選び C:\users\user1.new を指定します。
設定がうまくいくと、C:\users\user1.newとドライブPが同一内容を示すようになります。
(3)「C:\users\user1.new」と「ドライブP」のプロパティを開きセキュリティ属性を変更する
セキュリティ:詳細設定
Administrators,SYSTEM,user1だけになるように設定します。
手順:Administrators,SYSTEMの2つだけ残し、残りを削除します。次にuser1をフルコントロールで追加します。
コマンドではこのように簡単に設定できます
PowerShell
PS C:\> $MyACL = Get-Acl -Path "C:\Users\user1"
PS C:\> Set-Acl -Path "C:\Users\user1.new" -AclObject $MyACL
(4)新しいドライブにユーザーフォルダの内容をコピーします。
同じPCからだとファイルロックがかかり不具合が生じる恐れがあるので、できれば違うPCにドライブをUSB接続して作業してください。
同じPCの場合は再起動して違うアカウント(管理者権限のある)でサインイン(ログイン)してくさい。
c:\usersにエクスプローラーで移動するとファイルメニューのWindows PowerShellで開く(管理者)でコマンドを開いてください
 XCOPY C:\users\user1  p:\  /E /I /X /K /H /B /C
c:\ と p:\ は 作業環境にあった、適切な文字に変更してください

これでフォルダのコピーができました。

(5)フォルダ名の変更
C:\users\user1 を C:\users\user1.bak
C:\users\user1.new を C:\users\user1
の順に変更します。コマンドでは
 ren C:\users\user1 C:\users\user1.bak

ren C:\users\user1.new C:\users\user1
(6)再起動して、ユーザー1でログインしてください。
デスクトップなどに適当なファイルを作成してみます。
そして、P:ドライブのデスクトップフォルダにそのファイルが作成されているか確認してください。
成功していたらファイルがあるはずです。
(7)特に必要がない場合は、Pドライブのドライブレター割り当てを解除します
ドライブPのプロパティ、「ドライブ文字とパスの変更」で、Pドライブの割り当てを解除する

以上で、ユーザーの個別フォルダを別ドライブにマウントする作業は終了です。

C:\users\user1.bakは、必要に応じて、削除または移動してください。

C:\usersフォルダを一括で移動する場合は、手順としては、セキュリティ属性値が違うだけで手順としてはほぼ同じです。ただし起動中に「フォルダ複製」と「名称変更」をできないため、同一システムの場合は、ライブOSでの起動、別PCの場合はUSBなどでの接続が必要になります。


ドライブマウント編(ジャンクション) バックアップアプリを併用

xcopyだとシステムと同一のドライブ上の場合は、ロックがかかっていてコピーできない可能性が高いです。
robocopyだとジャンクションの無限ループになります

おすすめな方法は、
(1) バックアップアプリで「フォルダー指定」で
C:\Users\ユーザー名
をバックアップします。
(2) 「C:\Users\ユーザー名」を別名に変更します
(3) 「C:\Users\ユーザー名」を新しいボリュームにマウントします
セキュリティタブを開いてアクセス権限を設定します。
(4) バックアップアプリで先ほどバックアップしたファイルをリストアします
再起動され特殊モードで書き込まれることがあります。(今回のアプリは特殊モードでした)
(5) 「C:\Users\ユーザー名」の
・マウントしたボリュームの「使用量が増加」
・ボリュームマウントのアイコンになっているかの確認
を確認してください
(6) C:\Users\ユーザー名のアカウントでサインイン(ログイン)してみる

バックアップアプリで行うと簡単にしかも確実に移行できます。
今回つかったアプリは、「HD革命/BackUp Next」というアプリです。

以上で
Cドライブのパス情報を変更せずに
WindowsシステムはSSD
安全性が求められるユーザーデータはHDDという運用ができます
この利点は、ボリュームマウント機能を利用しているため、今まで通りのパス情報でアクセスできるためユーザー側では何も変更は必要ありません

また、検索するとよく引っかかるネタとしては Dドライブにマウントする方法ですが
Dドライブで D:\Usersにしたい場合は、レジストリの変更でできます。マイクロソフトのサイトにやり方が載っています。
その場合は、古いC:\Usersには、Dへのジャンクション張っておくといいかもしれません。



キーワード
Windows ユーザーフォルダ ドライブ 移動
Windows ユーザーフォルダ ドライブにマウント
Windows ユーザーフォルダ ドライブ 移動 ドライブレター隠す
usersフォルダーに別ドライブをマウントしたい
usersフォルダーを移動するには