文件系统之格式化与挂载

文章目录

  • 文件系统
    • 定义
  • 文件系统类型
    • Linux 文件系统
    • 光盘:iso9660
    • Windows :fat32, ntfs
    • Unix: FFS (fast ), UFS (unix ), JFS2
    • 网络文件系统:NFS, CIFS
    • 集群文件系统:GFS2, OCFS2 (oracle) )
    • 分布式文件系统:
    • RAW 未经处理或者未经格式化产生的文件系统
    • 根据其是否支持"journal" 功能:
      • 非日志型文件系统: ext2, vfat
  • 文件系统的组成部分:
    • 内核中的模块:ext4, xfs, vfat
  • 用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
  • Linux 的虚拟文件系统:VFS
    • 查前支持的文件系统:cat /proc/filesystems
  • 文件系统的选择
  • 创建文件系统
    • mkfs 命令:
      • (1) # mkfs.FS_TYPE /dev/DEVICE
      • (2) # mkfs -t FS_TYPE /dev/DEVICE
      • mkfs.xfs 需要yum install -y xfsprogs,CentOS6上最好不要用xfs的文件系统
    • mke2fs :ext 系列文件系统专用管理工具
  • 文件系统标签(指向设备的另一种方法,与设备无关)
    • e2label DEVICE [LABEL] 管理ext 系列文件系统的LABEL
    • findfs :查找分区
    • tune2fs :重新设定ext 系列文件系统可调整参数的值
    • dumpe2fs 查看ext文件系统的超级块信息:
  • 文件系统检测和修复
    • fsck: File System Check
      • usage:
  • 挂载设备
    • mount [-fnrsvw] [-t vfstype] [-o options] device dir
      • device :指明要挂载的设备;
      • dir :挂载点
      • -o options :( 挂载文件系统的选项) ,多个选项使用逗号分隔
      • 为设备生成多个相同设备(设备号一致)
      • mount :通过查看/etc/mtab 文件显示当前已挂载的所有设备
        • 目录挂目录mount -B /home /mnt/home
        • 文件挂目录
        • 增加loop设备
          • 方法一
          • 方法二:
      • 查看内核追踪到的已挂载的所有设备(包括-n隐藏挂载的文件或=分区):
      • 查看正在访问指定文件系统的进程:
      • 终止所有在正访问指定的文件系统的进程:
      • 卸载流程
        • 1.查看当前使用此设备的进程
        • 2.杀掉占用进程(提前通知其他管理员)
        • 3.卸载
    • /etc/fstab 每行定义一个要挂载的文件系统;
      • 要挂载的设备或伪文件系统:
      • 使用mount -a 命令挂载/etc/fstab 中的所有文件系统,若已存在于配置文件则使用mount -o remount DEVICE生效
    • 挂载交换分区
      • 启用:swapon
    • SWAP 的优先级
      • 禁用:swapoff [OPTION]... [DEVICE]
      • SWAP 的优先级
  • 建立ISO 9660映像文件
    • mkisofs [-adDfhJlLNrRTvz][-print-size][-quiet][-A ][-abstract ][-b ][-biblio ][-c ][-C ][-copyright ][-hide ][-hide-joliet ][-log-file ][-m ][-M ][-o ][-p ][-P ][-sysid ][-V ][-volset ][-volset-size ][-volset-seqno ][-x ][目录或文件]
      • 以分区作为swap
      • 删除swap
        • 1.禁用swap
        • 2.修改/dev/fstab
        • 删除分区
      • 以文件作为swap
      • 制作一个通用的ISO镜像
      • 将linux光盘生成iso文件
      • 制作linux启动光盘
      • 制作安装盘
  • 内存空间使用状态 free [OPTION]
  • 文件系统空间占用等信息的查看工具df [OPTION]... [FILE]...
  • 查看某目录总体空间占用状态
  • dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
    • 备份
    • 恢复
    • 拷贝内存资料到硬盘
    • 从光盘拷贝iso 镜像
    • 销毁磁盘数据
    • 得到最恰当的block size
    • 测试硬盘读写速度
    • 修复硬盘 dd if=/dev/sda of=/dev/sda
  • exercise

文件系统

定义

文件系统是操作系统用于明确存储设备或分区上的文件的方
法和数据结构
;即在存储设备上组织文件的方法。操作系统
中负责管理和存储文件信息的软件结构称为文件管理系统,
简称文件系统。

支持的文件系统
/lib/modules/`uname –r`/kernel/fs
autofs4     configfs  exportfs  fat      jbd    mbcache.ko  nls       xfs
btrfs       cramfs    ext2      fscache  jbd2   nfs         squashfs
cachefiles  dlm       ext3      fuse     jffs2  nfs_common  ubifs
cifs        ecryptfs  ext4      gfs2     lockd  nfsd        udf
或者
cat /proc/filesystems

文件系统类型

Linux 文件系统

ext2(Extended file system), ext3,
ext4, xfs (SGI ), btrfs (Oracle ), reiserfs, jfs( (
AIX ), swap

光盘:iso9660

Windows :fat32, ntfs

Unix: FFS (fast ), UFS (unix ), JFS2

网络文件系统:NFS, CIFS

集群文件系统:GFS2, OCFS2 (oracle) )

分布式文件系统:

fastdfs,ceph, moosefs, mogilefs,
glusterfs, Lustre

RAW 未经处理或者未经格式化产生的文件系统

根据其是否支持"journal" 功能:

### 日志型文件系统: ext3, ext4, xfs, …

非日志型文件系统: ext2, vfat

文件系统的组成部分:

内核中的模块:ext4, xfs, vfat

用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

Linux 的虚拟文件系统:VFS

