给 Ubuntu Linux 添加一个大硬盘


曾经预测 3.5″ 的硬盘即将被 2.5″ 硬盘取代. 无奈存储业不争气, 2.5″ 硬盘的容量依旧远远落后于 3.5″. 下面是在 Ubuntu Linux 中使用命令行添加一个 3TB 硬盘的过程.

首先使用 parted (fdisk已退休), 假设新硬盘是第二块, 因此是 sdb:

(parted) select /dev/sdb 
Using /dev/sdb

(parted) print
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos

可以看出, 出厂的硬盘使用的是旧式的 MBR 分区表, 不支持大于 2TB 的分区. 那么接班的是谁呢, 是 GPT

(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? yes

GPT 分区表做好了, 下面是生成一个使用全部空间的主分区. 其中的 1 表示从第1个MB开始. 不是应该从0开始么? 但是输入 0 -1 的话会收到一个  Warning: The resulting partition is not properly aligned for best performance.  警告.

(parted) mkpart primary 1 -1

(parted) print
Model: ATA WDC WD30EZRX-00M (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
1      1049kB  3001GB  3001GB  ntfs         primary

到此, parted 的任务已完成, 输入 ‘quit’ 退出. 缺省文件系统居然是 NTFS… 用 EXT4 取代吧.

~ mkfs.ext4 /dev/sdb1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
183148544 inodes, 732566272 blocks
36628313 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
22357 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

然后将旧硬盘里的内容复制过去, 我喜欢用 rsync, 保证原汁原味的复制

~ rsync -av /path/to/source/* /path/to/destination

下面是将新分区挂载到文件系统, 使用 UUID

ls /dev/disk/by-uuid -lh total 0 lrwxrwxrwx 1 root root 10 May 18 13:23 09985c43-f6c2-43c2-a1da-6643c56d5590 -> ../../sdb1 …

最后一件事是把上面的 UUID 写在 /etc/fstab 里面

UUID=09985c43-f6c2-43c2-a1da-6643c56d5590         /home        ext4    defaults    0    2

要生效的话还要 mount -a 一下.

🙂