とにかく、/dev/sdbにext4ファイルシステムがあります。私はそれが/ dev / sdb1であると予想しました。
手動でマウントしたり、データにアクセスしたり、/ etc / fstabなどで参照したりできますが、標準パーティションに入れたいです。
データを失いたくないので、ドライブに別のパーティションにコピーするスペースがありません。データはあまりありません。いつでも外部デバイスに移動し、ファイルシステムを回復し、再び移動することができましたが、今は不思議です:)
データを/dev/sdb1(まだ存在しない)に再マップまたは移動する方法はありますか?
fdiskは以下を提供します:
$ sudo fdisk /dev/sdb1
fdisk: cannot open /dev/sdb1: No such file or directory
$ sudo fdisk /dev/sdb
Device /dev/sdb already contains a ext4 signature.
The signature will be removed by a write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x4096cdf8.
Command (m for help): p
Disk /dev/sdb: 200GiB, 214748364800 bytes, 419430400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4096cdf8
はい、非常に小さなドライブです! VirtualBox仮想マシンでDebian Stretchを使用しています。
dfに返信する:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 196G 116G 71G 63% /media/mymountdir
@MarkPlotnickが言ったように、仮想マシンにいるので、これはかなり簡単にできることを知っています。しかし、cliベースの方法があるかどうかを知りたいです。ありがとうございます!
答え1
あなたできるディスク全体(パーティションではない)にext4(または他の)ファイルシステムを作成します。しかし、これは、RAWデバイス全体を使用するパーティションテーブルがないことを意味します。
ディスクから起動する場合は可能です。そしてパーティションテーブルを作成し、誤って(ディスク情報がまだメモリ内にある場合)、ext4でフォーマットしてパーティションテーブルを上書きします(代わりにmkfs.ext4 /dev/sdb
使用mkfs.ext4 /dev/sdb1
)。その結果、ディスクには有効なパーティションテーブルはありませんが(今はext4起動ブロックがあります)、ファイルシステムはサイズを独立して保存するため、まだ動作します(一部の外部ディスクでも実行されます)。デバイスをパーティションのようにマウントするだけです。sdb
他の方法で使用していた場所で使用してくださいsdb1
。
次は危険あなたが想像できるように。すでにバックアップが必要です。そうでない場合は、バックアップを取得してください。今。一方、バックアップがない場合は、そのデータにあまり興味がないことを意味します(ハードウェアエラー、ソフトウェアエラー、または場合によってはコーヒーを注いだり、パイプが爆発する危険性があります)。 、盗難、自然災害、不自然災害)なので、最悪の状況が発生しても大きな害はありません。
修正する:あなたが無料ならバックアップする、再フォーマットして再インストールしてください。シフト作業と正確なタイミングは同じですが、データセキュリティは100%向上します。バックアップコピーを削除しないと、更新されたバックアップイメージを無料で入手できます。
最初のステップ:サイズ変更ext4ファイルシステムを使用してディスクシリンダ全体を短縮します。パーティションテーブルからシリンダサイズを取得するhdparm
ことはありません(fdiskはセクタの設定方法ではなく、セクタの総数を知らせます)。一部の外部USBドライバでは、ディスクメーカーとモデルを読み、それを使用してインターネットから情報を取得する必要があります。 SATAドライバは大丈夫でしょう。
これでいくらか分かったので、ファイルシステムのサイズを変更し、パーティション全体をディスクの最後に「右」に移動して、最初にパーティションテーブルと開始空き領域を持つシリンダを解放できます(私はあまり明確ではありません。なぜLBAディスクでは、sdX1はパーティションテーブルの後にシリンダ(またはトラック)を起動する必要がありますが、試してみる価値があることを見たことはありません。
パーティションを移動するには、非常に危険な方法を使用できます。バッファ戦略またはキャンセルオプションdd_rescue
(このオプションが機能しないというバグレポートを見たようです)。
より大きなファイル(1 GBなど)を試して、両方のオプションのいずれかが機能していることを確認し、ファイルサイズが同じになるようにデータをファイルの先頭から16 MB移動するようにコンテンツを移動できます。これが起こっていることを確認してください。その後、/dev/sdb
適切なオフセットを使用して繰り返します。
次に、をfdisk
使用してパーティションテーブルを再作成します。
頑張ってください!
答え2
ご覧のように、実際のブロックデバイスにファイルシステムを作成すると、fdisk
そのファイルシステムはデータが別の場所に移動されるまで友達になりません。ファイルシステムをマウントし、データをコピーしてからマウント解除する必要があります。その後、fdisk
ブロックデバイスを正しい方法で分割し、mkfs
パーティションで使用し、マウントし、データを再移動できます。
$ sudo -s
# mkdir -p /mnt/export
# mount /dev/sdb /mnt/export
# exit
$ rsync -a /mnt/export/ /path/to/backup/
$ sudo -s
# umount /mnt/export
# fdisk /dev/sdb # create your partitions
# mount /dev/sdb1 /mnt/export
# exit
$ rsync -za /path/to/backup/ /mnt/export/
答え3
すでに持っている構成は、仮想マシンには適していません。これにより、システムにさらに多くのディスクを追加できます。
パーティション化されたテーブルがある場合は、次のアプローチを検討してください。
- 管理者は仮想マシンのディスク割り当てを増やします。
- 仮想ディスクを再スキャンするか、仮想マシンを再起動します。
- パーティションエントリを削除し、大きなサイズで再作成します。
- ファイルシステムのサイズを変更します。
ファイルシステムがパーティションテーブルなしでディスクに直接配置されている場合は、退屈な3番目のステップは省略できます。