整个 Linux 的系统都是透过一个名为 Virtual Filesystem Switch 的核心功能去读取
filesystem 的。 也就是说,整个 Linux 认识的 filesystem 其实都是VFS在进行管理,我们使用者并不需要知道每个partition上头的filesystem是什么~VFS会主动的帮我们做好读取的动作;

VFS的作用:

1.向上,对应用层提供一个标准的文件操作接口;

  1. 对下,对文件系统提供一个标准的接口,以便其他操作系统的文件系统可以方便的移植到Linux上;
  1. VFS内部则通过一系列高效的管理机制,比如inode cache, dentry cache 以及文件系统的预读等技术,使得底层文件系统不需沉溺到复杂的内核操作,即可获得高性能;
  1. 此外VFS把一些复杂的操作尽量抽象到VFS内部,使得底层文件系统实现更简单。

查前支持的文件系统:cat /proc/filesystems

image

文件系统的选择

类型 支持限制 root分区 boot分区 注释
单节点
xfs 500TB y y 默认分区格式
ext4 50TB y y 兼容ext3,ext2
brtfs 50TB Y y 技术预览
网络/多节点
GFS2 2-16个节点 y n 集群文件共享存储

创建文件系统

mkfs 命令:

(1) # mkfs.FS_TYPE /dev/DEVICE

FS_TYPE(ext4
xfs
btrfs
vfat)

(2) # mkfs -t FS_TYPE /dev/DEVICE

-L ‘LABEL’: 设定卷标

mkfs.xfs 需要yum install -y xfsprogs,CentOS6上最好不要用xfs的文件系统

mke2fs :ext 系列文件系统专用管理工具

