实体磁盘:实体磁盘在Linux中通通被模拟成/dev/sd开头,若是一个磁盘则为/dev/sda
。依次往后为/dev/sdb
。以第一个磁盘为例,第一个磁盘的第一个分区为/dev/sda1,数字也是依次递增。所以实体磁盘格式基本为:
/dev/sd[a-p][1-128]
虚拟磁盘:同理,格式为
/dev/vp[a-d][1-128]
文件系统在使用前都需要进行格式化,格式化为当前操作系统能够利用的文件系统格式。
文件系统组成:
1. inode:记录每个文件block的位置,以及文件权限信息,每个文件有且仅有一个inode
2. block:文件都会被存储到block中,如果文件大小超过一个block大小,则会用多个block装。
3. superblock:记录文件系统的中inode、block的总量、剩余量、可用数量等。以及文件系统格式的相关信息。
EXT文件系统文件系统特点:如下图所示,为索引式文件系统,通过inode记录不同block位置,因为我们可以根据索引位置,决定磁盘转动方式以获取文件,所以查询速度较快。
FAT文件系统:如下图所示,类似链表组成所有的block,因为没有索引,所以必须一个节点一个节点的获取,如果分散过大,很可能文件查询读取效率就会非常差。所以FAT系统经常需要进行碎片整理的工作。
关于ext格式文件系统,以笔者阿里云为例,键入以下指令查找ext格式磁盘
blkid
再键入这条命令查看该虚拟磁盘的详细信息
dumpe2fs /dev/vda1
就可以看到bock、inode等相关信息
为方便管理庞大的文件系统,Linux将不同的inode/block/superblock
分组。并将启动扇区boot sector放在最前面
不同大小的blcok所能存储的文件限制
block特点
1. 除非格式化,否则文件系统的block不会变
2. 一个block只能存储一个文件的数据
3. 若文件过大则用多个block装,若文件小于一个blcok,则该block不会被填满,且不可用于存储其他文件数据
假设你的 Ext2 文件系统使用 4K block ,而该文件系统中有 10000 个小文件,每个文件大小均为 50bytes, 请问此时你的磁盘浪费多少容量?
答:
用到的block大小 文件大小总和
4*1024*10000 - 50*10000/(1024*1024)≈38M
inode特性:
1. 文件权限
2. 文件所属者、所属组
3. 文件容量
4. 建立时间、修改时间、最后访问时间
5. 所指向的文件block
6. 大小均为128byte(ext4和xfs为256byte)
7. 文件能建立的数量和inode有关
8. 文件查找过程都是先找到inode,通过inode判断该用户是否有权限,若有再去找对应的block
inode为了能够存储较大的数据,数据结构如下,用12个只想block,1个间接指向block,一个双间接指向block,一个3间接指向block。
如此一来,假如一个block为1k,inode就可以存储
直接指向数据大小:12*1=12k
一个间接:(1024/4)*1=256==>记录一个block要花费4byte
双间接:256*256*1
三间接:256*256*256
上述总和大约16G
虽然理论上可以16G,但由于上文提到的block文件大小限制,所以实际存储数据大小可能与这里计算的有所出入。
superblock记录主要信息:
1. inode/blcok总量
2. 最近挂载时间、最近写入数据时间、最佳依次校验磁盘时间等
3. valid bit:0表示文件系统未被挂载,1表示挂载
filesystem describtion:文件描述符,记录文件的描述信息
block bitmap:记录已被使用和未被使用的block地址
inode bitmap: 同block bitmap,记录inode的使用情况,以便系统分配节点。
如下图,系统会为文件夹分配一个inode和blcok,文件夹的blcok记录文件的inode,而一个个文件inode指向对应的文件block。
查看文件夹,inode号和block大小,以boot分区为例
# i查看inode,d查看目录信息
ls -ldi /boot
文件读取过程,以上面指令为例,文件读取过程为:
1. 前往/查看/的inode,判断当前用户是否有权限,若有则前往/inode
2. 然后找到boot的inode,判断用户是否有权限,若有则前往boot的block
3. 读取boot的block数据
文件系统大小与读取性能问题:若文件系统过大,即使使用索引存储的ext,文件也会出现过于离散的情况,导致读取时磁盘来回转动,导致读取性能较低。对此我们可能需要采取文件备份,并将文件系统格式化后再将文件数据重新存入的方式解决该问题。
在ext系列文件系统中,如果用户需要创建文件夹或者文件时。他们会进行以下步骤
1. 判断当前用户是否具备当前文件目录的x和w权限
2. 从inode bitmap中查找到合适的空闲的节点,并将文件权限写入到节点中
3. 查找合适的blcok将用户创建的文件内容写入,再用上文拿到的inode指向这个block
4. 更新blcok bitmap、inode bitmap以及super block的内容
数据存放区和metadata区
一般来说我们将inode table和data block认为时数据存放区,而super block、block bitmap和inode bitmap这些经常变动的区域称为中介区。
数据不一致问题
在数据日常读取和写入过程中,很可能出现仅仅更新完数据存放区,结果机子停电,metadata区数据没有及时写入导致数据不一致问题。
早期ext2格式的磁盘会根据super block的valid bit以及file system是否clean来判断是否存在这个问题,但是这种操作会进行全盘扫描对metadata和数据存放区进行一一比对,所以性能非常差。
现如今的ext2系统基本采取日志文件系统,他们解决数据不一致的方案就是采用日志系统的方式:
1. 写入数据前先判断用户是否具备x、w权限,日志记录一下表明开始某个文件要准备写入了
2. 开始写入文件权限和数据,并更新metadata数据。
3. 完成写入后,日志中在记录以下写入的记录
以笔者阿里云服务器为例,该服务的磁盘对应日志journal inode8指向的block整整128M的容量负责处理上文所述的日志。
某些文件大小可能会非常庞大,如果每次进行读写都要经过硬盘读取到内存再到CPU完成指令运算显然非常耗时。Linux对此做出一定优化,在内存空间足够情况下数据会被暂时存放在内存中,若数据未被修改的文件状态为clean,当数据被修改过,则状态会被设置为dirty,操作系统会在某个时间段运行sync指令将dirty数据写回磁盘中,亦或者在内存空间数据不足时,被置换写回磁盘中。
将文件系统和目录关联起来的操作,我们就称为挂载。我们都知道一个文件只会占用一个inode,键入如下命令可以看到三个目录对应的文件信息都各有不同,说明这几个目录的挂载点是不一样的
ls -lid / /boot/ /home
ls -lid / /. /..
可以看到上述三个目录无论inode还是其他文件属性均一样,这就意味着他们是挂载点一样的相同文件
传统文件系统:ext2 / minix / MS-DOS / FAT (用 vfat 模块) / iso9660 (光盘)等等;
日志式文件系统: ext3 /ext4 / ReiserFS / Windows' NTFS / IBM's JFS / SGI's XFS / ZFS
网络文件系统: NFS / SMBFS
查看Linux系统所支持的文件系统指令
ls /lib/modules/$(uname -r)/kernel/fs
查看目前加载到内存中所支持的文件系统
cat /proc/filesystems
VFS的设计让Linux用户无需在读取特定文件系统时需要指定格式去读取文件,如下图通过VFS统一管理使得文件读取变得更加方便。
EXT在格式化时会对系统进行inode/block/metadata提前划分,对于现如今动不动以PB、EB为单位的磁盘来说是非常耗时的。
XFS规划为3个部分:
1. data section:有个和ext分区block group类似的allocation groups,该分区包含整个文件系统的superblock、剩余空间管理、inode管理与分配与追钟(注意inode和block位置都是动态配置产生的,相较于ext更快。这里补充一下,xfs文件系统block512byte都64k不等,但由于Linux的限制,所以block基本都是4k,inode都是256k。
2. log section(文件系统日志区):文件的变化基本都会被记录在这个区域,所以文件丢失时都可以通过这个区域去查看详情。因为这个区域变化频繁,建议这个区域使用ssd盘。
3. realtime section (实时运作区):文件建立且被写入前,会被存储到这个区域的extent块中,然后再被写入到data section的inode和block中
查阅xfs系统的详细信息
df -T /boot/
xfs_info /dev/sda1
输出结果
meta-data=/dev/sda1 isize=512 agcount=4, agsize=65536 blks ==>inode 512个 allocation group 4个
= sectsz=512 attr=2, projid32bit=1==>扇区为512byte
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=262144, imaxpct=25==>block大小为4k 有262144个
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2==》日志区block1的信息
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0==>实时运行区的extent容量 none表示未被使用
df命令
查看当前系统所有filesystem
df
输出
文件系统 块大小单位kb 已用空间 可用空间 使用率 挂载点
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 480776 0 480776 0% /dev
tmpfs 497852 0 497852 0% /dev/shm
tmpfs 497852 15032 482820 4% /run
tmpfs 497852 0 497852 0% /sys/fs/cgroup
/dev/mapper/centos-root 17811456 5020576 12790880 29% /
/dev/sda1 1038336 175628 862708 17% /boot
tmpfs 99572 52 99520 1% /run/user/0
tmpfs 99572 0 99572 0% /run/user/1000
使用可读性强大方式查看
df -h
输出结果
Filesystem Size Used Avail Use% Mounted on
devtmpfs 470M 0 470M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 15M 472M 4% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 4.8G 13G 29% /
/dev/sda1 1014M 172M 843M 17% /boot
tmpfs 98M 52K 98M 1% /run/user/0
tmpfs 98M 0 98M 0% /run/user/1000
将系统所有filesystem都列出
df -aT
查看etc下的磁盘情况
df -h /etc/
输出结果
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 4.8G 13G 29% /
查看系统中各个分区的inode容量
df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 118K 420 117K 1% /dev
tmpfs 122K 1 122K 1% /dev/shm
tmpfs 122K 1006 121K 1% /run
tmpfs 122K 16 122K 1% /sys/fs/cgroup
/dev/mapper/centos-root 8.5M 132K 8.4M 2% /
/dev/sda1 512K 340 512K 1% /boot
tmpfs 122K 25 122K 1% /run/user/0
tmpfs 122K 1 122K 1% /run/user/1000
更多参数
选项与参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :连同该 partition 的 filesystem 名称 (例如 xfs) 也列出;
-i :不用磁盘容量,而以 inode 的数量来显示
du命令
列出所有文件夹容量
du
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示
列出文件夹以及文件的容量
du -a
列出root目录下,这一级别的文件容量
du -sm /root/*
若想查看root子目录和孙目录的容量用大写S即可
du -Sm /root/*
Linux使用磁盘永远需要经历以下几步
1. 建立分区
2. 格式化
3. 对格式化好的文件系统进行检验
4. 挂载到文件目录给用户使用
查看磁盘列表
lsblk [- - dfimpt] [device]
选项与参数:
-d :仅列出磁盘本身,并不会列出该磁盘的分区数据
-f :同时列出该磁盘内的文件系统名称
-i :使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用)
-m :同时输出该装置在 /dev 底下的权限数据 (rwx 的数据)
-p :列出该装置的完整文件名!而不是仅列出最后的名字而已。
-t :列出该磁盘装置的详细数据,包括磁盘队列机制、预读写的数据量大小等
示例
[zhangshiyu@localhost ~]$ lsblk
名称 系统格式参数 是否只读 0:是 文件类型 挂载点
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
列出系统装置完整文件名
[zhangshiyu@localhost ~]$ lsblk -ip
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sda 8:0 0 20G 0 disk
|-/dev/sda1 8:1 0 1G 0 part /boot
`-/dev/sda2 8:2 0 19G 0 part
|-/dev/mapper/centos-root 253:0 0 17G 0 lvm /
`-/dev/mapper/centos-swap 253:1 0 2G 0 lvm [SWAP]
/dev/sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
blkid列出文件系统与装置的uuid,uuid是全局唯一标识符
注意:这个指令需要root权限
[root@localhost zhangshiyu]# blkid
# 输出了对应磁盘的uuid
/dev/sda1: UUID="78609146-1ea1-4990-8b22-1c853a1d2da1" TYPE="xfs"
/dev/sda2: UUID="57Dhuy-x7DZ-h18K-o7tu-fkcQ-b8QQ-7W2lLn" TYPE="LVM2_member"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="95e9047c-5bef-42a2-9eac-3cb8edd5e348" TYPE="xfs"
/dev/mapper/centos-swap: UUID="d659c9dd-63d4-4fe9-96a1-e366279c638d" TYPE="swap"
parted:列出磁盘以及磁盘分区的信息,根据上文lsblk看到的磁盘(注意是磁盘名不是分区名,如下所示,笔者使用的是sda而不是sda1、sda2这些),我们选一个输出一个查看详情
[root@localhost zhangshiyu]# parted /dev/sda print
Model: VMware, VMware Virtual S (scsi) # 尝试名称
Disk /dev/sda: 21.5GB # 容量
Sector size (logical/physical): 512B/512B # 逻辑区大小和扇区大小
Partition Table: msdos # 分区表格式这种就是MBR,还有一种GPT
Disk Flags:
# 分区号 起始位置 结束位置 大小 文件类型 文件系统
Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 21.5GB 20.4GB primary lvm
前置步骤,为了方便演示磁盘分区创建,笔者对虚拟机硬盘进行扩容
由于笔者使用的系统采用MBR格式,所以划分磁盘的时候采用fdisk命令,通过上文我们知道我们的硬盘是在dev/sda,所以笔者就在这个分区进行分区创建
[root@localhost zhangshiyu]# fdisk /dev/sda⇒ 键入该命令开始创建分区
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n ==>选择n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p):
Using default response p
Partition number (3,4, default 3):==>选择回车
First sector (41943040-44040191, default 41943040):==>选择回车
Using default value 41943040
Last sector, +sectors or +size{K,M,G} (41943040-44040191, default 44040191): +100M ==>笔者这里分区设置为100M
Partition 3 of type Linux and of size 100 MiB is set ==>创建完成了
Command (m for help): p==>使用p查看磁盘详情,发现sda3创建完成了
Disk /dev/sda: 22.5 GB, 22548578304 bytes, 44040192 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
Disk label type: dos
Disk identifier: 0x000b270e
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
/dev/sda3 41943040 42147839 102400 83 Linux
Command (m for help): w==>将你的修改写入,更多操作可以键入m查看
使用命令更新以下信息,以便看到刚刚重建的分区
partprobe --s
可以看到sda3创建完成了
[root@localhost zhangshiyu]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 21G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 19G 0 part
│ ├─centos-root 253:0 0 17G 0 lvm /
│ └─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─sda3 8:3 0 100M 0 part
sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
查看核心分区记录中也能看到我们刚刚创建的分区
[root@localhost zhangshiyu]# cat /proc/partitions
major minor #blocks name
8 0 22020096 sda
8 1 1048576 sda1
8 2 19921920 sda2
8 3 102400 sda3
11 0 4601856 sr0
253 0 17821696 dm-0
253 1 2097152 dm-1
删除分区也很简单,如下所示:
fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): d =>选择d就是删除
Partition number (1-3, default 3):=>默认选择3
Partition 3 is deleted
Command (m for help):
Command (m for help):
Command (m for help): quit
更新一下
partprobe -s
可以看到sda3就消失了
[root@localhost zhangshiyu]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 21G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
gdisk操作和fdisk差不多,笔者就不多赘述了,注意gdisk只适合gpt格式的磁盘,关于磁盘格式可以使用上文parted进行查看
完成分区创建就需要进行磁盘格式化了,磁盘格式化命令如下
mkfs.xfs /dev/sda3
可以看到格式化后变为xfs,说明上述操作成功了
[root@localhost zhangshiyu]# blkid /dev/sda3
/dev/sda3: UUID="f5a4398e-ab13-4f60-8d58-dba6cf4a5617" TYPE="xfs"
更多操作
[root@study ~]# mkfs.xfs [- b bsize] [- d parms] [- i parms] [ [- l parms] [- L label] [-f] \
[ -r parms] 装置名称
选项与参数:
关于单位:底下只要谈到『数值』时,没有加单位则为 bytes 值,可以用 k,m,g,t,p (小写)等来解释
比较特殊的是 s 这个单位,它指的是 sector 的『个数』喔!
-b :后面接的是 block 容量,可由 512 到 64k,不过最大容量限制为 Linux 的 4k 喔!
-d :后面接的是重要的 data section 的相关参数值,主要的值有:
agcount=数值 :设定需要几个储存群组的意思(AG),通常与 CPU 有关
agsize=数值 :每个 AG 设定为多少容量的意思,通常 agcount/agsize 只选一个设定即可
file :指的是『格式化的装置是个文件而不是个装置』的意思!(例如虚拟磁盘)
size=数值 :data section 的容量,亦即你可以不将全部的装置容量用完的意思
su=数值 :当有 RAID 时,那个 stripe 数值的意思,与底下的 sw 搭配使用
sw=数值 :当有 RAID 时,用于储存数据的磁盘数量(须扣除备份碟与备用碟)
sunit=数值 :与 su 相当,不过单位使用的是『几个 sector(512bytes 大小)』的意思
swidth=数值 :就是 su*sw 的数值,但是以『几个 sector(512bytes 大小)』来设定
-f :如果装置内已经有文件系统,则需要使用这个 -f 来强制格式化才行!
-i :与 inode 有较相关的设定,主要的设定值有:
size=数值 :最小是 256bytes 最大是 2k,一般保留 256 就足够使用了!
internal=[0|1]:log 装置是否为内建?预设为 1 内建,如果要用外部装置,使用底下设定
logdev=device :log 装置为后面接的那个装置上头的意思,需设定 internal=0 才可!
size=数值 :指定这块登录区的容量,通常最小得要有 512 个 block,大约 2M 以上才行!
-L :后面接这个文件系统的标头名称 Label name 的意思!
-r :指定 realtime section 的相关设定值,常见的有:
extsize=数值 :就是那个重要的 extent 数值,一般不须设定,但有 RAID 时,
最好设定与 swidth 的数值相同较佳!最小为 4K 最大为 1G 。
为了提高读写效率,我们可以根据cpu核心数调整agcount以提升读写效率
# 由于上文指定过文件系统格式,这里修改需要加-f
[root@localhost zhangshiyu]# mkfs.xfs -f -d agcount=6 /dev/sda3
meta-data=/dev/sda3 isize=512 agcount=6, agsize=4267 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
其他系统格式同样可以使用mkfs,具体读者可以参照上文提示进行设置,例如将sda3改为ext4
mkfs.ext4 /dev/sda3
完成磁盘格式化之后需要对系统进行校验查看分区是否正常了
xfs格式的检验
[root@study ~]# xfs_repair [-fnd] 装 置名 称
选项与参数:
-f :后面的装置其实是个文件而不是实体装置
-n :单纯检查并不修改文件系统的任何数据 (检查而已)
-d :通常用在单人维护模式底下,针对根目录 (/) 进行检查与修复的动作!很危险!不要随便使用
[root@localhost zhangshiyu]# xfs_repair /dev/sda3
Phase 1 - find and verify superblock...
Phase 2 - using internal log
- zero log...
- scan filesystem freespace and inode maps...
- found root inode chunk
Phase 3 - for each AG...
- scan and clear agi unlinked lists...
- process known inodes and perform inode discovery...
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
- agno = 5
- process newly discovered inodes...
Phase 4 - check for duplicate blocks...
- setting up duplicate extent list...
- check for inodes claiming duplicate blocks...
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
- agno = 5
Phase 5 - rebuild AG headers and trees...
- reset superblock...
Phase 6 - check inode connectivity...
- resetting contents of realtime bitmap and summary inodes
- traversing filesystem ...
- traversal finished ...
- moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done
ext格式的检验时,我们可以查出super block进行检查
[root@study ~]# fsck.ext4 [- pf] [-b superblock] 装 置名 称
选项与参数:
-p :当文件系统在修复时,若有需要回复 y 的动作时,自动回复 y 来继续进行修复动作。
-f :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入
细部检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标啰!
-D :针对文件系统下的目录进行优化配置。
-b :后面接 superblock 的位置!一般来说这个选项用不到。但是如果你的 superblock 因故损毁时,
透过这个参数即可利用文件系统内备份的 superblock 来尝试救援。一般来说,superblock 备份在:
1K block 放在 8193, 2K block 放在 16384, 4K block 放在 32768
[root@localhost zhangshiyu]# dumpe2fs -h /dev/sda3 |grep 'Blocks per group'
dumpe2fs 1.42.9 (28-Dec-2013)
Blocks per group: 8192==>根据上面提示1kblock会在8193
使用fsck.ext4根据上文首个块号+0或者+1获取super block开始进行分区校验
[root@localhost zhangshiyu]# fsck.ext4 -b 8193 /dev/sda3
e2fsck 1.42.9 (28-Dec-2013)
/dev/sda3 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda3: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda3: 11/25688 files (9.1% non-contiguous), 8896/102400 blocks
普通检查
[root@localhost zhangshiyu]# fsck.ext4 /dev/sda3
e2fsck 1.42.9 (28-Dec-2013)
/dev/sda3: clean, 11/25688 files, 8896/102400 blocks
强制检查
[root@localhost zhangshiyu]# fsck.ext4 -f /dev/sda3
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda3: 11/25688 files (9.1% non-contiguous), 8896/102400 blocks
完成上述步骤之后就开始文件系统挂载了,挂载的作用就是将创建的分区与用户创建的文件目录关联起来,这样该目录存储的数据就会被保存到分区中。
如下图,将sda3挂载到newDir,newDir的数据就会被存到sda3这个分区中。
[root@study ~]# mount - -a a
[root@study ~]# mount [- l]
[root@study ~]# mount [- t 文件系 统 ] LABEL='' 挂载点
[root@study ~]# mount [- t 文件系 统 ] UUID='' 挂载点 # 鸟哥近期建议用这种方式喔!
[root@study ~]# mount [- t 文件系 统 ] 装 置文件名 挂 载点
选项与参数:
-a :依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来
-l :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称!
-t :可以加上文件系统种类来指定欲挂载的类型。常见的 Linux 支持类型有:xfs, ext3, ext4,
reiserfs, vfat, iso9660(光盘格式), nfs, cifs, smbfs (后三种为网络文件系统类型)
-n :在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序的运作。
但在某些情况下(例如单人维护模式)为了避免问题会刻意不写入。此时就得要使用 -n 选项。
-o :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等:
async, sync: 此文件系统是否使用同步写入 (sync) 或异步 (async) 的
内存机制,请参考文件系统运作方式。预设为 async。
atime,noatime: 是否修订文件的读取时间(atime)。为了效能,某些时刻可使用 noatime
ro, rw: 挂载文件系统成为只读(ro) 或可擦写(rw)
auto, noauto: 允许此 filesystem 被以 mount -a 自动挂载(auto)
dev, nodev: 是否允许此 filesystem 上,可建立装置文件? dev 为可允许
suid, nosuid: 是否允许此 filesystem 含有 suid/sgid 的文件格式?
exec, noexec: 是否允许此 filesystem 上拥有可执行 binary 文件?
user, nouser: 是否允许此 filesystem 让任何使用者执行 mount ?一般来说,
mount 仅有 root 可以进行,但下达 user 参数,则可让
一般 user 也能够对此 partition 进行 mount 。
defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and async
remount: 重新挂载,这在系统出错,或重新更新参数时,很有用!
例如我们在上文创建了一个ext4的sda3,现在我们希望能够挂载到/data/ext4目录下
# 创建ext4文件夹
[root@localhost zhangshiyu]# mkdir -p /data/ext4
# 查看sda3 uuid
[root@localhost zhangshiyu]# blkid /dev/sda3
/dev/sda3: UUID="20400dc0-9612-466c-b1c1-d3583efb26cb" TYPE="ext4"
# 使用uuid挂载sda3
[root@localhost zhangshiyu]# mount UUID="20400dc0-9612-466c-b1c1-d3583efb26cb" /data/ext4
# 查看挂载是否成功
[root@localhost zhangshiyu]# df /data/ext4/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 95054 1550 86336 2% /data/ext4
[root@localhost zhangshiyu]# df -h /data/ext4/
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 93M 1.6M 85M 2% /data/ext4
[root@localhost zhangshiyu]#
挂载光盘
# 查看光盘的uuid
[root@localhost zhangshiyu]# blkid
/dev/sda3: UUID="20400dc0-9612-466c-b1c1-d3583efb26cb" TYPE="ext4"
/dev/sda1: UUID="78609146-1ea1-4990-8b22-1c853a1d2da1" TYPE="xfs"
/dev/sda2: UUID="57Dhuy-x7DZ-h18K-o7tu-fkcQ-b8QQ-7W2lLn" TYPE="LVM2_member"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="95e9047c-5bef-42a2-9eac-3cb8edd5e348" TYPE="xfs"
/dev/mapper/centos-swap: UUID="d659c9dd-63d4-4fe9-96a1-e366279c638d" TYPE="swap"
# 创建挂载目录
[root@localhost zhangshiyu]# mkdir -p /data/cdrom
# 执行挂载
[root@localhost zhangshiyu]# mount UUID="2020-11-04-11-36-43-00" /data/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
# 验证挂载是否成功
[root@localhost zhangshiyu]# df -h /data/cdrom/
Filesystem Size Used Avail Use% Mounted on
/dev/sr0 4.4G 4.4G 0 100% /data/cdrom
# 查看挂载目录下的文件
[root@localhost zhangshiyu]# ls -l /data/cdrom/
total 696
-rw-r--r--. 3 root root 14 Oct 30 2020 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Oct 27 2020 EFI
-rw-rw-r--. 21 root root 227 Aug 30 2017 EULA
-rw-rw-r--. 21 root root 18009 Dec 10 2015 GPL
drwxr-xr-x. 3 root root 2048 Oct 27 2020 images
drwxr-xr-x. 2 root root 2048 Nov 3 2020 isolinux
drwxr-xr-x. 2 root root 2048 Oct 27 2020 LiveOS
drwxr-xr-x. 2 root root 673792 Nov 4 2020 Packages
drwxr-xr-x. 2 root root 4096 Nov 4 2020 repodata
-rw-rw-r--. 21 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 21 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 Nov 4 2020 TRANS.TBL
[root@localhost zhangshiyu]#
重新挂载根目录与挂载不特定目录,将只读的根目录改为可读可写
mount -o remount ,rw ,auto /
挂载文件目录
# 创建挂载文件夹
[root@localhost zhangshiyu]# mkdir /data/var
# 将var挂载到创建的文件夹
[root@localhost zhangshiyu]# mount --bind /var/ /data/var/
# 查看文件属性 发现一致,说明挂载成功
[root@localhost zhangshiyu]# ls -lid /var/ /data/var/
50331713 drwxr-xr-x. 21 root root 4096 May 2 01:13 /data/var/
50331713 drwxr-xr-x. 21 root root 4096 May 2 01:13 /var/
[root@localhost zhangshiyu]#
卸载,只需umount 挂载目录即可,如下就是卸载光盘的使用姿势
umount /data/cdrom
centos都是通过major和minor来表示这些分区,如下这些8,0
8,1
8,2
就是,我们可以对用mknod来修改为创建的分区的这两个值
[root@localhost zhangshiyu]# ll /dev/sda*
brw-rw----. 1 root disk 8, 0 Jun 29 22:24 /dev/sda
brw-rw----. 1 root disk 8, 1 Jun 29 22:24 /dev/sda1
brw-rw----. 1 root disk 8, 2 Jun 29 22:24 /dev/sda2
brw-rw----. 1 root disk 8, 3 Jun 29 22:36 /dev/sda3
brw-rw----. 1 root disk 8, 4 Jun 29 22:24 /dev/sda4
对此我们必须先了解一下mknod这个命令
[root@study ~]# mknod 装 置文件名 [bcp] [Major] [Minor]
选项与参数:
装置种类:
b :设定装置名称成为一个周边储存设备文件,例如磁盘等;
c :设定装置名称成为一个周边输入设备文件,例如鼠标/键盘等;
p :设定装置名称成为一个 FIFO 文件;
Major :主要装置代码;
Minor :次要装置代码;
例如我想将sda5的值改为8,5
[root@localhost zhangshiyu]# mknod /dev/sda5 b 8 5
# 可以看到sda5的两个值都出来了
[root@localhost zhangshiyu]# ll /dev/sda*
brw-rw----. 1 root disk 8, 0 Jun 29 22:24 /dev/sda
brw-rw----. 1 root disk 8, 1 Jun 29 22:24 /dev/sda1
brw-rw----. 1 root disk 8, 2 Jun 29 22:24 /dev/sda2
brw-rw----. 1 root disk 8, 3 Jun 29 22:36 /dev/sda3
brw-rw----. 1 root disk 8, 4 Jun 29 22:24 /dev/sda4
brw-r--r--. 1 root root 8, 5 Jun 30 00:24 /dev/sda5
这两个值范围基本都在表中,如下
假如我们想修改分区的label
# 查看刚刚重建的sda5的lable
[root@localhost zhangshiyu]# xfs_admin -l /dev/sda5
label = ""
# 修改为sda5
[root@localhost zhangshiyu]# xfs_admin -L sda5 /dev/sda5
writing all SBs
new label = "sda5"
# 查看是否更新成功
[root@localhost zhangshiyu]# xfs_admin -l /dev/sda5
label = "sda5"
# 后续就可以拿label进行挂载了
[root@localhost zhangshiyu]# mkdir -p /data/sda5
[root@localhost zhangshiyu]# mount LABEL=sda5 /data/sda5/
[root@localhost zhangshiyu]#
更多参数
[root@study ~]# xfs_admin [- lu] [- L label] [- U uuid] 装置文件名
选项与参数:
-l :列出这个装置的 label name
-u :列出这个装置的 UUID
-L :设定这个装置的 Label name
-U :设定这个装置的 UUID 喔!
而tune2fs则是用于设置ext4的label,示例如下
# 查看sda3的label
[root@localhost zhangshiyu]# dumpe2fs -h /dev/sda3 |grep name
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:
# 使用tune2fs修改
[root@localhost zhangshiyu]# tune2fs -L sda3 /dev/sda3
tune2fs 1.42.9 (28-Dec-2013)
# 判断是否修改成功,若成功后续就可以使用这个lable进行挂载
[root@localhost zhangshiyu]# dumpe2fs -h /dev/sda3 |grep name
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: sda3
[root@localhost zhangshiyu]#
有时候我们希望我们装置开机就会自动挂载,对此我们就可以通过/etc/fstab
完成开机自动挂载
[root@localhost zhangshiyu]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun May 1 13:03:39 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
# 磁盘名或者uuid或者label 文件系统 文件系统参数具体见下表 是否可以dump 是否可以fsck
/dev/mapper/centos-root / xfs defaults 0 0
UUID=78609146-1ea1-4990-8b22-1c853a1d2da1 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
查看sda5是xfs
[root@localhost zhangshiyu]# blkid
/dev/sda3: LABEL="sda3" UUID="20400dc0-9612-466c-b1c1-d3583efb26cb" TYPE="ext4"
/dev/sda1: UUID="78609146-1ea1-4990-8b22-1c853a1d2da1" TYPE="xfs"
/dev/sda2: UUID="57Dhuy-x7DZ-h18K-o7tu-fkcQ-b8QQ-7W2lLn" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="95e9047c-5bef-42a2-9eac-3cb8edd5e348" TYPE="xfs"
/dev/mapper/centos-swap: UUID="d659c9dd-63d4-4fe9-96a1-e366279c638d" TYPE="swap"
/dev/sda5: LABEL="sda5" UUID="61b62f20-4ef1-49df-a0a2-f2aa623a91e0" TYPE="xfs"
# 编辑配置文件 添加一行 /dev/sda5 /data/sda5 xfs defaults 0 0
[root@localhost zhangshiyu]# vi /etc/fstab
# 使之生效
[root@localhost zhangshiyu]# mount -a
# 查看
[root@localhost zhangshiyu]# df /data/sda5/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda5 47780 2688 45092 6% /data/sda5
[root@localhost zhangshiyu]#
对应某些已存在文件夹中的iso等文件,我们可以使用loop赖挂载
# 查看iso信息
[root@localhost ~]# ll -h /root/winPreVista.iso
-rw-r--r--. 1 root root 84M 6月 30 09:10 /root/winPreVista.iso
# 创建挂载文件夹
[root@localhost ~]# mkdir -p /data/cdrom
# 查看挂载磁盘的文件系统
[root@localhost ~]# df /data/cdrom/
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/cl-root 37320904 8478408 28842496 23% /
# 使用loop挂载
[root@localhost ~]# mount -o loop /root/winPreVista.iso /data/cdrom/
mount: /dev/loop1 写保护,将以只读方式挂载
# 查看挂载是否成功
[root@localhost ~]# df /data/cdrom/
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/loop1 85696 85696 0 100% /data/cdrom
同样的mount也可以拿某些大文件格式化后进行挂载使用
# 创建一个512M的空间
[root@localhost ~]# dd if=/dev/zero of=/srv/loopdev bs=1M count=512
512+0 records in <==读入 512 笔资料
512+0 records out <==输出 512 笔数据
536870912 bytes (537 MB) copied, 12.3484 seconds, 43.5 MB/s
# 这个指令的简单意义如下:
# if 是 input file ,输入文件。那个 /dev/zero 是会一直输出 0 的装置!
# of 是 output file ,将一堆零写入到后面接的文件中。
# bs 是每个 block 大小,就像文件系统那样的 block 意义;
# count 则是总共几个 bs 的意思。所以 bs*count 就是这个文件的容量了!
#输出内容
记录了512+0 的读入
记录了512+0 的写出
536870912字节(537 MB)已复制,0.926613 秒,579 MB/秒
# 查看创建的目录详情
[root@localhost ~]# ll -h /srv/loopdev
-rw-r--r--. 1 root root 512M 6月 30 09:18 /srv/loopdev
# 设置文件系统格式xfs
[root@localhost ~]# mkfs.xfs -f /srv/loopdev
meta-data=/srv/loopdev isize=512 agcount=4, agsize=32768 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=131072, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 创建挂载目录
[root@localhost ~]# mkdir -p /tmp/loopDir
# 查看目录系统格式
[root@localhost ~]# df -h /tmp/loopDir/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 36G 8.1G 28G 23% /
# 使用loop参数进行挂载
[root@localhost ~]# mount -o loop /srv/loopdev /tmp/loopDir/
# 查看挂载是否成功
[root@localhost ~]# df -h /tmp/loopDir/
文件系统 容量 已用 可用 已用% 挂载点
/dev/loop2 509M 26M 483M 6% /tmp/loopDir
[root@localhost ~]#
在服务器运行过程中,当物理内存不足时,操作系统就会使用内存置换算法将内存中某些数据块置换到swap区。所以足量的swap分区对于服务器来说是十分重要的。
使用实体分区创建swap分区时,同样需要我们首先创建一个分区,才能开展步骤,以笔者为例,笔者在开始扩容swap分区时,已经先创建一个sda3分区大小为50M
# 查看sda3磁盘信息
[root@localhost ~]# df -h /dev/sda3
Filesystem Size Used Avail Use% Mounted on
devtmpfs 470M 0 470M 0% /dev
# 查看swap空间大小
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 995672 741652 83736 27940 170284 83508
Swap: 2097148 105728 1991420
# 查看新建的sda3分区类型,可以看到并没有显示任何类型
[root@localhost ~]# blkid /dev/sda3
# 将sda3分区设置为swap格式
[root@localhost ~]# mkswap /dev/sda3
Setting up swapspace version 1, size = 51196 KiB
no label, UUID=6bd7e30c-eebb-4f5f-882b-5954da7b27bb
# 再用blkid查看会发现此时type变为sda3分区
[root@localhost ~]# blkid /dev/sda3
/dev/sda3: UUID="6bd7e30c-eebb-4f5f-882b-5954da7b27bb" TYPE="swap"
#将sda3挂载到swap分区
[root@localhost ~]# swapon /dev/sda3
# 此时查看空间大小,会发现swap分区变大了
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 995672 742008 83084 27952 170580 83012
Swap: 2148344 105728 2042616
# 查看swap挂载详情,发现多了一个sda3
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 105728 -2
/dev/sda3 partition 51196 0 -3
# 设置开机自动挂载 添加一行
# UUID="6bd7e30c-eebb-4f5f-882b-5954da7b27bb" swap swap defaults 0 0 uuid即sda3的uuid
[root@localhost ~]# vim /etc/fstab
同样的,我们也可以使用文件给swap扩容
# 使用zero创建一个128M的空间
[root@localhost ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128
128+0 records in
128+0 records out
134217728 bytes (134 MB) copied, 0.119561 s, 1.1 GB/s
# 查看创建的分区大小是否正确
[root@localhost ~]# ls -lhd /tmp/swap
-rw-r--r--. 1 root root 128M Jun 30 19:31 /tmp/swap
# 将该分区设置为swap格式
[root@localhost ~]# mkswap /tmp/swap
Setting up swapspace version 1, size = 131068 KiB
no label, UUID=146be5b5-8661-46ec-a0e0-67f0ed80c682
# 查看当前挂载的分区
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 105728 -2
/dev/sda3 partition 51196 0 -3
# 重点,设置权限为600否则挂载会被警告
[root@localhost ~]# chmod 600 /tmp/swap
# 挂载
[root@localhost ~]# swapon /tmp/swap
# 查看挂载是否成功
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 105532 -2
/dev/sda3 partition 51196 0 -3
/tmp/swap file 131068 0 -4
# 编辑文件 设置开机自动挂载
# 添加一行 /tmp/swap swap swap defaults 0 0 ,注意文件创建的swap不可用uuid,系统仅会查询组成设备,不会扫描文件
[root@localhost ~]# vim /etc/fstab
# 查看挂载是否成功
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 105532 -2
/dev/sda3 partition 51196 0 -3
/tmp/swap file 131068 0 -4
完成两个挂载示例后,尝试将刚刚挂载的swap分区卸载进行自动挂载,验证配置文件是否正常
# 卸载
[root@localhost ~]# swapoff /dev/sda3 /tmp/swap
# 查看到卸载成功了
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 105532 -2
# 挂载并查看发现都挂载上去了,说明配置文件没问题
[root@localhost ~]# swapon -a
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 105532 -2
/dev/sda3 partition 51196 0 -3
/tmp/swap file 131068 0 -4
如下所示,在笔者系统的加目录中占用了4.4G的空间,这其中也涉及到一些资源的浪费如下图initial-setup-ks.cfg命名只有1.8k,但是系统默认的block是4k,这就导致无论文件大小多少,一律使用4k的block进行装填,如果在一个有大量小体积的文件场景下,存储空间浪费现象可能会更严重。
[root@localhost ~]# ll -sh
total 4.4G
4.0K -rw-------. 1 root root 1.8K Nov 27 2021 anaconda-ks.cfg
4.4G -rw-r--r--. 1 root root 4.4G Nov 27 2021 CentOS-7-x86_64-DVD-2009.iso
4.0K -rw-r--r--. 1 root root 254 Nov 27 2021 deploy.sh
0 drwxr-xr-x. 2 root root 6 Nov 27 2021 Desktop
0 drwxr-xr-x. 2 root root 6 Nov 27 2021 Documents
0 drwxr-xr-x. 2 root root 6 Nov 27 2021 Downloads
4.0K -rw-r--r--. 1 root root 1.8K Nov 27 2021 initial-setup-ks.cfg
892K -rw-r--r--. 1 root root 890K Apr 17 2017 linux-nginx-1.10.2.tar.gz
0 drwxr-xr-x. 3 root root 17 Nov 27 2021 log
0 drwxr-xr-x. 2 root root 6 Nov 27 2021 Music
0 drwxr-xr-x. 9 1001 1001 186 Nov 27 2021 nginx-1.10.2
0 drwxr-xr-x. 2 root root 6 Nov 27 2021 Pictures
0 drwxr-xr-x. 2 root root 6 Nov 27 2021 Public
0 drwxr-xr-x. 2 root root 6 Nov 27 2021 Templates
0 drwxr-xr-x. 2 root root 6 Nov 27 2021 Videos
0 drwxr-xr-x. 3 root root 33 Nov 27 2021 wiki
上述命令挂载,我们都需要使用parted查看文件格式使用相应fdisk/gdisk进行挂载,实际上我们完全可以使用
# 查看当前分区情况
[root@localhost proc]# parted /dev/sda print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 22.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 21.5GB 20.4GB primary lvm
3 21.5GB 21.5GB 52.4MB primary linux-swap(v1)
# 创建一个新的分区 大小为500M
[root@localhost proc]# parted /dev/sda mkpart primary fat32 21.5GB 22.0GB
Information: You may need to update /etc/fstab.
# 查看是否成功
[root@localhost proc]# parted /dev/sda print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 22.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 21.5GB 20.4GB primary lvm
3 21.5GB 21.5GB 52.4MB primary linux-swap(v1)
4 21.5GB 21.5GB 1049kB primary lba
[root@localhost proc]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 21G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 19G 0 part
│ ├─centos-root 253:0 0 17G 0 lvm /
│ └─centos-swap 253:1 0 2G 0 lvm [SWAP]
├─sda3 8:3 0 50M 0 part [SWAP]
└─sda4 8:4 0 1M 0 part
sr0 11:0 1 1024M 0 rom
# 设置格式为vfat
[root@localhost proc]# mkfs -t vfat /dev/sda4
mkfs.fat 3.0.20 (12 Jun 2013)
[root@localhost proc]# blkid /dev/sda4
/dev/sda4: SEC_TYPE="msdos" UUID="40B4-F19C" TYPE="vfat"
# 编辑配置文件设置为开机自动挂载 内容为 UUID="40B4-F19C" /data/win vfat defaults 0 0
[root@localhost proc]# vim /etc/fstab
# 创建挂载目录
[root@localhost proc]# mkdir -p /data/win
# 挂载
[root@localhost proc]# mount -a
# 查看挂载是否成功,可以看到虽然挂载成功,但是由于笔者扩展空间不足,实际上到手的空间只有1004K
[root@localhost proc]# df -h /data/win/
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 1004K 0 1004K 0% /data/win
更多命令可参考
[root@study ~]# parted [ 装 置 ] [ 指令 [ [ 参数 ]]
选项与参数:
指令功能:
新增分区:mkpart [primary|logical|extended] [ext4|vfat|xfs] 开始 结束
显示分区:print
删除分区:rm [partition]
鸟哥的Linux私房菜
循序渐进Linux(第2版)