linux磁盘管理

CHS

cylinder[柱面] = 有多少磁道就有多少柱面

head[磁头] = 有多少盘面就有多少磁头

sector[扇区] = 扇区主要分为两种划分方式 ,每个磁道的扇区个数都一样,每个磁道的扇区个数都不一样

注:CHS 存在于HDD 机械硬盘中,目前很多都是虚拟化的磁盘,CHS 概念理解即可

具体的算磁盘的大小

sector * 512Byte

注:当添加虚拟磁盘后,如果虚机无法立刻识别出来

执行echo '- - -' > /sys/class/scsi_host/host*/scan *表示数字

[root@ntp dev]# ll /dev/sd*

brw-rw---- 1 root disk 8, 0 Mar 26 15:56 /dev/sda

brw-rw---- 1 root disk 8, 1 Mar 26 15:25 /dev/sda1

brw-rw---- 1 root disk 8, 2 Mar 26 15:25 /dev/sda2

brw-rw---- 1 root disk 8, 3 Mar 26 15:25 /dev/sda3

brw-rw---- 1 root disk 8, 4 Mar 26 15:56 /dev/sda4

brw-rw---- 1 root disk 8, 5 Mar 26 15:25 /dev/sda5

[root@ntp dev]#

[root@ntp dev]#

[root@ntp dev]#

[root@ntp dev]#

[root@ntp dev]#

[root@ntp dev]# echo '- - -' > /sys/class/scsi_host/host0/scan

[root@ntp dev]# ll /dev/sd*

brw-rw---- 1 root disk 8, 0 Mar 26 15:56 /dev/sda

brw-rw---- 1 root disk 8, 1 Mar 26 15:25 /dev/sda1

brw-rw---- 1 root disk 8, 2 Mar 26 15:25 /dev/sda2

brw-rw---- 1 root disk 8, 3 Mar 26 15:25 /dev/sda3

brw-rw---- 1 root disk 8, 4 Mar 26 15:56 /dev/sda4

brw-rw---- 1 root disk 8, 5 Mar 26 15:25 /dev/sda5

brw-rw---- 1 root disk 8, 16 Mar 26 16:02 /dev/sdb

[root@ntp dev]#

怎么读取到 某个硬盘的数据的位置,有两种寻址方式?

1、CHS 采用24位寻址,其中前10位表示cylinder,中间8位表示head,后面6位表示sector,最大寻址空间8GB。

2、LBA(logical block addressing)

LBA 是一个整数,通过转换成CHS 格式完成磁盘具体寻址

ATA-1 规范中定义了28位寻址模式,以每扇区512 位组来计算,ATA-1 所定义的28位 LBA上限达到128GB,2002 年定义ATA-6 规范采用48位LBA,同样以每扇区512Byte组计算容量上限可达128PB

由于CHS 寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用

CHS 寻址方式或是LBA寻址方式,在磁盘容量大于大概8GB时,则只能使用LBA 寻址方式。

0

CHS 代表机械硬盘的三围

在centos6 是以柱面为单位呈现

0

在centos7之后是以扇区为单位呈现

0

MBR

MBR最大只能支持2T 的分区或者硬盘

linux默认是MBR分区方式,目前提升到使用32位表示扇区数,最大只能支持2TB

2^32*512 / 1024/1024/1024 =2048GB = 2TB

0

window 默认是GPT 分区方式

MBR的0磁道0扇区:512Bytes

446Bytes boot loader

64bytes 分区表,其中每16bytes 标识一个分区

2bytes 55AA

因此,MBR分区一块硬盘最多有4个主分区,也可以是3主分区+1 扩展(N个逻辑分区)

0

第一个分区就是活动分区。

0

MBR 分区:主和扩展分区编号:1-4,扩展逻辑分区是5 往后

备份分区表

dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446

skip跳过源文件的446 字节,将后面64 字节读取到 dpt.img

dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446

seek 查找到 目的文件的446 字节位置,开始将源文件复制到目标文件

0

分区表清空后,fdisk -l 就读取达不到MBR上的分区表情况了,所以下次重启就会失败

0

重启直接提示进入救援模式

0

挂光盘,进入救援模式

0

注意:分区表必须保存在另外的设备

GPT

GPT:GUID (globals unique identifiers)partion table 支持128个分区,

使用64位,支持8Z(512Byte/block) 64Z(4096Byte/block)

使用128位UUID(universally unique identifier)表示磁盘和分区

GPT 分区表自动备份在头和尾两份,并有CRC 校验位

UEFI(Unified Extensible Firmware Interface 统一可扩展固件接口)

硬件支持GPT,使得操作系统可以启动

