十磁盘格式化磁盘挂载手动增加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.ext4mkfs.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分区的主要内容,如果未能解决你的问题,请参考以下文章

磁盘格式化磁盘挂载以及手动增加swap空间

磁盘格式化 磁盘挂载 手动增加swap空间

磁盘格式化磁盘挂载手动增加swap空间

第十五课 磁盘的格式化与挂载手动增加swap分区

Linux centosVMware 磁盘格式化磁盘挂载手动增加swap空间

Linux的磁盘格式化,磁盘挂载,手动增加swap空间