查看系统上的所有磁盘
在对磁盘分区之前,首先需要知道系统有哪些磁盘,使用 lsblk 工具可以列出系统上的所有磁盘列表,如:
ubuntu@ubuntu:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 48.5M 1 loop /snap/core18/1883
loop1 7:1 0 63.6M 1 loop /snap/lxd/16103
loop2 7:2 0 26M 1 loop /snap/snapd/8543
loop3 7:3 0 27M 1 loop /snap/snapd/10494
loop4 7:4 0 48.9M 1 loop /snap/core18/1949
sda 8:0 0 111.8G 0 disk
└─sda1 8:1 0 111.8G 0 part
sdb 8:16 0 465.8G 0 disk
├─sdb1 8:17 0 517.7M 0 part
├─sdb2 8:18 0 517.7M 0 part
├─sdb3 8:19 0 456.3G 0 part
├─sdb4 8:20 0 517.7M 0 part
└─sdb5 8:21 0 8G 0 part
mmcblk0 179:0 0 29.7G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 29.5G 0 part /
其输出信息有:
- NAME:设备的文件名,会忽略 /dev 等前导目录
- MAJ:MIN:内核识别的设备都是通过这两个代码来实现的,分别是主要与次要设备代码
- RM:是否为可卸载设备,如光盘、USB 磁盘等
- SIZE:磁盘容量
- RO:是否为只读设备
- TYPE:是磁盘(disk)、分区(partition)还是只读存储器(rom)等输出
- MOUNTPOINT:挂载点
当添加参数选项会有更详细的信息输出,具体有哪些参数选项可以通过 man lsblk
查看:
ubuntu@ubuntu:~$ lsblk -fp
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
/dev/loop0 squashfs 0 100% /snap/core18/1883
/dev/loop1 squashfs 0 100% /snap/lxd/16103
/dev/loop2 squashfs 0 100% /snap/snapd/8543
/dev/loop3 squashfs 0 100% /snap/snapd/10494
/dev/loop4 squashfs 0 100% /snap/core18/1949
/dev/sda
└─/dev/sda1 exfat glowy 2629-FC83
/dev/sdb
├─/dev/sdb1 linux_raid_member 9 48be7bcd-7e53-55d0-3eb8-79f89b90ff5d
├─/dev/sdb2 linux_raid_member 256 e0dfc238-e782-0eb0-1aac-15ee5f6a1f8f
├─/dev/sdb3
├─/dev/sdb4 linux_raid_member 13 274e5c8c-ee45-b44b-a688-05c6de82ea30
└─/dev/sdb5 linux_raid_member 322 afee9a85-436a-9a51-c1ce-64398e3c7b50
/dev/mmcblk0
├─/dev/mmcblk0p1 vfat system-boot B726-57E2 155.5M 38% /boot/firmware
└─/dev/mmcblk0p2 ext4 writable 483efb12-d682-4daf-9b34-6e2f774b56f7 25.2G 9% /
获取磁盘分区表类型与分区信息
parted 能够列出磁盘的分区表类型与分区信息,如:
ubuntu@ubuntu:~$ sudo parted /dev/sdb print
Model: ST950032 5AS (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 20.5kB 543MB 543MB ext3 primary msftdata
2 543MB 1086MB 543MB linux-swap(v1) primary msftdata
3 1086MB 491GB 490GB primary msftdata
4 491GB 492GB 543MB ext3 primary msftdata
5 492GB 500GB 8554MB linux-swap(v1) primary msftdata
分区表主要有两种格式,一种是限制较多的 MBR 分区表,另一种是较新且限制较少的 GPT 分区表,上面信息所展示的的分区表格式就是 GPT。
磁盘分区
分区表为 GPT 格式需要使用 gdisk 进行分区,gdisk 的使用相对简单,因为它的操作有交互式的提示。对某个磁盘进行分区的命令格式为 gdisk 设备名
,如 gdisk /dev/sda
。
ubuntu@ubuntu:/etc/apt$ gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.5
Problem opening /dev/sda for reading! Error is 13.
You must run this program as root or use sudo!
ubuntu@ubuntu:/etc/apt$ sudo gdisk /dev/sda
[sudo] password for ubuntu:
GPT fdisk (gdisk) version 1.0.5
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************
Command (? for help):
根据提示,我们可以输入 ? 来查看所有的选项:
Command (? for help): ?
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
根据自己的需要选择不同的选项即可。最后保存的时候,输入 w,随后重启服务器就能更新分区信息了。
对分区进行格式化
分完区之后需要进行文件系统的格式化,之后操作系统才能够使用这个文件系统。使用 mkfs 命令可以调用正确的文件系统格式化工具软件。
例如想要将硬盘格式化为 xfs 格式,则可以调用 mkfs.xfs
命令:
ubuntu@ubuntu:~$ sudo mkfs.xfs -f /dev/sda1
meta-data=/dev/sda1 isize=512 agcount=4, agsize=7326237 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=29304945, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=14309, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
文件系统挂载与卸载
文件系统的挂载使用的是 mount 命令,通过 mount --help
得知可以使用 mount [options] <source> <directory>
格式进行挂载,而 <source>
的格式有:
Source:
- -L, —label
- -U, —uuid
synonym for UUID= - LABEL=
specifies device by filesystem label - UUID=
specifies device by filesystem UUID - PARTLABEL=
specifies device by partition label - PARTUUID=
specifies device by partition UUID specifies device by path mountpoint for bind mounts (see —bind/rbind) regular file for loopdev setup
后面使用 UUID=
ubuntu@ubuntu:/$ lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
loop0 squashfs 0 100% /snap/core18/1883
loop1 squashfs 0 100% /snap/core18/1949
loop2 squashfs 0 100% /snap/lxd/16103
loop3 squashfs 0 100% /snap/snapd/8543
loop4 squashfs 0 100% /snap/snapd/10494
sda xfs 1d88d342-8f0d-440d-9c41-5308ce64f0be
└─sda1 xfs 18682d23-14e9-43b5-ad37-a71492fda816 110.9G 1% /ssd
sdb
└─sdb1 xfs e2fc2e09-4d65-4d31-90aa-cd2149f0817b
mmcblk0
├─mmcblk0p1 vfat system-boot B726-57E2 155.5M 38% /boot/firmware
└─mmcblk0p2 ext4 writable 483efb12-d682-4daf-9b34-6e2f774b56f7 24.6G 11% /
以 sda1 来进行挂载,则执行下面的命令即可:
sudo mount UUID="18682d23-14e9-43b5-ad37-a71492fda816" /ssd
随后可以执行 lsblk
查看是否已经挂载好了:
ubuntu@ubuntu:/$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 48.5M 1 loop /snap/core18/1883
loop1 7:1 0 48.9M 1 loop /snap/core18/1949
loop2 7:2 0 63.6M 1 loop /snap/lxd/16103
loop3 7:3 0 26M 1 loop /snap/snapd/8543
loop4 7:4 0 27M 1 loop /snap/snapd/10494
sda 8:0 0 111.8G 0 disk
└─sda1 8:1 0 111.8G 0 part /ssd
sdb 8:16 0 465.8G 0 disk
└─sdb1 8:17 0 465.8G 0 part
mmcblk0 179:0 0 29.7G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 29.5G 0 part /
从上面的信息可以看出,sda1 的挂载点已经变为 /ssd 了,这时候就可以确认 sda1 分区已经挂载成功了。
卸载掉已挂载的文件系统,可以使用 unmount 命令,格式为 unmount 设备文件名或挂载点
。
设置启动挂载
前面所提到的手动挂载,每次系统重启之后都需要重新手动挂载一次是非常麻烦的,因此我们需要让系统在启动的时候自动挂载。
想要系统在启动的时候自动挂载,只需要修改 /etc/fstab 文件即可,/etc/fstab 内容如下:
ubuntu@ubuntu:~$ cat /etc/fstab
LABEL=writable / ext4 defaults 0 0
LABEL=system-boot /boot/firmware vfat defaults 0 1
UUID=18682d23-14e9-43b5-ad37-a71492fda816 /ssd xfs defaults 0 0
UUID=e2fc2e09-4d65-4d31-90aa-cd2149f0817b /hhd xfs defaults 0 0
- 第一列:磁盘设备文件名 /UUID/LABEL name
- 第二列:挂载点
- 第三列:磁盘分区的文件系统
- 第四列:文件系统参数
- 第五列:能否被 dump 备份命令作用。现在有太多的备份方案,因此这一项不需要理会,直接输入 0 即可。
- 第六列:是否以 fsck 检验扇区。使用 xfs 文件系统这个是没有办法适用的,因为 xfs 会自己进行检验,因此这一项直接填 0 即可。
参考资料
- 《鸟哥的Linux私房菜》基础学习篇第四版第七章