0

0

0

管理分区

列出块设备

lsblk

创建分区命令

fdisk 管理MBR分区,也可以支持GPT,但对GPT不是很好

gdisk 管理GPT 分区

parted 高级分区操作

parted /dev/sda print 打印硬盘分区情况

parted /dev/sda mklabel gpt/msdos 设置分区表类型

parted /dev/sda

重新设置内存中的内核分区版本

centos7 之后使用partprobe 用于解决内核和内存 分区表同步问题

centos6 需要使用 partx -a /dev/sda 修复

parted 命令操作是实时生效的,小心使用

0

文件系统

文件系统是操作系统用于明确存储设备活分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。

操作系统中负责管理和存储文件信息的软件结构称为文件系统,简称文件系统。

从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。

具体来说,它负责为用户建立文件,存入,读出,修改,转储文件,控制文件的存储、安全

控制,日志,压缩,加密等

查看系统支持文件系统

[root@ntp fs]# ls /lib/modules/uname -r/kernel/fs

binfmt_misc.ko ceph dlm fat gfs2 lockd nfs_common overlayfs udf

btrfs cifs exofs fscache isofs mbcache.ko nfsd pstore xfs

cachefiles cramfs ext4 fuse jbd2 nfs nls squashfs

文件系统是内核的核心功能之一

[root@ntp fs]# lsblk -f

NAME FSTYPE LABEL UUID MOUNTPOINT

sda

├─sda1 xfs 412a4006-b2b1-4f15-91ad-b19994883d7e /boot

├─sda2 xfs c0f33f48-33f4-44df-b852-577a334636b9 /

├─sda3 xfs 3fb1c974-08b2-4854-a475-e0fd0ac567ff /home

├─sda4

└─sda5 swap da32d529-f5c5-4a75-a49b-1d28650f4a9a [SWAP]

sr0 iso9660 RHEL-7.1 Server.x86_64 2015-02-19-11-11-02-00

loop0 iso9660 CentOS 7 x86_64 2015-12-09-23-14-10-00 /var/www/html/centos7

[root@ntp fs]#

swap 也是一种文件系统,用于内存和磁盘数据交换

但是swap 没有打开 、新建文件的功能,较为特殊的文件系统

linux常见文件系统

ext2、ext3、ext4、swap、iso9960光盘、btrfs(oracle)、reiserfs

注:ext3 较ext2 增加了日志功能,能够帮助系统从非正常关机导致的异常中

恢复数据。【数据是先写入 磁盘的日志缓存区,再落盘写到磁盘】

windows常见文件系统

FAT32、NTFS、exFAT

VFS

在一个操作系统内 存在多个linux 文件系统,那么为什么执行一条指令能够同时将两种文件系统显示出来

,因为linux系统提供了VFS 【virtual file system】,屏蔽各个文件系统的差异性

0

管理创建文件系统

创建分区 [root@ntp dev]# fdisk /dev/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 0x5a81974e. Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) 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): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G Partition 1 of type Linux and of size 5 GiB is set Command (m for help): p 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: 0x5a81974e Device Boot Start End Blocks Id System /dev/sdb1 2048 10487807 5242880 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. 创建文件系统 [root@ntp dev]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=256 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=1310720, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 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@ntp dev]# lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 xfs 412a4006-b2b1-4f15-91ad-b19994883d7e /boot ├─sda2 xfs c0f33f48-33f4-44df-b852-577a334636b9 / ├─sda3 xfs 3fb1c974-08b2-4854-a475-e0fd0ac567ff /home ├─sda4 └─sda5 swap da32d529-f5c5-4a75-a49b-1d28650f4a9a [SWAP] sdb └─sdb1 xfs 6f456f73-45db-46b5-aded-c4b30e372ba5 sr0 iso9660 RHEL-7.1 Server.x86_64 2015-02-19-11-11-02-00 loop0 iso9660 CentOS 7 x86_64 2015-12-09-23-14-10-00 /var/www/html/centos7 [root@ntp dev]# 当创建出文件系统后,会自动生成128位的UUID,所以不会冲突

创建文件管理工具:

mkfs命令:

(1)mkfs.FS_TYPE /dev/DEVICE

ext4、xfs、btrfs、vfat

(2)mkfs -t FS_TYPE /dev/DEVICE

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

常用选项:

-t {ext2|ext3|ext4} 指定文件系统类型

-b {1024|2048|4096} 指定块block 大小

-L ‘LABLE’ 设置卷标【就是盘符名称】

-m 默认5%为管理人员预留空间占总空间的百分比

-O FEATURE 启用指定特性

-O ^FEATRUE 关闭指定特性

