标签:text spl linu 开机 auto mkfs格式化 权限 nginx 大于
linux 磁盘管理
Linux磁盘及文件系统管理
机械
柱面、扇区、磁道
5400rpm
7200rpm
10krpm
15krpm
固态
接口类型:
IDE:并口,133MBps
SATA:串口,6gbps
SCSI:并口,640MBps
SAS:串口,6gbps
USB:串口,3.0 480MBps
NetWork:1000M
查看磁盘分区信息
fdisk -l ****
lsblk *****
gdisk -linux ***
partx -s /dev/sda
创建文件系统:
格式化:低级格式化(分区之前进行、划分隧道)、高级格式化(分区之后对分区进行,创建文件系统)
元数据区、数据区
元数据区:inode
大小、权限、属主属组、时间戳、数据块指针
符号链接文件:存储数据指针的空间当中存储的是真实文件的访问路径;
设备文件:存储数据指针的空间当中存储的设备号;
/dev/sda1
VFS:Virtual File System
Linxu的文件系统:ext2、ext3、ext4、xfs、reiserfs、btrfs
光盘:ISO9660
网络文件系统:nfs、cifs
集群文件系统:gfs2、ocfs2
内核级分布式文件系统:ceph
Windows的文件系统:vfat、ntfs
伪文件系统:prop、sysfs、tmpfs、hogepagefs
Unix的文件系统:UFS、FPS、JPS
交换文件系统:SWAP
用户空间的文件系统:mogilfs、moosefs、glusterfs
文件系统管理工具
创建文件系统的工具
mkfs
检测及修复文件系统的工具
fsck
查看其属性的工具
dumpe2fs、tune2fs
调整文件系统的特性
tune2fs
内核级文件系统的组成部分:
文件系统驱动:由内核提供
文件系统管理工具:由用户空间的应用程序提供
磁盘容量检查
1.使用df命令查看磁盘容量,不加参数以k为单位
df -i //查看inode使用情况 df -h //以G或者T或者M人性化方式显示 df -T //查看文件类型
//使用df命令查看磁盘,下面分别介绍每列什么含义 [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 Filesystem Size Used Avail Use% Mounted on devtmpfs 2.0G 0 2.0G 0% /dev
2.使用lsblk查看分区情况
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk |-sda1 8:1 0 1G 0 part /boot `-sda2 8:2 0 19G 0 part
3.使用du命令查看目录或者文件的容量,不加参数以k为单位
du -sh /opt //人性化输出显示大小 -s:列出总和 -h:人性化显示容量信息
磁盘分区Fdisk 选项: -b <大小> 扇区大小(512、1024、2048或4096) -c[=<模式>] 兼容模式:“dos”或“nondos”(默认) -h 打印此帮助文本 -u[=<单位>] 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认) -v 打印程序版本 -C <数字> 指定柱面数 -H <数字> 指定磁头数 -S <数字> 指定每个磁道的扇区数
小于2TB存储磁盘,可选分区工具fdisk
//生产分区建议:如无特殊需求,直接使用整个磁盘即可,无需分区
//学习分区建议:1P+1E(3L) 2P+1E(2L) 3P+1E(1L)(仅适用于练习)
[root@localhost ~]# fdisk -l [root@localhost ~]# fdisk /dev/sda 命令(输入 m 获取帮助): //输入m列出常用的命令 Command action a toggle a bootable flag //切换分区启动标记 b edit bsd disklabel //编辑sda磁盘标签 c toggle the dos compatibility flag //切换dos兼容模式 d delete a partition //删除分区 g create a new empty GPT partition table //新建GPT空白分区表 G create an IRIX (SGI) partition table //创建IRIX(SGI)分区表 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 //创建新的sun磁盘标签 t change a partition‘s system id //修改分区ID,可以通过i查看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): d Partition number (1-3, default 3): Partition 3 is deleted Command (m for help): d Partition number (1,2, default 2): Partition 2 is deleted Command (m for help): d Selected partition 1 //新建主分区 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): First sector (2048-41943039, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +100M Partition 1 of type Linux and of size 100 MiB is set
注意:当创建主分区等于4个的时候,此时磁盘无论是否还有空间,都将无法分配新的分区,此时应该将
第四个分区替换成扩展分区在进行分配,此时继续分区将都是逻辑分区
//查看分区创建 Command (m for help): p Device Boot Start End Blocks Id System /dev/sdb1 2048 206847 102400 83 Linux /dev/sdb2 206848 10692607 5242880 83 Linux /dev/sdb3 10692608 21178367 5242880 83 Linux /dev/sdb4 21178368 41943039 10382336 5 Extended /dev/sdb5 21180416 25374719 2097152 83 Linux /dev/sdb6 25376768 31668223 3145728 83 Linux /dev/sdb7 31670272 41943039 5136384 83 Linux
//保存分区 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. //检查磁盘是否为MBR分区方式 [root@localhost ~]# fdisk -l /dev/sdb | grep type Disk label type: dos //安装parted,刷新内核立即生效,无需重启 [root@localhost ~]# yum install -y parted [root@localhost ~]# partprobe /dev/sdb
//查看日志 [root@localhost ~]# tail /var/log/messages Dec 26 10:01:01 localhost systemd: Started Session 2 of user root. Dec 26 10:42:02 localhost kernel: sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 > Dec 26 10:42:02 localhost kernel: sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 > Dec 26 10:43:03 localhost kernel: sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 > Dec 26 10:50:54 localhost kernel: sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 > Dec 26 10:50:54 localhost kernel: sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 > Dec 26 11:01:01 localhost systemd: Started Session 3 of user root. Dec 26 11:04:27 localhost kernel: sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 > Dec 26 11:04:27 localhost kernel: sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 > Dec 26 11:04:51 localhost kernel: sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 sdb6 sdb7 >
磁盘分区Gdisk
大于2TB使用分区工具
[root@xiaoming ~]# gdisk /dev/sdc Command (? for help): n //创建新分区 Partition number (1-128, default 1): First sector (34-6291455966, default = 2048) or {+-}size{KMGTP}: Last sector (2048-6291455966, default = 6291455966) or {+-}size{KMGTP}: +100M
Command (? for help): p //打印查看 Number Start (sector) End (sector) Size Code Name 1 2048 206847 100.0 MiB 8300 Linux filesystem Command (? for help): w //保存分区 Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/sdc. The operation has completed successfully. //检查磁盘是否是gpt格式 [root@xiaoming ~]# fdisk -l /dev/sdc|grep type WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. Disk label type: gpt //安装parted,刷新内核立即生效,无需重启 [root@localhost ~]# yum install -y parted [root@localhost ~]# partprobe /dev/sdb
磁盘格式化Mkfs
mkfs格式化磁盘,实质创建文件系统
mkfs常用的选项有 -b //设定数据区块占用空间大小,目前支持1024、2048、4096、bytes每个块。 -t //用来指定什么类型的文件系统,可以是ext4,xfs -i //设定inode的大小 -N //设定inode数量,防止inode数量不够导致磁盘不足 -L //预设该分区的标签label
//格式化整个sdb磁盘为ext4文件系统 [root@xiaoming ~]# mkfs.ext4 /dev/sdb //也可格式化整个sdb1分区为xfs文件系统 [root@xiaoming ~]# mkfs.ext4 /dev/sdb1
磁盘挂载Mount
磁盘的分区和格式化之后,如何使用,这就涉及到了挂载这块磁盘。
挂载分区前需要创建挂载点,挂载点以目录形式出现
如何往挂载点目录写入数据,实际上会写入到该分区
挂载点建议是空目录,不是也不影响挂载分区的使用
临时挂载磁盘
mount命令 mount [-fnrsvw] [-t vfsytpe] [-o options] device directory -r:readonly -w:read and write -n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中,-n用于禁用此特性; -t:指明要挂载的设备上的文件系统的类型:多数情况下可以省略,此时mount会通过blkid来判断挂载的设备的文件系统类型 -L:LABEL:挂载时以卷标的方式指明设备 -U UUID:挂载时以UUID的方式指明设备。
//-o option:挂载参数,可写fstab配置文件,也可以mount时使用-o参数指定 参数 参数意义 系统默认值 async 系统每隔一段时间把内存数据写入磁盘中 sync 时时同步内存和磁盘中的数据 suid,nosuid 允许/不允许分区有suid属性 suid rw,ro 可以指定文件系统是只读(ro)或可写(rw) rw exec,noexec 允许/不允许可执行文件执行,不要挂载跟分区 exec user,nouser 允许/不允许root外的其他用户挂载分区 nouser auto,noauto 开机自动挂载/不自动挂载 auto default 默认文件系统挂载设置 rw,suid,dev,exec,auto,nouser,async
/etc/fstab文件 每行定义一个要挂载的文件系统及相关属性: 6个字段: 1)要挂载的设备: 设备文件: LABEL: UUID 伪文件系统:如sysfs、proc、tmpfs等; 2)挂载点 swap类型的设备挂载点为swap 3)文件系统类型 4)挂载选项: defaults:使用默认挂载选项: 如果需要同时指明多个挂载选项,彼此间以逗号分隔; 5)转储频率(备份): 0:从不备份 1:每天备份一次 2:每隔一天备份一次 6)自检次序: 0:不自检 1:首先自检,通常只能是跟文件系统 2:次级自检
命令:mount挂载磁盘,实质为文件系统指定访问入口
mount -t //指定文件系统挂载分区,如ext4,xfs mount -a //读取/etc/fstab配置文件的所有分区 mount -o //指定挂载参数
//fstab被损坏情况下,让只读文件系统可写(正常情况下不使用) [root@xiaoming ~]# mount -o rw,remount / //挂载/dev/sdb1至db1目录 [root@xiaoming ~]# mkdir -pv /db1 [root@xiaoming ~]# mount -t xfs /dev/sdb1 /db1/ //报错信息如下 [root@xiaoming ~]# mount /dev/sdb1 /data1 mount: /dev/sdb1 is write-protected, mounting read-only mount: unknown filesystem type ‘(null)‘
//解决办法,格式化报错的分区 [root@xiaoming ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=6400 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=25600, 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 [root@xiaoming ~]# mount /dev/sdb1 /data1
永久挂载磁盘
//使用blkid命令获取各分区的UUID [root@xiaoming ~]# blkid | grep "sdb1" /dev/sdb1: UUID="26b84a63-b5ce-4fba-9854-82ec721703ab" TYPE="xfs" //使用UUID挂载磁盘sdb1分区至于db1,临时挂载 [root@xiaoming ~]# mount UUID="26b84a63-b5ce-4fba-9854-82ec721703ab" /data1 使用uuid自动挂载: [root@xiaoming ~]# blkid /dev/sdb1 | awk ‘{print $2}‘>>/etc/fstab [root@xiaoming ~]# blkid /dev/sdb2 | awk ‘{print $2}‘>>/etc/fstab [root@xiaoming ~]# blkid /dev/sdb3 | awk ‘{print $2}‘>>/etc/fstab [root@xiaoming ~]# blkid /dev/sdc1 | awk ‘{print $2}‘>>/etc/fstab [root@xiaoming ~]# blkid /dev/sdc2 | awk ‘{print $2}‘>>/etc/fstab [root@xiaoming ~]# cat /etc/fstab ...... UUID="26b84a63-b5ce-4fba-9854-82ec721703ab" /data1 auto defaults 0 0 UUID="4789c813-0177-4642-bd60-d3cc52b99850" /data2 auto defaults 0 0 UUID="0e49b4c4-499f-4a72-8627-1b99471779a5" /data3 auto defaults 0 0 UUID="df66844e-c306-40c4-bf78-81e484ce089a" /data4 auto defaults 0 0 UUID="12bbd29a-45d9-4acb-8cd0-c6cd09f556e8" /data5 auto defaults 0 0
indows server 2008服务器操作系统
我们的移动设备(移动硬盘),有时通过usb接上以后,可以识别硬盘,但是看不到分区,是因为系统没有自动分配盘符
//读取/etc/fstab配置文件的所有分区 [root@xiaoming ~]# mount -a 卸载挂载磁盘 umount -lf //强制性卸载挂载 //使用站点目录卸载 [root@xiaoming data3]# umount /data1 //使用设备名卸载/dev/sdb1 [root@xiaoming data3]# umount /dev/sdb1
//umout不能卸载的情况 [root@xiaoming data3]# umount /dev/sdb3 umount: /data3: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) //如上情况解决办法有两种,切换至其他目录,或使用“-l”选项强制卸载 [root@xiaoming data3]# umount -l /dev/sdb3
虚拟磁盘SWAP
分区一般指定虚拟内存的大小为实际内存的1-1.5倍。如果实际内存超过8GB,可以直接划分16GB给虚拟内存即可,如果虚拟内存不够用的情况,
须增加一个虚拟磁盘,由于不能给原有的磁盘重新分区,所以可以选择新建。
1.创建swapfile [root@xiaoming data3]# dd if=/dev/null of=/opt/swapfile bs=40K count=102400 //if:指定源,一般写/dev/zero //of:指定目标 //bs:指定块大小 //count:数量 2.格式化swap分区 [root@xiaoming ~]# mkswap [-f] /opt/swapfile Setting up swapspace version 1, size = 4095996 KiB no label, UUID=78974789-cfee-45a5-a0f2-6c86706f1f80 3.检测当前swap分区情况 [root@xiaoming ~]# free -m total used free shared buff/cache available Mem: 1819 129 71 9 1619 1518 Swap: 2047 0 2047 4.启动虚拟磁盘,并检查 //启动swapfile时,会提示权限过高,按照提示修改即可 [root@xiaoming ~]# swapon /opt/swapfile swapon: /opt/swapfile: insecure permissions 0644, 0600 suggested. [root@xiaoming ~]# free -m total used free shared buff/cache available Mem: 1819 132 67 9 1619 1514 Swap: 6047 0 6047 5.关闭寻磁盘,并检查 [root@xiaoming ~]# swapoff /opt/swapfile [root@xiaoming ~]# free -m total used free shared buff/cache available Mem: 1819 129 70 9 1619 1517 Swap: 2047 0 2047
创建swap分区并且持久化使用
查看内存和交换分区的使用情况 free -m 1.新建一个分区,并且把分区类型改为82 Command (m for help): l 列出所以分区类型 fdisk /dev/sdb Command (m for help): t 修改分区类型 Partition number (1-6, default 6): 5 修改分区号 Hex code (type L to list all codes): 82 修改分区类型 Changed type of partition ‘Linux‘ to ‘Linux swap / Solaris‘ Command (m for help): p .... /dev/sdb5 21180416 31666175 5242880 82 Linux swap / Solaris Command (m for help): w partprobe /dev/sdb 2.把sdb2格式化为交换分区 [root@xiaoming ~]# mkswap /dev/sdb5 mkswap: /dev/sdb5: warning: wiping old ext4 signature. Setting up swapspace version 1, size = 5242876 KiB 3.启动交换分区 swapon /dev/sdb5或swapon -a 启动所有的交换分区 查看inode使用情况 swapon -s 4.持久化保存交换分区的使用 blkid /dev/sdb5 /dev/sdb5: UUID="bdd41e71-9694-40b8-b054-fdf8eaf8105c" TYPE="swap" blkid /dev/sdb5 | awk ‘{print $2}‘ >>/etc/fstab vim /etc/fstab ... UUID="bdd41e71-9694-40b8-b054-fdf8eaf8105c" swap swap defaults 0 0
生产磁盘故障案例
inode被沾满,导致磁盘有可用的剩余空间也无法继续使用
[root@xiaoming ~]# df -i /data1 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 51200 3 51197 1% /data1 //inode被沾满 [root@xiaoming ~]# touch /data1/{1..51300}.txt touch: cannot touch ‘/data1/51262.txt‘: No space left on device touch: cannot touch ‘/data1/51263.txt‘: No space left on devic .... //inode被沾满,剩余block也是无法继续使用 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sdb1 51200 51200 0 100% /data1 [root@xiaoming ~]# df -h /data1 Filesystem Size Used Avail Use% Mounted on /dev/sdb1 97M 33M 65M 34% /data1 //处理办法 [root@xiaoming ~]# find /data1 -size -1k -delete
Block空间即将被沾满,但删除大文件也没有释放空间
假设现在线上正在运行Nginx服务、Nginx产生的日子已经达到了20个G,磁盘眼看着就要满了,请问不重启Ngnix方式如何解决
//是会删除文件,但Nginx持续占用着文件,所以空间并不会被释放 rm -f access.log //正确的做法如下,清空该文件即可释放文件内容 > access.log
标签:text spl linu 开机 auto mkfs格式化 权限 nginx 大于
原文地址:https://www.cnblogs.com/xmtxh/p/12112785.html