|
24、Linux文件系统及分区挂载
2021年07月23日 |
|
24.1 Linux支持的文件系统 1、文件操作: 打开,关闭,创建,删除,修改 2、文件系统类型(Linux几乎全部支持) FAT32,NTFS,ISO9660,CIFS,ext2(CentOS5),ext3(CentOS5,6),ext4(CentOS6,7),xfs(CentOS7),btrfs(CentOS7),reiserfs,jfs,nfs,ocfs2,gfs2 swap:交换分区(可以将硬盘当做内存用的部分,将一些不常用的进程放于swap当中) 数据库:swap可以分配小一点(512M,1G左右) hadoop:swap可以分配大一点(8G甚至以上,太大影响系统速度) 光盘:iso9660 Windows:fat32,NTFS UNIX:FFS,UFS,JFS2 网络文件系统:NFS,CIFS 集群文件系统:GFS2,OCFS2 分布式文件系统:ceph moosefs,mogilefs,GlusterFS,Lustre 根据其是否支持“journal”功能: 日志文件系统(有日志区域):ext3,ext4,xfs,… 非日志型文件系统(无日志区域):ext2,vfat 3、文件系统的组成部分: 内核中的模块:ext4,xfs,vfat 用户空间的管理工具:mkfs.ext2,mkfs.ext4,mkfs.vffat(FAT32) 4、Linux VFS:Virtual File System(虚拟文件系统): 用来统一各种文件系统,为开发者提供一个标准的文件接口,所以Linux支持众多的文件系统 ![]() 查看linux支持的文件系统: [root@localhost ~]# cat /proc/filesystems nodev sysfs nodev rootfs nodev ramfs nodev bdev nodev proc nodev cgroup nodev cpuset nodev tmpfs nodev devtmpfs nodev debugfs nodev securityfs nodev sockfs nodev pipefs nodev anon_inodefs nodev configfs nodev devpts nodev hugetlbfs nodev autofs nodev pstore nodev mqueue nodev selinuxfs xfs [root@localhost ~]# 查看内核支持的模块(CentOS 7) [root@localhost ~]# lsmod Module Size Used by ip6t_rpfilter 12595 1 ipt_REJECT 12541 2 nf_reject_ipv4 13373 1 ipt_REJECT ip6t_REJECT 12625 2 nf_reject_ipv6 13717 1 ip6t_REJECT xt_conntrack 12760 17 ip_set 36439 0 nfnetlink 14696 1 ip_set ebtable_nat 12807 1 ebtable_broute 12731 1 bridge 136173 1 ebtable_broute stp 12976 1 bridge llc 14552 2 stp,bridge ip6table_nat 12864 1 nf_conntrack_ipv6 18935 10 nf_defrag_ipv6 35104 1 nf_conntrack_ipv6 nf_nat_ipv6 14131 1 ip6table_nat ip6table_mangle 12700 1 ip6table_security 12710 1 ip6table_raw 12683 1 iptable_nat 12875 1 nf_conntrack_ipv4 15053 9 nf_defrag_ipv4 12729 1 nf_conntrack_ipv4 nf_nat_ipv4 14115 1 iptable_nat nf_nat 26787 2 nf_nat_ipv4,nf_nat_ipv6 nf_conntrack 133387 6 nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_conntrack_ipv4,nf_conntrack_ipv6 iptable_mangle 12695 1 iptable_security 12705 1 iptable_raw 12678 1 ebtable_filter 12827 1 ebtables 35009 3 ebtable_broute,ebtable_nat,ebtable_filter ip6table_filter 12815 1 ip6_tables 26901 5 ip6table_filter,ip6table_mangle,ip6table_security,ip6table_nat,ip6table_raw iptable_filter 12810 1 vmw_vsock_vmci_transport 30577 1 vsock 35327 2 vmw_vsock_vmci_transport iosf_mbi 13523 0 crc32_pclmul 13113 0 ghash_clmulni_intel 13259 0 aesni_intel 69884 0 lrw 13286 1 aesni_intel gf128mul 14951 1 lrw glue_helper 13990 1 aesni_intel ablk_helper 13597 1 aesni_intel cryptd 20359 3 ghash_clmulni_intel,aesni_intel,ablk_helper ppdev 17671 0 btusb 41436 0 btrtl 12945 1 btusb btbcm 14040 1 btusb btintel 15709 1 btusb bluetooth 544565 5 btbcm,btrtl,btusb,btintel vmw_balloon 18190 0 joydev 17377 0 rfkill 22391 1 bluetooth sg 40721 0 pcspkr 12718 0 ahci 34042 0 libahci 31992 1 ahci nfit 49183 0 nvme 27722 0 nvme_core 52964 1 nvme libnvdimm 132047 1 nfit parport_pc 28165 0 parport 42299 2 ppdev,parport_pc shpchp 37032 0 i2c_piix4 22390 0 vmw_vmci 67013 1 vmw_vsock_vmci_transport ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw xfs 978100 3 libcrc32c 12644 3 xfs,nf_nat,nf_conntrack sd_mod 46322 3 crc_t10dif 12714 1 sd_mod sr_mod 22416 0 cdrom 42556 1 sr_mod crct10dif_generic 12647 0 ata_generic 12910 0 pata_acpi 13038 0 vmwgfx 235405 1 drm_kms_helper 159169 1 vmwgfx syscopyarea 12529 1 drm_kms_helper sysfillrect 12701 1 drm_kms_helper sysimgblt 12640 1 drm_kms_helper fb_sys_fops 12703 1 drm_kms_helper ttm 99345 1 vmwgfx drm 370825 4 ttm,drm_kms_helper,vmwgfx crct10dif_pclmul 14289 1 crct10dif_common 12595 3 crct10dif_pclmul,crct10dif_generic,crc_t10dif crc32c_intel 22079 1 mptspi 22542 2 serio_raw 13413 0 i2c_core 40756 3 drm,i2c_piix4,drm_kms_helper e1000 137500 0 ata_piix 35038 0 scsi_transport_spi 30732 1 mptspi libata 238896 5 ahci,pata_acpi,libahci,ata_generic,ata_piix mptscsih 40150 1 mptspi mptbase 105960 2 mptspi,mptscsih dm_mirror 22124 0 dm_region_hash 20813 1 dm_mirror dm_log 18411 2 dm_region_hash,dm_mirror dm_mod 123303 11 dm_log,dm_mirror [root@localhost ~]# Linux每个分区就可以使用一个独立的文件系统,但最后都要被挂载在根目录下 CPU分为四个环 最内部的环ring0跑内核,最外部的环ring3跑软件,ring1,ring2不在使用 所以只有内核可以进行硬件调用,软件必须通过内核才能实现硬件的调用 ![]() 24.2 磁盘管理 1、文件系统管理 创建文件系统:重新创建文件系统会损坏原有文件 mkfs: make file system (1)-t FSTYPE mkfs -t ext2 = mkfs.ext2 mkfs -t ext3 = mkfs.ext3 = mke2fs -j = mke2fs -t ext3 (2)mkfs.FS_TYPE /dev/DEVICE (FS_TYPE指的是文件系统类型) mke2fs:专门管理ext系列文件系统: -t {ext2|ext3|ext4}:指定格式 -j: 创建ext3类型文件系统(相当于-t ext3) -b BLOCK_SIZE: 指定块大小,默认为4096;可用取值为1024、2048或4096; -L LABEL:指定分区卷标; -m #: 指定预留给超级用户的块数百分比(为管理人员预备的) -i #: 用于指定为多少字节的空间创建一个inode,默认为8192;此大小不应小于block大小; -N #: 指定inode个数; -F: 强制创建文件系统; -E: 用户指定额外文件系统属性; -O FEATURE[,…]:启用指定特性 -O ^FEATURE:关闭指定特性 [root@localhost ~]# mke2fs -b 1024 -m 3 -L MYDATA /dev/sdc mke2fs 1.42.9 (28-Dec-2013) /dev/sdc is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label=MYDATA OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 65536 inodes, 1048576 blocks 31457 blocks (3.00%) reserved for the super user First data block=1 Maximum filesystem blocks=68157440 128 block groups 8192 blocks per group, 8192 fragments per group 512 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553, 1024001 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done [root@localhost ~]# blkid /dev/sdc /dev/sdc: LABEL=”MYDATA” UUID=”a59eac3b-c56d-40a9-b433-972cdb48afa6″ TYPE=”ext2″ [root@localhost ~]# blkid: 查询或查看磁盘设备的相关属性 -U UUID:根据指定的UUID来查找对应的设备 -L LABEL:根据制定的LABEL来查找对应的设备 [root@localhost ~]# blkid /dev/sda1: UUID=”c3a88fcb-06d4-4775-9a27-971904c2b154″ TYPE=”xfs” /dev/sda2: UUID=”0R0BFP-witm-SfMZ-d9an-26rT-JDtg-XzwGqy” TYPE=”LVM2_member” /dev/mapper/centos-root: UUID=”71c7bb53-2826-49e8-bb0c-d6a112a01836″ TYPE=”xfs” /dev/mapper/centos-swap: UUID=”eb2dd31d-36f2-47e7-a474-7025f2dd6a1b” TYPE=”swap” /dev/mapper/centos-home: UUID=”92db6af3-9a84-4284-9a59-d4e9f79cb7ab” TYPE=”xfs [root@localhost ~]# mkfs.ext4 /dev/sdc mke2fs 1.42.9 (28-Dec-2013) /dev/sdc is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 65536 inodes, 262144 blocks 13107 blocks (5.00%) reserved for the super user First data block=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: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done [root@localhost ~]# blkid /dev/sdc /dev/sdc: UUID=”ae7e23e0-db47-4b53-bb5d-fda50773ab8c” TYPE=”ext4″ [root@localhost ~]# [root@localhost ~]# mkfs.ext4 /dev/sdc mke2fs 1.42.9 (28-Dec-2013) /dev/sdc is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 65536 inodes, 262144 blocks 13107 blocks (5.00%) reserved for the super user First data block=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: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done [root@localhost ~]# blkid /dev/sdc /dev/sdc: UUID=”ae7e23e0-db47-4b53-bb5d-fda50773ab8c” TYPE=”ext4″ [root@localhost ~]# [root@localhost ~]# mkfs.xfs -L MYDATA /dev/sdc mkfs.xfs: /dev/sdc appears to contain an existing filesystem (ext4). mkfs.xfs: Use the -f option to force overwrite. [root@localhost ~]# mkfs.xfs -f /dev/sdc meta-data=/dev/sdc 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@localhost ~]# blkid /dev/sdc /dev/sdc: UUID=”dd14e08c-1757-4cc5-986c-53de7ec05f13″ TYPE=”xfs” [root@localhost ~]# mkfs.btrfs -f /dev/sdc btrfs-progs v4.9.1 See http://btrfs.wiki.kernel.org for more information. Label: (null) UUID: 9671cf06-920b-4738-9bba-81a3b00fc2db Node size: 16384 Sector size: 4096 Filesystem size: 1.00GiB Block groups: Data: single 8.00MiB Metadata: DUP 51.19MiB System: DUP 8.00MiB SSD detected: no Incompat features: extref, skinny-metadata Number of devices: 1 Devices: ID SIZE PATH 1 1.00GiB /dev/sdc [root@localhost ~]# blkid /dev/sdc /dev/sdc: UUID=”9671cf06-920b-4738-9bba-81a3b00fc2db” UUID_SUB=”20223c43-c91d-4a50-9297-66e3433f6e11″ TYPE=”btrfs” [root@localhost ~]# 2、其他常用工具 (1)e2label DEVICE [LABEL] 用于查看或定义EXT文件系统的卷标 [root@localhost ~]# e2label /dev/sdc MYDATA [root@localhost ~]# e2label /dev/sdc DATA [root@localhost ~]# e2label /dev/sdc DATA [root@localhost ~]# (2)tune2fs: 调整文件系统的相关可调整属性的值 -l:查看指定文件系统超级块信息;super block -j: 不损害原有数据,将ext2升级为ext3; -L LABEL: 设定或修改卷标; -m #: 调整预留百分比; -r #: 指定预留块数; -O:文件系统属性启用或禁用 -o: 设定默认挂载选项; acl -c #:指定挂载次数达到#次之后进行自检,0或-1表关闭此功能; -i #: 每挂载使用多少天后进行自检;0或-1表示关闭此功能; -l: 显示超级块中的信息; [root@localhost ~]# tune2fs -l /dev/sdc tune2fs 1.42.9 (28-Dec-2013) Filesystem volume name: DATA Last mounted on: <not available> Filesystem UUID: a59eac3b-c56d-40a9-b433-972cdb48afa6 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: ext_attr resize_inode dir_index filetype sparse_super Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 65536 Block count: 1048576 Reserved block count: 31457 Free blocks: 1029050 Free inodes: 65525 First block: 1 Block size: 1024 Fragment size: 1024 Reserved GDT blocks: 256 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 512 Inode blocks per group: 128 Filesystem created: Mon Jul 12 23:36:08 2021 Last mount time: n/a Last write time: Mon Jul 12 23:40:37 2021 Mount count: 0 Maximum mount count: -1 Last checked: Mon Jul 12 23:36:08 2021 Check interval: 0 (<none>) 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 Default directory hash: half_md4 Directory Hash Seed: 89099a6f-887d-4624-88e4-97ad656b609e [root@localhost ~]# (3)dumpe2fs: 显示文件属性信息 dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device -h: 只显示超级块中的信息 [root@localhost ~]# dumpe2fs /dev/sdc dumpe2fs 1.42.9 (28-Dec-2013) Filesystem volume name: DATA Last mounted on: <not available> Filesystem UUID: a59eac3b-c56d-40a9-b433-972cdb48afa6 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: ext_attr resize_inode dir_index filetype sparse_super Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 65536 Block count: 1048576 Reserved block count: 31457 Free blocks: 1029050 Free inodes: 65525 First block: 1 Block size: 1024 Fragment size: 1024 Reserved GDT blocks: 256 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 512 Inode blocks per group: 128 Filesystem created: Mon Jul 12 23:36:08 2021 Last mount time: n/a Last write time: Mon Jul 12 23:40:37 2021 Mount count: 0 Maximum mount count: -1 Last checked: Mon Jul 12 23:36:08 2021 Check interval: 0 (<none>) 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 Default directory hash: half_md4 Directory Hash Seed: 89099a6f-887d-4624-88e4-97ad656b609e Group 0: (Blocks 1-8192) Primary superblock at 1, Group descriptors at 2-5 Reserved GDT blocks at 6-261 Block bitmap at 262 (+261), Inode bitmap at 263 (+262) Inode table at 264-391 (+263) 7787 free blocks, 501 free inodes, 2 directories Free blocks: 406-8192 Free inodes: 12-512 Group 1: (Blocks 8193-16384) Backup superblock at 8193, Group descriptors at 8194-8197 Reserved GDT blocks at 8198-8453 Block bitmap at 8454 (+261), Inode bitmap at 8455 (+262) Inode table at 8456-8583 (+263) 7801 free blocks, 512 free inodes, 0 directories Free blocks: 8584-16384 Free inodes: 513-1024 Group 2: (Blocks 16385-24576) Block bitmap at 16385 (+0), Inode bitmap at 16386 (+1) Inode table at 16387-16514 (+2) 8062 free blocks, 512 free inodes, 0 directories Free blocks: 16515-24576 Free inodes: 1025-1536 (4)fsck(file system check): 检查并修复Linux文件系统 -t FSTYPE: 指定文件系统类型=fsck.FS_TYPE(FS_TYPE一定要与分区上已有文件类型相同) -a: 自动修复 [root@localhost ~]# blkid /dev/sdc /dev/sdc: LABEL=”DATA” UUID=”a59eac3b-c56d-40a9-b433-972cdb48afa6″ TYPE=”ext2″ [root@localhost ~]# fsck.ext2 /dev/sdc e2fsck 1.42.9 (28-Dec-2013) DATA: clean, 11/65536 files, 19526/1048576 blocks (5)e2fsck: 专用于修复ext2/ext3文件系统 -f: 强制检查;(检查前需要先卸载设备) -p: 自动修复; (6)mount:挂载 挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录成为其他文件访问入口的行为称之为是挂载。 卸载:解除此关联关系的过程称之为卸载; mount 设备 挂载点 mount DEVICE MOUNT_POINT -o loop: 挂载本地回环设备 mount /dev/sda5 /mnt/test 设备: 设备文件:/dev/sda5 卷标:LABEL=“” UUID: UUID=“” dir,挂载点:目录 要求: 1、此目录没有被其它进程使用; 2、目录得事先存在; 3、目录中的原有的文件将会暂时隐藏(最好选择空文件夹进行挂载); mount: 显示当前系统已经挂载的设备及挂载点 mount [options] [-o options] DEVICE MOUNT_POINT -a: 自动挂载所有支持自动挂载的设备,(在/etc/fstab文件中定义,且挂载选项中有自动挂载功能) -n: 任何设备挂载时,默认都会更新/etc/mtab,使用—n选项意味着挂载设备时,不把信息写入此文件; -t FSTYPE: 指定正在挂载设备上的文件系统的类型;不使用此选项时,mount会调用blkid命令获取对应文件系统的类型; -r: (readonly)只读挂载,挂载光盘时常用此选项 -w: (read and write)读写挂载 -L:以LABEL指定挂载设备 -U:以UUID指定挂载设备 -o: 指定额外的挂载选项,也即指定文件系统启用的属性; async:异步模式(速度快) sync:同步模式(数据更安全,速度慢得多) remount: 重新挂载当前文件系统 ro: 挂载为只读 rw: 读写挂载 atime:(默认)每次访问文件/目录都会更新访问时间戳 noatime:访问文件/目录不会更新访问时间戳(一般关闭,对于访问非常多的文件能显著提高访问速度) diratime/nodiratime:目录的访问时间戳 auto/noauto:是否支持自动挂载 exec/noexec:是否支持文件系统上的应用程序运行为进程 dev/nodev:是否支持在此文件系统上使用设备文件 suid/noosuid:是否允许此文件系统更改SUID(避免黑客通过系统更改SUID) remount:重新挂载 user/nouser:是否允许用户挂载此设备 acl:启动此文件系统上的acl功能 注:上述选项可多个同时使用,彼此使用逗号分割,尽量避免普通用户挂载 默认挂载选项:defaults defaults Use default options: rw, suid, dev, exec, auto, nouser, and async. DEVICE为要挂载的设备: (1)设备文件:例如/dev/sda1 (2)卷标:-L ‘LABEL‘,例如 -L ‘MYDATA’ (3)UUID,-U ‘UUID’ (4)伪文件系统名称:proc,sysfs,devtmpfs,configfs 挂载完成后,要通过挂载点访问对应文件系统上的文件; (7)/etc/fstab 文件系统的配置文件/etc/fstab,OS在初始时,会自动用mount挂载此文件中每行定义的每个文件系统 每行定义一个要挂载的文件系统 [neeq@gbiccxbrl ~]$ cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri Dec 18 10:31:29 2015 # # 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 # 要挂载的设备 挂载点 文件系统类型 挂载选项 转储频率(备份频率) 文件系统自动检测次序 (每多少天做一次完全备份) (只有根可以为1) UUID=55b61d2f-b139-4336-a8ab-54389d9555a6 / ext4 defaults 1 1 UUID=c49032e0-d885-4d14-91fd-ff973cea66c0 /boot ext4 defaults 1 2 UUID=c31675c1-786c-479f-a6cf-01e263d2b4eb 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 UUID=d9bf2e82-327b-488d-b606-55801d31a41d /svn ext4 defaults 1 1 UUID=5999452a-7b86-42dc-8be9-fb31b0752f0b /webserver ext4 defaults 1 1 fstab目录详解 要挂载的设备或伪文件系统: 设备文件,LABEL(LABEL=“”)、UUID(UUID=“”),伪文件系统名称(proc,sysfs) 挂载选项: defaults 转储频率(一般不配置转储): 0:不做备份 1:每天转储 2:每隔一天转储 自检次序(一般不配置自检): 0:不自检 1:首先自检,一般只有rootfs才用1 … mount -a:挂载/etc/fstab文件中定义的所有文件系统 fuser: 验正进程正在使用的文件或套接字文件 -v: 查看某文件上正在运行的进程 -k:杀死正在访问对应文件的进程 -m:杀死正在访问挂载点的进程 fuser -km MOUNT_POINT:终止正在访问此挂载点的所有进程 umount: 卸载某文件系统 umount 设备/挂载点 卸载注意事项: 挂载的设备没有进程使用; 查看正在访问制定文件系统的用户 fuser -v /挂载点 清除正在访问此挂载点的所有进程 fuser -km /挂载点 24.3 swap分区及相关配置(非必要情况下建议不要使用交换分区) CPU多路复用通过:time slice X86CPU(32bit)当中 Memory引入了虚拟地址,线性地址(每个进程认为自己有4G空间可用) 对内存进行分页(page frame) 如果内存满了,可以在硬盘上划分出一部分空间,将不常用的内存里面的进程移到硬盘当中 这部分空间称之为是交换空间 swap in:将内存里面的进程移到硬盘当中 swap out:将硬盘里面的进程移到内存当中 交换空间的存在使得内存可以过载使用 Windows中称之为是虚拟内存 linux中的交换分区为swap分区: 1、free 查看当前系统的内存和虚拟内存使用情况 -m:以M为单位显示 -h:进行单位换算 [root@Daniel-R480 ~]# free total used free shared buff/cache available Mem: 33404872 6063620 27111900 17720 229352 27207520 Swap: 31018612 70528 30948084 [root@Daniel-R480 ~]# free -m total used free shared buff/cache available Mem: 32621 5922 26475 17 223 26568 Swap: 30291 68 30222 [root@Daniel-R480 ~]# free -h total used free shared buff/cache available Mem: 31G 5.8G 25G 17M 223M 25G Swap: 29G 68M 29G [root@Daniel-R480 ~]# 2、创建交换分区步骤: (1)fdisk命令中,调整分区类型为82; (2)mkswap /dev/sda8 -L LABEL -U UUID (3)启用或者关闭swap swapon /dev/sda8(启用此设备中的交换空间) -a:启用所有的定义在/etc/fstab文件中的交换设备 -p PRIORITY:指定优先级 swapoff /dev/sda8 3、回环设备及dd命令 loopback, 使用软件来模拟实现硬件 可使用回环设备来创建swap空间 创建一个镜像文件,120G dd命令:复制并转换文件 复制底层的数据流 if=数据来源 of=数据存储目标 bs=1(block size,复制的文件大小) count=2(复制数目) seek=#: 创建数据文件时,跳过的空间大小(可以用来创建虚假大小的文件,可以du来确认真实大小); 磁盘拷贝: dd if=/dev/sda of=/dev/sdb MBR的备份和还原 dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1 dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1 破坏MBR中的bootloader: dd if=/dev/zero of=/dev/sda bs=256 count=1 创建一个大小为1024的镜像文件 dd if=/dev/zero of=/var/swapfile bs=1M count=1024 /dev/zero:可以无限的出0 /dev/null:可以吞掉所有的数据 24.4 光盘挂载 挂载光盘设备 光盘设备文件: IDE:/dev/hdc SATA:/dev/sr0 符号链接文件: /dev/cdrom /dev/cdrw /dev/dvd /dev/dvdrw mount -r /dev/cdrom /media/cdrom unmount /dev/cdrom 练习: 1、创建一个2G的分区,文件系统为ext2,卷标为DATA,块大小为1024,预留管理空间为磁盘分区的8%;挂载至/backup目录,要求使用卷标进行挂载,且在挂载时启动此文件系统上的acl功能; [root@localhost ~]# fdisk -l #查看目前存在的硬盘,有sda,sdb,sdc,nvme0n1四块盘 Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000acbe0 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 209715199 103808000 8e Linux LVM Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos-swap: 8455 MB, 8455716864 bytes, 16515072 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/nvme0n1: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos-home: 44.1 GB, 44149243904 bytes, 86228992 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes [root@localhost ~]# fdisk /dev/sdb #选择sdb进行实验 Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0xfa7592c5. Command (m for help): n #创建新的分区 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p #选择基本分区或者是扩展分区,这里选择基本分区 Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048): 2048 #配置初始sector,默认即可 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 2g^H #配置最后的sector,这个根据需求,按照标准来配置,前3个是错误示范 Value out of range. Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 2g Value out of range. Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 2G Value out of range. Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G Partition 1 of type Linux and of size 2 GiB is set Command (m for help): w #保存退出 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@localhost ~]# partx /dev/sdb #声明分区,让内核进行读取 NR START END SECTORS SIZE NAME UUID 1 2048 4196351 4194304 2G [root@localhost ~]# fdisk -l /dev/sdb #检查分区是否正常识别 Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xfa7592c5 Device Boot Start End Blocks Id System /dev/sdb1 2048 4196351 2097152 83 Linux #分区已经显示出来了,说明正常识别 [root@localhost ~]# mkfs.ext2 -L DATA -b 1024 -m 8 /dev/sdb1 #对分区进行格式化,配置文件系统 mke2fs 1.42.9 (28-Dec-2013) Filesystem label=DATA OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 131072 inodes, 2097152 blocks 167772 blocks (8.00%) reserved for the super user First data block=1 Maximum filesystem blocks=69206016 256 block groups 8192 blocks per group, 8192 fragments per group 512 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553, 1024001, 1990657 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done [root@localhost ~]# mkdir /backup #创建分区要挂载的位置,这里是/backup mkdir: cannot create directory ‘/backup’: File exists [root@localhost ~]# blkid /dev/sdb1 #查看分区情况 /dev/sdb1: LABEL=”DATA” UUID=”0a96b1d2-eebe-4245-82b9-612ff8cde44c” TYPE=”ext2″ [root@localhost ~]# mount -o acl /dev/sdb1 /backup #挂载分区至/backup,并配置acl [root@localhost ~]# df -h #检查是否正常挂载,出现sdb1即说明正常挂载 Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 2.6G 48G 6% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 8.7M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/mapper/centos-home 42G 33M 42G 1% /home /dev/sda1 1014M 143M 872M 15% /boot tmpfs 781M 0 781M 0% /run/user/0 /dev/sdb1 2.0G 3.1M 1.9G 1% /backup [root@localhost ~]# 2、将此文件系统的超级块中的信息中包含了block和inode的行保存至/tmp/partition.txt中; #两个语句效果一样,选择一个进行执行即可,之后可以通过vim查看执行结果 [root@localhost ~]# dumpe2fs -h /dev/sdb1 | egrep -i “block|inode” >> /tmp/partition.txt dumpe2fs 1.42.9 (28-Dec-2013) [root@localhost ~]# vim /tmp/partition.txt [root@localhost ~]# tune2fs -l /dev/sdb1 | egrep -i “block|inode” >> /tmp/partition.txt [root@localhost ~]# vim /tmp/partition.txt [root@localhost ~]# 3、复制/etc目录中的所有文件至此文件系统;而后调整此文件系统类型为ext3,要求不能损坏已经复制而来的文件; [root@localhost ~]# cp -r /etc/* /backup/ [root@localhost ~]# tune2fs -j /dev/sdb1 tune2fs 1.42.9 (28-Dec-2013) Creating journal inode: done [root@localhost ~]# blkid /dev/sdb1 #查看分区类型 /dev/sdb1: LABEL=”DATA” UUID=”0a96b1d2-eebe-4245-82b9-612ff8cde44c” SEC_TYPE=”ext2″ TYPE=”ext3″ [root@localhost ~]# ls /backup/ #查看文件是否备份过来 4、调整其预留百分比为3%; [root@localhost ~]# tune2fs -m 3 /dev/sdb1 tune2fs 1.42.9 (28-Dec-2013) Setting reserved blocks percentage to 3% (62914 blocks) [root@localhost ~]# 5、以重新挂载的方式挂载此文件系统为不更新访问时间戳,并验正其效果; [root@localhost ~]# stat /backup/inittab #当前时间戳 File: ‘/backup/inittab’ Size: 511 Blocks: 2 IO Block: 1024 regular file Device: 811h/2065d Inode: 53 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:unlabeled_t:s0 Access: 2021-07-13 22:05:24.964712195 -0400 Modify: 2021-07-13 22:05:24.984712387 -0400 Change: 2021-07-13 22:05:24.984712387 -0400 Birth: – [root@localhost ~]# cat /backup/inittab #cat一下,修改时间戳 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target # # systemd uses ‘targets’ instead of runlevels. By default, there are two main targets: # # multi-user.target: analogous to runlevel 3 # graphical.target: analogous to runlevel 5 # # To view current default target, run: # systemctl get-default # # To set a default target, run: # systemctl set-default TARGET.target # [root@localhost ~]# stat /backup/inittab #stat可以看到accesstime更新了 File: ‘/backup/inittab’ Size: 511 Blocks: 2 IO Block: 1024 regular file Device: 811h/2065d Inode: 53 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:unlabeled_t:s0 Access: 2021-07-13 22:16:20.348151973 -0400 Modify: 2021-07-13 22:05:24.984712387 -0400 Change: 2021-07-13 22:05:24.984712387 -0400 Birth: – [root@localhost ~]# mount -o remount,noatime /backup/ #重新挂载为accesstime不随访问更改的系统 [root@localhost ~]# cat /backup/inittab #cat测试,此时时间戳应该不会变 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target # # systemd uses ‘targets’ instead of runlevels. By default, there are two main targets: # # multi-user.target: analogous to runlevel 3 # graphical.target: analogous to runlevel 5 # # To view current default target, run: # systemctl get-default # # To set a default target, run: # systemctl set-default TARGET.target # [root@localhost ~]# stat /backup/inittab #stat测试,时间戳确实没变 File: ‘/backup/inittab’ Size: 511 Blocks: 2 IO Block: 1024 regular file Device: 811h/2065d Inode: 53 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:unlabeled_t:s0 Access: 2021-07-13 22:16:20.348151973 -0400 Modify: 2021-07-13 22:05:24.984712387 -0400 Change: 2021-07-13 22:05:24.984712387 -0400 Birth: – [root@localhost ~]# 6、对此文件系统强行做一次检测; [root@localhost ~]# e2fsck -f /dev/sdb1 e2fsck 1.42.9 (28-Dec-2013) /dev/sdb1 is mounted. e2fsck: Cannot continue, aborting. [root@localhost ~]# umount /dev/sdb1 [root@localhost ~]# e2fsck -f /dev/sdb1 e2fsck 1.42.9 (28-Dec-2013) Backing up journal inode block information. Moving journal from /.journal to hidden inode. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information DATA: ***** FILE SYSTEM WAS MODIFIED ***** DATA: 2372/131072 files (5.6% non-contiguous), 97234/2097152 blocks [root@localhost ~]# 7、删除复制而来的所有文件,并将此文件系统重新挂载为同步(sync);而后再次复制/etc目录中的所有文件至此挂载点,体验其性能变化; [root@localhost ~]# mount /dev/sdb1 /backup/ [root@localhost ~]# mount -o remount,sync /backup [root@localhost ~]# cp -ru /etc/* /backup/ [root@localhost ~]# cd |