0

那么怎么查看文件系统一个块的具体大小

ext4 用 tunefs -l /dev/sdb1 ---- 查看 block size

xfs 用 xfs_info /dev/sdb1 ---查看 bsize

上文的block size、bsize 指的是 文件系统给文件分配的最小单位。

EXT文件系统举例

明确整个硬盘

0

super block:存放block group 从哪里到哪里,块组有多大

GDT【块组描述符表】:ext文件系统每一个块组信息使用32字节描述,这32个字节称为块组描述符,所有块组的块组

描述符组成块组描述附表(GDT group descriptor table)。虽然每个块组都需要块组描述符来记录块组的信息和属性元数据,但是不是每个块组中

都存放了块组描述符,将所有块组的块组信息组成一个GDT 保存,并将该GDT 存放于某些块组中,类似存放superblock 和 备份superblock的块。

block bitmap:表示哪个块有没有被使用

indoe bitmap:表示哪个块的inode 有无被使用

inode table :存放inode 表

ext4 查看文件系统的属性:

tune2fs -l /dev/sdb1

查看块组的信息 dump2fs -l /dev/sdb1

[root@ntp mnt]# dumpe2fs -f /dev/sdb2 dumpe2fs 1.42.9 (28-Dec-2013) Filesystem volume name: hhhh Last mounted on: <not available> Filesystem UUID: e7fc4613-a39a-4b33-aa51-a9e2f0ceff74 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 131072 Block count: 524288 Reserved block count: 26214 Free blocks: 515284 Free inodes: 131061 First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 127 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 8192 Inode blocks per group: 512 Filesystem created: Tue Mar 26 16:36:37 2024 Last mount time: n/a Last write time: Tue Mar 26 16:36:38 2024 Mount count: 0 Maximum mount count: -1 Last checked: Tue Mar 26 16:36:37 2024 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: b16913cc-2493-4dfa-a1a7-58bf426f7daa Group 0: (Blocks 0-32767) Primary superblock at 0, Group descriptors at 1-1 Reserved GDT blocks at 2-128 Block bitmap at 129 (+129), Inode bitmap at 130 (+130) Inode table at 131-642 (+131) 32119 free blocks, 8181 free inodes, 2 directories Free blocks: 649-32767 Free inodes: 12-8192 Group 1: (Blocks 32768-65535) Backup superblock at 32768, Group descriptors at 32769-32769 Reserved GDT blocks at 32770-32896 Block bitmap at 32897 (+129), Inode bitmap at 32898 (+130) Inode table at 32899-33410 (+131) 32125 free blocks, 8192 free inodes, 0 directories Free blocks: 33411-65535 Free inodes: 8193-16384 Group 2: (Blocks 65536-98303) Block bitmap at 65536 (+0), Inode bitmap at 65537 (+1) Inode table at 65538-66049 (+2) 32254 free blocks, 8192 free inodes, 0 directories Free blocks: 66050-98303 Free inodes: 16385-24576 Group 3: (Blocks 98304-131071) Backup superblock at 98304, Group descriptors at 98305-98305 Reserved GDT blocks at 98306-98432 Block bitmap at 98433 (+129), Inode bitmap at 98434 (+130) Inode table at 98435-98946 (+131) 32125 free blocks, 8192 free inodes, 0 directories Free blocks: 98947-131071 Free inodes: 24577-32768 Group 4: (Blocks 131072-163839) Block bitmap at 131072 (+0), Inode bitmap at 131073 (+1) Inode table at 131074-131585 (+2) 32254 free blocks, 8192 free inodes, 0 directories Free blocks: 131586-163839 Free inodes: 32769-40960 Group 5: (Blocks 163840-196607) Backup superblock at 163840, Group descriptors at 163841-163841 Reserved GDT blocks at 163842-163968 Block bitmap at 163969 (+129), Inode bitmap at 163970 (+130) Inode table at 163971-164482 (+131) 32125 free blocks, 8192 free inodes, 0 directories Free blocks: 164483-196607 Free inodes: 40961-49152 Group 6: (Blocks 196608-229375) Block bitmap at 196608 (+0), Inode bitmap at 196609 (+1) Inode table at 196610-197121 (+2) 32254 free blocks, 8192 free inodes, 0 directories Free blocks: 197122-229375 Free inodes: 49153-57344 Group 7: (Blocks 229376-262143) Backup superblock at 229376, Group descriptors at 229377-229377 Reserved GDT blocks at 229378-229504 Block bitmap at 229505 (+129), Inode bitmap at 229506 (+130) Inode table at 229507-230018 (+131) 32125 free blocks, 8192 free inodes, 0 directories Free blocks: 230019-262143 Free inodes: 57345-65536 Group 8: (Blocks 262144-294911) Block bitmap at 262144 (+0), Inode bitmap at 262145 (+1) Inode table at 262146-262657 (+2) 32254 free blocks, 8192 free inodes, 0 directories Free blocks: 262658-294911 Free inodes: 65537-73728 Group 9: (Blocks 294912-327679) Backup superblock at 294912, Group descriptors at 294913-294913 Reserved GDT blocks at 294914-295040 Block bitmap at 295041 (+129), Inode bitmap at 295042 (+130) Inode table at 295043-295554 (+131) 32125 free blocks, 8192 free inodes, 0 directories Free blocks: 295555-327679 Free inodes: 73729-81920 Group 10: (Blocks 327680-360447) Block bitmap at 327680 (+0), Inode bitmap at 327681 (+1) Inode table at 327682-328193 (+2) 32254 free blocks, 8192 free inodes, 0 directories Free blocks: 328194-360447 Free inodes: 81921-90112 Group 11: (Blocks 360448-393215) Block bitmap at 360448 (+0), Inode bitmap at 360449 (+1) Inode table at 360450-360961 (+2) 32254 free blocks, 8192 free inodes, 0 directories Free blocks: 360962-393215 Free inodes: 90113-98304 Group 12: (Blocks 393216-425983) Block bitmap at 393216 (+0), Inode bitmap at 393217 (+1) Inode table at 393218-393729 (+2) 32254 free blocks, 8192 free inodes, 0 directories Free blocks: 393730-425983 Free inodes: 98305-106496 Group 13: (Blocks 425984-458751) Block bitmap at 425984 (+0), Inode bitmap at 425985 (+1) Inode table at 425986-426497 (+2) 32254 free blocks, 8192 free inodes, 0 directories Free blocks: 426498-458751 Free inodes: 106497-114688 Group 14: (Blocks 458752-491519) Block bitmap at 458752 (+0), Inode bitmap at 458753 (+1) Inode table at 458754-459265 (+2) 32254 free blocks, 8192 free inodes, 0 directories Free blocks: 459266-491519 Free inodes: 114689-122880 Group 15: (Blocks 491520-524287) Block bitmap at 491520 (+0), Inode bitmap at 491521 (+1) Inode table at 491522-492033 (+2) 32254 free blocks, 8192 free inodes, 0 directories Free blocks: 492034-524287 Free inodes: 122881-131072 [root@ntp mnt]#

