Linux命令

标题:6个关于dd命令备份Lniux系统的例子
内容:有几种方法来备份Lniux系统,包括rsync,rsnapshot等。
dd是一个功能强大的UNIX工具,由Linux内核的makefile进行引导
映像,它也可以用来复制数据。

1、备份整个硬盘
例子:源硬盘的设备名为/dev/sda的,目标硬盘的设备盘/dev/sdb。
执行dd命令,备份整个硬盘/dev/sda到同一系统的另一个硬盘/dev/sdb。

dd if=/dev/sad of=/dev/sdb

注意:
"if"后跟输入文件,"of"后跟输出文件
上述命令在执行过程中如有任何错误都会被失败。但如果加上参数:
“CONV=NOERROR”,则即使执行过程中有错误,它也会继续复制。
输入文件和输出文件在执行前必须检查再三,如果两者顺序颠倒,你可能会损失所有数据。

在备份整个硬盘时,我们也可以加入sync参数来同步I/O。 如图所示:
dd if=/dev/sda of=/dev/sdb conv=norreor,sync

2、创建硬盘的映像
内容:
使用dd命令为硬盘创建一个图片文件并将其保存在其他存储设备。这种备份方式有很多好处:
一是易于使用,二是这种备份方法的速度快于其他方法的备份,也能让你更快速的恢复数据。

创建一个硬盘/dev/sda的image命令:
dd if=“sdadisk.img” of=/dev/sdb

3、恢复硬盘映像文件恢复数据
内容:使用dd命令将硬盘映像文件恢复数据到另一个硬盘。如图所示:
dd if="/dev/fd0" of=“myfloppy.img”

sdadisk.img 文件是/dev/sda的映像,所以上面的命令将恢复/dev/had的映像到/dev/sdb

4、创建软盘映像
内容:
使用dd命令创建软盘的映像备份。输入文件填写软盘机设备的位置,输出文件写软盘映像
文件的名称,如图所示:
dd if="/dev/sda1" of=~partition1.img

5、备份分区
使用dd命令备份硬盘分区。输入文件填写分区的设备名称输出文件填写你的指定的
目标路径或映像文件。dd命令如图:
dd if=/dev/sda1 of=~/partition1.img

6、光盘备份
内容:dd命令从输入中读取一个块并将其写入输出文件。你可以指定输出文件和
输入文件的块大小。参数‘bs’指定输入和输出文件的块大小。上面的dd命令使用的块
大小为2048bytes.

注意:如果光盘是自动挂载的,在使用dd命令创建iso映像之前最好umount掉以避免造成对
CDROM不必要的访问。

1、文件和目录
2、关机(系统的关机、重启以及登出)
shutdown -h now 关闭系统(1)
init 0 关闭系统(2)
telinit 0 关闭系统(3)
shutdown -h hours:minutes & 按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启(1)
reboot 重启(2)
logout 注销

3、文件搜索
find /usr/bin -type f -atime+100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime-10 搜索在10天内被创建或者修改过的文件
find / -name *.rpm -exec chmod 755 ‘{}’; 搜索以 ‘.rpm’ 结尾的文件并定义其权限
find / -xdev -name *.rpm 搜索以 ‘.rpm’ 结尾的文件,忽略光驱、捷盘等可移动设备
locate *.ps 寻找以 ‘.ps’ 结尾的文件 - 先运行 ‘updatedb’ 命令
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或可执行文件的完整路径
4、查看文件内容
cat file1 正向查看
tac file1 反向查看
more file1 查看一个长文件内容
less file1 类似于 ‘more’ 命令,但是它允许在文件中和正向操作一样的反向操作
head -2 file1 查看文件的前两行
tail -2 file1 查看一个文件的最后两行
tail -f 文件路径 实时查看被添加到一个文件中的内容

5、SWAP文件系统
mkswap /dev/hda3 创建一个swap文件系统
swapon /dev/hda3 启动一个新的swap文件系统
swapon /dev/hda2 /dev/hdb3 启动两个swap分区

6、文件系统分析
fsck /dev/hda1 修复或检查hda1磁盘上lniux系统文件的完整性
fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性
badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块
fsck.msdos /dev/had1 修复或检查hda1磁盘上的dos文件系统的完整性
dosfsck /dev/hda1修复或检查hda1磁盘上dos文件系统的完整性

