ターミナルからストレージドライブをフォーマットする方法を知りたいのですが。回答には、よく使われるコマンドのオプションや、将来の使用法を推測するための基礎知識などがあると便利です。具体的には、NTFS、FAT32、EXT4などの異なるファイルシステムでフォーマットする方法を知りたいです。また、ターミナルを使ってドライブを分割する方法についても知りたい。
大容量の外付けハードディスク(HDD)をターミナルからNTFSにフォーマットしようとしています。
gpartedや他のGUIプログラムを使用できることは知っていますが、ターミナルから行う方法を知りたいと思っています。
parted
(GPartedのCLI兄弟)。
3.3. すでにパーティションがあってフォーマットしたい場合は、さまざまな mkfs
プログラム。
fdiskと
parted`は対話式で、ヘルプコマンドがあるので、プログラムの中でいつでもヘルプを見ることができます。両方ともスクリプトも可能です。mkfs "コマンドは対話型ではありません。fdisk
fdisk
はデバイス(/dev/sda
など)を引数にとります。次のようなコマンドが用意されています。
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the DOS compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
fdisk
をあまり使っていません。に絞ってみます。parted
parted
は引数を必要としませんが (推測します)、ディスクを指定する必要があります。選択肢があるとすれば、parted
がお勧めのプログラムです。次のようなコマンドが用意されています。
align-check TYPE N check partition N for TYPE(min|opt) alignment
check NUMBER do a simple check on the file system
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkfs NUMBER FS-TYPE make a FS-TYPE file system on partition NUMBER
mkpart PART-TYPE [FS-TYPE] START END make a partition
mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
resizepart NUMBER END resize partition NUMBER
move NUMBER START END move partition NUMBER
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition
quit exit program
rescue START END rescue a lost partition near START and END
resize NUMBER START END resize partition NUMBER and its file system
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright information of GNU Parted
コマンドは固有の接頭辞で縮めることができます(例えば、h
はhelp
の略です)。
コマンドを紹介するために作成した一時ファイル(/tmp/part
)を使用するので、サイズは多少小さくなります。これを必要なデバイス(/dev/sda
など)に置き換える必要があります。
まず、ディスクにパーティションテーブルがない場合は、作成しなければなりません。
parted /tmp/part mklabel gpt
また、昔ながらの 4 つのプライマリ・パーティションを使いたい場合は mklabel msdos
とします (MBR または MSDOS パーティション・テーブルと呼ばれます)5)。
そして、例えば、3GBから始まる(つまり、最初の3Gを空けておく)、サイズ2GBの(つまり、5GBで終わる)ext4パーティションを作ります。partedでは、
mkpartfs`にMB単位の位置を期待していますが、サフィックスを指定することもできます。
parted /tmp/part mkpart primary ext4 3G 5G
そしてもう一つ、今度は 1GB の NTFS パーティションを作成します。
parted /tmp/part mkpart primary ntfs 5G 6G
結果は以下のとおりです。
# parted /tmp/part print
Model: (file)
Disk /tmp/blah: 10.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 3000MB 5000MB 2000MB primary
2 5000MB 6000MB 1000MB primary msftdata
GParted が頑なに binary prefix を使っているのに対し、SI 接頭辞を使っていることに注意してください (ただし、くだらない i
は削除しています)。
パーティションにラベルを付けてみます。
# parted /tmp/part name 1 hello
# parted /tmp/part name 2 world
# parted /tmp/part print
Model: (file)
Disk /tmp/blah: 10.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 3000MB 5000MB 2000MB hello
2 5000MB 6000MB 1000MB world msftdata
partedは、ファイルシステム
ntfs`のパーティションをうまく作成できますが、既存のパーティションをNTFSにフォーマットすることはできません(!)。
mkfs partition fs-type
Make a filesystem fs-type on partition. fs-type can be one
of "fat16", "fat32", "ext2", "linux-swap", or "reiserfs".
mkfs
mkfsは、
fsckと同様に、基本的に、様々なファイルシステム固有のコマンドのフロントエンドです。例えば、私のシステムでは、
mkfs.bfs,
mkfs.cramfs,
mkfs.ext2,
mkfs.ext3,
mkfs.ext4,
mkfs.ext4dev,
mkfs.fat,
mkfs.minix,
mkfs.msdos,
mkfs.ntfs,
mkfs.vfatが利用できます。 さて、残念なことに、
partedは上で使ったようなファイルではうまく動作しますが、
mkfsはそのようなファイルの中でパーティションを探すことはできません。実際、
mkfsはブロックデバイスを想定していますので、
mkfsに新しいファイル
/tmp/fileを使おうとすると、強制的にそうさせなければなりません。フォーマットしたいパーティションに対応するブロックデバイス、例えば
/dev/sda2を使います。 mkfs
の一般的な構文は次のとおりです。
# mkfs --help
Usage: mkfs [options] [-t type fs-options] device [size]
Options:
-t, --type=TYPE file system type, when undefined ext2 is used
fs-options parameters to real file system builder
device path to a device
size number of blocks on the device
-V, --verbose explain what is done
defining -V more than once will cause a dry-run
-V, --version output version information and exit
-V as version must be only option
-h, --help display this help and exit
For more information, see mkfs(8).
ご覧のように、-t
フラグを使うと、ファイルシステム固有のフラグを渡すことができます。たとえば、NTFSのフラグです。
# mkfs.ntfs --help
Usage: mkntfs [options] device [number-of-sectors]
Basic options:
-f, --fast Perform a quick format
-Q, --quick Perform a quick format
-L, --label STRING Set the volume label
-C, --enable-compression Enable compression on the volume
-I, --no-indexing Disable indexing on the volume
-n, --no-action Do not write to disk
Advanced options:
-c, --cluster-size BYTES Specify the cluster size for the volume
-s, --sector-size BYTES Specify the sector size for the device
-p, --partition-start SECTOR Specify the partition start sector
-H, --heads NUM Specify the number of heads
-S, --sectors-per-track NUM Specify the number of sectors per track
-z, --mft-zone-multiplier NUM Set the MFT zone multiplier
-T, --zero-time Fake the time to be 00:00 UTC, Jan 1, 1970
-F, --force Force execution despite errors
Output options:
-q, --quiet Quiet execution
-v, --verbose Verbose execution
--debug Very verbose execution
Help options:
-V, --version Display version
-l, --license Display licensing information
-h, --help Display this help
Developers' email address: [email protected]
News, support and information: http://tuxera.com
そこで、クイックフォーマット(-Q
)、ブロックデバイスでないファイルを強制的に操作する(-F
)、ラベルを設定する(-L "hello world"
)というNTFSパーティションを作ってみましょう。
# mkfs -t ntfs -F -Q -L "hello world" /tmp/file
/tmp/file is not a block device.
mkntfs forced anyway.
The sector size was not specified for /tmp/file and it could not be obtained automatically. It has been set to 512 bytes.
The partition start sector was not specified for /tmp/file and it could not be obtained automatically. It has been set to 0.
The number of sectors per track was not specified for /tmp/file and it could not be obtained automatically. It has been set to 0.
The number of heads was not specified for /tmp/file and it could not be obtained automatically. It has been set to 0.
Cluster size has been automatically set to 4096 bytes.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.
明らかにファイルでの作業が楽しくなかったようですね。)心配しなくても、実際のディスク上で作業していれば、ほとんどの値は自動的に検出されるはずです。この"file"もファイルシステムとして問題なく動作します。
# mount -t ntfs-3g /tmp/file /mnt
# touch "/mnt/a file in mnt"
# ls -l /mnt
total 0
-rwxrwxrwx 1 root root 0 Aug 29 06:43 a file in mnt
# umount /mnt
# ls -l /mnt
total 0
1.この回答では、まだどこにもsudo
を使っていません。ファイルを操作していて、しかも自分が所有しているファイルなので、sudo
は必要ありませんでした。partedがそのことを警告してくれます。ブロックデバイスの場合は、通常、常に
rootが所有しているので、
sudoが必要です (または、
sudo -iや
sudo su -で root シェルを使用する必要があります)。 2.2.
partedは GNU プログラムであり、多くの GNU プログラムと同様に
info形式の広範な文書を持っています。parted-doc
をインストールしてから(sudo apt-get install parted-doc
)、info parted
を実行してください。また、online user's manualをチェックアウトすることもできます。
3.GPartedは、適切なmkfs
プログラムを直接呼び出すので、パーティションをNTFSにフォーマットすることができます(ここではmkntfs
、mkfs.ntfs
はmkntfs
へのリンクに過ぎません)。また、いくつかのパラメータを設定します。実際には、ほとんどの操作について、GPartedのメッセージの詳細を調べれば、どのコマンドが実行されたかがわかります。
4. GPTとMBR/MSDOSパーティションテーブルのメリットについては触れませんが、GPTはUEFIを搭載した新しいデバイス、特にWindows 8を搭載したデバイスに見られる可能性が高いです。https://askubuntu.com/questions/340841/the-state-of-partitioning-tools では、GPTに直面したときにどのようなツールが利用できるかを説明しています。
5.LVM、ZFS、btrfsは全く別のゲームです。LVM、ZFS、btrfs は全くの別物です。これらには付属のツールがあり、parted
や fdisk
の代わりに使用する必要があります (おそらく、これらを使用するためにパーティションを作成するという最初のステップを除いて)。
parted
の使用に関する注意点。parted`プログラムの構文は次のとおりです。
parted [options] [device [command [options...]...]]
コマンドなしでparted
を実行すると、以下のようになります。
parted /tmp/parted
単純なシェルが表示され、上記のコマンドを実行することができます。しかし、これらのコマンドは parted
プログラムを使って直接実行することもできます。つまり、この3つは同等です。
# parted /tmp/parted
GNU Parted 2.3
Using /tmp/parted
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
そして
# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /tmp/parted
Using /tmp/parted
(parted) mklabel gpt
そして
parted /tmp/parted mklabel gpt
また、parted
でパーティションを作成する場合、パーティションの終了を示す便利な指標として-1s
があります(ハイフンと"s"の間に"1"が入ります)。これは、パーティションを指定された開始点からディスクの残りの部分にまたがるようにしたい場合に便利です。より具体的には、次のように実行します。
parted /dev/sda -- mkpart primary ext4 3G -1s
を実行すると、/dev/sda
のディスクの 3G から始まり、/dev/sda
のディスクの最後のセクタで終わる(つまり、3G からディスクの残りの部分全体に渡る)パーティションが作成されます。なお、1s
が無効なオプションと解釈されないように、--
が必要です。
まず、fdiskユーティリティーを使って、実際にハードドライブのパーティションを作成する方法です。
Linuxでは、4つのプライマリパーティションしか使用できません。プライマリパーティションの1つを細分化することで、より多くの論理パーティションを作成することができます。
サブディビジョンにできるのは、プライマリパーティションの1つだけです。
fdisk は、コマンドプロンプトで root として fdisk device と入力して起動します。
デバイスとは、/dev/sdaや/dev/sdbのようなものです。
fdiskの基本的なコマンドは以下の通りです。
p print the partition table
n create a new partition
d delete a partition
q quit without saving changes
w write the new partition table and exit
パーティションテーブルに加えた変更は、書き込み(w)コマンドを発行するまで反映されません。
以下は、パーティションテーブルのサンプルです。
Disk /dev/sdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 184 370912+ 83 Linux
/dev/sdb2 185 368 370944 83 Linux
/dev/sdb3 369 552 370944 83 Linux
/dev/sdb4 553 621 139104 82 Linux swap
例を示します。
シェルプロンプトから fdisk を起動します。
sudo su
fdisk /dev/sdb
と表示され、SATAコントローラの2台目のドライブを使用していることがわかります。
Command (m for help): p
Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
That makes for 384Mb per partition.
Now You get to work.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-621, default 1):<RETURN>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-621, default 621): +384M
Next, You set up the partition You want to use for swap:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (197-621, default 197):<RETURN>
Using default value 197
Last cylinder or +size or +sizeM or +sizeK (197-621, default 621): +128M
これで、パーティションテーブルは次のようになりました。
Device Boot Start End Blocks Id System
/dev/sdb1 1 196 395104 83 Linux
/dev/sdb2 197 262 133056 83 Linux
最後に、最初のパーティションを起動可能にします。
Command (m for help): a
Partition number (1-4): 1
And You make the second partition of type swap:
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)
Command (m for help): p
最終結果です。
Disk /dev/sdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 196 395104+ 83 Linux
/dev/sdb2 197 262 133056 82 Linux swap
最後に,テーブルをディスクに書き込むために書き込みコマンド(w)を発行します.
mkfsユーティリティは、Linuxシステム上にファイルシステム(ext2、ext3、ext4など)を作成するために使用されます。
ファイルシステムを作成するデバイス名をmkfsに指定する必要があります。
利用可能なファイルシステム構築コマンドを見る
ファイルシステムビルダー(mkfs*コマンド)は、通常、/sbin/、/sbin/fs、/sbin/fs.d、/etc/fs、/etcなどのディレクトリで検索されます。
見つからない場合は、最後にPATH変数で見つかったディレクトリを検索します。
次のリストは、システムで利用可能なmkfs*コマンドを示しています。
sudo su
cd /sbin
ls mkfs*
mkfs mkfs.bfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev
mkfs.minix mkfs.msdos mkfs.ntfs mkfs.vfat
特定のデバイスにファイルシステムを構築する
mkfsコマンドを使ってファイルシステムを構築するためには、以下のようにdevice-filenameとfilesystem-typeの引数が必要です。
以下の例では、/dev/sdb1 パーティションに ext4 ファイルシステムを構築します。
sudo su
mkfs -t ext4 /dev/sdb1
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1120112 inodes, 4476416 blocks
223820 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
137 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
mkfs コマンドのデフォルトのファイルシステムタイプは ext2 であることに注意してください。
t "オプションを指定しないと、ext2ファイルシステムが作成されます。
また、先ほど説明した方法で、ext2、ext3、ext4のいずれのファイルシステムであるかを確認することができます。
NTFSドライブのフォーマット
まず、NTFSファイルシステムを作成する機能が必要になりますので、ntfsprogsをインストールします。
sudo su
apt-get install ntfs-3g
次に、パーティションを吹き飛ばして、NTFSとして再作成します。
sudo su
umount /dev/sdb1
fdisk /dev/sdb
Options to select:
‘d’ to delete the partition
‘n’ to create a new partition
‘p’ for primary
‘1’ for partition number
‘Enter’ for first cylinder (default 1)
‘Enter’ for last cylinder (default of max size)
‘t’ for type
‘L’ to list codes, and enter code for HPFS/NTFS. In my case, it’s ‘7’
‘w’ to write changes to disk, and exit
umount /dev/sdb1
最後のステップでは、Ubuntuが自動マウントしてくれたので、パーティションをアンマウントします。
次に、ファイルシステムを作成する必要があります。これには2つの方法があります。せっかちな方法(クイックフォーマット)と、時間はかかりますが良い方法(フルフォーマット)です。
クイックフォーマット
これは、ディスクスペースを割り当てるだけで、ドライブのゼロアウトや不良セクタのチェックは行いません。そのため、数秒で終了します。
sudo su
mkfs.ntfs -f /dev/sdb1
フルフォーマット
データの整合性をより重視し、待ち時間を気にしないのであれば、フルフォーマットを行います。
大容量のドライブをゼロにするには、数時間かかるかもしれません。
sudo su
mkfs.ntfs /dev/sdb1