一、观察磁盘分区状态
1.1 lsblk 列出系统上的所有磁盘列表
app@kht_data:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 40G 0 disk
└─vda1 252:1 0 40G 0 part /
vdb 252:16 0 600G 0 disk
NAME:就是装置的文件名啰!会省略 /dev 等前导目录!
MAJ:MIN:其实核心认识的装置都是透过这两个代码来熟悉的!分别是主要:次要装置代码!
RM:是否为可卸除装置 (removable device),如光盘、USB 磁盘等
SIZE:当然就是容量啰!
RO:是否为只读装置的意思
TYPE:是磁盘 (disk)、分区槽 (partition) 还是只读存储器 (rom) 等输出
MOUTPOINT:就是前一章谈到的挂载点
1.2 blkid 列出装置的UUD等参数
app@kht_data:~$ blkid
/dev/vda1: UUID="1576ce59-66a7-40f7-b15e-db094a8696ed" TYPE="ext4" PARTUUID="49026b06-01"
1.3 parted列出磁盘的分区表类型与分区信息
app@kht_data:~$ parted /dev/vda print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos # mbr分区
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 42.9GB 42.9GB primary ext4 boot
二、磁盘分区
2.1 MBR分区使用fdisk,GPT分区使用gdisk分区
root@kht_data:/home/app# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x4d2662eb.
Command (m for help): m
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition # 删除分区信息
F list free unpartitioned space
l list known partition types
n add a new partition # 添加分区表
p print the partition table # 打印分区表
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit # 写入分区表
q quit without saving changes # 退出
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
2.2 查看硬盘情况 cat /proc/partitions
2.3 立即生效分区
如果分区的硬盘分区正在使用,分区信息不会立即生效
使用partprobe立即更新分区信息
partprobe -s # [-s]打印分区信息
2.4 格式化分区
mkfs.xfs /dev/vdb1 # 格式化分区 -f 强制格式化 -d 后台格式化 xfs格式
mkfs.ext4 /dev/vdb1 # 格式化分区 ext4格式
三、挂载
单一文件系统不应该被重复挂载在不同的挂载点
单一目录不应该重复挂载多个文件系统
要作为挂载点的目录,理论上应该是空目录才是
3.1 挂载目录
root@kht_data:$ blkid /dev/vdb1 # 查看分区信息
root@kht_data:$ /dev/vdb1: UUID="e9fbb83c-b7ee-425c-960d-64359e7593e9" TYPE="xfs" PARTUUID="72d47fff-01"
root@kht_data:$ mkdir -p /data # 创建挂载目录
root@kht_data:$ mount UUID="e9fbb83c-b7ee-425c-960d-64359e7593e9" /data # 挂载目录
root@kht_data:$ df /data/ # 查看挂载目录信息
root@kht_data:$ df /data #挂载成功
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vdb1 627790336 658608 627131728 1% /data
3.2 移除挂载
root@kht_data:$ umount [fn] /data # 移除挂载 -f 强制删除 -n 不更新/etc/mtab
3.3 开机挂载
3.3.1 注意事项
根目录是/是必须挂载的,而且一定要先于其他mount point被挂载进来
其他 mount point必须为已建立的目录,可任意指定,遵守目录架构规则
所有的 mount point 在同一时间内,只能挂载一次
所有partition 在同一时间内,只能挂载一次
如若进行卸载,您必须先将工作目移到 mount point 之内
3.3.2 查看目录 /etc/fstab
# Device Mount point filesystem parameters dump fsck
UUID=1576ce59-66a7-40f7-b15e-db094a8696ed / ext4 errors=remount-ro 0 1
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
3.3.3 装置文件参数解释
[装置/UUID] [挂载点] [文件系统] [文件系统参数] [dump] [fsck]
磁盘装置文件名/UUID/LABEL name
文件系统或磁盘的装置文件名,如 /dev/vdb1 等
文件系统的UUID名称,如 UUID=xxx
文件系统的LABEL名称,例如 LABEL=xxx
挂载点[mount point]
挂载目录
磁盘分区槽的文件系统
在手动挂载时可以让系统自动测试挂载,但在这个文件当中我们必须要手动写入文件系统才行!
包括 xfs, ext4, vfat, reiserfs, nfs
文件系统参数
参数 内容意义
async/sync异步/同步 设定磁盘是否以异步方式运作!预设为 async(效能较佳)
auto/noauto 自动/非自动 当下达 mount -a 时,此文件系统是否会被主动测试挂载。预设为 auto。
rw/ro 可擦写/只读 让该分区槽以可擦写或者是只读的型态挂载上来,如果你想要分享的数据是不给用 户随意变更的, 这里也能够设定为只读。则不论在此文件系统的文件是否设定 w 权限,都无法写入喔!
exec/noexec 可执行/不可执行 限制在此文件系统内是否可以进行『执行』的工作?如果是纯粹用来储存数据的目 录, 那么可以设定为 noexec 会比较安全。不过,这个参数也不能随便使用,因为 你不知道该目录下是否默认会有执行档。 举例来说,如果你将 noexec 设定在 /var ,当某些软件将一些执行文件放置于 /var 下时,那就会产生很大的问题喔! 因此,建议这个 noexec 最多仅设定于你自定义 或分享的一般数据目录。
user/nouser 允许/不允许使用者挂载 是否允许用户使用 mount 指令来挂载呢?一般而言,我们当然不希望一般身份的 user 能使用 mount 啰,因为太不安全了,因此这里应该要设定为 nouser 啰
suid/nosuid 具有/不具有 suid 权限 该文件系统是否允许 SUID 的存在?如果不是执行文件放置目录,也可以设定为 nosuid 来取消这个功能!
defaults 同时具有 rw, suid, dev, exec, auto, nouser, async 等参数。 基本上,预设情况使用 defaults 设定即可
能否被 dump 备份指令作用
是否以fsck检验扇区