目录
一、 磁盘格式化
二、 磁盘挂载
三、 手动增加swap空间
一、 磁盘格式化
1. 命令mke2fs、mkfs.ext2、mkfs.ext3、mkfs.ext4和mkfs.xfs
用man命令查询前4个命令的结果是一样的,说明这4个命令是一样的。
mke2fs命令常用的选项:
-b:分区时指定区块大小,单位为字节。目前,每个数据块支持1024B、2048B及4096B。
-t:用来指定文件系统的类型。
-i:设定inode的大小。
-N:设定inode的数量。
-c:检查磁盘是否有问题。使用时运行速度变非常慢。
-L:设置文件系统的标签名称。
-j:表示建立ext3格式的分区。
-m:指定给管理员保留区块的比例,预设为5%
示例命令如下:
- 指定sdb5分区的文件系统类型为ext4
[root@minglinux-01 ~]# mke2fs -t ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
上例中出现了“块大小=4096”,下面说一下块的概念。
磁盘在格式化的时候,会预先规定好每一块的大小,然后再把所有的空间分割成一个一个的小块。存数据时,也是一个块一个块地写入。ext4文件系统的默认块大小为4096B。在格式化时,可以指定块大小为1024B、2048B或4096B,当指定块大小超过4096B时就不能正确挂载了。
- 指定sdb5分区的块大小为8196:
[root@minglinux-01 ~]# mke2fs -t ext4 -b 8192 /dev/sdb5
Warning: blocksize 8192 not usable on most systems.
mke2fs 1.42.9 (28-Dec-2013)
mke2fs: 8192-byte blocks too big for system (max 4096)
无论如何也要继续? (y,n) y
Warning: 8192-byte blocks too big for system (max 4096), forced to continue
warning: 16 blocks unused.
文件系统标签=
OS type: Linux
块大小=8192 (log=3)
分块大小=8192 (log=3)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 131056 blocks
6552 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=134201344
2 block groups
65528 blocks per group, 65528 fragments per group
32768 inodes per group
Superblock backups stored on blocks:
65528
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
- 指定"字节/inode"的比例:
[root@minglinux-01 ~]# mke2fs -i 8192 -t ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 262144 blocks //这里发生了变化
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
mke2fs并不支持把分区格式化为XFS类型,而只能使用mkfs.xfs。
[root@minglinux-01 ~]# mke2fs -t xfs /dev/sdb6
mke2fs 1.42.9 (28-Dec-2013)
Your mke2fs.conf file does not define the xfs filesystem type.
Aborting...
- 使用mkfs.xfs把sdb6格式化为XFS类型:
[root@minglinux-01 ~]# mkfs.xfs /dev/sdb6
meta-data=/dev/sdb6 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
- 给分区指定标签:
[root@minglinux-01 ~]# mke2fs -L TEST -t ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=TEST
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
2. 命令e2label
该命令用于查看或修改分区的标签,它只支持ext格式的文件系统,而不支持XFS文件系统。示例命令如下:
[root@minglinux-01 ~]# e2label /dev/sdb5
TEST
[root@minglinux-01 ~]# e2label /dev/sdb5 TEST123
[root@minglinux-01 ~]# e2label /dev/sdb5
TEST123
二、 磁盘挂载
格式化后的磁盘其实就是一个块状设备文件,类型为b。在挂载某个分区前,需要先建立一个挂载点,这个挂载点是以目录的形式出现的。一旦把某个分区挂载到这个挂载点(目录)下,要再往这个目录写数据时,就都会写到该分区中。所以,在挂载该分区前,挂载点(目录)下必须是空目录。如果目录非空,一旦挂载上了,该目录以前的东西就看不到了,除非卸载该分区。
1. 命令mount
mount命令用于加载文件系统到指定的加载点。
- 不加任何选项,直接运行mount,显示如下:
[root@minglinux-01 ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=921776k,nr_inodes=230444,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/sda3 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=26,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13331)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=186528k,mode=700)
查看某个已挂载分区的文件系统类型,直接用mount命令查看即可。而未挂载的分区可以使用blkid命令查看,稍后会介绍到。
下面新建一个空目录,然后在目录里新建一个空白文档。示例如下:
[root@minglinux-01 ~]# mkdir /newdir
[root@minglinux-01 ~]# touch /newdir/newfile.txt
[root@minglinux-01 ~]# ls /newdir/
newfile.txt
然后把sdb5挂载到/newdir上:
[root@minglinux-01 ~]# mount /dev/sdb5 /newdir/
[root@minglinux-01 ~]# ls /newdir/
lost+found
[root@minglinux-01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.3G 27G 5% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 911M 0 911M 0% /dev/shm
tmpfs 911M 9.5M 902M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 197M 140M 58M 71% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb5 976M 2.6M 907M 1% /newdir
可以看到,把/dev/sdb5挂载到/newdir后,原来的newfile.txt就看不到了。
- 使用LABEL的方式挂载分区,如下所示:
[root@minglinux-01 ~]# umount /newdir/
[root@minglinux-01 ~]# df -h | grep -v tmpfs
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.3G 27G 5% /
/dev/sda1 197M 140M 58M 71% /boot
[root@minglinux-01 ~]# mount LABEL=TEST123 /newdir
[root@minglinux-01 ~]# df -h | grep -v tmpfs
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.3G 27G 5% /
/dev/sda1 197M 140M 58M 71% /boot
/dev/sdb5 976M 2.6M 907M 1% /newdir
2. /etc/fstab配置文件
文件内容:
[root@minglinux-01 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Sep 5 01:17:51 2018
#
# 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=22416a3c-e656-4cea-8cfe-c46e3caaff9c / xfs defaults 0 0
UUID=71ee1ccd-ae34-4561-9182-e90e1609d50e /boot xfs defaults 0 0
UUID=39354d09-4036-4ca8-8621-ad26d2cc5b69 swap swap defaults 0 0
简单描述一下各列的含义。
第1列就是分区的标识,可以写分区的LABEL、分区的UUID,也可以写分区名(/dev/sda1)。
第2列是挂载点。
第3列是分区的格式。
第4列是mount的一些挂载参数。一般情况下,直接写defaults即可。
第5列的数字表示是否被dump备份。1表示备份,0表示不备份。
第6列的数字表示开机时是否自检磁盘。1和2都表示检测,0表示不检测。自检时,1比2优先级高,所以先检测1,再检测2。如果有多个分区需要开机检测,就都设置成2,1检测完后会同时检测2。在CentOS 7系统里,所有分区中该列的值都是0。
第4列常用选项:
async/sync:async表示与磁盘和内存不同步。系统每隔一段时间就会把内存数据写入磁盘中,而sync则会时时同步内存和磁盘中的数据。
auto/noauto:表示开机自动挂载/不自动挂载。
default:表示按照大多数永久文件系统的默认值设置挂载定义,它包含了rw、suid、dev、exec、auto、nouser和async。
ro:表示按只读权限挂载。
rw:表示按可读可写权限挂载。
exec/noexec:表示允许/不允许可执行文件执行,但千万不要把根分区挂载为noexec,否则将无法使用系统,甚至连mount命令都无法使用。
user/nouser:表示允许/不允许root外的其他用户挂载分区。为了安全,请用nouser。
suid/nosuid:表示允许/不允许分区有suid属性,一般设置nosuid。
usrquota:表示启动用户的磁盘配额模式。磁盘配额会针对用户限定他们使用的磁盘额度。
grquota:表示启动群组的磁盘配额模式。
- mount -a 把/etc/fstab中出现的所有磁盘分区挂载上。
- mount -t 用来指定挂载的分区类型,默认不设定,会自动识别。
- mount -o 用来指定挂载的分区有哪些特性,即上面/etc/fstab配置文件中第4列的那些。
3. 命令blkid
在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。
[root@minglinux-01 ~]# blkid /dev/sdb5
/dev/sdb5: LABEL="TEST123" UUID="8d82e5f3-60cf-4548-adf5-55ee47550a28" TYPE="ext4"
获取到UUID后,我们可以使用UUID来挂载分区:
[root@minglinux-01 ~]# mount -l UUID="8d82e5f3-60cf-4548-adf5-55ee47550a28" /newdir/
mount: /dev/sdb5 已经挂载或 /newdir 忙
/dev/sdb5 已经挂载到 /newdir 上
[root@minglinux-01 ~]# umount /newdir/
[root@minglinux-01 ~]# mount UUID="8d82e5f3-60cf-4548-adf5-55ee47550a28" /newdir/
[root@minglinux-01 ~]# df -h | grep -v tmpfs
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.3G 27G 5% /
/dev/sda1 197M 140M 58M 71% /boot
/dev/sdb5 976M 2.6M 907M 1% /newdir
如果想让某个分区在开机后自动挂载,有两个方法,一是可以在/etc/fstab/中添加一行:
UUID="8d82e5f3-60cf-4548-adf5-55ee47550a28" /newdir ext4 default 0 0
二是把挂载命令写到/etc/rc.d/rc.local文件中去。命令如下:
/usr/bin/mount UUID="8d82e5f3-60cf-4548-adf5-55ee47550a28" /newdir
更改完/etc/rc.d/rc.local文件后,还需要一步操作# chmod a+x /etc/rc.d/rc.local
4. 命令umount
umount
命令用于卸载已经加载的文件系统。示例命令如下:
[root@minglinux-01 ~]# umount /dev/sdb5
[root@minglinux-01 ~]# mount UUID="8d82e5f3-60cf-4548-adf5-55ee47550a28" /newdir/
[root@minglinux-01 ~]# umount /newdir/
[root@minglinux-01 ~]# mount UUID="8d82e5f3-60cf-4548-adf5-55ee47550a28" /newdir/
如果当前目录是在要卸载的分区时会提示目标忙,此时可以使用umount命令的-l选项直接卸载。命令如下:
[root@minglinux-01 newdir]# umount -l /newdir/
[root@minglinux-01 newdir]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.3G 27G 5% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 911M 0 911M 0% /dev/shm
tmpfs 911M 9.5M 902M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 197M 140M 58M 71% /boot
tmpfs 183M 0 183M 0% /run/user/0
三、 手动增加swap空间
如果遇到了虚拟内存不够用的情况,就要增加一个虚拟磁盘。增加虚拟磁盘的基本思路是:建立swapfile→格式化为swap格式→启用该虚拟磁盘。
- 建立swapfile,如下所示:
[root@minglinux-01 newdir]# dd if=/dev/zero of=/tmp/newdisk bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,13.6174 秒,78.9 MB/秒
用if指定源(一般是写/dev/zero,它是UNIX系统特有的一个文件,它可以源源不断地提供“0”),of指定目标文件,bs定义块的大小,count定义块的数量。bs和count这两个参数决定了目标文件的大小,即目标文件大小=bs*count。
- 下面将建立的文件格式化为swap格式:
[root@minglinux-01 newdir]# mkswap -f /tmp/newdisk
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=25a2aed3-c3c1-4d12-a7b8-e92a0a28af24
文件格式化后就可以挂载使用了,如下所示:
[root@minglinux-01 newdir]# free -m
total used free shared buff/cache available
Mem: 1821 122 486 9 1212 1500
Swap: 2047 0 2047
[root@minglinux-01 newdir]# swapon /tmp/newdisk
swapon: /tmp/newdisk:不安全的权限 0644,建议使用 0600。
[root@minglinux-01 newdir]# free -m
total used free shared buff/cache available
Mem: 1821 123 485 9 1212 1500
Swap: 3071 0 3071
- 卸载命令:
[root@minglinux-01 newdir]# swapoff /tmp/newdisk
[root@minglinux-01 newdir]# free -m
total used free shared buff/cache available
Mem: 1821 122 486 9 1212 1501
Swap: 2047 0 2047