7、初始化一个文件系统
mkfs /dev/hda1 在hda1分区创建一个文件系统
mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统
mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统
mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统
fdformat -n /dev/fd0 格式化一个软盘
mkswap /dev/hda3 创建一个swap文件系统

8、字符设置和文件格式转化
dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX
unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS
recode …HTML<page.txt> page.html 将一个文本文件转换成html
recode -l |more 显示所有允许的转化格式

9、YUM软件包升级器-(Fedora,RedHat及类似系统)
yum install package_name 下载并安装一个rpm包
yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系
yum update package_name.rpm 更新当前系统中所有安装的rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum list 列出当前系统中安装的所有包
yum search package_name 在rpm仓库中搜寻软件包
yum clean packages 清理rpm缓存删除下载的包
yum clean headers 删除所有头文件
yum clean all 删除所有缓存的包和头文件

10、DEB 包 (Debian, Ubuntu 以及类似系统)
dpkg -i package.deb 安装/更新一个 deb 包
dpkg -r package_name 从系统删除一个 deb 包
dpkg -l 显示系统中所有已经安装的 deb 包
dpkg -l | grep httpd 显示所有名称中包含 “httpd” 字样的deb包
dpkg -s package_name 获得已经安装在系统中一个特殊包的信息
dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表
dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表
dpkg -S /bin/ping 确认所给的文件由哪个deb包提供

11、APT软件工具(安装包管理工具)(Debian,Ubuntu以及类似系统)Advanced Package Tool
apt-get install package_name 安装或更新一个deb包
apt-cdrom install package_name 从光盘安装或更新一个deb包
apt-get update 升级列表中的软件包
apt-get upgrade升级所有已经安装的软件
apt-get remove package_name从系统删除一个deb包
apt-get check确认依赖的软件仓库正确
apt-get clean 从下载的软件包中清除缓存
apt-cache search searched-package返回包含所要搜索字符串的软件包名称

12、RPM 包 - 软件包管理器(Fedora, Redhat及类似系统)–Red-Hat Package Manager
rpm -ivh package.rpm 安装一个rpm包
rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告
rpm -U package.rpm 更新一个rpm包但不改变其配置文件
rpm -F package.rpm 更新一个确定已经安装的rpm包
rpm -e package_name.rpm 删除一个rpm包
rpm -qa 显示系统中所有已经安装的rpm包
rpm -qa | grep httpd 显示所有名称中包含 “httpd” 字样的rpm包
rpm -qi package_name 获取一个已安装包的特殊信息
rpm -qg “System Environment/Daemons” 显示一个组件的rpm包
rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表
rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表
rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表
rpm -q package_name --whatprovides 显示一个rpm包所占的体积
rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l
rpm -q package_name --changelog 显示一个rpm包的修改历史
rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供
rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表
rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书
rpm --checksig package.rpm 确认一个rpm包的完整性
rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性
rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间
rpm -Va 检查系统中所有已安装的rpm包- 小心使用
rpm -Vp package.rpm 确认一个rpm包还未安装
rpm2cpio package.rpm | cpio --extract --make-directories bin 从一个rpm包运行可执行文件
rpm -ivh /usr/src/redhat/RPMS/arch/package.rpm 从一个rpm源码安装一个构建好的包
rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包

13、打包和压缩文件
bunzip2 file1.bz2 解压一个叫做 'file1.bz2’的文件
bzip2 file1 压缩一个叫做 ‘file1’ 的文件
gunzip file1.gz 解压一个叫做 'file1.gz’的文件
gzip file1 压缩一个叫做 'file1’的文件
gzip -9 file1 最大程度压缩
rar a file1.rar test_file 创建一个叫做 ‘file1.rar’ 的包
rar a file1.rar file1 file2 dir1 同时压缩 ‘file1’, ‘file2’ 以及目录 ‘dir1’
rar x file1.rar 解压rar包
unrar x file1.rar 解压rar包
tar -cvf archive.tar file1 创建一个非压缩的 tarball
tar -cvf archive.tar file1 file2 dir1 创建一个包含了 ‘file1’, ‘file2’ 以及 'dir1’的档案文件
tar -tf archive.tar 显示一个包中的内容
tar -xvf archive.tar 释放一个包
tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下
tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包
tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包
tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包
tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包
zip file1.zip file1 创建一个zip格式的压缩包
zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包
unzip file1.zip 解压一个zip格式压缩包

