• 可以使用smartctl来查看你的disk的信息; smartctl的disk路径和名字可以通过命令cat /proc/partitions 来得到。sudo smartctl -d ata -a /dev/sda smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-327.36.3....

    可以使用smartctl来查看你的disk的信息;
    smartctl的disk路径和名字可以通过命令cat /proc/partitions 来得到。

    sudo smartctl -d ata -a /dev/sda           
    smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-327.36.3.el7.x86_64] (local build)
    Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
    
    === START OF INFORMATION SECTION ===
    Device Model:     MTFDDAK512MBF-xx
    Serial Number:    xxx
    LU WWN Device Id: xxx
    Firmware Version: xxx
    User Capacity:    512,110,190,592 bytes [512 GB]
    Sector Size:      512 bytes logical/physical
    Rotation Rate:    Solid State Device
    Device is:        Not in smartctl database [for details use: -P showall]
    ATA Version is:   ACS-3 (unknown minor revision code: 0x011b)
    SATA Version is:  SATA >3.1, 6.0 Gb/s (current: 6.0 Gb/s)
    Local Time is:    Wed Dec  6 10:22:40 2017 CST
    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled
    ...
    

    从Device Model中,可以知道,我的硬盘是MTFDDAK512MBF,在网址google一下,就知道它是Micron产的,具体的内容为了安全考虑,我就不贴出来了。

    smartctl中的type的解释:
    ATA, SCSI command sets and SAT

    In the past there has been a clear distinction between storage devices that used the ATA and SCSI command sets. This distinction was often reflected in their device naming and hardware. Now various SCSI transports (e.g. SAS, FC and iSCSI) can interconnect to both SCSI disks (e.g. FC and SAS) and ATA disks (especially SATA). USB and IEEE 1394 storage devices use the SCSI command set externally but almost always contain ATA or SATA disks (or flash). The storage subsystems in some operating systems have started to remove the distinction between ATA and SCSI in their device naming policies.

    99% of operations that an OS performs on a disk involve the SCSI INQUIRY, READ CAPACITY, READ and WRITE commands, or their ATA equivalents. Since the SCSI commands are slightly more general than their ATA equivalents, many OSes are generating SCSI commands (mainly READ and WRITE) and letting a lower level translate them to their ATA equivalents as the need arises. An important note here is that “lower level” may be in external equipment and hence outside the control of an OS.

    SCSI to ATA Translation (SAT) is a standard (ANSI INCITS 431-2007) that specifies how this translation is done. For the other 1% of operations that an OS performs on a disk, SAT provides two options. First is an optional ATA PASS-THROUGH SCSI command (there are two variants). The second is a translation from the closest SCSI command. Most current interest is in the “pass-through” option.

    The relevance to smartmontools (and hence smartctl) is that its interactions with disks fall solidly into the “1%” category. So even if the OS can happily treat (and name) a disk as “SCSI”, smartmontools needs to detect the native command set and act accordingly. As more storage manufacturers (including external SATA drives) comply with SAT, smartmontools is able to automatically distinguish the native command set of the device. In some cases the ‘-d sat’ option is needed on the command line.

    There are also virtual disks which typically have no useful information to convey to smartmontools, but could conceivably in the future. An example of a virtual disk is the OS’s view of a RAID 1 box. There are most likely two SATA disks inside a RAID 1 box. Addressing those SATA disks from a distant OS is a challenge for smartmontools. Another approach is running a tool like smartmontools inside the RAID 1 box (e.g. a Network Attached Storage (NAS) box) and fetching the logs via a browser.

    ref: https://linux.die.net/man/8/smartctl
    http://www.tutorialspoint.com/unix_commands/smartctl.htm

    展开全文
  • 原文链接:http://www.javaarch.net/jiagoushi/582.htm #按照目录大小排序战士最前面15个目录或者文件 du -xB M --max-depth=2 /var | sort -rn | head -n 15 ... #列出当前所有子目录的文件大小 ... du -s *




    	#按照目录大小排序战士最前面15个目录或者文件
    	du -xB M --max-depth=2 /var | sort -rn | head -n 15
    
    	#列出当前所有子目录的文件大小
    	du -h --max-depth=1
    
    	#列出当前文件或者目录最大的10个
    	du -s * | sort -n | tail
    
    	#按照目录大小从大到小排序
    	du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf "%.1f%s", $1>=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"): $1>=2**10? ($1/2**10, "K"): ($1, "")}e'
    
    	#列出path这个目录的文件树
    	du -h /path | sort -h
    
    	#每隔60s监控对应目录的文件大小变化
    	watch -n60 du /var/log/messages
    
    
    	#递归删除当前目录下所有子目录中的.svn目录
    	find . -type d -name '.svn' -print0 | xargs -0 rm -rdf
    
    	#列出当前磁盘的使用情况
    	df -P | column -t
    
    	#监控磁盘的使用情况
    	watch -d -n 5 df
    
    	#列出当前inode的使用情况
    	df -i  <partition>
    
    	#按照每个磁盘使用量从高到低排序
    	df -h | grep -v ^none | ( read header ; echo "$header" ; sort -rn -k 5)
    
    
    	#查看物理磁盘的使用情况
    	df -x tmpfs | grep -vE "(gvfs|procbususb|rootfs)"
    
    	#查看当前所有磁盘的大小和使用量
    	df -H
    
    	#查看所有分区使用情况
    	fdisk -l /dev/sda
    
    	# 显示系统所有的分区或给定的分区
    	fdisk -l       
    	# 显示时,显示的是扇区数不是柱面数           
    	fdisk -u           
    	 # 显示指定partition的block数       
    	fdisk -s partition       
    
    	#查看磁盘的读写容量
    	iostat -m -d /dev/sda1
    
    	#测试磁盘的读写速度
    	hdparm -t /dev/sda
    
    	#查看某个文件的所有链接
    	find -L / -samefile /path/to/file -exec ls -ld {} +
    
    	#查看最大的5个文件
    	find . -type f -exec ls -s {} \; | sort -n -r | head -5
    
    	#查看365天前的文件并删除
    	find ./ -type f -mtime +365 -exec rm -f {} \;
    
    	#查看大于100M的文件
    	find . -type f -size +100M


    展开全文
  • 这篇教程介绍如何快速为Linux系统创建RAM Disk。以下方法适用于任何Linux发行版。在Windows系统下创建RAM disk可能需要购买商业性软件,而Linux用户可以完全免费的启用这个很cool的功能。 什么是RAM Disk? RAM ...
    这篇教程介绍如何快速为Linux系统创建RAM Disk。以下方法适用于任何Linux发行版。在Windows系统下创建RAM disk可能需要购买商业性软件,而Linux用户可以完全免费的启用这个很cool的功能。
    

    什么是RAM Disk?

    RAM disk在英文里也被称为RAM drive。它将一部分内存分配出来,格式化成一个文件系统(tmpfs),然后挂载到硬盘的一个目录下,就能像使用硬盘分区一样创建、删除文件和目录。

    为什么要使用RAM Disk?

    RAM的速度非常非常地快,即使是现在最快的固态硬盘(SSD),跟内存的速度比起来根本不值得一提。而现在计算机的性能瓶颈就是硬盘。 RAM disk的优点:
    • 非常快
    • 能够进行无数次读取和写入操作
    RAM disk的缺点:
    • 内存是易失性存储器,这意味着当计算机关机或重启时,RAM disk里的内容会全部消失。不过在某些情况下,这也能变成一个优点来利用。
    • 内存的价格昂贵,所以RAM disk的容量有限。你得注意不要分配太多的空间给RAM disk。
    当系统产生大量临时数据或缓存时,如Nginx FastCGI缓存,RAM disk是绝佳的选择。如果你使用固态硬盘(SSD),某些目录需要经常读写时,你可以将这些目录挂载为RAM disk。这样就减少了对固态硬盘的写入次数,延长使用寿命。我也会在我的计算机上使用RAM disk来临时存储网站的截图,当电脑关机或重启时,这些截图会自动消失,不需要我手动清理。

    如何为Linux系统创建RAM Disk

    首先创建一个目录,这个目录可以在文件系统的任何位置,比如:
    sudo mkdir /tmp/ramdisk
    如果你想让所有用户使用这个RAM disk,那么更改目录的权限。
    sudo chmod 777 /tmp/ramdisk
    然后,查看系统还有多少可用的内存空间。我们可以使用htop来查看。
    htop
    htop-check-memory-usage-on-linux 接下来,我们需要指定RAM disk的大小文件系统设备名,然后将它挂载到一个目录下。从上面的截图可以发现,我的系统还有大量可用的内存空间,所以我完全可以分配1G给RAM disk。运行下面的一行命令。
    sudo mount -t tmpfs -o size=1024m myramdisk /tmp/ramdisk
    这条命令指定文件系统为tmpfs,RAM disk大小为1024MB,myramdisk是我给它指定的设备名。 如果我们运行下面的命令:
    mount | tail -n 1
    我们可以发现,RAM disk成功地挂载到了/tmp/ramdisk。 linux-ramdisk 现在,如果我将一个530.7M的视频文件复制到/tmp/ramdisk目录下,我的内存使用量会突然升到3.41G。 linux-ramdisk-tmpfs 如果我卸载RAM disk,内存使用量降到原点。 Linux-ramdisk-performance 这是测试RAM disk是否正常工作的一种方法。

    测试RAM disk速度

    测试RAM disk的写入速度,我们可以用dd工具。
    sudo dd if=/dev/zero of=/tmp/ramdisk/zero bs=4k count=10000
    我得到的值是1.3GB/s。测试读取速度,运行下面的命令:
    sudo dd if=/tmp/ramdisk/zero of=/dev/null bs=4k count=10000
    我得到的读取速度是2.5GB/s。我也对我的固态硬盘进行了测试,写入速度是534MB/s,读取速度是1.6GB/s。

    开机自动挂载RAM Disk

    编辑/etc/fstab文件。
    sudo nano /etc/fstab
    添加下面的条目。
    myramdisk  /tmp/ramdisk  tmpfs  defaults,size=1G,x-gvfs-show  0  0
    保存文件 。x-gvfs-show选项可以让你在文件管理器中看到你的RAM disk。 以上就是Linux创建RAM disk的基本知识。

    查看原文:https://www.linuxdashen.com/%e4%b8%ba%e4%bd%a0%e7%9a%84linux%e7%b3%bb%e7%bb%9f%e5%88%9b%e5%bb%baram-disk
    展开全文
  • 主要是运用 df 指令,df是disk filesystem的缩写 其后面还可以加很多有用的tag df -h

    主要是运用 df 指令,df是disk filesystem的缩写


    其后面还可以加很多有用的tag


    df -h 以适合人类阅读的格式显示,也就是把容量以多少G(giga bytes),多少M为单位来显示

    df -a 则是打印出最全的信息


    以上两种便是最常用的了,若欲了解其他用法,可以查看 http://www.tecmint.com/how-to-check-disk-space-in-linux/

    或者直接 df --help得到帮助信息



    展开全文
  • initrd是为了支持linux启动的两个阶段,而设计的临时根文件系统。通常,initrd内包含多种可执行文件和驱动库,用于实现最后挂载真实的根文件系统,并在之后卸载临时的initrd根文件系统并释放相应的内存。在很多...

         initrd是为了支持linux启动的两个阶段,而设计的临时根文件系统。通常,initrd内包含多种可执行文件和驱动库,用于实现最后挂载真实的根文件系统,并在之后卸载临时的initrd根文件系统并释放相应的内存。在很多嵌入式的Linux系统中,没有使用其他真实的根文件系统,而采用initrd做为最后使用的根文件系统。

        initrd被绑定到内核,并伴随内核启动过程被加载。initrd内部包含了必要的可执行文件和系统文件以支持Linux第二阶段的启动过程。

    创建initial RAM disk的两种方式

        linux内核版本不同,创建initial RAM disk的方式不一样,早期采用loop device构造,loop device允许挂载文件为块设备。在这种模式的系统内核下,可以采用以下方式打开initrd,并观察内部的文件。


     
    # mkdir temp ; cd temp
    # cp /boot/initrd.img.gz .
    # gunzip initrd.img.gz
    # mount -t ext -o loop initrd.img /mnt/initrd
    # ls -la /mnt/initrd

        新版本的内容一般采用压缩的cpio打包文件创建initrd镜像,替代原来采用loop device挂载文件作为压缩镜像的模式。在这种模式的系统中,可以用以下的命令查看initrd的内容。


     
    # mkdir temp ; cd temp
    # cp /boot/initrd-2.6.14.2.img initrd-2.6.14.2.img.gz
    # gunzip initrd-2.6.14.2.img.gz
    # cpio -i --make-directories < initrd-2.6.14.2.img

        从上面的命令,可以看到,initrd内部包含一个小型但又是必不可少的文件系统。


     
    # ls -la
    #
    drwxr-xr-x 10 root root 4096 May 7 02:48 .
    drwxr-x--- 15 root root 4096 May 7 00:54 ..
    drwxr-xr-x 2 root root 4096 May 7 02:48 bin
    drwxr-xr-x 2 root root 4096 May 7 02:48 dev
    drwxr-xr-x 4 root root 4096 May 7 02:48 etc
    -rwxr-xr-x 1 root root 812 May 7 02:48 init
    -rw-r--r-- 1 root root 1723392 May 7 02:45 initrd-2.6.14.2.img
    drwxr-xr-x 2 root root 4096 May 7 02:48 lib
    drwxr-xr-x 2 root root 4096 May 7 02:48 loopfs
    drwxr-xr-x 2 root root 4096 May 7 02:48 proc
    lrwxrwxrwx 1 root root 3 May 7 02:48 sbin -> bin
    drwxr-xr-x 2 root root 4096 May 7 02:48 sys
    drwxr-xr-x 2 root root 4096 May 7 02:48 sysroot

    创建一个简单的initrd

        传统的Linux系统,initrd镜像在Linux系统构建过程中创建,使用像mkinitrd等工具。mkinitrd实际上是个shell脚本程序。下面介绍一下mkinitrd是如何创建initrd的。

    mkinitrd文件内容


     
    #!/bin/bash

    # Housekeeping...
    rm -f /tmp/ramdisk.img
    rm -f /tmp/ramdisk.img.gz

    # Ramdisk Constants
    RDSIZE=4000
    BLKSIZE=1024

    # Create an empty ramdisk image
    dd if=/dev/zero of=/tmp/ramdisk.img bs=$BLKSIZE count=$RDSIZE

    # Make it an ext2 mountable file system
    /sbin/mke2fs -F -m 0 -b $BLKSIZE /tmp/ramdisk.img $RDSIZE

    # Mount it so that we can populate
    mount /tmp/ramdisk.img /mnt/initrd -t ext2 -o loop=/dev/loop0

    # Populate the filesystem (subdirectories)
    mkdir /mnt/initrd/bin
    mkdir /mnt/initrd/sys
    mkdir /mnt/initrd/dev
    mkdir /mnt/initrd/proc

    # Grab busybox and create the symbolic links
    pushd /mnt/initrd/bin
    cp /usr/local/src/busybox-1.1.1/busybox .
    ln -s busybox ash
    ln -s busybox mount
    ln -s busybox echo
    ln -s busybox ls
    ln -s busybox cat
    ln -s busybox ps
    ln -s busybox dmesg
    ln -s busybox sysctl
    popd

    # Grab the necessary dev files
    cp -a /dev/console /mnt/initrd/dev
    cp -a /dev/ramdisk /mnt/initrd/dev
    cp -a /dev/ram0 /mnt/initrd/dev
    cp -a /dev/null /mnt/initrd/dev
    cp -a /dev/tty1 /mnt/initrd/dev
    cp -a /dev/tty2 /mnt/initrd/dev

    # Equate sbin with bin
    pushd /mnt/initrd
    ln -s bin sbin
    popd

    # Create the init file
    cat >> /mnt/initrd/linuxrc << EOF
    #!/bin/ash
    echo
    echo "Simple initrd is active"
    echo
    mount -t proc /proc /proc
    mount -t sysfs none /sys
    /bin/ash --login
    EOF

    chmod +x /mnt/initrd/linuxrc

    # Finish up...
    umount /mnt/initrd
    gzip -9 /tmp/ramdisk.img
    cp /tmp/ramdisk.img.gz /boot/ramdisk.img.gz

        首先需要创建一个空的文件,使用/dev/zero作为输入创建ramdisk.img文件。RDSIZE=4000和BLKSIZE=1024指定了4000个1k大小的块进行填充文件。再把生成的空文件利用mke2fs命令创建一个空的ext2文件系统。利用loop device将该文件系统挂载到/mnt/initrd。在该挂载点下有个空的目录,现在就可以向其填充文件系统的内容了。

        接下来需要做的就是创建子目录,例如 /bin、/sys等。如果想让你的文件系统有意义,可以利用BusyBox,这个工具是个单一的镜像,内部包含了很多独立的工具,这些工具都是linux系统下常用的。BusyBox的优势是打包多个工具到一个文件,当需要共享其中的内容时,产生多个小镜像文件。可以通过创建符号链接将需要的小工具指向BusyBox实体。

        下一步就是需要创建一些特别的设备文件,你可以直接将本机的设备文件复制过去。

        倒数第二个阶段就是创建一个linuxrc文件,在内核挂载了RAM disk后,需要查找init文件并执行,如果没找到该文件,内核会调用linuxrc文件作为启动脚本执行。你可以在这个文件里面建立基本的系统环境,例如挂载proc文件系统,在该例子里,还挂载了sys文件系统,并向console打印消息,最后,调用ash,并能和根文件系统进行交互。

        最后,根文件创建系统结束,从/mnt/initrd卸载,并利用gzip文件压缩。将最后的文件复制到/boot子目录,这时便可以通过GNU的GRUB指定相应的文件加载并测试。

    initrd的加载过程

        像GRUB等linux的启动引导程序能识别内核并加载和复制内核镜像以及相关的initrd到内存。这部分的源码在linux源码目录下的./init目录下。

        在内核和initrd文件被加载并复制到内存后,内核被调用,多个初始化过程被执行,具体可以看函数init/main.c:init(),这个函数实现了大量的子系统初始化过程。调用函数init/do_mounts.c:prepare_namespace()准备名字空间,例如挂载设备文件系统,RAID,设备,initrd等。加载initrd是通过函数init/do_mounts_initrd.c:initrd_load()函数实现的。该函数调用init/do_mounts_rd.c:rd_load_image(),它确定通过init/do_mounts_rd.c:identify_ramdisk_image()函数加载RAM。这个函数检查文件的魔术字并确定文件格式。函数返回到initrd_load_image,调用init/do_mounts_rd:crd_load(),该函数分配RAM盘的空间,计算CRC,解压并加载RAM disk镜像到内存。到这里,initrd镜像已经是一个可以挂载的块文件了。

        从函数init/do_mounts.c:mount_root()函数开始挂载块设备为root目录,根设备被创建,然后调用函数init/do_mounts.c:mount_block_root(), 在函数里调用了init/do_mounts.c:do_mount_root()子函数,接着调用fs/namespace.c:sys_mount() 挂载实际的根文件系统,并利用chdir切换到该目录,在这儿你可以看到熟悉的打印信息“VFS: Mounted root (ext2 file system).“。以下是具体的函数调用过程。


     
    init/main.c:init
    init/do_mounts.c:prepare_namespace
    init/do_mounts_initrd.c:initrd_load
    init/do_mounts_rd.c:rd_load_image
    init/do_mounts_rd.c:identify_ramdisk_image
    init/do_mounts_rd.c:crd_load
    lib/inflate.c:gunzip
    init/do_mounts.c:mount_root
    init/do_mounts.c:mount_block_root
    init/do_mounts.c:do_mount_root
    fs/namespace.c:sys_mount
    init/main.c:run_init_process
    execve

    ============================

    转载时请注明出处和作者联系方式

    文章出处:http://www.mythfish.com/

    作者联系方式:张天才 mythfish@gmail.com

    展开全文
  • 随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。 功能说明:显示目录或者文件的大小。 ...
  • Linux Study之--通过udev创建ASM DISK(RAC共享存储) 系统环境:RedHat EL64 Oracle: Oracle 11gR2  在Oracle 11gR2,构建RAC时可以通过ASM创建asm disk,但是需要安装asmlib相关软件;对于RedHat EL64,...
  • Linux中如何读写硬盘(或Virtual Disk)上指定物理扇区 读指定物理扇区 dd if= of= skip= bs=512 count=1 写指定物理扇区 dd if= of= seek= bs=512 count=1 如何读写文件系统上指定Block所存储的数据 步骤: 1、计算...
  • )在linux界中的最有影响力的大事莫过于borland(宝兰),推出delphi for linux的Kylix和delphi6.0,这两个RAD图形开发工具。大家都知道影响linux普及最大的缺陷是应用程序太少了!而这两个开发工具Kylix和delphi6.0...
  • 前些日子在工作中遇到一个文件,当rmmod一个模块的时候,在模块的exit函数中阻塞了,rmmod进程杀也杀不掉,永远呆在那里,发现它已经是D(disk sleep)状态了,真的无能为力了吗?我不相信这个事实,所以今天在稍微...
  • /home/lihacker/develop/svn/ldd6410-read-only/training/kernel/drivers/vmem_disk
  • http://jingyan.baidu.com/article/a501d80c0e45b8ec630f5ed6.html 解决方法.找到虚拟机系统文件目录(下图所示),进入到文件夹下。删除以.lck为后缀名的文件。 之后重启虚拟机,即可正常运行了...在下小白....
  • linux disk I/O tuning?

    2007-08-28 13:41:00
    原贴地址:http://www.lupaworld.com/441/viewspace_2106.html linux disk I/O tuning?
  • #!/bin/sh #监控磁盘空间使用情况 #Written by Clement changed name Goni ...scriptdir=/root/shell/disk_jk logdir=$scriptdir/log if [ -d $logdir ] then echo "$logdir is exist~!" el
  • 最常见的装树莓派操作系统的方式就是,Win32 Disk Imager 再去领快递的前几个小时,我已经把前戏做的很足,镜像下载好,SD卡准备好,读卡器准备好,烧录软件准备好,准备在一小时以内点亮树莓派并搭好私有云(也...
  • 在Azure里面创建的虚拟机,windows的OS disk默认大小是127G, Linux的OS disk默认大小是30G。 有些情况下我们需要扩展OS 的磁盘,介绍下windows和Linux的扩展方法。 需要在电脑上安装Azure Powershell较新的版本,...
  • @[TOC]Grafana 监控Linux CPU, Memoy, disk等资源) 下载安装包 wget&amp;amp;amp;nbsp;https://dl.grafana.com/oss/release/grafana-5.4.2.linux-amd64.tar.gz&amp;amp;amp;nbsp; tar&amp;amp;amp;nbsp;...
  • linux获取cpu id和disk id

    2013-04-19 15:17:39
    // 获得CPU ID public static final String CPU_ID_CMD = "dmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}'";...public static final String DISK_ID_CMD = "fdisk -l |grep \"Disk ident
  • linux下休眠/待机命令

    2011-03-07 10:21:00
    if you # cat /sys/power/state ...echo “disk” > /sys/power/state 这相当于休眠 from http://linux.chinaunix.net/bbs/viewthread.php?tid=1057578<br />命令行中执行如下: [root
  • Ive installed a new 250GB SATA hard disk on our office CentOS Linux server. How do I format a hard disk under Linux operating system from a shell prompt? A.. There are total 4 steps involved for
1 2 3 4 5 ... 20
收藏数 156,534
精华内容 62,613
热门标签