options complications
-t 文件系统类型{ext2
-b {1024
-L ‘LABEL’
-j 于 相当于 -t ext3(mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3)
-i # 为数据空间中每多少个字节创建一个inode ;此大小不应该小于block 的大小(min 1024/max 65536)
-N # 为数据空间创建个多少个inode
-I 一个inode记录占用的磁盘空间大小,128—4096
-m # 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,…] :启用指定特性(has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize)
-O ^FEATURE

文件系统标签(指向设备的另一种方法,与设备无关)

  • blkid :块设备属性信息查看
  • blkid [OPTION]… [DEVICE]
    -U UUID: 根据指定的UUID 来查找对应的设备
    -L LABEL :根据指定的LABEL 来查找对应的设备

e2label DEVICE [LABEL] 管理ext 系列文件系统的LABEL

#设置卷标(最好跟挂载点保持一致)
e2label /dev/sdb1 /app/sdb1
查看卷标(findfs支持xfs文件系统的查找)
[717][root@CentOS69: /root]# e2label /dev/sdb1
/app/sdb1
# tune2fs -L支持xfs文件系统的卷标设置
[root@CentOS69: /root]# tune2fs -L  /app/sdb3 /dev/sdb3
tune2fs 1.41.12 (17-May-2010)
[736][root@CentOS69: /root]# blkid
/dev/sda3: UUID="8bf17957-a22d-4091-8e9e-ef013a975aca" TYPE="ext4" 
/dev/sda1: UUID="f428d749-9c4d-467f-a34c-01c0fd7d8f2e" TYPE="ext4" 
/dev/sda2: UUID="bb520f34-07d1-4be4-be93-b01ac1c58381" TYPE="swap" 
/dev/sdb1: UUID="568ae527-047d-4190-aadc-7f4e702c8c8e" TYPE="ext4" LABEL="/app/sdb1" 
/dev/sdb2: UUID="c1b6b5eb-3532-4191-939b-3621cfc4c1ae" TYPE="xfs" 
/dev/sdb3: UUID="30b7da4c-af1c-4045-8fe7-c43505fe4a0e" SEC_TYPE="ext2" TYPE="ext3" LABEL="/app/sdb3" 


findfs :查找分区

findfs [options] LABEL=
findfs [options] UUID=

blkid
/dev/sda3: UUID="8bf17957-a22d-4091-8e9e-ef013a975aca" TYPE="ext4" 
/dev/sda1: UUID="f428d749-9c4d-467f-a34c-01c0fd7d8f2e" TYPE="ext4" 
/dev/sda2: UUID="bb520f34-07d1-4be4-be93-b01ac1c58381" TYPE="swap" 
/dev/sdb1: UUID="568ae527-047d-4190-aadc-7f4e702c8c8e" TYPE="ext4" LABEL="/app/sdb1" 
/dev/sdb2: UUID="c1b6b5eb-3532-4191-939b-3621cfc4c1ae" TYPE="xfs" 
/dev/sdb3: UUID="30b7da4c-af1c-4045-8fe7-c43505fe4a0e" SEC_TYPE="ext2" TYPE="ext3" 
[723][root@CentOS69: /root]# findfs UUID="c1b6b5eb-3532-4191-939b-3621cfc4c1ae"

[723][root@CentOS69: /root]#findfs UUID="c1b6b5eb-3532-4191-939b-3621cfc4c1ae"
/dev/sdb2

[725][root@CentOS69: /root]# findfs LABEL="/app/sdb1"
/dev/sdb1

#查看/boot挂载点的设备名
[726][root@CentOS69: /root]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Mon Apr 17 08:34:27 2017
#
# 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=8bf17957-a22d-4091-8e9e-ef013a975aca /                       ext4    defaults        1 1
UUID=f428d749-9c4d-467f-a34c-01c0fd7d8f2e /boot                   ext4    defaults        1 2
UUID=bb520f34-07d1-4be4-be93-b01ac1c58381 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0


[729][root@CentOS69: /root]#findfs `grep -w /boot /etc/fstab |cut -d' ' -f1`

tune2fs :重新设定ext 系列文件系统可调整参数的值

options complications
-l 查看ext系列文件系统超级块信息;super block
-L ‘LABEL’ :修改卷标
-m # 修预留给管理员的空间百分比
-j 将ext2 升级为ext3
-O 文件系统属性启用或禁用, –O ^has_journal
-o 调整文件系统的默认 挂载选项,–o ^acl
-U UUID: 修改UUID号
#分区
mkfs.ext4 /dev/sdb1
#查看分区信息
blkid

/dev/sda3: UUID="8bf17957-a22d-4091-8e9e-ef013a975aca" TYPE="ext4" 
/dev/sda1: UUID="f428d749-9c4d-467f-a34c-01c0fd7d8f2e" TYPE="ext4" 
/dev/sda2: UUID="bb520f34-07d1-4be4-be93-b01ac1c58381" TYPE="swap" 
/dev/sdb1: UUID="568ae527-047d-4190-aadc-7f4e702c8c8e" TYPE="ext4"

# 查看超级块信息
tune2fs -l /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   
Last mounted on:          
Filesystem UUID:          568ae527-047d-4190-aadc-7f4e702c8c8e
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              610800 #一般而言一个文件占据多个块,所以节点数一般比block数少
Block count:              2441402 
Reserved block count:     122070
Free blocks:              2364921
Free inodes:              610789
First block:              0
Block size:               4096 #块大小,单个文件最小空间
Fragment size:            4096
Reserved GDT blocks:      596
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8144
Inode blocks per group:   509
Flex block group size:    16
Filesystem created:       Mon Apr 24 07:32:53 2017
Last mount time:          n/a
Last write time:          Mon Apr 24 07:32:54 2017
Mount count:              0
Maximum mount count:      23
Last checked:             Mon Apr 24 07:32:53 2017
Check interval:           15552000 (6 months)
Next check after:         Sat Oct 21 07:32:53 2017
Lifetime writes:          280 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      bc8d3c95-93c9-4001-89fe-4728248769bf
Journal backup:           inode blocks

#设置uuid
[root@CentOS69: /root]# uuidgen
18c1596c-54bf-47d1-b1d2-50c0245e9dfa

[root@CentOS69: /root]# tune2fs -U `uuidgen` /dev/sdb3
tune2fs 1.41.12 (17-May-2010)

dumpe2fs 查看ext文件系统的超级块信息:

-h :查看超级块信息,不显示分组信息

文件系统检测和修复

常发生于死机或者非正常关机之后

  • 挂载为文件系统标记为“no clean” ”
  • 注意:一定不要在挂载状态下修复

fsck: File System Check

usage:

  • fsck.FS_TYPE
  • fsck -t FS_TYPE
    -p: 自动修复错误
    -r: 交互式修复错误
  • FS_TYPE 一定要与分区上已经文件类型相同
  • e2fsck :ext 系列文件专用的检测修复工具
    -y :自动回答为yes
    -f 强制修复

挂载设备

  • 一个设备可以同时挂载到多个目录(用设备名取消挂载,会取消最后一个)
  • 一个目录下可否同时挂载多个设备?不可以,虽然操作上可行,但是后挂载的设备会挤掉之前挂载的设备
  • 当挂载点目录非空时,挂载后目录里面的文件将不可见,取消挂载后恢复可见

mount [-fnrsvw] [-t vfstype] [-o options] device dir

device :指明要挂载的设备;

(1) 设备文件:例如/dev/sda5

(2) 卷标:-L ‘LABEL’, 如 例如 -L ‘MYDATA’

(3) UUID, -U 'UUID’如 :例如 -U ‘0c50523c-43f1-
45e7-85c0-a126711d406e’

(4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs

dir :挂载点

  • 事先存在;建议使用空目录
  • 进程正在使用中的设备无法被卸载
options complications
-t vsftype :指定要挂载的设备上的文件系统类型
-r readonly ,只读挂载
-w read and write, 读写挂载
-n 不更新/etc/mtab ,mount 不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto 功能)
-L 'LABEL 以卷标指定挂载设备
-U ‘UUID’ 以UUID 指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
mount -t ext2 /dev/sdb1 /mnt/sdb1
#将ext3的文件系统以ext2的方式挂载(但不能从4降到2)

mount -r /dev/sdb1 /mnt/sdb1
#以只读的方式挂载,root也无法写入(避免误写入)

cat /proc/mounts #查看所有挂载信息,包括以-n选项挂载的文件系统

-o options :( 挂载文件系统的选项) ,多个选项使用逗号分隔

options complications
async 异步模式(默认,能提高磁盘效率)
sync 同步模式, 内存更改时,同时写磁盘
atime/noatime 包含目录和文件
realtime 文件超过一天或者比mtime旧才更新
diratime/nodiratime 目录的访问时间戳
auto/noauto 是否支持自动挂载, 是否支持-a 选项
exec/noexec 是否支持将文件系统上运行应用程序
dev/nodev 是否支持在此文件系统上使用设备文件
suid/nosuid 不否支持suid 和sgid 权限(对不明磁盘挂载时限制.以免磁盘上带有suid的工具对系统构成威胁)
remount 重新挂载
ro 只读
rw 读写
user/nouser 是否允许普通用户挂载此设备,默认管理员才能挂载
acl 启用此文件系统上的acl 功能
Defaults 相当于rw, nosuid, dev, exec, auto, nouser, async
#挂在后不能执行可执行文件(可用bash命令执行),不更新atime
mount -o noexec,noatime /dev/sdb1 /mnt/sdb1

#将/dev/sdb1以nodev的方式挂载后/test的设备能力将失效
在/dev/sdb1生成设备文件test
 mknod /dev/loop101 b 7 101
[921][root@CentOS69: sdb1]# mknod /mnt/sdb1/test b 7 101
losetup -a
[889][root@CentOS69: sdb1]# ll
total 20
brw-r--r--. 1 root root  6, 6 Apr 25 02:02 test
cd ../
umount /dev/sdb1
mount -o nodev /dev/sdb1 /mnt/sdb1
mount /mnt/sdb1/test /mnt/test1
mount: you must specify the filesystem type

## 测试ro挂载
while :;do echo 1 > /mnt/sdb1/a;sleep 1;echo success;done
mount -o remount,ro /dev/sdb1 /mnt/sdb1

为设备生成多个相同设备(设备号一致)

#生成设备号与sdb1相同的块设备test并挂载,则test挂载点和sdb1挂载点看到的都是sdb1的文件
[root@CentOS69: sdb1]# ls -l /dev/sdb1
brw-rw----. 1 root disk 8, 17 Apr 24 08:35 /dev/sdb1

mknod /mnt/test  b 8 17

ll /mnt/test
brw-r--r--. 1 root root 8, 17 Apr 25 01:43 /mnt/test

[root@CentOS69: sdb1]# mkdir /mnt/testdir
[868][root@CentOS69: sdb1]# mount /mnt/test /mnt/testdir
[869][root@CentOS69: sdb1]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3      201957312 3941952 187749812   3% /
tmpfs             953128      72    953056   1% /dev/shm
/dev/sda1         289293   40892    233041  15% /boot
/dev/sr0         3878870 3878870         0 100% /mnt/cdrom
/dev/sdb1        9481164   21488   8971396   1% /mnt/sdbb
/mnt/home/part    771012     800    730212   1% /mnt/part
/dev/sdb1        9481164   21488   8971396   1% /mnt/sdb1
/mnt/test        9481164   21488   8971396   1% /mnt/testdir
  • 挂载: 将额外文件系统与根文件系统某现存的目录建立起关联
    关系,进而使得此目录做为其它文件访问入口的行为

  • 卸载:为解除此关联关系的过程

  • 把设备关联挂载点:mount Point

  • mount
    卸载时:可使用设备,也可以使用挂载点

  • umount
    挂载点下原有文件在挂载完成后会被临时隐藏

挂载点目录一般为空

mount DEVICE MOUNT_POINT

mount :通过查看/etc/mtab 文件显示当前已挂载的所有设备

目录挂目录mount -B /home /mnt/home

文件挂目录

dd if=/dev/zero of=part bs=4096 count=200000
mkfs.ext4 part
blkid part (当不跟具体文件路径时不会显示)
part: UUID=“ece219bc-1c74-4698-93d7-df83eed2486e” TYPE=“ext4”
[root@CentOS69: home]# mount -o loop part /mnt/part(7上可省-o loop)
[818][root@CentOS69: home]# df
[819][root@CentOS69: home]# mount
/mnt/home/part on /mnt/part type ext4 (rw,loop=/dev/loop0)
相当于将part文件映射成/dev/loop0设备

增加loop设备

查看ls /dev/loop* (默认8个)

方法一

vim /boot/grub/grub.conf

kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=8bf17957-a22d-4091-8e9e-ef013a975aca rd_NO_LUKS r    d_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=    us rd_NO_DM rhgb quiet max_loop=100 

可在内核启动项后面设置max_loop

方法二:

mknod /dev/loop1000 b 7 1000
losetup -a (显示loop设备与文件的关联)
losetup /dev/loop1000 /root/part 更改文件与loop设备的对应关系

查看内核追踪到的已挂载的所有设备(包括-n隐藏挂载的文件或=分区):

cat /proc/mounts
### 查看挂载情况:
findmnt MOUNT_POINT(可用于脚本,判断目录是否处于挂载状态)
findmnt /mnt/sdb1 &>/dev/null || mount /dev/sdb1 /mnt/sdb1

查看正在访问指定文件系统的进程:

#lsof MOUNT_POINT
#fuser -v MOUNT_POINT

终止所有在正访问指定的文件系统的进程:

fuser -km MOUNT_POINT(只能为挂载点)
##卸载:

  • umount DEVICE
  • umount MOUNT_POINT

卸载流程

1.查看当前使用此设备的进程

[root@CentOS69: cdrom]# fuser -v /mnt/sdb1
USER PID ACCESS COMMAND
/mnt/sdb1: root 4471 …c… bash
root 4520 …c… su
test0 4521 …c… bash

2.杀掉占用进程(提前通知其他管理员)

fuser -km /mnt/sdb1

3.卸载

umount /mnt/sdb1

/etc/fstab 每行定义一个要挂载的文件系统;

  • 要挂载的设备或伪文件系统
  • 挂载点
  • 文件系统类型
  • 挂载选项
  • 转储频率
  • 自检次序(注意除了系统所在的盘,其他外加磁盘不要自检,一旦出问题就不能正常开机,修复开机问题1.输入密码;2.mount -o remount,rw /)

要挂载的设备或伪文件系统:

设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc,sysfs)

  • 挂载选项: defaults
  • 转储频率: 0 :不做备份
  • 1 :每天转储
  • 2 :每隔一天转储
  • 自检次序: 0 :不自检
  • 1 :首先自检;一般只有rootfs 才用1

使用mount -a 命令挂载/etc/fstab 中的所有文件系统,若已存在于配置文件则使用mount -o remount DEVICE生效

挂载交换分区

启用:swapon

swapon [OPTION]… [DEVICE]

  • -a :激活所有的交换分区;
  • -p PRIORITY :指定优先级
  • /etc/fstab:pri=value

SWAP 的优先级

禁用:swapoff [OPTION]… [DEVICE]

SWAP 的优先级

  • 可以指定swap分区0到32767的优先级,值越大优先级越高
  • 如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap ,会给这个优先级减一。
  • 先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级( 是正数) 永远高于核心缺省指定的优先级( 是负数)。 。
  • 优化性能:分布存放,高性能磁盘存放

建立ISO 9660映像文件

mkisofs [-adDfhJlLNrRTvz][-print-size][-quiet][-A ][-abstract ][-b ][-biblio ][-c ][-C ][-copyright ][-hide ][-hide-joliet ][-log-file ][-m ][-M ][-o ][-p ][-P ][-sysid ][-V ][-volset ][-volset-size ][-volset-seqno ][-x ][目录或文件]

  • cp /dev/cdrom /root/centos7.iso
  • mkisofs -r -o /root/etc.iso /etc

以分区作为swap

lsblk
NAME   MAJ:MIN RM    SIZE RO TYPE MOUNTPOINT
sr0     11:0    1    3.7G  0 rom  
sda      8:0    0    200G  0 disk 
├─sda1   8:1    0    300M  0 part /boot
├─sda2   8:2    0    3.9G  0 part [SWAP]
├─sda3   8:3    0  195.8G  0 part /
└─sda4   8:4    0 1023.5K  0 part 
sdb      8:16   0    100G  0 disk 
├─sdb1   8:17   0    9.3G  0 part /mnt/sdb1
├─sdb2   8:18   0    9.3G  0 part 
└─sdb3   8:19   0     10G  0 part 
可以看到sda2是swap

fdisk -l /dev/sda

    Disk /dev/sda: 214.7 GB, 214748364800 bytes
    255 heads, 63 sectors/track, 26108 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x0003e514
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          39      307200   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2              39         549     4096000   82  Linux swap / Solaris
    Partition 2 does not end on cylinder boundary.
    /dev/sda3             549       26109   205310976   83  Linux
    /dev/sda4               1           1        1023+  83  Linux
    Partition 4 does not end on cylinder boundary.
    
    Partition table entries are not in disk order
可以看到sda2的id是82,也就是说swamp的id为82
#接下来需要创建一个MBR分区类型为82的设备id或者GPT为8200
gdisk /dev/sdb
p
4

+2G
t
L
8200
w
gdisk -l /dev/sdb
partx -a /dev/sdb()
#格式化成swap分区
mkswap /dev/sdb4 -L swap2
blkid /dev/sdb4
/dev/sdb4: UUID="5130464e-ca42-486f-a1d0-b3dac19d051f" TYPE="swap" 

存盘
vim /etc/fstab
UUID="5130464e-ca42-486f-a1d0-b3dac19d051f" swap swap noatime,pri=1 0 0
注:pri指定优先级,值越大越优先
mount -a
$激活swap
swapon -a
#查看swap来源
swapon -s
Filename				Type		Size	Used	Priority
/dev/sda2                               partition	4095996	0	-1
/dev/sdb4                               partition	2097148	0	-2

删除swap

1.禁用swap

swapoff /dev/sdb4
swapon -s

2.修改/dev/fstab

vim /etc/fstab
删除
UUID="5130464e-ca42-486f-a1d0-b3dac19d051f" swap swap noatime,pri=1 0 0

删除分区

gdisk /dev/sdb
d
4
w
partx -d  --nr 4 /dev/sdb 

以文件作为swap

# 1.生成分区文件
dd if=/dev/zero of=/root/swapfile bs=1M count=2048
# 2.格式化swap分区
mkswap -f /root/swapfile
blkid /root/swapfile
# 3.加入配置文件
vim /etc/fstab
/root/swapfile swap swap defaults,pri=-5 0 0
#4.激活
swapon -a
swapon -s
free

#删除
swapoff /root/swapfile
swapon -s
vim /etc/fastab
删除/root/swapfile swap swap defaults,pri=-5 0 0
rm -rf /root/swapfile

制作一个通用的ISO镜像


mkisofs -a -l -J -L -r -o filename.iso /directory
这样就能做出一个在windows和linux(或者其他UNIX)上面都能使用的ISO镜像了。
-a或--all mkisofs通常不处理备份文件。使用此参数可以把备份文件加到映像文件中。
-l或-full-iso9660-filenames 使用ISO 9660 32字符长度的文件名
-L或-allow-leading-dots 允许文件名的第一个字符为句号。
-J或-joliet 使用Joliet格式的目录与文件名称。
-r或-rational-rock 使用Rock Ridge Extensions,并开放全部文件的读取权限。
-o<映像文件>或-output<映像文件> 指定映像文件的名称。



将linux光盘生成iso文件

mkisofs -o linux-dev-redhat-as4r4.iso -v -r /mnt/cdrom 

制作linux启动光盘

mkisofs -r -J -T -V "Custom RHEL4 Build" -o /home/guan/custom-RHEL4-dvd.iso \
-b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table .
-r -J: -rational-rock   -joliet
-b:启动image
-c:cat文件
-no-emul-boot
-boot-load-size 4: Set numbers of load sectors
-boot-info-table:Patch boot image with info table

制作安装盘

mkisofs -r -T -J -V "make iso " -b /isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -v -o myiso.iso ./myCD
这个实例是用来制作一个安装盘。每一项的功能可以根据上面的选项得知。
其是 -no-emul-boot:Boot image is 'no emulation' image即非模拟模式启动
-boot-load-size:Set numbers of load sectors 即设置载入部分的数量
-boot-info-table:Patch boot image with info table 在启动的图像中显示信息

### 刻录光盘
wodim –v –eject centos.iso

内存空间使用状态 free [OPTION]

  • -m: 以MB 为单位
  • -g: 以GB
  • -h:human易读
1.8G(total)  484M(used)      1.3G(free) 1.2M((shared))  29M(buffers)  243M(cache)
Mem:  -/+ buffers/cache:             1.6G(free) 211M(used)  
buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理
#注意:CentOs6上used+free=total
#     CentOs7上used+free+buff+cache=toital,即CentOs上free显示的是排除缓存后的剩余内存

文件系统空间占用等信息的查看工具df [OPTION]… [FILE]…

options complications
-H 以1000 为单位
-T 文件系统类型
-h human-readable
-i inodes instead of blocks
-P 以Posix 兼容的格式输出
-P选项避免因为字段内容过场导致换行,方便cut截取

查看某目录总体空间占用状态

u [OPTION]... DIR
-h: human-readable
-s: summary

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

options complications
bs=# block size, 复制单元大小
count=# 复制多少个bs
of=file 写到所命名的文件而不是到标准输出
if=file 从所命名文件读取而不是从标准输入
bs=size 指定块大小(既是是ibs 也是obs)
ibs=size 一次读size 个byte
obs=size 一次写size 个byte
cbs=size 一次转化size 个byte
skip=blocks 从开头忽略blocks 个ibs 大小的块
seek=blocks 从开头忽略blocks 个obs 大小的块
count=n 只拷贝n个bs指定的大小
conv=conversion conversion是转化参数:如下
conversion转化参数 含义
ascii 转换 EBCDIC 为 为 ASCII
ebcdic 转换 ASCII 为 为 EBCDIC
block 转换一行数据为长度为 cbs 的记录,不足部分用空格填充。
unblock 替代cbs 长度的每一行尾的空格为新行
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
nocreat 不创建输出文件
noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充到ibs 个字节,不足部分用空(NUL)
echo '123456' > f1
[358][root@liyong: /root]# echo 'abc' > f2
[root@liyong: /root]# dd if=f2 of=f1 bs=1 count=3 conv=notrunc,ucase
[root@liyong: /root]# cat f1
ABC456

[root@liyong: /root]#dd if=f2 of=f1 bs=1 count=2 seek=4 conv=notrunc,ucase
[root@liyong: /root]# cat f1
ABC4AB

#备份MBR:
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
#破坏MBR 中的bootloader: :
dd if=/dev/zero of=/dev/sda bs=64 count=1
seek=446

#有一个大与2K 的二进制文件fileA。 。 现在想从第64 个字节位置
开始读取,需要读取的大小是128Byts 。又有fileB,  想把上
面读取到的128Bytes 写到第32 个字节开始的位置,替换
128Bytes ,请问如何实现?
#dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31
conv=notrunc

备份

dd if=/dev/sdx of=/dev/sdy
将本地的/dev/sdx 整盘备份到/dev/sdy
dd if=/dev/sdx of=/path/to/image
将 将/dev/sdx 全盘数据备份到指定路径的image 文件
dd if=/dev/sdx | gzip >/path/to/image.gz
备份/dev/sdx 全盘数据,并利用gzip 工具进行压缩,保存到指定路径

恢复

恢复:
dd if=/path/to/image of=/dev/sdx
将备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/sdx
将压缩的备份文件恢复到指定盘

拷贝内存资料到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root 目录下的mem.bin 文件

从光盘拷贝iso 镜像

dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到root 文件夹下,并保存为cd.iso 文件

销毁磁盘数据

dd if=/dev/urandom of=/dev/sda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行

得到最恰当的block size

dd if=/dev/zero bs=1024 count=1000000
of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000
of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000
of=/root/1Gb.file
通过比较dd 指令输出中所显示的命令执行时间,即可确定系统
最佳的block size 大小

测试硬盘读写速度

d if=/dev/zero of=/root/1Gb.file bs=1024
count=1000000
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
通过上两个命令输出的执行时间,可以计算出测试硬盘的写/读 读
/速度

修复硬盘 dd if=/dev/sda of=/dev/sda

当硬盘较长时间(比如1,2 年)放置不使用后,磁盘上会
产生消磁点。当磁头读到这些区域时会遇到困难,并可能
导致I/O 错误。当这种情况影响到硬盘的第一个扇区时,
可能导致硬盘报废。上边的命令有可能使这些数据起死回
生 生,

exercise

  1. 创建一个2G 的文件系统,块大小为2048byte, , 预留1%可用空间, 文件系统ext4 ,卷标为TEST ,要求此分区开机后自动挂载至/test 目录,且默认有acl 挂载选项
  2. 写一个脚本,完成如下功能:
    (1) 列出当前系统识别到的所有磁盘设备
    (2) 如磁盘数量为1 ,则显示其空间使用信息否则,则显示最后一个磁盘上的空间使用信息
  3. 将CentOS6 的CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64-bin-DVD2.iso 两个文件 ,合并成一个CentOS-6.8-x86_64-Everything.iso 文件,并将其配置为yum源
免责声明:
一切资料仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。资料来自网络,版权争议与本人无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我联系处理。

更===多===课程====请====加===v===信=== a518958666
   基于SpringCloud 微服务架构 广告系统设计与实现
   系统学习docker
   docker前后端分离实战
   Docker+Kubernetes(k8s)微服务容器化实战
   Go语言实战抽奖系统
   Go语言开发分布式任务调度 轻松搞定高性能Crontab
   20小时快速入门go语言
   Java从零到企业级电商项目实战
   SSM主流框架入门与综合项目实战
   Socket网络编程进阶与实战

 0. 基于Python玩转人工智能最火框架 TensorFlow应用实践
 1. webapp书城开发
 2. 组件方式开发 Web App全站
 3. 前端到后台ThinkPHP开发整站
 4. MySQL性能管理及架构设计
 5. 响应式开发一招致胜
 6. 掌握React Native技术转型随意切换
 7. Yii 2.0开发一个仿京东商城平台
 8. Python高效编程技巧实战
 9. 快速开发轻量级App
 10. 6小时 jQuery开发一个前端应用
 11. Android架构师之路 网络层架构设计与实战
 12. 程序猿的内功修炼,学好算法与数据结构
 13. Vue.js高仿饿了么外卖App 1.0到2.0版本完美升级
 14. Android 专项测试 Python篇
 15. 微信小程序入门与实战 常用组件API开发技巧项目实战
 16. Android 5.0+高级动画开发 矢量图动画 轨迹动画路径变换
 17. Android自动化测试实战 Java篇 主流工具 框架 脚本
 18. Python升级3.6 强力Django+杀手级Xadmin打造在线教育平台
 19. 高性能可扩展MySQL数据库设计及架构优化 电商项目
 20. 带领新手快速开发Android App
 21. Angular JS 仿拉勾网 WebApp 开发移动端单页应用
 22. 组件化封装思想实战Android App
 23. React.js入门基础与案例开发
 24. Yii 2.0进阶版 高级组件 优化京东平台
 25. 双平台真实开发GitHub App React Native技术全面掌握
 26. 玩转算法面试 leetcode题库分门别类详细解析
 27. Thinkphp 5.0 仿百度糯米开发多商家电商平台
 28. ThinkPHP5.0正式版第二季:实战开发企业站【完结】
 29. 最容易上手的Vue 2.0入门实战教程
 30. 聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎
 31. Angular 4.0从入门到实战 打造股票管理网站
 32. Java Spring带前后端开发完整电商平台
 33. Node.js项目线上服务器部署与发布
 34. Java大牛 带你从0到上线开发企业级电商项目
 35. ThinkPHP 5.0开发微信小程序商场打通全栈项目架构
 36. ES6零基础教学 解析彩票项目
 37. React高级实战 打造大众点评 WebApp
 38. BAT大咖助力 全面升级Android面试
 39. 全程MVP手把手 打造IM即时通讯Android APP
 40. 微信服务号+Yii 2.0构建商城系统全栈应用
 41. 机器学习入门 Scikit-learn实现经典小案例
 42. 腾讯大牛亲授 Web 前后端漏洞分析与防御技巧
 43. IT段子手详解MyBatis遇到Spring 秒学Java SSM开发大众点评 难度中级
 44. Vue 2.0 高级实战-开发移动端音乐 WebApp
 45. 全新升级 Kotlin系统入门与进阶
 46. 对接真实数据 从0开发前后端分离企业级上线项目
 47. Android应用发展趋势必备武器 热修复与插件化
 48. Laravel 快速开发简书
 49. 以慕课网日志分析为例 进入大数据 Spark SQL 的世界
 50. Get全栈技能点 Vue2.0/Node.js/MongoDB 打造商城系统
 51. Python操作三大主流数据库
 52. 前端JavaScript面试技巧
 53. Java SSM快速开发仿慕课网在线教育平台
 54. Android通用框架设计与完整电商APP开发
 55. Spring Boot企业微信点餐系统
 56. 开发微信全家桶项目 Vue/Node/MongoDB高级技术栈全覆盖
 57. Web自动化测试 Selenium基础到企业应用
 58. 高性能的 PHP API 接口开发
 59. 企业级刚需Nginx入门,全面掌握Nginx配置+快速搭建高可用架构
 60. Angular 打造企业级协作平台
 61. Python Flask 构建微电影视频网站
 62. Spring Boot带前后端 渐进式开发企业级博客系统
 63. 从零开发Android视频点播APP
 64. 前端跳槽面试必备技巧
 65. 10小时入门大数据
 66. 让你页面速度飞起来 Web前端性能优化
 67. Google面试官亲授 升级Java面试
 68. LoadRunner 工具使用 企业级性能测试实战
 69. 360大牛带你横扫PHP职场 全面解读PHP面试
 70. Python前后端分离开发Vue+Django REST framework实战
 71. Spring Security技术栈开发企业级认证与授权
 72. PHP开发高可用高安全App后端
 73. 看得见的算法 7个经典应用诠释算法精髓
 74. 全网最热Python3入门+进阶 更快上手实际开发
 75. Android互动直播APP开发
 76. JMeter 深入进阶性能测试体系 各领域企业实战
 77. Node.js入门到企业Web开发中的应用
 78. SSM到Spring Boot 从零开发校园商铺平台
 79. 深度学习之神经网络核心原理与算法
 80. BAT大厂APP架构演进实践与优化之路
 81. PHP秒杀系统 高并发高性能的极致挑战
 82. Java开发企业级权限管理系统
 83. Redux+React Router+Node.js全栈开发
 84. Redis从入门到高可用,分布式实践
 85. ES6+ 开发电商网站的账号体系 JS SDK
 86. Spark Streaming实时流处理项目实战 
 87. 快速上手Linux 玩转典型应用 
 88. Python接口测试框架实战与自动化进阶 
 89. Python3数据科学入门与实战
 90. Android高级面试 10大开源框架源码解析
 91. 移动端App UI 设计入门与实战
 92. 精通高级RxJava 2响应式编程思想
 93. Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式
 94. Webpack + React全栈工程架构项目实战精讲
 95. 快速上手Ionic3 多平台开发企业级问答社区
 96. 全面系统讲解CSS 工作应用+面试一步搞定
 97. 跨平台混编框架 MUI 仿豆瓣电影 APP
 98. Kotlin打造完整电商APP 模块化+MVP+主流框架
 99. BAT大牛亲授 基于ElasticSearch的搜房网实战
 100. Python3入门机器学习 经典算法与应用
 101. Java秒杀系统方案优化 高性能高并发实战
 102. 四大维度解锁 Webpack3.0 工具全技能 
 103. 手工测试企业项目实践及面试提升 
 104. 基于Storm构建实时热力分布项目实战 
 105. Java深入微服务原理改造房产销售平台 
 106. 全网稀缺Python自动化运维项目实战 
 107. 前端成长必经之路-组件化思维与技巧 
 108. 基于Python玩转人工智能最火框架 TensorFlow应用实践
 109. Koa2框架从0开始构建预告片网站
 110. React16+React-Router4 从零打造企业级电商后台管理系统
 111. Google资深工程师深度讲解Go语言
 112. 微信小游戏入门与实战 刷爆朋友圈
 113. Elastic Stack从入门到实践
 114. Python移动自动化测试面试
 115. Python3数据分析与挖掘建模实战
 116. Tomcat+Memcached/Redis集群 构建高可用解决方案
 117. 系统学习Docker 践行DevOps理念
 118. Spring Cloud微服务实战
 119. 揭秘一线互联网企业 前端JavaScript高级面试
 120. OpenCV+TensorFlow 入门人工智能图像处理
 121. 基于Golang协程实现流量统计系统
 122. 移动端自动化测试Appium 从入门到项目实战Python版
 123. UI动效设计从入门到实战 PC与移动界面设计必学
 124. Java并发编程与高并发解决方案
 125. Vue核心技术 Vue+Vue-Router+Vuex+SSR实战精讲
 126. 韩天峰力荐 Swoole入门到实战打造高性能赛事直播平台
 127. Docker+Kubernetes(k8s)微服务容器化实践
 128. Python Flask高级编程
 129. ZooKeeper分布式专题与Dubbo微服务入门
 130. App界面设计利器Sketch 精选案例合集
 131. Python高级编程和异步IO并发编程
 132. 新浪微博资深大牛全方位剖析 iOS 高级面试
 133. Vue2.5开发去哪儿网App 从零基础入门到实战项目
 134. 最全面的Java接口自动化测试实战
 135. HBase+SpringBoot实战分布式文件存储
 136. Gradle3.0自动化项目构建技术精讲+实战
 137. 玩转数据结构 从入门到进阶
 138. MyCAT+MySQL 搭建高可用企业级数据库集群
 139. 验证码图像识别,快速掌握TensorFlow模型构建与开发
 140. SpringBoot2.0不容错过的新特性 WebFlux响应式编程
 141. 响应式开发一招致胜
 142. jquery源码分析
 143. AngularJS全栈开发知乎
 144. 揭秘一线互联网企业 前端JavaScript高级面试
 145. JavaScript版 数据结构与算法
 146. Koa2 实现电影微信公众号前后端开发
 147. Koa2+Nodejs+MongoDb 入门实战视频教程 
 148. Node.js 从零开发 web server博客项目 前端晋升全栈工程师必备
 149. Vue.js 源码全方位深入解析
 150. Vue核心技术 Vue+Vue-Router+Vuex+SSR实战精讲
 151. Vue全家桶+SSR+Koa2全栈开发美团网
 152. 飞速上手的跨平台App开发
 153. 前端JS基础面试技巧
 154. 前端跳槽面试必备技巧
 155. 让你页面速度飞起来 Web前端性能优化
 156. 微信小程序商城构建全栈应用
 157. 移动Web APP开发之实战美团外卖
 158. Thinkphp 5.0 仿百度糯米开发多商家电商平台
 159. ThinkPHP5.0正式版第二季:实战开发企业站
 160. ThinkPHP 5.0开发微信小程序商场打通全栈项目架构
 161. 前端到后台ThinkPHP开发整站
 162. PHP从基础语法到原生项目开发
 163. PHP高性能 高价值的PHP API
 164. 360大牛全面解读PHP面试
 165. PHP开发高可用高安全App后端
 166. PHP秒杀系统 高并发高性能的极致挑战
 167. Swoole入门到实战打造高性能赛事直播平台
 168. YII 2.0开发一个仿京东商城平台

......
......
更===多===课程====请====加===v===信=== a518958666
             
  ╭══════════════════════════════════════════╮                                                       ║
 ║    说明:教程版权归原作者所有,本人只是负责搜集整理,本人     ║
  ║          不承担任何技术及版权问题。本人分享的任何教程仅提        ║
  ║          供学习参考,不得用于商业用途,请在下载后在24小时       ║
  ║          内删除。                                                                          ║
  ║                                                                                                 ║
  ║     1.请遵守中华人民共和国相关法律、条例                                ║
  ║     2.本人提供的各类视频教程仅供研究学习,本人不承担观看     ║
  ║       本教程后造成的一切后果                                                    ║
  ║     3.本人不保证提供的教程十分安全或是完全可用,请下载后    ║
  ║       自行检查                                                                           ║
  ║     4.本人提供的教程均为网上搜集,如果该程序涉及                 ║
  ║       或侵害到您的版权请立即写信通知我们。                            ║
  ║     5.如不同意以上声明,请立即删除,不要使用,谢谢合作       ║
  ║                                                                                               ║
  ╰═════════════════════════════════════════╯

你可能感兴趣的:(linux,磁盘管理,分区,挂载)