14、用户和群组
groupadd group_name 创建一个新用户组
groupdel group_name 删除一个用户组
groupmod -n new_group_name old_group_name 重命名一个用户组
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 “admin” 用户组的用户
useradd user1 创建一个新用户
userdel -r user1 删除一个用户 ( ‘-r’ 排除主目录)
usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性
passwd 修改口令
passwd user1 修改一个用户的口令 (只允许root执行)
chage -E 2005-12-31 user1 设置用户口令的失效期限
pwck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的用户
grpck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的群组
newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组

15、文件的特殊属性 - 使用 “+” 设置权限,使用 “-” 用于取消
chattr +a file1 只允许以追加方式读写文件
chattr +c file1 允许这个文件能被内核自动压缩/解压
chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件
chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接
chattr +s file1 允许一个文件被安全地删除
chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件
lsattr 显示特殊的属性

16、文件的权限 - 使用 “+” 设置权限,使用 “-” 用于取消
ls -lh 显示权限
ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示
chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限
chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限
chown user1 file1 改变一个文件的所有人属性
chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性
chgrp group1 file1 改变文件的群组
chown user1:group1 file1 改变一个文件的所有人和群组属性
find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件
chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限
chmod u-s /bin/file1 禁用一个二进制文件的 SUID位
chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的
chmod g-s /home/public 禁用一个目录的 SGID 位
chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件
chmod o-t /home/public 禁用一个目录的 STIKY 位

17、磁盘空间
df -h 显示已经挂载的分区列表
ls -lSr |more 以尺寸大小排列文件和目录
du -sh dir1 估算目录“dir1”已经使用的磁盘空间
du -sh *|sort -rm 以容量大小为依据一次显示文件盒目录的大小
rpm -q -a --qf ‘%10{SIZE}t%{NAME}n’ | sort -k1,1n 以大小
为依据依次显示已安装的rpm包所使用
dpkg-query -W -f=’ I n s t a l l e d − S i z e ; 10 t {Installed-Size;10}t InstalledSize;10t{Package}n’ | sort -k1,1n
以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)

18/挂载一个文件系统
mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 ‘/ mnt/hda2’ 已经存在
umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 ‘/ mnt/hda2’ 退出
fuser -km /mnt/hda2 当设备繁忙时强制卸载
umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用
mount /dev/fd0 /mnt/floppy 挂载一个软盘
mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom
mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom
mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom
mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件
mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统
mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享

19、系统信息
arch 显示机器的处理器架构(1)
uname -m 显示机器的处理器架构(2)
uname -r 显示正在使用的内核版本
dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)
hdparm -i /dev/hda 罗列一个磁盘的架构特性
hdparm -tT /dev/sda 在磁盘上执行测试性读取操作
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/interrupts 显示中断
cat /proc/meminfo 校验内存使用
cat /proc/swaps 显示哪些swap被使用
cat /proc/version 显示内核的版本
cat /proc/net/dev 显示网络适配器及统计
cat /proc/mounts 显示已加载的文件系统
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
date 显示系统日期
cal 2007 显示2007年的日历表
date 041217002007.00 设置日期和时间 - 月日时分年.秒
clock -w 将时间修改保存到 BIOS

