4.5 磁盘格式化上
上一张对磁盘进行了分区,但是还是没法使用,因为还没有进行格式化。比如在win系统上我们知道的有NTFS格式,fat格式(已经过时了)。那么linux上支持什么格式呢:
[root@localhost ~]# cat /etc/filesystems //系统上支持的所有格式类型
xfs //
centos7默认的格式。centos6默认使用ext4,centos5使用ext3
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus
*
如何查看分区是什么文件系统类型呢:
[root@localhost ~]# mount
/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=99972k,mode=700)
使用mount命令,查看type就可以知道分区类型。只需要关心/dev相关的目录。
当前我的环境中有一个刚创建好的分区:
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 6293503 3145728 83 Linux
需要格式化之后才能使用:
[root@localhost ~]# mke2fs //不支持格式化成xfs。
【mkfs.ext4 = mke2fs -t ext4。这两个的选项是一样的;但是mkfs.xfs和mke2fs差距很大。】
[
-b block-size]:指定文件块大小。在什么时候可以或需要将文件块调大:文件系统存的都是比较大的文件,视频啊音乐啊高清图片啊,读写会更快。存的都是小文件,那么文件块可以调小。默认是4k(为4096)
[
-t fs-type]:指定格式化成什么类型的文件系统,ext3或ext4。不指定类型默认为ext2
[-m reserved-blocks-percentage]:指定这个分区预留的大小,默认有5%是预留给root的。可以进行修改比如 1,预留百分之一;也可以是小数:0.1,百分之零点一。
对于文件块:
[root@localhost ~]# ll
-rw-r--r--. 1 root root
0 6月 6 23:32 1_heard.txt.bak
[root@localhost ~]# du -sh 1_heard.txt.bak
0 1_heard.txt.bak
[root@localhost ~]# echo 1 > 1_heard.txt.bak
[root@localhost ~]#
du -sh 1_heard.txt.bak // 4k,一个块的大小
4.0K 1_heard.txt.bak
[root@localhost ~]# ls -l 1_heard.txt.bak
-rw-r--r--. 1 root root
2 6月 18 20:03 1_heard.txt.bak //2个字节
[root@localhost ~]#
du -sb 1_heard.txt.bak //通过选项“-b”实现查看字节大小。
2
1_heard.txt.bak
不支持 xfs:但是可以通过这个命令格式出成ext3或ext4
[root@localhost ~]# mke2fs -t xfs /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Your mke2fs.conf file does not define the xfs filesystem type.
Aborting...
[root@localhost ~]# mkfs.ext3 /dev/sdb1
[root@localhost ~]# mke2fs -t ext4 /dev/sdb1
格式化成xfs:
[root@localhost ~]# mkfs.xfs
-f /dev/sdb1
格式化成功后,如果不挂载使用df -hT是查看不到的,如果需要查看需要使用:
[root@localhost ~]#
blkid /dev/sdb1
/dev/sdb1: UUID="1d32663d-76cb-4f4f-8699-1ef30fc5d63f"
TYPE="xfs"
4.6 磁盘格式化下
inode是格式化分区的时候创建的
[root@localhost ~]#
mke2fs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 786432 blocks
//inode节点和块个数,大概是1:4的关系。这个比例关系可以修改
39321 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
修改inode节点和块对应的比例关系:
[root@localhost ~]# mke2fs
[
-i bytes-per-inode]:一个块4k,默认一个inode对应4个块,则是16k。想要调小:比如对应2个块,则是8k。则指定为:mke2fs -i 8192 -t ext4 /dev/sdb1
mkfs.xfs没有什么特别的选项,直接使用“-f”选项接分区号,进行格式化。
4.7 磁盘挂载上
磁盘可以不分区,直接格式化:
[root@localhost ~]# mkfs.xfs
-f /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621440, 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@localhost ~]# blkid /dev/sdb //不管有没有分区,只要格式化,就能挂载
/dev/sdb: UUID="deeaed94-dfed-4972-ad7c-00a6f1f801f9" TYPE="xfs"
挂载命令mount的使用:
mount 分区名/盘符 挂载点:磁盘的入口,就是目录
[root@localhost ~]# mount /dev/sdb /mnt
[root@localhost ~]# mount | tail -1
/dev/sdb on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
卸载磁盘:
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
[root@localhost mnt]# touch a.txt
[root@localhost mnt]# mkdir 234
[root@localhost mnt]# ls
234 a.txt
[root@localhost mnt]# cd
[root@localhost ~]# umount /mnt //如果本身还在目录中,那么无法卸载。
[root@localhost mnt]# umount /dev/sdb
umount: /mnt:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
[root@localhost ~]# ls /mnt/ //查看不到之前创建的文件和目录了。
[root@localhost ~]# mount /dev/sdb /mnt //挂载上之后,就可以看到之前创建的文件和目录了
[root@localhost ~]# ls /mnt/
234 a.txt
[root@localhost ~]# umount /dev/sdb //这样也可以卸载。
[root@localhost mnt]# umount -l /dev/sdb //不退出进行卸载,“-l”选项,懒人模式
4.8 磁盘挂载下
mount的挂载选
“-o”:指定选项option,后面跟具体的选项,比如“rw”可读可写。“ro”只读。“remount”重新挂载。
使用man手册查看mount命令帮助:搜索default
defaults
Use default options: rw, suid, dev, exec, auto, nouser, and async.
默认挂载的选项。
suid允许这个分区的文件设置suid权限,比如passwd命令是可以设置suid权限的
exec 可执行。如果修改为noexec,那么该分区下面的文件都不可以执行,没有执行权限
auto 自动挂载 noauto:不自动挂载
nouser 是否允许普通用户挂载,默认普通用户无法挂载
async:对应sync(正常来说,写入一个文件是先将内容存在内存中,然后过一会儿会把内存中的内容同步到磁盘中。sync是内存中的数据随时写到磁盘,对磁盘压力较大)不需要内存随时将内容写到磁盘。
mount -o remount,rw /dev/foo /dir //重新挂载格式。
[root@localhost ~]# vim /etc/fstab //系统启动,默认挂载哪些分区,全是这个文件配置。
#
# /etc/fstab
# Created by anaconda on Wed May 30 07:01:39 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=66218db3-6aa5-4bf3-b380-b3b88d6c1aa0 / xfs defaults 0 0
UUID=87094a8f-998e-4ba5-9b05-8142676fdcbd /boot xfs defaults 0 0
UUID=6480a682-326c-4dad-8b75-60bcd8b7b754 swap swap defaults 0 0
分析文件内容:
第一列:设别号、UUID
第二列:挂载点
第三列:分区格式
第四列:挂载选项,默认defaults
第五列:是否备份,备份文件系统。现在没啥用了。
第六列:设置优先级。是否检查分区是否有问题。1:
级别更高的检查,比如根分区,2:检查
也可以使用man命令查看:
[root@localhost ~]# man fstab
另外的挂载方式:通过UUID
[root@localhost ~]# blkid
/dev/sdb: UUID="deeaed94-dfed-4972-ad7c-00a6f1f801f9" TYPE="xfs"
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sda1: UUID="87094a8f-998e-4ba5-9b05-8142676fdcbd" TYPE="xfs"
/dev/sda2: UUID="6480a682-326c-4dad-8b75-60bcd8b7b754" TYPE="swap"
/dev/sda3: UUID="66218db3-6aa5-4bf3-b380-b3b88d6c1aa0" TYPE="xfs"
[root@localhost ~]# mount UUID="deeaed94-dfed-4972-ad7c-00a6f1f801f9" /mnt
[root@localhost ~]# df -h | tail -1
/dev/sdb 10G 33M 10G 1% /mnt
4.9 手动增加swap空间
[root@localhost ~]# dd if=/dev/zero of=/tmp/newdisk bs=1M count=100
dd命令是对磁盘进行操作的,可以进行读写操作。
if:指定从哪里读。/dev/zero是Linux内核中的报零器,源源不断的输出零。
of:指定将上面的零写到哪里,后面是一个文件
bs:指定每个块的大小,这里是1M
count:多少个块。
[root@localhost ~]# dd if=/dev/zero of=/tmp/newdisk bs=1M count=100
记录了100+0 的读入
记录了100+0 的写出
104857600字节(105 MB)已复制,1.9966 秒,52.5 MB/秒
[root@localhost ~]# du -sh /tmp/newdisk
100M
/tmp/newdisk
[root@localhost ~]# mkswap -f /tmp/newdisk //格式化成swap
正在设置交换空间版本 1,大小 = 102396 KiB
无标签,UUID=88707669-5fd2-45ee-b7b4-8cb344833a97
[root@localhost ~]# free -m //先查看下本身swap的大小
total used free shared buff/cache available
Mem: 976 121 596 6 258 670
Swap: 2047 0 2047
[root@localhost ~]# swapon /tmp/newdisk //将手动创建的swap加入进去。
swapon: /tmp/newdisk:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# free -m //虽然上面提示安全问题,但是依旧添加进去了。
total used free shared buff/cache available
Mem: 976 121 596 6 258 670
Swap: 2147 0 2147
[root@localhost ~]# chmod 0600 /tmp/newdisk //为了安全,也可以修改权限
[root@localhost ~]# swapoff /tmp/newdisk //卸载添加的swap
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 976 121 596 6 258 670
Swap: 2047 0 2047