Linux命令 磁盘管理
8. 磁盘,文件管理¶
8.1 fdisk¶
Linux fdisk是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。
语法
fdisk [必要参数][选择参数]
必要参数:
-l 列出素所有分区表 -u 与"-l"搭配使用,显示分区数目
选择参数:
-s<分区编号> 指定分区 -v 版本信息
菜单操作说明
m :显示菜单和帮助信息 a :活动分区标记/引导分区 d :删除分区 l :显示分区类型 n :新建分区 p :显示分区信息 q :退出不保存 t :设置分区号 v :进行分区检查 w :保存修改 x :扩展应用,高级功能
例子
root@leco:~# fdisk -l Disk /dev/loop0: 253.5 MiB, 265785344 bytes, 519112 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/loop2: 89.1 MiB, 93454336 bytes, 182528 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/loop3: 89.1 MiB, 93429760 bytes, 182480 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: 223.6 GiB, 240057409536 bytes, 468862128 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: 19EDA916-28A9-4CBE-B561-893ECC2FDC4D 设备 Start 末尾 扇区 Size 类型 /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 443797503 442746880 211.1G Linux filesystem /dev/sda3 443797504 468860927 25063424 12G Linux swap
8.2 partprobe¶
partprobe: 通知系统分区表的变化
root@leco:~# partprobe /dev/sda
8.3 mkfs¶
Linux mkfs命令用于在特定的分区上建立 linux 文件系统
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
将sda6分区格式化为ext3格式 mfks -t ext3 /dev/sda6
8.5 mount¶
Linux mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件。
mount [-hV] mount -a [-fFnrsvw] [-t vfstype] mount [-fnrsvw] [-o options [,...]] device | dir mount [-fnrsvw] [-t vfstype] [-o options] device dir
- V:显示程序版本
- h:显示辅助讯息
- v:显示较讯息,通常和 -f 用来除错。
- a:将 /etc/fstab 中定义的所有档案系统挂上。
- F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
- f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
- n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
- s-r:等于 -o ro
- w:等于 -o rw
- L:将含有特定标签的硬盘分割挂上。
- U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
- t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
- o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
- o sync:在同步模式下执行。
- o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
- o auto、-o noauto:打开/关闭自动挂上模式。
- o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
- o dev、-o nodev-o exec、-o noexec允许执行档被执行。
- o suid、-o nosuid: 允 许执行档在 root 权限下执行。
- o user、-o nouser:使用者可以执行 mount/umount 的动作。
- o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
- o ro:用唯读模式挂上。
- o rw:用可读写模式挂上。
- o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
将 /dev/hda1 挂在 /mnt 之下
mount /dev/hda1 /mnt
将 /dev/hda1 用唯读模式挂在 /mnt 之下。
mount -o ro /dev/hda1 /mnt
将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。
mount -o loop /tmp/image.iso /mnt/cdrom
8.6 umount¶
Linux umount命令用于卸除文件系统。
umount可卸除目前挂在Linux目录中的文件系统。
umount [-ahnrvV][-t <文件系统类型>][文件系统]
- a 卸除/etc/mtab中记录的所有文件系统。
- h 显示帮助。
- n 卸除时不要将信息存入/etc/mtab文件中。
- r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
- t<文件系统类型> 仅卸除选项中所指定的文件系统。
- v 执行时显示详细的信息。
- V 显示版本信息。
- [文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。
# umount -v /dev/sda1 通过设备名卸载 /dev/sda1 umounted # umount -v /mnt/mymount/ 通过挂载点卸载 /tmp/diskboot.img umounted
如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:
# umount -v /mnt/mymount/ umount: /mnt/mymount: device is busy umount: /mnt/mymount: device is busy
8.7 df¶
Linux df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。
df [选项]... [FILE]...
- 文件-a, --all 包含所有的具有 0 Blocks 的文件系统
- 文件--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
- 文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
- 文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
- 文件-i, --inodes 列出 inode 资讯,不列出已使用 block
- 文件-k, --kilobytes 就像是 --block-size=1024
- 文件-l, --local 限制列出的文件结构
- 文件-m, --megabytes 就像 --block-size=1048576
- 文件--no-sync 取得资讯前不 sync (预设值)
- 文件-P, --portability 使用 POSIX 输出格式
- 文件--sync 在取得资讯前 sync
- 文件-t, --type=TYPE 限制列出文件系统的 TYPE
- 文件-T, --print-type 显示文件系统的形式
- 文件-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
- 文件-v (忽略)
- 文件--help 显示这个帮手并且离开
- 文件--version 输出版本资讯并且离开
显示文件系统的磁盘使用情况统计:
root@leco:~# df 文件系统 1K-块 已用 可用 已用% 挂载点 udev 6028460 0 6028460 0% /dev tmpfs 1211664 128196 1083468 11% /run /dev/sda2 217768884 195109476 11574352 95% / tmpfs 6058316 137964 5920352 3% /dev/shm tmpfs 5120 4 5116 1% /run/lock tmpfs 6058316 0 6058316 0% /sys/fs/cgroup /dev/loop2 91264 91264 0 100% /snap/core/7917 /dev/sda1 523248 3496 519752 1% /cmz cgmfs 100 0 100 0% /run/cgmanager/fs tmpfs 1211664 36 1211628 1% /run/user/108 tmpfs 1211664 128 1211536 1% /run/user/1000 /dev/loop0 259584 259584 0 100% /media/leco/disk /dev/loop3 91264 91264 0 100% /snap/core/8039 # -h选项,通过它可以产生可读的格式df命令的输出: root@leco:~# df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 5.8G 0 5.8G 0% /dev tmpfs 1.2G 126M 1.1G 11% /run /dev/sda2 208G 187G 12G 95% / tmpfs 5.8G 135M 5.7G 3% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 5.8G 0 5.8G 0% /sys/fs/cgroup /dev/loop2 90M 90M 0 100% /snap/core/7917 /dev/sda1 511M 3.5M 508M 1% /cmz cgmfs 100K 0 100K 0% /run/cgmanager/fs tmpfs 1.2G 36K 1.2G 1% /run/user/108 tmpfs 1.2G 128K 1.2G 1% /run/user/1000 /dev/loop0 254M 254M 0 100% /media/leco/disk /dev/loop3 90M 90M 0 100% /snap/core/8039
我们可以看到输出显示的数字形式的'G'(千兆字节),"M"(兆字节)和"K"(千字节)。 这使输出容易阅读和理解,从而使显示可读的。请注意,第二列的名称也发生了变化,为了使显示可读的"大小"。
- 第一列指定文件系统的名称,
- 第二列指定一个特定的文件系统1K-块1K是1024字节为单位的总内存。用和可用列正在使用中,分别指定的内存量。使用列指定使用的内存的百分比
- 最后一栏"安装在"指定的文件系统的挂载点。
df也可以显示磁盘使用的文件系统信息:
root@leco:~# ls data.sql data.sql root@leco:~# du -sh data.sql 251M data.sql root@leco:~# df data.sql 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda2 217768884 195109788 11574040 95% /
用一个-i选项的df命令的输出显示inode信息而非块使用量。
root@leco:~# df -i 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 udev 1507115 514 1506601 1% /dev tmpfs 1514579 3973 1510606 1% /run /dev/sda2 13836288 1099589 12736699 8% / tmpfs 1514579 113 1514466 1% /dev/shm tmpfs 1514579 9 1514570 1% /run/lock tmpfs 1514579 19 1514560 1% /sys/fs/cgroup /dev/loop2 12829 12829 0 100% /snap/core/7917 /dev/sda1 0 0 0 - /cmz cgmfs 1514579 15 1514564 1% /run/cgmanager/fs tmpfs 1514579 28 1514551 1% /run/user/108 tmpfs 1514579 48 1514531 1% /run/user/1000 /dev/loop0 28782 28782 0 100% /media/leco/disk /dev/loop3 12842 12842 0 100% /snap/core/8039 root@leco:~#
8.8 du¶
Linux du命令用于显示目录或文件的大小。du会显示指定的目录或文件所占用的磁盘空间。
du[-abcDhHklmsSx][-L<符号连接>][-X<文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]
- -a或-all 显示目录中个别文件的大小。
- -b或-bytes 显示目录或文件大小时,以byte为单位。
- -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
- -D或--dereference-args 显示指定符号连接的源文件大小。
- -h或--human-readable 以K,M,G为单位,提高信息的可读性。
- -H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
- -k或--kilobytes 以1024 bytes为单位。
- -l或--count-links 重复计算硬件连接的文件。
- -L<符号连接>或--dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
- -m或--megabytes 以1MB为单位。
- -s或--summarize 仅显示总计。
- -S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
- -x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
- -X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
- --exclude=<目录或文件> 略过指定的目录或文件。
- --max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
- --help 显示帮助。
- --version 显示版本信息。
root@leco:~/cmz# du|head 108 ./vue-devtools/src/backend 16 ./vue-devtools/src/devtools/plugins 56 ./vue-devtools/src/devtools/components 8 ./vue-devtools/src/devtools/locales 120 ./vue-devtools/src/devtools/assets 20 ./vue-devtools/src/devtools/style 24 ./vue-devtools/src/devtools/mixins 24 ./vue-devtools/src/devtools/views/events 24 ./vue-devtools/src/devtools/views/routes 16 ./vue-devtools/src/devtools/views/settings
查看单个文件大小 root@leco:~/cmz# du -sh 1.py 4.0K 1.py 查看单个目录 root@leco:~/cmz# du -h chain/ | head 4.0K chain/ven3/include 8.0K chain/ven3/lib/python3.6/distutils/__pycache__ 20K chain/ven3/lib/python3.6/distutils 672K chain/ven3/lib/python3.6/__pycache__ 108K chain/ven3/lib/python3.6/site-packages/pkg_resources/__pycache__ 256K chain/ven3/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__ 72K chain/ven3/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__ 156K chain/ven3/lib/python3.6/site-packages/pkg_resources/_vendor/packaging 704K chain/ven3/lib/python3.6/site-packages/pkg_resources/_vendor 8.0K chain/ven3/lib/python3.6/site-packages/pkg_resources/extern/__pycache__