20、文本处理
cat file1 file2 … | command <> file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUT
cat file1 | command( sed, grep, awk, grep, etc…) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中
cat file1 | command( sed, grep, awk, grep, etc…) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中
grep Aug /var/log/messages 在文件 '/var/log/messages’中查找关键词"Aug"
grep ^Aug /var/log/messages 在文件 '/var/log/messages’中查找以"Aug"开始的词汇
grep [0-9] /var/log/messages 选择 ‘/var/log/messages’ 文件中所有包含数字的行
grep Aug -R /var/log/* 在目录 ‘/var/log’ 及随后的目录中搜索字符串"Aug"
sed ‘s/stringa1/stringa2/g’ example.txt 将example.txt文件中的 “string1” 替换成 “string2”
sed ‘/^KaTeX parse error: Expected 'EOF', got '#' at position 49: …所有空白行 sed '/ *#̲/d; /^/d’ example.txt 从example.txt文件中删除所有注释和空白行
echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’ 合并上下单元格内容
sed -e ‘1d’ result.txt 从文件example.txt 中排除第一行
sed -n ‘/stringa1/p’ 查看只包含词汇 “string1"的行
sed -e ‘s/ $//’ example.txt 删除每一行最后的空白字符
sed -e ‘s/stringa1//g’ example.txt 从文档中只删除词汇 “string1” 并保留剩余全部
sed -n ‘1,5p;5q’ example.txt 查看从第一行到第5行内容
sed -n ‘5p;5q’ example.txt 查看第5行
sed -e 's/00
/0/g’ example.txt 用单个零替换多个零
cat -n file1 标示文件的行数
cat example.txt | awk ‘NR%2==1’ 删除example.txt文件中的所有偶数行
echo a b c | awk ‘{print $1}’ 查看一行第一栏
echo a b c | awk ‘{print $1,$3}’ 查看一行的第一和第三栏
paste file1 file2 合并两个文件或两栏的内容
paste -d ‘+’ file1 file2 合并两个文件或两栏的内容,中间用”+"区分
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
comm -1 file1 file2 比较两个文件的内容只删除 ‘file1’ 所包含的内容
comm -2 file1 file2 比较两个文件的内容只删除 ‘file2’ 所包含的内容
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分

21、光盘
cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容
mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件
mkisofs /dev/cdrom | gzip > cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件
mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件
cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件
mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件
cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中
cd-paranoia – “-3” 从一个CD光盘转录音轨到 wav 文件中(参数-3)
cdrecord --scanbus 扫描总线以识别scsi通道
dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD

22、网络 - (以太网和WIFI无线)
ifconfig eth0 显示一个以太网卡的配置
ifup eth0 启用一个 ‘eth0’ 网络设备
ifdown eth0 禁用一个 ‘eth0’ 网络设备
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址
ifconfig eth0 promisc 设置 ‘eth0’ 成混杂模式以嗅探数据包 (sniffing)
dhclient eth0 以dhcp模式启用 ‘eth0’
route -n show routing table
route add -net 0/0 gw IP_Gateway configura default gateway
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network ‘192.168.0.0/16’
route del 0/0 gw IP_gateway remove static route
echo “1” > /proc/sys/net/ipv4/ip_forward activate ip routing
hostname show hostname of system
host www.example.com lookup hostname to resolve name to ip address and viceversa(1)
nslookup www.example.com lookup hostname to resolve name to ip address and viceversa(2)
ip link show show link status of all interfaces
mii-tool eth0 show link status of ‘eth0’
ethtool eth0 show statistics of network card ‘eth0’
netstat -tup show all active network connections and their PID
netstat -tupl show all network services listening on the system and their PID
tcpdump tcp port 80 show all HTTP traffic
iwlist scan show wireless networks
iwconfig eth1 show configuration of a wireless network card
hostname show hostname
host www.example.com lookup hostname to resolve name to ip address and viceversa
nslookup www.example.com lookup hostname to resolve name to ip address and viceversa
whois www.example.com lookup on Whois database

GO TOP INDEX ^
Microsoft Windows networks (SAMBA)
nbtscan ip_addr netbios name resolution
nmblookup -A ip_addr netbios name resolution
smbclient -L ip_addr/hostname show remote shares of a windows host
smbget -Rr smb://ip_addr/share like wget can download files from a host windows via smb
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share mount a windows network share

文件系统的几种类型:ext3, swap, RAID, LVM
分类: 架构设计与优化2014-06-24 19:32:02

  1. ext3
    在异常断电或系统崩溃(不洁关机, unclean system shutdown
    ).每个已挂载ext2文件系统计算机必须使用e2fsck程序来检查其一致性。这是一个很费时的过程,特别是在检查包含大量文件的庞大文件卷时,它会大大的耽搁引导时间。在这期间,文件卷上的所有数据都不能被访问。
    由ext3文件系统提供的登记报表方式在不洁系统关机后不再进行此类文件系统检查。使用ext3系统时,一致性检查只在某些罕见的硬件失败(如硬盘驱动器失败)情况下发生。不洁系统关机后,ext3文件系统的恢复时间不根据文件系统的大小或数量而定,而是根据用于维护一致性的登记日志(journal)的大小而定。根据用户计算机的硬件速度,默认的登记日志只需花大约1秒钟来恢复。
    u
    数据完好性
    ext3文件系统在发生了不洁系统关机时能够更强健的数据完好性。Ext3文件系统允许用户选择数据接受的保护类别。Red hat
    linux 9默认配置ext3文件卷来保持数据与文件系统状态的高度一致性。
    u
    速度
    尽管ext3把数据写入不止一次,但它的总处理能力在多数情况下仍比ext2系统要高。这是因为ext3的登记报表方式优化了硬盘驱动器的磁头运动。你可以从3种登记模式中进行选择以优化速度,但是这么做会在保持数据完好性方面做出一些牺牲。
    u
    简易转换
    用户可以轻而易举地不经重新格式化而把ext2转换为ext3系统,从而获得强健地登记式文件系统。

swap
linux 中的交换空间(swap
space)在物理内存(RAM)被充满时将被使用,如果系统需要更多的内存资源,而物理内存已经充满,内存中不活跃的页就会被移到交换空间去,虽然交换空间可以为带有少量内存的机器提供帮助,但是这种方法不应该被当做是对内存的取代,交换空间位于硬盘驱动器上,它比进入物理内存要慢。
交换空间可以是一个专用的交换分区,交换文件或两者的组合。交换空间的总大小应该相当于计算机内存两倍,但不能超过2048MB.
3.

独立磁盘冗余阵列(RAID)
RAID的基本目的是把多个小型廉价的磁盘驱动器合并成一组阵列来达到大型昂贵的驱动器所无法达到的性能或冗余性,这个驱动器阵列在计算机看来就如同一个单一的逻辑的储存单元或驱动器。
RAID是一种在多个磁盘上分散信息的方法。它使用磁盘分条(disk
striping , RAID 0),磁盘镜像(disk mirroring , RAID 1)和带有奇偶校验的磁盘分条(disk striping with
pority,RAID
5)之类的技术来达到冗余性,减低潜伏时间,并且(或者)增加磁盘读写的带宽,从而提高从硬盘中恢复的能力。
RAID的基本原理是:数据必须使用一致的形式被分散到阵列中的驱动器上,要达到这个目的,数据必须被分成大小一致的“块“(大小通常是32k或64k,也可使用不同的大小),每一块都会根据所用的RAID级别而写入其中的一个硬盘驱动器,当数据被读取时,这个过程就会反过来进行,造成多个驱动器好像是一个大型驱动器的假象。
4.
逻辑卷管理器(LVM)
从red hat linux
8.0开始,逻辑卷管理器(LVM)可以在硬盘驱动器上分配使用。
LVM是一种把硬盘驱动器空间分配成逻辑卷的方法,这样硬盘就不必使用分区而被简易的重划分大小。使用LVM,硬盘驱动器或硬盘驱动器集合就会分配给一个或多个物理卷(physical
volumes).物理卷无法跨越一个以上的驱动器。
物理卷被合并成逻辑卷组(logical volume group),
唯一的例外是/boot分区。/boot分区不能位于逻辑卷组,因为引导装载程序无法读取它。如果用户想把/分区放在逻辑卷上,需要创建一个分开的/boot分区,它不属于卷组的一部分。由于物理卷无法跨越一个以上驱动器,如要让逻辑卷组跨越一个以上驱动器,就应该在驱动器上创建一个或多个物理卷。
辑卷组被分成逻辑卷(logical
volumes),它们被分配了挂载点/boot和/
,以及文件系统类型如(ext3).当“分区“达到了它们的极限,逻辑卷组中的空闲空间就可以被添加给逻辑卷来增加分区的大小。当某个新的硬盘驱动器被添加到系统上,它可以被添加到逻辑卷组中,逻辑卷是可以扩展的分区。

从Mysql系统表中总结出来的建表规则
分类: Mysql/postgreSQL2014-06-25 13:36:27
以下是系统表schema:information_schema的TABLES的建表语句
mysql> desc tables;
±----------------±-------------±-----±----±--------±------+
| Field |Type | Null | Key | Default |Extra |
±----------------±-------------±-----±----±--------±------+
| TABLE_CATALOG | varchar(512) | YES | | NULL | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| TABLE_TYPE | varchar(64) | NO | | | |
| ENGINE |varchar(64) | YES | |NULL | |
| VERSION |bigint(21) | YES | |NULL | |
| ROW_FORMAT | varchar(10) | YES | | NULL | |
| TABLE_ROWS | bigint(21) | YES | | NULL | |
| AVG_ROW_LENGTH | bigint(21) | YES | | NULL | |
| DATA_LENGTH | bigint(21) | YES | | NULL | |
| MAX_DATA_LENGTH | bigint(21) | YES | | NULL | |
| INDEX_LENGTH | bigint(21) | YES | | NULL | |
| DATA_FREE | bigint(21) |YES | | NULL | |
| AUTO_INCREMENT | bigint(21) | YES | | NULL | |
| CREATE_TIME | datetime |YES | | NULL | |
| UPDATE_TIME | datetime |YES | | NULL | |
| CHECK_TIME | datetime |YES | | NULL | |
| TABLE_COLLATION | varchar(64) | YES | |NULL | |
| CHECKSUM | bigint(21) |YES | | NULL | |
| CREATE_OPTIONS | varchar(255) | YES | |NULL | |
| TABLE_COMMENT | varchar(80) | NO | | | |
±----------------±-------------±-----±----±--------±------+
21 rows in set (0.00 sec)

有以下总结:
1:如果可能varchar用2的幂数,具体的最好是16的偶数倍。
2:CREATE_TIME 与UPDATE_TIME 用datetime型,除非必要不用timestamp,不用缺省值。
3:bigint用21位

dir()返回一个对象的属性
type()获取对象的类型
java访问控制,public,private去控制,而Python没有访问控制,也没提供
私有属性的功能,全靠命名规范和语法去约束。
用super调用父类的方法,实现继承调用

class Programer(object):
def new(cls,*args,**kwargs):
print(‘call__new__method’)

def __init__(self,name,age):
	print('call__init__method')
	self.name = name
	self.age = age

if name == ‘main’:
prgramer = Programer(‘honghong’,12)
print(programer.dict)

Sql Server 对用户权限的授予:Grant、拒绝Deny、收回Revoke
你是否有遇到这种问题:
1.程序出错:PermissionDineDateAccessExcetion
2.Cause: com.microsoft.sqlserver.jdbc.SQLServerException:拒绝了对象”user”的select.insert权限

1.对表增删改查授权
对用户授权,允许其具有对数据表user的更新和删除的操作权限:
GRANT UPDATE,DELETE ON user
TO member WITH GRANT OPTION –WITH GRANT OPTION表示该用户可以向其他用户授予他所拥有的权限;

2.对存储过程授权
对用户menber对存储过程user_income的授权
GRANT EXECUTE ON user_income TO member存储过程

2.禁止对表的授权
—–禁止member用户对数据表user的更新权限:
DENY UPDATE ON user
TO member CASCADE;

3.收回用户对表的权限
—–收回用户member对user表的删除权限:
REVOKE DELETE ON user
FROM member

阿里巴巴核心系统研发高级工程师王玉法:Tair存储引擎之路
发表于2012-12-01 09:51| 来源CSDN| 作者魏兵
Hadoop大数据HTBC2012阿里巴巴
摘要:在12月1日的“NoSQL & NewSQL”主题论坛上,来自阿里巴巴集团核心系统研发高级开发工程师王玉法分享了题为《Tair存储引擎之路》的主题演讲,他首先给大家介绍了Tair存储引擎的大概情况,随后,王玉法给大家分享了Tair目前支持的三种引擎MDB、RDB以及LDB。
【CSDN现场报道】中国IT界技术盛会——Hadoop与大数据技术大会(Hadoop&BigData Technology Conference 2012,HBTC 2012)于2012年11月30日-12月1日在北京新云南皇冠假日酒店隆重召开。本次大会以“大数据共享与开放技术”为主题,聚焦于Hadoop与大数据,力邀数十位国内外Hadoop及大数据技术应用的产学界人士和实践企业,探讨大数据技术生态系统的现状和发展趋势,并围绕Hadoop与大数据热点 技术和应用实践进行深入解析。

在12月1日上午的“NoSQL & NewSQL”主题论坛上,来自阿里巴巴集团核心系统研发高级开发工程师王玉法分享了题为《Tair存储引擎之路》的主题演讲,他首先给大家介绍了Tair存储引擎的大概情况,随后,王玉法给大家分享了Tair目前支持的三种引擎MDB、RDB以及LDB。

Tair是淘宝的开源分布式KV系统,广泛应用在阿里集团各应用服务中。抽象存储层的架构设计使Tair很容易接入新的存储引擎,当前支持的存储引擎有非持久化的MDB(自主研发的类memcache)/RDB(抽离Redis的存储部分),持久化的LDB(接入LevelDB)。阿里巴巴核心系统研发高级工程师王玉法在题为《Tair存储引擎之路》的主题演讲中着重介绍了如何介入LevelDB和Redis,以及实际应用中遇到的问题与对应的解决优化方案。

阿里巴巴核心系统研发高级开发工程师 那岩(王玉法)

一、Tair概述

Tair是一个分布式系统,它从整体来看,是由configserver和dataserver组成的,dataserver负责数据存储,客户端首先去到configserver拿到机群的分布状态,接下来会根据数据来找到现在数据应该在哪个dataserver,然后直接跟dataserver访问。configserver一般分Master和Slave两台,当其中一台有问题的时候,客户端那边会主动上另外一台访问,保证它的容灾性。configserver是一个比较轻量化中心节点,即使两台configserver全部当掉,客户端还是可以继续服务。

dataserver是负责数据存储,Tair在设计架构的时候,真正负责数据存储这一块会有一个抽象层,把定义结果都实现掉,这样可以很方便直接接入。正是因为这些原因,dataserver这边存储引擎也是经历一些变革,到现在为止主要存储引擎可以分三种,可以分成cache和持久化两类。mdb和rdb,mdb是自主研发的系统,支持kv和分级kv,分级kv类似于模拟一个数据结构,在实际应用当中会有这样的需求。rdb抽取Redis存储部分,可以支持Redis原来的复杂数据结构。Ldb接入LeveIDB,进行数据排序。

二、mdb介绍

mdb是memche系统,在内存里面,真正内存管理使用page和slab。在我们这边会抽样出一个area的概念,有很多应用会共用,一个应用给第一个area,做一个逻辑分区,可以针对area获得配额,进行数据清除,不会影响其他的应用,这样可以做到逻辑分区。有些应用有些情况下,我的一些数据这段时间不想用,可以直接清掉,这样也是可以支持的。

支持数据过期的应用,会有后台的一些逻辑来把它清理掉。它的内存使用率会是一个问题,所以我们会在一定时间去均衡slab,达到内存使用率优化。我们还对它各种操作、统计都做了很详细的监控,可以实时监控到这个机群的情况。

还有后台进程,后台进程能做两个事情,会定期对数据进行清理。另外一个为了内存利用率,会做一些均衡slab的管理,达到内存使用率的均衡。

三、edb介绍

我们调研一些产品,选用了redis,有各种复杂的数据结构,redis是一个完整的分布式系统,有网络,也有数据分区,也有存储。我们这边的Tair本身是一个分布式框架,所以只需要它的存储引擎部分,我们这边抽取了它内部存储引擎这一块,然后纳入到存储引擎层下面,这样接入进来。

具体来说rdb,因为是把接口接入,原来redis所有数据结构我们这边也都是支持的。我们不能允许这个应用无限量做使用。我们增加一个概念是logiclock比如想把erea数据都清理掉,可能对当时运行会有影响,当后台再做的时候,可以根据前面访问的时候来比较一下logiclock,来确定这个数据是不是在它的生存周期里面,如果不在生存周期里面可以做清理,就是因为这个数据是不存在的。

因为redis本身为了通用性,它的数据结构比较沉重,所以这边做了一些清量化处理,数据结构用不到的,我们也把它精简掉了。实现了一套完整的Restful协议,我们这边也在考虑做rdb的持久化,复杂数据结构一个持久化处理,我们考虑使用Ldb作为rdb的持久化,这个在我们的计划之内。

在淘宝这边,也有一些应用是需要数据化,所有数据都需要放在这边,所以持久化的需求,促使我们去考虑为Tair加一个持久化的存储,当时调研的一些产品,Google开了自己的单机存储化的存储引擎,LevelDB,当时还是很火,当时LeveIDB并不是一个大存量的,它的应用服务的都是一些小数据的场景。我们这边肯定要支持一个大数据量,所以做了一些修改。

四、Ldb介绍

LeveIDB的写类型操作不会直接把原来的数据给覆盖掉,而是顺势写下去,由后台做数据合并。整体来说,好比一个写的操作,这个put包括一个写操作,在内存里面是有MemTable的。MemTable会有大小的,如果写满了以后,再用一个新的继续写。MemTable写满了以后,会触发它把内存当中的数据大部分存到磁盘上面去。为什么叫LeveIDB?它在管理磁盘上这些数据文件的时候,是为了独化的应用。这个大家有兴趣,可以由一些实践文档来讲具体细节。这是它的写流程。

它的读流程,比如看到每个小方块前面的首数字,MemTable这个文件,它的开始和结束是哪一部分,对于Get,整体来说就是要符合找到负责这个key的文件,从里面把这个数字给拿出来。比如我要“7”,首先要根据这个数据存在的流程去做,对每一个LO都会去找,当然如果有一步能够找到就会提前返回。对于LeveIDB,会做一些聚合,尽量读一次盘能读少一些。我们调研之后,发现LeveIDB的性能还是可以的,所以接入到Tair当中。

Ldb来做kv层面,先以put为例,找到数据分区,把操作指引给他,同时把结果插入到Mdbcache里。对于Get,首先到Ldb去找,这样的话,持久化存储引擎的效率跟缓存性效率是一样的,如果数据有访问热点的话,访问的IP可以得到很好的保证。

Ldb这边做了哪些事情?配置使用上来说,我们会多实例配置使用,充分利用IO,每个盘上能够充分利用,我们会把mdb内嵌,作为KV级别cache。内部一些阐述的配置,当时设计之初的参考,它其实并不是针对大数据这样一个情况去做的,很多情况是针对一些小数据。我们这边使用的时候,是进行一些详细测试,推出一些适合于我们某些场景的配置,对一些参数进行调优,会做一些灵活的配置。

另外就是它的排序算法,你去使用肯定要自己实践排序算法,排序算法有很多种,也可以进行默认的排序,但是像我们真正使用情况下,某些应用场景下面它会有一定的规律,如果是这样的情况下,我们根据这个规律去做一些它专有的平台,因为随机性而导致很复杂的情况。我们这样做效果是比较好的,比如写入的k是递增的情况下,我们可以根据数来改,这就是一个顺序写,顺序写是最优的场景。

Ldb的新功能,我们数据会有一些过期时间,嵌入一个datafilter逻辑,得到这个数据的时候会先过滤一下,比如设置一些过期数据,这个数据如果已经过期,它就会跳过去,就认为是不存在的。虽然持久化,但是就想把之前数据全部清掉,然后我再写入新的,这样是有异步清理。它本身的compact是自己做的,有它内部自己的过程在level-n上做,这个过程当中现在主要做的工作就是把一些垃圾数据给清理了,在做机群变动的时候,因为Tair当掉一台机器会做数据的重分布,导致数据备份的完整性和前端服务的可用性,这个过程可以把垃圾数据可以清理掉。如果按照自己的过程它不是很敏感,我们就要做高Levelcompact,我们会主动出发,加速一些range合并。使用binlog做异步跨集群数据同步。

通过前面的介绍,我们这边的心得主要就是,对于一些现有产品使用的时候,还是要根据自己自身的应用强劲去做一些调优,去做一些修改,可以满足自己应用前景前提下,再去考虑这种应用前景是不是可以再通用一些,可以扩大它的应用范围。没有最好的产品,只有最适合的产品。

更多精彩内容,请关注新浪微博:@CSDN云计算,图文直播专题:Hadoop与大数据技术大会HBTC 2012

欢迎所有热爱开源的技术人员、DBA、架构师、项目经理、CTO,行业分析师、数据挖掘专家参加国内顶级技术盛会HBTC 2012,也欢迎您将参会感受发给我们!

熟悉其中一种数据库、表空间、数据文件、表、字段、
存储过程、视图、索引等数据库对象的运用原理。
有复杂SQL编写经验,能根据设计说明书进行数据库存储过程的开发。
https://blog.csdn.net/qq_34343303/article/details/80517786

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值