xfs 查看文件系统属性

xfs_info /dev/sdb1

e2label 管理ext系列文件系统的label

e2label device 【label】

findfs :查找分区

findfs uuid=。。。。

文件系统检测和修复

文件系统故障常发生于死机或者非正常关机之后,挂载为文件系统标记为‘no clean’

注意:一定不要在挂载状态下执行下面命令修复

fsck:file system check

fsck.FS_TYPE

fsck -t FS_TYPE

注意:FS_TYPE 一定要与分区上的文件系统类型相同

常用选项:

-a 自动修复

-r 交互式修复错误

e2fsck:ext系列文件专用的检测修复工具

-y 自动回答为yes

-f 强制修复

-p 自动进行安全的修复文件系统问题

xfs_repair:xfs 文件系统专用检测修复工具

常用选项:

-f 修复文件,而设备

-n 只检查

-d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot

范例:

ext 的文件系统损坏:

[root@ntp mnt]# mount /dev/sdb2 /data cp /etc/fstab /data/ cp /etc/shadow /data/ [root@ntp ~]# e2fsck /dev/sdb2 e2fsck 1.42.9 (28-Dec-2013) /dev/sdb2 is mounted. e2fsck: Cannot continue, aborting. [root@ntp ~]# umount /dev/sdb2 [root@ntp ~]# e2fsck /dev/sdb2 e2fsck 1.42.9 (28-Dec-2013) ext2fs_open2: Bad magic number in super-block e2fsck: Superblock invalid, trying backup blocks... hhhh was not cleanly unmounted, check forced. Resize inode not valid. Recreate<y>? cancelled! hhhh: ***** FILE SYSTEM WAS MODIFIED ***** hhhh: ********** WARNING: Filesystem still has errors ********** [root@ntp ~]# e2fsck /dev/sdb2 -y e2fsck 1.42.9 (28-Dec-2013) ext2fs_open2: Bad magic number in super-block e2fsck: Superblock invalid, trying backup blocks... hhhh was not cleanly unmounted, check forced. Resize inode not valid. Recreate? yes Pass 1: Checking inodes, blocks, and sizes Root inode is not a directory. Clear? yes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Root inode not allocated. Allocate? yes /lost+found not found. Create? yes Pass 4: Checking reference counts Pass 5: Checking group summary information Block bitmap differences: +(0--643) Fix? yes Free blocks count wrong for group #0 (32117, counted=32122). Fix? yes Free blocks count wrong (515282, counted=515287). Fix? yes Inode bitmap differences: +1 +(3--10) Fix? yes Free inodes count wrong for group #0 (8180, counted=8181). Fix? yes Directories count wrong for group #0 (3, counted=2). Fix? yes Free inodes count wrong (131060, counted=131061). Fix? yes hhhh: ***** FILE SYSTEM WAS MODIFIED ***** hhhh: 11/131072 files (0.0% non-contiguous), 9001/524288 blocks [root@ntp ~]# ll /data total 16 -rw-r--r-- 1 root root 66 Mar 18 15:51 date.log -rw-r--r-- 1 root root 64 Mar 25 15:57 dpt.img -rw-r--r-- 1 root root 0 Mar 18 15:36 hello -rw-r--r-- 1 root root 50 Mar 18 15:36 stderr.log -rw-r--r-- 1 root root 35 Mar 18 15:36 stdout.log [root@ntp ~]# mount /dev/sd sda sda1 sda2 sda3 sda4 sda5 sdb sdb1 sdb2 [root@ntp ~]# mount /dev/sdb2 /data [root@ntp ~]# ll /data total 4 drwx------ 2 root root 4096 Mar 26 16:47 lost+found [root@ntp ~]#

