/l3/users/igor-public/nt-scale-2010-03/linux10.unix.nt/root :1 :2 :3 :4 :5 :6 :7 :8 :9 :10 :11 :12 :13 :14 :15 :16 :17 :18 |
|
#screen -r 28408.pts-13.linux10
|
#screen -r 28408.pts-13.linux10ca
|
#screen -r 13176.pts-9.linux10
|
#alias exit='echo no exit'
|
#alias node2='ssh 192.168.15.1'
|
#node2 hostname
linux1 |
#vi /etc/drbd.conf
--- /tmp/l3-saved-13950.19226.28631 2010-03-24 09:46:05.000000000 +0200 +++ /etc/drbd.conf 2010-03-24 09:46:36.000000000 +0200 @@ -146,6 +146,7 @@ # ping-int 10; # max-buffers 2048; # max-epoch-size 2048; + allow-two-primaries; } syncer { } |
#scp /etc/drbd.conf 192.168.15.1:/etc/
drbd.conf 100% 4527 4.4KB/s 00:00 |
#cat /proc/drbd
version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 2: cs:WFConnection st:Secondary/Unknown ds:UpToDate/DUnknown C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 |
#node2 drbdadm connect all
/dev/drbd1: Failure: (125) Device has a net-config (use disconnect first) Command 'drbdsetup /dev/drbd1 net 192.168.15.1:7789 192.168.15.10:7789 C --set-defaults --create-device --allow-two-primaries' terminated with exit code 10 drbdsetup exited with code 10 |
#node2 drbdadm connect r2
|
#cat /proc/drbd
version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 2: cs:StandAlone st:Secondary/Unknown ds:UpToDate/DUnknown r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 |
#node2 drbdadm primary r2
|
#ssh 192.168.15.2
root@192.168.15.2's password: |
#ssh 192.168.15.1
|
#/etc/init.d/drbd restart
Restarting all DRBD resources. |
#cat /proc/drbd
version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 2: cs:WFConnection st:Secondary/Unknown ds:UpToDate/DUnknown C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 |
#exit
exit Connection to 192.168.15.1 closed. |
#cat /proc/drbd
version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 2: cs:StandAlone st:Secondary/Unknown ds:UpToDate/DUnknown r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 |
#ssh 192.168.15.1 cat /proc/drbd
version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 2: cs:StandAlone st:Secondary/Unknown ds:UpToDate/DUnknown r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 |
#tail /var/log/messages
Mar 24 09:49:04 linux10 kernel: [168957.225843] drbd2: peer D6661FBC73CC3904:0C227ACE87375760:9D2843961F6DFD89:CF4D923B2DBA8481 Mar 24 09:49:04 linux10 kernel: [168957.225843] drbd2: helper command: /sbin/drbdadm split-brain minor-2 Mar 24 09:49:04 linux10 kernel: [168957.225844] drbd2: helper command: /sbin/drbdadm split-brain minor-2 exit code 0 (0x0) Mar 24 09:49:04 linux10 kernel: [168957.225844] drbd2: conn( WFReportParams -> Disconnecting ) Mar 24 09:49:04 linux10 kernel: [168957.227887] drbd2: asender terminated Mar 24 09:49:04 linux10 kernel: [168957.227887] drbd2: Terminating asender thread Mar 24 09:49:04 linux10 kernel: [168957.225844] drbd2: Connection closed Mar 24 09:49:04 linux10 kernel: [168957.225844] drbd2: conn( Disconnecting -> StandAlone ) Mar 24 09:49:04 linux10 kernel: [168957.225844] drbd2: receiver terminated Mar 24 09:49:04 linux10 kernel: [168957.225844] drbd2: Terminating receiver thread |
#drbdsetup /dev/drbd2 primary -o
|
#less /var/log/messages
|
#drbdadm -- --discard-my-data connect r2
/dev/drbd2: Failure: (123) --discard-my-data not allowed when primary. Command 'drbdsetup /dev/drbd2 net 192.168.15.10:7790 192.168.15.1:7790 C --set-defaults --create-device --allow-two-primaries --discard-my-data' terminated with exit code 10 |
#drbdadm -- --discard-my-data connect r2
|
#cat /proc/drbd
version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 2: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 |
#node2 drbdadm primary r2
|
#apt-get install ocfs2-tools
Reading package lists... Done Building dependency tree Reading state information... Done ocfs2-tools is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. |
#dpkg -L ocfs2-tools
/. /sbin /sbin/mkfs.ocfs2 /sbin/ocfs2_hb_ctl /sbin/mounted.ocfs2 /sbin/fsck.ocfs2 /sbin/o2cb_ctl /sbin/tunefs.ocfs2 /sbin/o2image /sbin/debugfs.ocfs2 ... /usr/share/man/man8/o2cb_ctl.8.gz /usr/share/man/man8/ocfs2_hb_ctl.8.gz /usr/share/man/man8/debugfs.ocfs2.8.gz /usr/share/man/man8/fsck.ocfs2.checks.8.gz /usr/share/man/man8/mount.ocfs2.8.gz /usr/share/man/man8/mkfs.ocfs2.8.gz /usr/share/man/man8/tunefs.ocfs2.8.gz /usr/share/man/man8/o2image.8.gz /usr/share/man/man7 /usr/share/man/man7/o2cb.7.gz |
#cp /usr/share/doc/ocfs2-tools/examples/cluster.conf /etc/ocfs2/cluster.conf
|
#dpkg -L ocfs2-tools | grep /etc
/etc /etc/ocfs2 /etc/init.d /etc/init.d/ocfs2 /etc/init.d/o2cb |
#ls /etc/default/
acpid avahi-daemon cups exim4 ifupdown locale ntpdate rcS tmpfs alsa bootlogd dbus hal iscsitarget mdadm o2cb rsyslog useradd aoetools cron devpts halt kdm.d nfs-common portmap ssh |
#cat /etc/default/o2cb
# # This is a configuration file for automatic startup of the O2CB # driver. It is generated by running 'dpkg-reconfigure ocfs2-tools'. # Please use that method to modify this file. # # O2CB_ENABLED: 'true' means to load the driver on boot. O2CB_ENABLED=false # O2CB_BOOTCLUSTER: If not empty, the name of a cluster to start. O2CB_BOOTCLUSTER=ocfs2 # O2CB_HEARTBEAT_THRESHOLD: Iterations before a node is considered dead. O2CB_HEARTBEAT_THRESHOLD=31 # O2CB_IDLE_TIMEOUT_MS: Time in ms before a network connection is considered dead. O2CB_IDLE_TIMEOUT_MS=30000 # O2CB_KEEPALIVE_DELAY_MS: Max. time in ms before a keepalive packet is sent. O2CB_KEEPALIVE_DELAY_MS=2000 # O2CB_RECONNECT_DELAY_MS: Min. time in ms between connection attempts. O2CB_RECONNECT_DELAY_MS=2000 |
#dpkg-reconfigure ocfs2-tools
│ │ │ 2000______________________________________________________________________________ │ │ │ │ <Ok> │ │ │ └────────────────────────────────────────────────────────────────────────────────────┘ Loading filesystem "configfs": OK Mounting configfs filesystem at /sys/kernel/config: OK Loading stack plugin "o2cb": OK Loading filesystem "ocfs2_dlmfs": OK Creating directory '/dlm': OK Mounting ocfs2_dlmfs filesystem at /dlm: OK Setting cluster stack "o2cb": OK Starting O2CB cluster ocfs2: OK |
#/etc/init.d/ocfs2
Usage: /etc/init.d/ocfs2 {start|stop|status|reload|force-reload|restart|try-restart} |
#/etc/init.d/ocfs2 status
|
#/etc/init.d/ocfs2 start
|
#/etc/init.d/ocfs2 status
|
#less /etc/init.d/ocfs2
|
#vi /etc/init.d/ocfs2
--- /tmp/l3-saved-13950.30997.4434 2010-03-24 10:06:04.000000000 +0200 +++ /etc/init.d/ocfs2 2010-03-24 10:06:10.000000000 +0200 @@ -17,6 +17,8 @@ # Description: Mount OCFS2 volumes at boot. ### END INIT INFO +set -x + if [ -f /etc/redhat-release ] then . /etc/init.d/functions |
#/etc/init.d/ocfs2 start
+ '[' -f /etc/redhat-release ']' + '[' -f /etc/SuSE-release -o -f /etc/UnitedLinux-release ']' + init_status + return 0 ++ which fuser + FUSER=/bin/fuser + case "$1" in + '[' -d /var/lock/subsys ']' ++ ocfs2fstab ++ LC_ALL=C ++ awk '!/^#/ && $3 == "ocfs2" && $4 !~ /noauto/ { print $2 }' /etc/fstab + '[' -n '' ']' + exit_status + exit 0 |
#cat /proc/drbd
version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 2: cs:Connected st:Primary/Primary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 |
#drbdadm primary all
|
#node2 drbdadm primary all
|
#mkfs.ocfs2 /dev/drbd2
mkfs.ocfs2 1.4.1 Cluster stack: classic o2cb Filesystem label= Block size=4096 (bits=12) Cluster size=4096 (bits=12) Volume size=5368709120 (1310720 clusters) (1310720 blocks) 41 cluster groups (tail covers 20480 clusters, rest cover 32256 clusters) Journal size=67108864 Initial number of node slots: 4 Creating bitmaps: done Initializing superblock: done Writing system files: done Writing superblock: done Writing backup superblock: 2 block(s) Formatting Journals: done Formatting slot map: done Writing lost+found: done mkfs.ocfs2 successful |
#tune
tune2fs tunefs.ocfs2 tunelp |
#tunefs.ocfs2 -L OCFSVOL2 /dev/drbd2
tunefs.ocfs2 1.4.1 Changing volume label from to OCFSVOL2 Proceed (y/N): Aborting operation. |
#/etc/init.d/ocfs2 status
+ '[' -f /etc/redhat-release ']' + '[' -f /etc/SuSE-release -o -f /etc/UnitedLinux-release ']' + init_status + return 0 ++ which fuser + FUSER=/bin/fuser + case "$1" in + '[' -f /proc/mounts ']' ++ ocfs2fstab ++ LC_ALL=C ++ awk '!/^#/ && $3 == "ocfs2" && $4 !~ /noauto/ { print $2 }' /etc/fstab + '[' -n '' ']' ++ ocfs2mounts ++ LC_ALL=C ++ awk '$3 == "ocfs2" { print $2 }' /proc/mounts + '[' -n '' ']' + exit_status + exit 1 |
#/etc/init.d/ocfs2 start
+ '[' -f /etc/redhat-release ']' + '[' -f /etc/SuSE-release -o -f /etc/UnitedLinux-release ']' + init_status + return 0 ++ which fuser + FUSER=/bin/fuser + case "$1" in + '[' -d /var/lock/subsys ']' ++ ocfs2fstab ++ LC_ALL=C ++ awk '!/^#/ && $3 == "ocfs2" && $4 !~ /noauto/ { print $2 }' /etc/fstab + '[' -n '' ']' + exit_status + exit 0 |
#/etc/init.d/ocfs2 start
+ '[' -f /etc/redhat-release ']' + '[' -f /etc/SuSE-release -o -f /etc/UnitedLinux-release ']' + init_status + return 0 ++ which fuser + FUSER=/bin/fuser + case "$1" in + '[' -d /var/lock/subsys ']' ++ ocfs2fstab ++ LC_ALL=C ++ awk '!/^#/ && $3 == "ocfs2" && $4 !~ /noauto/ { print $2 }' /etc/fstab + '[' -n /ocfs/vol2 ']' + echo -n 'Starting Oracle Cluster File System (OCFS2) ' Starting Oracle Cluster File System (OCFS2) + mount -at ocfs2 + '[' 0 = 0 ']' + success_status + echo OK OK + return 0 + exit_status + exit 0 |
#/etc/init.d/ocfs2 status
Configured OCFS2 mountpoints: /ocfs/vol2 Active OCFS2 mountpoints: /ocfs/vol2 |
#cat /etc/fstab
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda1 / ext3 errors=remount-ro 0 1 /dev/sda2 none swap sw 0 0 /dev/hdb /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 LABEL=LV4 /data/lv4 ext3 defaults 0 0 /dev/drbd2 /ocfs/vol2 ocfs2 defaults 0 0 |
#mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) configfs on /sys/kernel/config type configfs (rw) ocfs2_dlmfs on /dlm type ocfs2_dlmfs (rw) /dev/drbd2 on /ocfs/vol2 type ocfs2 (rw,_netdev,heartbeat=local) |
#/etc/init.d/ocfs2 restart
Stopping Oracle Cluster File System (OCFS2) OK Starting Oracle Cluster File System (OCFS2) OK |
#mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) configfs on /sys/kernel/config type configfs (rw) ocfs2_dlmfs on /dlm type ocfs2_dlmfs (rw) /dev/drbd1 on /ocfs/vol1 type ocfs2 (rw,_netdev,heartbeat=local) /dev/drbd2 on /ocfs/vol2 type ocfs2 (rw,_netdev,heartbeat=local) |
#ls /ocfs/vol1/
lost+found |
#touch /ocfs/vol1/xxx
|
#~
mkdir: cannot create directory `/ocfs2/vol1/user': No such file or directory |
#chown user:user /ocfs/vol1/user
|
#bonnie++ /ocfs/vol1/xxx
usage: bonnie++ [-d scratch-dir] [-s size(MiB)[:chunk-size(b)]] [-n number-to-stat[:max-size[:min-size][:num-directories]]] [-m machine-name] [-r ram-size-in-MiB] [-x number-of-tests] [-u uid-to-use:gid-to-use] [-g gid-to-use] [-q] [-f] [-b] [-p processes | -y] Version: 1.03d |
#bonnie++ -d /ocfs/vol1/xxx -u user -r 500
Can't change to directory "/ocfs/vol1/xxx". usage: bonnie++ [-d scratch-dir] [-s size(MiB)[:chunk-size(b)]] [-n number-to-stat[:max-size[:min-size][:num-directories]]] [-m machine-name] [-r ram-size-in-MiB] [-x number-of-tests] [-u uid-to-use:gid-to-use] [-g gid-to-use] [-q] [-f] [-b] [-p processes | -y] Version: 1.03d |
#bonnie++ -d /ocfs/vol1/user/ -u user -r 500
Using uid:1000, gid:1000. Writing with putc()...done Writing intelligently...done Rewriting...done Reading with getc()...done Reading intelligently...done start 'em...done...done...done... Create files in sequential order...done. Stat files in sequential order...done. Delete files in sequential order...done. ... Delete files in random order...done. Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP linux10 1G 43444 93 61257 20 48440 15 52625 99 940195 100 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 571 25 +++++ +++ 4563 19 690 29 +++++ +++ 654 7 linux10,1G,43444,93,61257,20,48440,15,52625,99,940195,100,+++++,+++,16,571,25,+++++,+++,4563,19,690,29,+++++,+++,654,7 |
#cat /tmp/
bonnie .ICE-unix/ my-lv4-megafile .X11-unix/ gggg-stolen myfifo .X0-lock |
#cat /tmp/bonnie
ATA over Ethernet Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP linux10 1G 23017 51 22099 6 21044 6 53237 99 950231 100 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ linux10,1G,23017,51,22099,6,21044,6,53237,99,950231,100,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ ... LOCAL HDD Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP linux1 1G 55102 97 80354 17 75279 13 66217 99 1171687 99 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ linux1,1G,55102,97,80354,17,75279,13,66217,99,1171687,99,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ |
#vi /tmp/bonnie
--- /tmp/l3-saved-13950.28519.5933 2010-03-24 10:22:32.000000000 +0200 +++ /tmp/bonnie 2010-03-24 10:24:55.000000000 +0200 @@ -1,30 +1,41 @@ -ATA over Ethernet +LOCAL HDD Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP -linux10 1G 23017 51 22099 6 21044 6 53237 99 950231 100 +++++ +++ +linux1 1G 55102 97 80354 17 75279 13 66217 99 1171687 99 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ -linux10,1G,23017,51,22099,6,21044,6,53237,99,950231,100,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ - +linux1,1G,55102,97,80354,17,75279,13,66217,99,1171687,99,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ -iSCSI +LVM Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP -linux10 1G 44494 96 78924 21 74739 17 53109 99 950199 100 +++++ +++ +linux1 1G 54619 96 77761 18 75485 16 66091 99 1171084 100 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ -linux10,1G,44494,96,78924,21,74739,17,53109,99,950199,100,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ +linux1,1G,54619,96,77761,18,75485,16,66091,99,1171084,100,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ + +ATA over Ethernet + +Version 1.03d ------Sequential Output------ --Sequential Input- --Random- + -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- +Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP +linux10 1G 23017 51 22099 6 21044 6 53237 99 950231 100 +++++ +++ + ------Sequential Create------ --------Random Create-------- + -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- + files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP + 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +linux10,1G,23017,51,22099,6,21044,6,53237,99,950231,100,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ LVM Version 1.03d ------Sequential Output------ --Sequential Input- --Random- @@ -39,15 +50,30 @@ -LOCAL HDD +iSCSI Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP -linux1 1G 55102 97 80354 17 75279 13 66217 99 1171687 99 +++++ +++ +linux10 1G 44494 96 78924 21 74739 17 53109 99 950199 100 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ -linux1,1G,55102,97,80354,17,75279,13,66217,99,1171687,99,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ +linux10,1G,44494,96,78924,21,74739,17,53109,99,950199,100,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ + + + + +OCFS2 + DRBD TWO PRIMARIES + +Version 1.03d ------Sequential Output------ --Sequential Input- --Random- + -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- +Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP +linux10 1G 43444 93 61257 20 48440 15 52625 99 940195 100 +++++ +++ + ------Sequential Create------ --------Random Create-------- + -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- + files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP + 16 571 25 +++++ +++ 4563 19 690 29 +++++ +++ 654 7 +linux10,1G,43444,93,61257,20,48440,15,52625,99,940195,100,+++++,+++,16,571,25,+++++,+++,4563,19,690,29,+++++,+++,654,7 |
#bonnie++ -d /ocfs/vol1/user/ -u user -r 500 -n 100
Using uid:1000, gid:1000. Writing with putc()...done Writing intelligently...done Rewriting...done Reading with getc()...done Reading intelligently...done start 'em...done...done...done... Create files in sequential order...done. Stat files in sequential order...done. Delete files in sequential order...done. ... Delete files in random order...done. Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP linux10 1G 43416 94 59986 15 46248 12 53059 99 931359 99 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 100 257 64 +++++ +++ 3635 18 253 61 5180 47 262 16 linux10,1G,43416,94,59986,15,46248,12,53059,99,931359,99,+++++,+++,100,257,64,+++++,+++,3635,18,253,61,5180,47,262,16 |
#dd if=/dev/zero of=/ocfs/vol2/test bs=1024k count=1500
1500+0 records in 1500+0 records out 1572864000 bytes (1.6 GB) copied, 24.2343 s, 64.9 MB/s |
#rm /ocfs/vol2/test
|
#dd if=/dev/zero of=/ocfs/vol2/test bs=1024k count=1500
1500+0 records in 1500+0 records out 1572864000 bytes (1.6 GB) copied, 24.593 s, 64.0 MB/s |
#ды .ls /ocfs/vol2/
lost+found test |
#ls /ocfs/vol2/
lost+found test |
#ls /ocfs/vol2/
lost+found test |
#node2 df
Файловая система 1K-блоков Исп Доступно Исп% смонтирована на /dev/sda1 19322864 13678488 4662808 75% / tmpfs 1808048 8 1808040 1% /lib/init/rw udev 10240 828 9412 9% /dev tmpfs 1808048 0 1808048 0% /dev/shm /dev/drbd1 5242880 683432 4559448 14% /ocfs/vol1 /dev/drbd2 5242880 1812484 3430396 35% /ocfs/vol2 |
#node2 touch /ocfs/vol2/x
|
#ls /ocfs/vol2/
lost+found test x |
#cp -R /lib/ /tmp/
|
#cp -R /lib/ /ocfs/vol2/
|
#time rm -rf /ocfs/vol2/lib/
real 0m0.210s user 0m0.008s sys 0m0.160s |
#time rm -rf /tmp/lib/
real 0m0.079s user 0m0.008s sys 0m0.064s |
#time sh -c 'rm -rf /tmp/lib/; sync'
real 0m0.472s user 0m0.004s sys 0m0.072s |
#time sh -c 'rm -rf /tmp/lib/; sync'
real 0m1.186s user 0m0.012s sys 0m0.080s |
#cp -R /lib/ /tmp/; sync
|
#time sh -c 'rm -rf /tmp/lib/; sync'
real 0m0.880s user 0m0.008s sys 0m0.072s |
#dd if=/dev/zero of=/ocfs/vol2/test bs=1024k count=1500
1500+0 records in 1500+0 records out 1572864000 bytes (1.6 GB) copied, 25.8834 s, 60.8 MB/s |
#apt-get install qemu
Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: bochsbios debootstrap libbrlapi0.5 libpcap0.8 libvdemgmt0 libvdeplug2 openbios-sparc openhackware proll sharutils vde2 vgabios Suggested packages: samba vde2-cryptcab kvm The following NEW packages will be installed: bochsbios debootstrap libbrlapi0.5 libpcap0.8 libvdemgmt0 libvdeplug2 openbios-sparc ... Setting up openhackware (0.4.1-4) ... Setting up proll (18-4) ... Setting up libbrlapi0.5 (3.10~r3724-1+lenny1) ... Setting up vgabios (0.6b-1) ... Setting up bochsbios (2.3.7-1) ... Setting up openbios-sparc (1.0~alpha2+20080106-2) ... Setting up qemu (0.9.1-10lenny1) ... Setting up sharutils (1:4.6.3-1) ... Setting up vde2 (2.2.2-3) ... Setting up debootstrap (1.0.10lenny1) ... |
#ls -l
total 10496020 -rw-r--r-- 1 root root 2147483648 2010-03-22 12:32 disk1.img -rw-r--r-- 1 root root 2147483648 2010-03-22 14:14 disk2.img -rw-r--r-- 1 root root 2147483648 2010-03-22 14:30 disk3.img -rw-r--r-- 1 root root 2147483648 2010-03-22 15:00 disk4.img -rw-r--r-- 1 root root 2147483648 2010-03-22 16:37 disk5.img |
#qemu -hda disk1.img -m 256 -cdrom /ocfs/vol1/
lost+found/ user/ xxx |
#qemu -hda disk1.img -m 256 -cdrom /ocfs/vol1/
lost+found/ user/ xxx |
#qemu -hda disk1.img -m 256 -cdrom /ocfs/vol
vol1/ vol2/ |
#qemu -hda disk1.img -m 256 -cdrom /ocfs/vol2/
knoppix51ua.iso lost+found/ test x |
#apt-get install bridge-utils
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: bridge-utils 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 31.2kB of archives. After this operation, 111kB of additional disk space will be used. Get:1 http://10.0.35.1 lenny/main bridge-utils 1.4-5 [31.2kB] Fetched 31.2kB in 0s (1129kB/s) Selecting previously deselected package bridge-utils. (Reading database ... 102234 files and directories currently installed.) Unpacking bridge-utils (from .../bridge-utils_1.4-5_i386.deb) ... Processing triggers for man-db ... Setting up bridge-utils (1.4-5) ... |
#apt-cache search kqemu source
kqemu-source - Source for the QEMU Accelerator module kvm - Full virtualization on x86 hardware |
#apt-get install kqemu-source
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: kqemu-source 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 76.8kB of archives. After this operation, 127kB of additional disk space will be used. Get:1 http://10.0.35.1 lenny/main kqemu-source 1.3.0~pre11-8 [76.8kB] Fetched 76.8kB in 0s (1786kB/s) Selecting previously deselected package kqemu-source. (Reading database ... 102258 files and directories currently installed.) Unpacking kqemu-source (from .../kqemu-source_1.3.0~pre11-8_all.deb) ... Setting up kqemu-source (1.3.0~pre11-8) ... |
#dd if=/dev/urandom of=/dev/null count=100 bs=1024k
^C26+1 records in 26+0 records out 27262976 bytes (27 MB) copied, 6.47069 s, 4.2 MB/s |
# # This is a configuration file for automatic startup of the O2CB # driver. It is generated by running 'dpkg-reconfigure ocfs2-tools'. # Please use that method to modify this file. # # O2CB_ENABLED: 'true' means to load the driver on boot. O2CB_ENABLED=false # O2CB_BOOTCLUSTER: If not empty, the name of a cluster to start. O2CB_BOOTCLUSTER=ocfs2 # O2CB_HEARTBEAT_THRESHOLD: Iterations before a node is considered dead. O2CB_HEARTBEAT_THRESHOLD=31 # O2CB_IDLE_TIMEOUT_MS: Time in ms before a network connection is considered dead. O2CB_IDLE_TIMEOUT_MS=30000 # O2CB_KEEPALIVE_DELAY_MS: Max. time in ms before a keepalive packet is sent. O2CB_KEEPALIVE_DELAY_MS=2000 # O2CB_RECONNECT_DELAY_MS: Min. time in ms between connection attempts. O2CB_RECONNECT_DELAY_MS=2000
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda1 / ext3 errors=remount-ro 0 1 /dev/sda2 none swap sw 0 0 /dev/hdb /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 LABEL=LV4 /data/lv4 ext3 defaults 0 0 /dev/drbd2 /ocfs/vol2 ocfs2 defaults 0 0
version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 2: cs:Connected st:Primary/Primary ds:UpToDate/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
bonnie .ICE-unix/ my-lv4-megafile .X11-unix/ gggg-stolen myfifo .X0-lock
ATA over Ethernet Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP linux10 1G 23017 51 22099 6 21044 6 53237 99 950231 100 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ linux10,1G,23017,51,22099,6,21044,6,53237,99,950231,100,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ iSCSI Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP linux10 1G 44494 96 78924 21 74739 17 53109 99 950199 100 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ linux10,1G,44494,96,78924,21,74739,17,53109,99,950199,100,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ LVM Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP linux1 1G 54619 96 77761 18 75485 16 66091 99 1171084 100 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ linux1,1G,54619,96,77761,18,75485,16,66091,99,1171084,100,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++ LOCAL HDD Version 1.03d ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP linux1 1G 55102 97 80354 17 75279 13 66217 99 1171687 99 +++++ +++ ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ linux1,1G,55102,97,80354,17,75279,13,66217,99,1171687,99,+++++,+++,16,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++
Время первой команды журнала | 08:37:24 2010- 3-24 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 11:42:16 2010- 3-24 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 101 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 9.90 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 0.00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 2.00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 0.84 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.
Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
$ l s-l bash: l: command not found |
Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
$ test 5 -lt 4 |
Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
$ find / -name abc find: /home/devi-orig/.gnome2: Keine Berechtigung find: /home/devi-orig/.gnome2_private: Keine Berechtigung find: /home/devi-orig/.nautilus/metafiles: Keine Berechtigung find: /home/devi-orig/.metacity: Keine Berechtigung find: /home/devi-orig/.inkscape: Keine Berechtigung ^C |
Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
# id uid=0(root) gid=0(root) Gruppen=0(root) |
Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
$ vi ~/.bashrc
|
Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
$ patch ~/.bashrc |
Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.
Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.
Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.
Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора
Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.
Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.
Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:
$ whoami
user
$ #^ Интересно, кто я?в журнале это будет выглядеть так:
$ whoami
user
Интересно, кто я? |
Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:
$ whoami
user
$ cat > /dev/null #^ Интересно, кто я?
Программа whoami выводит имя пользователя, под которым мы зарегистрировались в системе. - Она не может ответить на вопрос о нашем назначении в этом мире.В журнале это будет выглядеть так:
$ whoami user
|
Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=
1 2 3 4Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.
LiLaLo (L3) расшифровывается как Live Lab Log.
Программа разработана для повышения эффективности обучения Unix/Linux-системам.
(c) Игорь Чубин, 2004-2008