十磁盘格式化磁盘挂载手动增加SWAP分区
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十磁盘格式化磁盘挂载手动增加SWAP分区相关的知识,希望对你有一定的参考价值。
十五、磁盘格式化、磁盘挂载、手动增加SWAP分区centos7支持的文件系统格式
# cat /etc/filesystems
xfs //centos7默认的文件系统,比如/和/boot就是xfs。
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus
*
如何查看分区的文件系统,命令:mount,只关注/dev开头的即可。还没有挂载的分区看不到。
在centos6以及之前的版本使用的是ext格式的文件系统。
centos6 ext4
centos5 ext3
再往前就是ext2。
查看还没有挂载的分区,命令:blkid /dev/sdb1
blkid命令:若不指定就是ext2的文件系统。
# blkid /dev/sdb5
/dev/sdb5: UUID="0bf14533-a292-421f-bf23-8820e58d2d05" TYPE="ext2"
一、磁盘格式化
磁盘分好区后暂时还不能用,还须对每个分区进行格式化所谓格式化,其实就是安装文件系统,Windows下的文件系统有FAT32和NTFS。
1.命令mke2fs、mkfs.ext2、mkfs.ext3、mkfs.ext4和mkfs.xfs
当用man命令查询前4个命令的帮助文档时,会发现看到的是用一个帮助文档,说明这4个命令是一样的,下面以mke2fs为例介绍。
mke2fs命令的常用选项:
-b:表示分区时设定每个数据区块占用的空间大小。目前,每个数据块支持1024B,2048B和4096B。
-i:表示设定iNode的大小。多少字节对应一个iNode。想要更多iNode就把数值改小,最小一个块对应1个iNode,不能再小了。
示例用法:mke2fs -i 8192 -t ext4 /dev/sdb1
-N:表示设定iNode的数量。有时默认的iNode数不够用,所以要自定义iNode的数量。
-c:表示在格式化前先检测一下磁盘是否有问题。加上这个选项后,运行速度会非常慢。
-L:表示预设该分区的标签(label)。
-j:表示建立ext3格式的分区。若使用mkfs.ext3格式,就不用加这个选项。
-t:用来指定文件系统的类型,可以是ext2、ext3或ext4。
-m:指定该分区预留的空间大小。# mke2fs -m 0.1 /dev/sdb5(大小自定义,单位%)
示例命令:
# 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
64000 inodes, 256000 blocks
12800 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=262144000
8 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
指定文件系统格式为ext4时,命令mke2fs -t ext4 /dev/sdb5等同于mkfs.ext4 /dev/sdb5。然而,mke2fs并不支持分区格式化成XFS类型,而只能使用mkfs.xfs,想格式化成XFS文件系统类型的时候,用mkfs.xfs命令就可以了。
mkfs.ext4和mk2fs支持的选项是一样的
示例命令:
# 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 /dev/sdb6
meta-data=/dev/sdb6 isize=512 agcount=4, agsize=64000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=256000, 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
上例中,块大小=4096(bsize=4096)。
磁盘在格式化的时候,会预先规定好每一个块的大小,然后再把所有的空间分割成一个个的小块。存数据的时候,也是一个块一个块的写入。
若磁盘里存储的都是特别小的文件,比如说1KB或者2KB,在格式化磁盘时指定块数值就小一点。
ext4文件系统的默认块大小为4096B(即4KB)。在格式化时,可以指定块大小为1024B、2048B或4096B(它们是成倍增加的)。虽然格式化时可以指定块大小超过4096B,但一旦超过4096B,就不能正常挂载。该如何指定块大小呢,示例命令:
# 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
文件系统标签=
OS type: Linux
块大小=8192 (log=3)
分块大小=8192 (log=3)
Stride=0 blocks, Stripe width=0 blocks
64000 inodes, 128000 blocks
6400 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=134201344
2 block groups
65528 blocks per group, 65528 fragments per group
32000 inodes per group
Superblock backups stored on blocks:
65528
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
# mkfs.xfs -b size=8192 /dev/sdb6 //重新格式化sdb6时,会提示这个分区已经格式化过。
mkfs.xfs: /dev/sdb6 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
# mkfs.xfs -f -b size=8192 /dev/sdb6 //加-f选项就可以了。f:强制的,之前有讲。
meta-data=/dev/sdb6 isize=512 agcount=4, agsize=32000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=8192 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=8192 ascii-ci=0 ftype=1
log =internal log bsize=8192 blocks=559, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=8192 blocks=0, rtextents=0
上面的试验发现,若指定块大小为8192B,会提示块值设置得太大,可以输入y强制格式化。你还可以尝试其他数字,但需要是1024的指数倍(1024、2048、4096、8192)。块大小一般保持默认即可。
其中,mkfs.xfs用法有点特殊,需要注意和mke2fs区分。
另外,还可以给分区指定标签,如下:
# 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
64000 inodes, 256000 blocks
12800 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=262144000
8 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
这里可以使用-L选项来指定标签。标签会在挂载磁盘时使用,也可以写入配置文件。
小建议:除非有需求,否则不需要指定块大小。也就是说,只要记住-t和-L两个选项即可。
2.命令e2label
该命令用于查看或修改分区的标签,它只支持ext格式的文件系统,而不支持XFS文件系统。
示例命令:
# e2label /dev/sdb5
TEST
# e2label /dev/sdb5 TEST123
# e2label /dev/sdb5
TEST123
二、磁盘挂载
格式化后的磁盘其实就是一个块设备文件,类型为b。不可以直接在那个文件写数据。在挂载分区前,先建立一个挂载点,这个挂载点是以目录的形式出现的。一旦把某个分区挂载到这个挂载点(目录)下,要再往这个目录写数据时,就都会写到该分区中。所以,在挂载分区前,挂载点(目录)下必须是个空目录。其实目录不为空并不影响所挂载分区的使用,但一旦挂载上了,该目录下以前的东西就看不到了(数据并没有丢失),除非卸载该分区。
1.mount命令(挂载的命令)
# 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=923696k,nr_inodes=230924,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,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/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,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)
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=13387)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
/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=186708k,mode=700)
该命令可以查看当前系统已经挂载的所有分区、分区文件系统的类型、挂载点及一些选项等信息。若想知道某个已挂载分区的文件系统类型,直接用mount命令查看。未挂载的分区用blkid命令查看。
先建立一个空目录及文档,示例:
# mkdir /newdir
# touch /newdir/newfile.txt
# ls /newdir/
newfile.txt
再把刚才格式化的/dev/sdb5挂载到/newdir上,如下:
# mount /dev/sdb5 /newdir/
# ls /newdir/
lost+found
# df -h |grep -v tmpfs
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 16G 1007M 15G 7% /
/dev/sda1 197M 113M 85M 58% /boot
/dev/sdb5 985M 1.3M 983M 1% /newdir
把/dev/sdb5挂载到/newdir后,原来在/newdir下的newfile.txt就看不到了,通过命令df -h可以查看刚挂载的分区。
umount命令,用来卸载磁盘分区的。-l选项(laze,懒人的意思),可以在打开了这个目录的情况下卸载掉这个分区。
# umount /newdir/
# df -h |grep -v tmpfs
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 16G 1007M 15G 7% /
/dev/sda1 197M 113M 85M 58% /boot
常用选项:
-a:会把/etc/fstab中出现的所有磁盘分区都挂载上。
-t:用来指定挂载的分区类型,默认不指定,会自动识别。
-o:用来指定挂载的分区有哪些特性,即/etc/fstab文件中第四列的哪些。用法:
mount -o ro,sync /dev/sdb5 /newdir
mount -o remount,ro,sync /dev/sdb5 /newdir //remount,重新挂载
2./etc/fstab配置文件
# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Jan 22 01:47:58 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=5035b91d-4724-40f0-b6f1-daca081fa9ad / xfs defaults 0 0
UUID=e0f242ce-37db-4f09-bc9e-05d274a9e8b2 /boot xfs defaults 0 0
UUID=fa9c1185-bf37-42d6-b64f-571e57f24bac swap swap defaults 0 0
该文件显示了系统启动时需要挂载的各个分区,简述各列含义:
第一列:分区标识,可写分区的LABEL、分区的UUID、也可以写分区名(/dev/sda1)
第二列:挂载点
第三列:分区格式
第四列:mount的一些挂载参数。一般情况下,直接写defaults即可
第五列:这列的数字表示是否被dump备份。1表示备份,0表示不备份
第六列:这列的数字表示开机时是否自检磁盘。1和2都表示检测,0表示不检测。检测时,1比2优先级高,所以先检测1,再检测2。若有多个分区需要开机检测,就都设置成2,1检测完后会同时检测2.在centos7系统里,所有分区中该列的值都是0。
第四列的常用选项:(重点)
async/sync:async表示与磁盘和内存不同步。系统每隔一段时间就会把内存数据写入磁盘中,而sync则会时时同步内存和磁盘中的数据。默认是async。
auto/noauto:表示开机自动挂载/不自动挂载。
default:表示按照大多数永久文件系统的默认值设置挂载定义,它包含了rw、suid、dev、exec、auto、nouser和async。每个都对应了一个no的选项。
ro:只读权限挂载。
rw:可读可写权限挂载。
exec/noexec:允许/不允许可执行文件执行。千万不要把根分区挂载为noexec,否则将无法使用系统,甚至连mount命令都无法使用。
user/nouser:允许/不允许root外的其他用户挂载分区。为了安全,请用nouser。
suid/nosuid:允许/不允许分区有suid属性,一般设置nosuid。
usrquota:表示启动用户的磁盘配额模式。磁盘配额会针对用户限定他们使用的磁盘额度。
grquota:表示启动群组的磁盘配额模式。
3.blkid命令
若想让某个分区在开机后自动挂载,有两个办法可实现:
a)在/etc/fstab中添加一行,比如这样的一行:
UUID="11eefb8d-62c1-43bd-9dc6-5748bfd00189" /newdir ext4 defaults 0 0
b)把挂载命令写到/etc/rc.d/rc.local文件中去,系统启动后会执行这个文件中的命令。只要你把想要开机启动的命令统统写入到这个文件中(直接放到最后)即可。
有的可能遇到把命令写入了/etc/rc.d/rc.local文件里,可是却开机没有执行,可能是系统没有找到那个命令。所以为了避免此类问题,写入到该文件的命令,要使用绝对路径,。更改完/etc/rc.d/rc.local文件后,还需要一步操作:
# chmod a+x /etc/rc.d/rc.local
因为,在centos7系统,该文件默认没有执行权限。以上两种方法任选其一,建议在挂载磁盘分区时,尽量使用UUID或者LABEL这两种方法。
4.手动增加swap分区
增加虚拟磁盘的基本思路:建立swapfile,格式化为swap格式,启动该虚拟磁盘。
a)先建立swapfile,如下所示:
# dd if=/dev/zero of=/tmp/newdisk bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,22.9133 秒,46.9 MB/秒
dd命令:使用方法:
if指定源(一般是/dev/zero,它是UNIX系统特有的一个文件,它可以源源不断的提供“0”)
of指定目标文件
bs定义块大小
count定义块的数量
bs和count这两个参数决定了目标文件的大小,即目标文件大小=bs*count。
上例中,用dd命令建立了一个大小为1.1GB的文件,下面将它格式化,如下:
# mkswap -f /tmp/newdisk
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=28ac58d0-d39f-428a-a815-117427cfbd54
文件格式化后,就可以挂载使用了,如下:
# free -m
total used free shared buff/cache available
Mem: 1823 123 478 8 1220 1504
Swap: 4095 0 4095
# swapon /tmp/newdisk
swapon: /tmp/newdisk:不安全的权限 0644,建议使用 0600。
[[email protected] ~]# free -m
total used free shared buff/cache available
Mem: 1823 124 478 8 1220 1504
Swap: 5119 0 5119
虽然提示不安全,但实际已经挂载上。
前后对比swap分区,多了1024MB的空间。
free命令:查看内存的使用情况,-m选项:以MB为单位。
若想再卸载这个文件,用命令:
# swapoff /tmp/newdisk
以上是关于十磁盘格式化磁盘挂载手动增加SWAP分区的主要内容,如果未能解决你的问题,请参考以下文章