挂载

centos 6之前挂载需要制定文件系统的

现在的版本 不再需要制定文件系统,操作系统很智能的识别了。

mount /dev/sda1 /mnt

umount /mnt

实际可以把一个磁盘挂载到多个目录下。

使用mount 可以查看到

0

一个目录 只能对应到 一个磁盘。如果两块磁盘前后挂载同一目录。

那么会踢走前一个磁盘,后一个磁盘挂载生效

总结:一个挂载点同一时间只能挂载一个设备

一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其他设备上的数据将被隐藏

一个设备可以同时挂载多个挂载点

通常挂载点一般是已存在空的目录[如果不是空目录,那么原来的目录有文件的话,挂载后,原来的文件将被掩藏,

只有被取消挂载后,文件才会显示]

卸载文件系统umount

umount 挂载点|设备

查看挂载情况

mount

cat /proc/mount

挂载选项:

-o ro 只读

-o rw 读写

-o remount 重新挂载

-o async 异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高

-o sync 同步模式,内存更改时,同时写磁盘,安全,但效率低下

0

defaults 相当于 rw,suid,dev,exec,auto,nouser,async

loop作用:

[root@ntp ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 100G 0 disk

├─sda1 8:1 0 200M 0 part /boot

├─sda2 8:2 0 50G 0 part /

├─sda3 8:3 0 2G 0 part /home

├─sda4 8:4 0 1K 0 part

└─sda5 8:5 0 2G 0 part [SWAP]

sdb 8:16 0 20G 0 disk

sr0 11:0 1 3.6G 0 rom

loop0 7:0 0 4G 0 loop /var/www/html/centos7

[root@ntp ~]#

[root@ntp ~]#

[root@ntp ~]# losetup -a

/dev/loop0: [2050]:18105620 (/isos/CentOS-7-x86_64-DVD-1511.iso)

[root@ntp ~]#

是系统自动创建loop0 文件关联到iso 文件【该文件必须具备文件系统】

[root@ntp ~]# blkid /isos/CentOS-7-x86_64-DVD-1511.iso

/isos/CentOS-7-x86_64-DVD-1511.iso: UUID="2015-12-09-23-14-10-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"

[root@ntp ~]#

[root@ntp ~]# whatis losetup

losetup (8) - set up and control loop devices

[root@ntp ~]#

文件夹之间也可以有挂载关系

-B= --bind 绑定目录到另外一个目录上

mount -B /etc/ /mnt/etc

0

怎么判断是不是挂载点 echo $? 1 表示错误,0表示上条指令正确

[root@ntp ~]# findmnt /mtn

[root@ntp ~]# findmnt /mnt

[root@ntp ~]# echo $?

1

[root@ntp ~]# findmnt /mtn

[root@ntp ~]# echo $?

1

[root@ntp ~]#

早期在centos 5 是使用设备名 挂载,但是设备名有可能会改变

0

因此在后续系统 系统使用UUID 挂载

以上最后第二列是对分区做备份,0表示不备份,1表示1天备份一次分区,现在基本上没有对分区最备份了

只是对特定的目录做备份,这一列和备份策略有关

最后一列是对文件系统的检查,检查是否文件系统的健康美丽如使用 fsck /dev/sda2 相关的文件系统需要用

对应的文件系统做检查,0表示不检查,1,2,3表示检查顺序

[root@ntp ~]# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Sat Sep 3 21:20:34 2022

#

# 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=c0f33f48-33f4-44df-b852-577a334636b9 / xfs defaults 0 0

UUID=412a4006-b2b1-4f15-91ad-b19994883d7e /boot xfs defaults 0 0

UUID=3fb1c974-08b2-4854-a475-e0fd0ac567ff /home xfs defaults 0 0

UUID=da32d529-f5c5-4a75-a49b-1d28650f4a9a swap swap defaults 0 0

#/isos/rhel-server-7.1-x86_64-dvd.iso /var/www/html/pub/ iso9660 defaults 0 0

#/isos/RHEL7OSP-6.0-2015-02-23.2-x86_64.iso /var/www/html/openstack/ iso9660 defaults 0 0

/isos/CentOS-7-x86_64-DVD-1511.iso /var/www/html/centos7 iso9660 defaults 0 0

#/dev/cdrom /media iso9660 defaults 0 0

挂载失败案例

模拟设备的文件系统uuid 更改

uuidgen 生成新的uuid

ext系列 可以使用 tune2fs修改uuid

tune2fs -U `uuidgen` /dev/sda1

然后重启----- 会检查挂载,最后挂载失败

最后可以查看到 cat /var/log/boot.log

会进入到emergency 模式

进入 /etc/fstab 注释 某行

先启动,启动后再进行配置

注意:挂载文件夹,注意不要使用UUID,因为自动挂载UUID 找不到对应得loop

loop 是挂载后

0

处理交换文件和分区

swap 介绍

swap 交换分区是系统RAM 得补充,swap 分区支持虚拟内存,当没有足够的RAM保存系统处理

的数据时会将数据写入swap分区,当系统缺乏swap空间时,内核会因RAM 内存耗尽而终止进程。

配置过多swap空间会造成存储设备处于分配状态但限制,造成浪费,过多swap空间还会掩盖内存泄漏

注意:为优化性能,可以将swap 分别存放,或高性能磁盘存放

0

swap 作用:用来解决内存不足的问题,临时解决内存不足的问题

[root@ntp ~]# free -h

total used free shared buff/cache available

Mem: 3.7G 156M 3.3G 9.3M 246M 3.3G

Swap: 2.0G 0B 2.0G

[root@ntp ~]#

shared 共享内存,给多个程序共享使用的空间

buffers 【又称write cache】是缓冲区 ----- 在是内存写入磁盘的【缓冲区在内核中,内核控制,buffers

也称为写缓存】

cache 【又称read cache】是缓存 ------ 从磁盘读入到内存

有buffers 和 cache 主要是解决 各个硬件速度不一致问题,例如磁盘和内存的

读写数据不一样。为了提高效率

在早前centos 6 的buffer 和 cache 是分开的。

但是后续的centos 7 之后 buffer 和 cache 合设了。【因为buffer和cache 缓存的内存可能都是一样】

buffer 和 cache 都在内核空间中。

0

当内存剩余空闲空间和swap 不够时,会响应报错。

那么什么时候会使用 swap 分区

cat /proc/sys/vm/swappiness

[root@ntp ~]# cat /proc/sys/vm/swappiness

30

[root@ntp ~]#

当内存在使用到100-30=70% 的时候,就开始出现有交换分区的使用。简单地说这个参数定义了系统对swap的使用倾向

,默认值为30,表示内存剩余百分之30 时候,开始使用swap。值越大表示越倾向于使用swap,可以设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性

注:实际虚拟化中 虚机不会使用swap,物理机才会使用swap,因为swap 会影响性能

echo 0 > /proc/sys/vm/swappiness

临时配置

增加swap 分区

分区新的主分区,修改id 为82

新增文件系统 mkswap /dev/新分区

vim /etc/fstab 增加挂载条目

swapon -a 重新挂载swap 分区

0

可以修改多个swap 分区的优先级

重新挂载swap

swapoff /dev/sdc1

swapon /dev/sdc1

上图为什么要将 sdc1 优先级调高,因为机械磁盘的最外圈磁道速度更快

swap 用例

(1)实际生产环境中可以使用文件提供swap 分区

生成一个空文件

[root@ntp ~]# dd if=/dev/zero of=/data/swapfile bs=1M count=512

512+0 records in

512+0 records out

536870912 bytes (537 MB) copied, 0.375631 s, 1.4 GB/s

创建文件系统

[root@ntp ~]#

[root@ntp ~]# file /data/swapfile

/data/swapfile: data

[root@ntp ~]# mkswap /data/swapfile

Setting up swapspace version 1, size = 524284 KiB

no label, UUID=61cbe266-ef2c-4eb4-910c-cef4caaa057d

[root@ntp ~]# file /data/swapfile

/data/swapfile: Linux/i386 swap file (new style), version 1 (4K pages), size 131071 pages, no label, UUID=61cbe266-ef2c-4eb4-910c-cef4caaa057d

[root@ntp ~]#

填写挂载文件

[root@ntp ~]# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Sat Sep 3 21:20:34 2022

#

# 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=c0f33f48-33f4-44df-b852-577a334636b9 / xfs defaults 0 0

UUID=412a4006-b2b1-4f15-91ad-b19994883d7e /boot xfs defaults 0 0

UUID=3fb1c974-08b2-4854-a475-e0fd0ac567ff /home xfs defaults 0 0

UUID=da32d529-f5c5-4a75-a49b-1d28650f4a9a swap swap defaults 0 0

#/isos/rhel-server-7.1-x86_64-dvd.iso /var/www/html/pub/ iso9660 defaults 0 0

#/isos/RHEL7OSP-6.0-2015-02-23.2-x86_64.iso /var/www/html/openstack/ iso9660 defaults 0 0

/isos/CentOS-7-x86_64-DVD-1511.iso /var/www/html/centos7 iso9660 defaults 0 0

#/dev/cdrom /media iso9660 defaults 0 0

UUID=61cbe266-ef2c-4eb4-910c-cef4caaa057d swap swap pri=10 0 0

进入vim 后 可以使用 :r!blkid /data/swapfile 读取到对应的uuid

重新挂载 swap,由于swap 比较特殊,需要使用swapon -a 指令

[root@ntp ~]# swapon -a

swapon: /data/swapfile: insecure permissions 0644, 0600 suggested.

其中由于 /data/swapfile 是文件,不安全,因此建议修改权限

[root@ntp ~]# chmod 600 /data/swapfile

[root@ntp ~]#

[root@ntp ~]#

[root@ntp ~]#

[root@ntp ~]# free -h

total used free shared buff/cache available

Mem: 3.7G 156M 2.8G 9.3M 775M 3.3G

Swap: 2.5G 0B 2.5G

[root@ntp ~]# swapon -s

Filename Type Size Used Priority

/dev/sda5 partition 2097148 0 -1

/data/swapfile file 524284 0 10

[root@ntp ~]#

[root@ntp ~]# rm -rf /data/swapfile

rm: cannot remove ‘/data/swapfile’: Operation not permitted

[root@ntp ~]# swapon -s

Filename Type Size Used Priority

/dev/sda5 partition 2097148 0 -1

/data/swapfile file 524284 0 10

[root@ntp ~]# swapoff /data/swapfile

[root@ntp ~]#

[root@ntp ~]# rm -rf /data/swapfile

如果要删除文件/data/swapfile 则需要取消挂载,才能操作,否则操作不允许

总结:实际基于文件的 swap 分区性能没有直接 基于磁盘分区的swap 分区性能好,因为/data/swapfile 本质是文件,得通过ext4 文件系统找到该文件才能读取到上得swap分区。不像基于硬盘分区的swap,直接读取。

另外基于文件还有安全问题。

移动介质

0

0

磁盘常见工具

文件系统空间占用等信息查看工具 df

df -T 查看对应的文件系统是什么

df -H 以1000 计算

df -h 以1024 计算

df 看的是文件数据空间 以及 数据原数据的空间 之和

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

du 看的是文件实际占据的数据空间

工具dd

0

0

0

RAID

什么是RAID

RAID:Redundant Arrays of Inexpensive (Independent)DIsks 廉价(独立)的磁盘冗余阵列

1988年由加利福尼亚州伯克利分享(University of California-Berkeley)

“A case for redundant arrays of inexpensive disks”,多个磁盘合成一个阵列来提供更好的性能,冗余,或者两者都提供

0

RAID 功能实现

提供IO 能力,磁盘并行读写

提供耐用性,磁盘冗余算法来实现

RAID实现的方式

外接式磁盘阵列卡:通过扩展卡提供适配能力

内接式RAID卡:主板集成RAID 控制器,安装OS 前在BIOS 里配置

软件RAID:通过OS 实现

RAID 卡实际就是专有芯片,就是一台小电脑,在装机前会先安装RAID

RAID 级别

级别:多块磁盘组织在一起的共工作方式有所不同

RAID-0:条带卷,strip

RAID-1:镜像卷,mirror

RAID-2

..

RAID-5

RAID-6

RAID10

RAID01

RAID级别

一般组成RAID 的硬盘大小都是一样的。如果不是一样大,那么只会取相同大的部分

1.RAID0

以chunk 单位,读写数据

文件会以chunk 为单位 被文件系统切割成大小,依次写入到磁盘

读、写性能提升

可用空间:N*min(S1,S2...)

无容错能力 【注:生产中 实际不会使用,一般只是在测试环境中使用】

最少磁盘数2,2+

2.RAID1

读性能提升、写性能略由下降

可用空间:1*min(S1,S2 ...)

由冗余能力

最少磁盘:2,2N

RAID1 是代替不了备份的。同时写入 同时读取,备份只是为了物理设备可靠性,

防护不了人为破坏。

3.RAID4

多块数据盘异或运算值存于专用校验盘

磁盘利用率(N-1)/ N

由冗余能力

至少3块硬盘才可以实现

RAID4 的校验位 总是存放在同一块磁盘上,然而实际生产中发现 损坏的往往是这块磁盘,因此

RAID 4 在实际生产中很少使用。因此就衍生出RAID 5.将校验位 不放在同一块磁盘上。

4.RAID5

读、写性能提升

可用空间:(N-1)*min(S1,S2 ...)

由容错能力 :允许最多1 块磁盘损坏

最少磁盘数:3,3+

5.RAID6

读、写性能提升

可用空间:(N-2)*min(S1,S2 ...)/2

由容错能力:允许最多2块磁盘损坏

最少磁盘数:4,4+

校验位和数据不能放在同一块盘上。两个校验位可以算出两个未知数

6.RAID10

读、写性能提升

可用空间:N*min(S1,S2 ..)/ 2

有容错能力,每组镜像最多只能坏一块

最少磁盘数:4,4+

7.RAID01

多块磁盘先实现RAID0,再组合成RAID1

8.RAID50

多块磁盘先实现RAID5,再组合成RAID0

目前RAID 技术 0 1 5 6 10,JBOD

9.JBOD

JBOD :just a bunch of disks

功能:将多块大小不一样的空间合并一个大的连续空间使用

可用空间:sum(S1,S2 ...)

要一块磁盘写满才会写下一块磁盘

实际还有软RAID,但实际生产中较少使用

逻辑卷管理器(LVM)

LVM 介绍

logical volume manager 可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,允许在

在多个物理设备间重新组织文件系统

LVM 可以弹性的更改LVM 的容量

通过交换PE 来进行医院的转换,将原来的LV 内的PE转义到其他的设备中以降低LV 的容量,或将其他设备中的PE

加到LV 中以加大容量。

PE 就类似RAID 中的chunk 单位,PE是空间最小的单位

实现过程

将设备指定为物理卷

用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域(physical extent ,PE)

在物理卷上创建的逻辑卷,是由物理区域(PE)组成

使用LVM 后,数据---- 文件系统 ---- LVM ----- 物理磁盘/分区

未使用LVM 前, 数据 ---- 文件系统----- 物理磁盘/分区

第一逻辑卷对应设备名:/dev/dm-#

dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

软链接:

/dev/mapper/VG_NAME-LV_NAME

/dev/VG_NMAE/LV_NAME

范例:

/dev/mapper/vol0-root

/dev/vol0/root

实现LVM

以下的指令依赖于 yum install -y lvm2

注:增加分区或者磁盘的时候 修改 id 为8e

pv 管理

pvdisplay

pvcreate /dev/sda /dev/sdb1

vg 管理

vgcreate mysql /dev/sda /dev/sdb1

lvm 管理

lvcreate -n lv_data -l [PE个数] [卷组名字]

lvscreate -n lv_data -L 50G [卷组名字]

lvextend -l +100%free /dev/vg_mysql/lv_data

注:操作后使用 df -T 显示lv_data 盘符的大小没有改变,因为df -T 看到的是有文件系统的磁盘大小,

新扩容的磁盘没有文件系统。

所以需要为这部分磁盘做文件系统配置。

一般是先查询已存在的lvm 是什么文件系统,使用对应的问价系统扩展指令进行操作

blkid /dev/vg_mysql/lv_data

得知为 ext4 ,使用resize2fs /dev/vg_mysql/lv_data

其他文件系统有对应的 扩展工具指令

实际通过pvsdisplay 可以得知分配到哪个磁盘,查看PE 落在哪个盘的数量比较多

变成LVM 后的磁盘会变成 type LVM2_member

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值