Linux磁盘管理
文章来源于菜鸟教程:http://www.runoob.com/linux
在这里为了加深记忆,所以写当前文章。如果版权问题,留言。
Linux 磁盘管理
Linux磁盘管理好坏直接关系到整个系统性能问题。
Linux磁盘管理常用三个命令为df 、du和fdisk。
- df : 列出文件系统整个磁盘使用量
- du: 检查磁盘空间使用量
- fdisk:用于磁盘分区
df
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘占用了多少空间,目前还剩下多少空间等信息。
语法:
df [-ahikHTm] 目录或文件名
选项与参数:
- -a: 列出所有的文件系统,包括系统特有的/proc等文件系统;
- -k:以KBytes的容量显示各文件系统;
- -m:以MBytes的容量显示各文件系统;
- -h:以人们交易阅读的GBytes,MBytes,KBytes等格式自行显示;
- -H:以M=1000k取代M=1024K的禁止方式;
- -T:显示文件系统类型,连同该partition的filesystem名称(例如ext3)也列出;
- -i:不用硬盘容量,而已inode的数量显示
实例1:
将系统内所有的文件系统列出来!
[root@centos0921 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 17814528 1098436 16716092 7% / devtmpfs 487948 0 487948 0% /dev tmpfs 498976 0 498976 0% /dev/shm tmpfs 498976 7788 491188 2% /run tmpfs 498976 0 498976 0% /sys/fs/cgroup /dev/sda1 1038336 126600 911736 13% /boot tmpfs 99796 0 99796 0% /run/user/0
在Linux底下如果df没有任何选项,那么默认会将系统内所有的(不含特殊内存内的文件文件系统与swap)都以1KBytes的内容量列出来。
实例2:
将容量结果以易读的容量格式显示出来
[root@centos0921 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 17G 1.1G 16G 7% / devtmpfs 477M 0 477M 0% /dev tmpfs 488M 0 488M 0% /dev/shm tmpfs 488M 7.7M 480M 2% /run tmpfs 488M 0 488M 0% /sys/fs/cgroup /dev/sda1 1014M 124M 891M 13% /boot tmpfs 98M 0 98M 0% /run/user/0
实例3:
将系统内所有的特殊文件格式及名称都列出来
[root@centos0921 ~]# df -aT Filesystem Type 1K-blocks Used Available Use% Mounted on rootfs - - - - - / sysfs sysfs 0 0 0 - /sys proc proc 0 0 0 - /proc devtmpfs devtmpfs 487948 0 487948 0% /dev securityfs securityfs 0 0 0 - /sys/kernel/security tmpfs tmpfs 498976 0 498976 0% /dev/shm devpts devpts 0 0 0 - /dev/pts tmpfs tmpfs 498976 7788 491188 2% /run tmpfs tmpfs 498976 0 498976 0% /sys/fs/cgroup cgroup cgroup 0 0 0 - /sys/fs/cgroup/systemd pstore pstore 0 0 0 - /sys/fs/pstore cgroup cgroup 0 0 0 - /sys/fs/cgroup/cpuset cgroup cgroup 0 0 0 - /sys/fs/cgroup/hugetlb cgroup cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct cgroup cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio cgroup cgroup 0 0 0 - /sys/fs/cgroup/blkio cgroup cgroup 0 0 0 - /sys/fs/cgroup/perf_event cgroup cgroup 0 0 0 - /sys/fs/cgroup/memory cgroup cgroup 0 0 0 - /sys/fs/cgroup/devices cgroup cgroup 0 0 0 - /sys/fs/cgroup/pids cgroup cgroup 0 0 0 - /sys/fs/cgroup/freezer configfs configfs 0 0 0 - /sys/kernel/config /dev/sda3 xfs 17814528 1098176 16716352 7% / selinuxfs selinuxfs 0 0 0 - /sys/fs/selinux systemd-1 - - - - - /proc/sys/fs/binfmt_misc mqueue mqueue 0 0 0 - /dev/mqueue hugetlbfs hugetlbfs 0 0 0 - /dev/hugepages debugfs debugfs 0 0 0 - /sys/kernel/debug /dev/sda1 xfs 1038336 126600 911736 13% /boot tmpfs tmpfs 99796 0 99796 0% /run/user/0 binfmt_misc binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
实例4:
将/etc底下的可用磁盘容量以易读的容量格式显示
[root@centos0921 ~]# df -h /etc/ Filesystem Size Used Avail Use% Mounted on /dev/sda3 17G 1.1G 16G 7% /
du
Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间查看,还是和df命令有一些区别的,这里介绍Linux du命令。
语法:
du [-ahskm] 文件或目录名称
选项与参数:
- -a:列出所有文件与目录容量,因为默认仅统计目录底下的文件量而已。
- -h:以人们易读的容量格式(G/M)显示;
- -s:列出总量而已,并不列出每个各别目录占用量;
- -S:不包含子目录下的总计,与-s有点区别。
- -k:以KBytes列出容量显示;
- -m:以MBytes列出容量显示;
实例1:
列出目录下所有文件容量
[root@centos0921 ~]# du
20 ./.ssh <==每个目录都会列出来 包括隐藏文件的目录
56 . <==这个目录(.)所占用的总量
直接输入du没有加任何选项时,则du会分析当前所在目录的文件与目录所占用的硬盘空间。
实例2:
将文件的容量也列出来
有文件的列表了
[root@centos0921 ~]# du -a 4 ./.bash_logout 4 ./.bash_profile 4 ./.bashrc 4 ./.cshrc 4 ./.tcshrc 4 ./anaconda-ks.cfg 4 ./.bash_history 4 ./.ssh/id_rsa_2048.pub 4 ./.ssh/id_rsa 4 ./.ssh/id_rsa.pub 4 ./.ssh/known_hosts 4 ./.ssh/authorized_keys 20 ./.ssh 4 ./passwd.txt 4 ./user.txt 56 .
实例3:
检查根目录下每个目录所占用的容量
[root@centos0921 ~]# du -sm /*
0 /bin
92 /boot
0 /dev
30 /etc
1 /home
0 /lib
0 /lib64
0 /media
0 /mnt
0 /opt
du: cannot access ‘/proc/11179/task/11179/fd/4’: No such file or directory
du: cannot access ‘/proc/11179/task/11179/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/11179/fd/4’: No such file or directory
du: cannot access ‘/proc/11179/fdinfo/4’: No such file or directory
0 /proc
1 /root
8 /run
0 /sbin
0 /srv
0 /sys
1 /tmp
878 /usr
120 /var
通配符*来代表每个目录。
与df不一样的是,du这个命令其实会直接到文件系统内去寻找所有的文件数据。
fdisk
fdisk 是Linux 的磁盘分区表操作工具。
语法:
fdisk [-l] 装置名称
选项与参数:
- -l:输出后面接的装置所有的区内容,若仅有fdisk -l时,则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
实例1:
列出所有分区信息
[root@centos0921 ~]# fdisk -l Disk /dev/sda: 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: 0x000aa620 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 6293503 2097152 82 Linux swap / Solaris /dev/sda3 6293504 41943039 17824768 83 Linux
实例2:
找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息
[root@centos0921 ~]# df / <==注意:重点在找出磁盘文件名而已 Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 17814528 1098180 16716348 7% / [root@centos0921 ~]# fdisk /dev/sda <==仔细看,不要加上数字喔! 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. Command (m for help): <==等待你的输入!
输入m后,就会看到底下这些命令介绍
Command (m for help): m <== 输入 m 后,就会看到底下这些命令介绍 Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition <==删除一个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 <==新增一个partition o create a new empty DOS partition table p print the partition table <==在屏幕上显示分割表 q quit without saving changes <==不储存离开fdisk程序 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)
离开fdisk时按q,那么所有的动作都不会生效!相反的,按下w就是动作生效的意思。
Command (m for help): p <== 这里可以输出目前磁盘的状态 Disk /dev/sda: 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: 0x000aa620 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 6293503 2097152 82 Linux swap / Solaris /dev/sda3 6293504 41943039 17824768 83 Linux # 装置文件名 启动区否 开始磁柱 结束磁柱 1K大小容量 磁盘分区槽内的系统
想要不存储离开吗? 按下q就对了!不要随便按w啊!
使用p可以列出目前这个磁盘分割表信息,这个信息上半部分在显示整个磁盘的状态。
磁盘格式化
磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常简单,使用mkfs (make filesystem)命令。
语法
mkfs [-t 文件系统格式] 装置文件名
选项与参数:
- -t:可以接文件系统格式,例如ext3 、ext2、vfat等(系统有支持才会生效)
实例1:
查看mkfs 支持的文件格式
[root@centos0921 ~]# mkfs <==两下tab键
mkfs mkfs.cramfs mkfs.ext3 mkfs.minix
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.xfs
按下两个tab, 会发现mkfs支持的文件格式如上所示。
实例2:
将分区/dev/hdc6(可指定你自己的分区)格式化为ext3文件系统:
[root@centos0921 ~]# mkfs -t ext3 /dev/hdc6 mke2fs 1.39 (29-May-2006) Filesystem label= <==这里指的是分割槽的名称(label) OS type: Linux Block size=4096 (log=2) <==block 的大小配置为 4K Fragment size=4096 (log=2) 251392 inodes, 502023 blocks <==由此配置决定的inode/block数量 25101 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=515899392 16 block groups 32768 blocks per group, 32768 fragments per group 15712 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (8192 blocks): done <==有日志记录 Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. # 这样就创建起来我们所需要的 Ext3 文件系统了!简单明了!
磁盘检查
fsck(file system check)用来检查和维护不一致的文件系统。
若系统掉电或磁盘繁盛问题,可以利用fsck命令对文件系统进行检查。
语法:
fsck [-t 文件系统] [-ACay] 装置名称
选项与参数:
- -t:给定档案系统的形式,若在/etc/fstab中已经有定义或kernel本身已经支援的则不需加上此参数
- -s:依序一个一个的执行fsck的指令来检查
- -A:对/etc/fstab中所有列出的分区(partition)做检查
- -C:显示完整的检查进度
- -d:打印出e2fsck的debug结果
- -p:同时有-A条件时,同时有多个fsck的检查一起执行
- -R:同时有-A条件时,省略/不检查
- -V:详细显示模式
- -a:如果检查有错则自动修复
- -r:如果检查有错则由使用者回答是否修复
- -y选项指定检查每个文件是自动输入yes,在不确定哪些是不正常的时候,可以执行#fsck -y全部检查修复。
实例1:
查看系统有多少文件系统支持fsck命令:
[root@centos0921 ~]# fsck <==两次tab
fsck fsck.cramfs fsck.ext3 fsck.minix
fsck.btrfs fsck.ext2 fsck.ext4 fsck.xfs
磁盘挂载与卸除
Linux的磁盘挂载使用mount命令,卸载使用unmount命令。
磁盘挂载语法:
mount [-t 文件系统] [-L Lable名] [-o 额外选项] [-n] 装置文件名 挂载点
实例1:
用默认的方式,将/dev/cdrom 挂载到 /mnt/cdrom上面
[root@centos0921 ~]# mkdir /mnt/cdrom [root@centos0921 ~]# ll /mnt total 0 drwxr-xr-x. 2 root root 6 Sep 28 23:02 cdrom [root@centos0921 ~]# mount /dev/cdrom /mnt/cdrom/ mount: /dev/sr0 is write-protected, mounting read-only
[root@centos0921 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 17814528 1098180 16716348 7% / devtmpfs 487948 0 487948 0% /dev tmpfs 498976 0 498976 0% /dev/shm tmpfs 498976 7788 491188 2% /run tmpfs 498976 0 498976 0% /sys/fs/cgroup /dev/sda1 1038336 126600 911736 13% /boot tmpfs 99796 0 99796 0% /run/user/0 /dev/sr0 4364408 4364408 0 100% /mnt/cdrom
磁盘卸载命令umount语法:
umount [-fn] 装置文件名或挂载点
选项与参数:
- -f:强制卸除,可用在类似网络文件系统(NFS)无法读取到的情况下;
- -n:不升级/etc/mtab情况卸除。
卸载/dev/cdrom
[root@centos0921 ~]# umount /dev/cdrom [root@centos0921 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 17814528 1098180 16716348 7% / devtmpfs 487948 0 487948 0% /dev tmpfs 498976 0 498976 0% /dev/shm tmpfs 498976 7788 491188 2% /run tmpfs 498976 0 498976 0% /sys/fs/cgroup /dev/sda1 1038336 126600 911736 13% /boot tmpfs 99796 0 99796 0% /run/user/0