text:
Support Funtoo and help us grow! Donate $15 per month and get a free SSD-based Funtoo Virtual Container.
BTRFS is still experimental even with latest Linux kernels (3.4-rc at date of writing) so be prepared to lose some data sooner or later or hit a severe issue/regressions/"itchy" bugs. Subliminal message: Do not put critical data on BTRFS partitions.
BTRFS is an advanced filesystem mostly contributed by Sun/Oracle whose origins take place in 2007. A good summary is given in [1]. BTRFS aims to provide a modern answer for making storage more flexible and efficient. According to its main contributor, Chris Mason, the goal was "to let Linux scale for the storage that will be available. Scaling is not just about addressing the storage but also means being able to administer and to manage it with a clean interface that lets people see what's being used and makes it more reliable." (Ref. http://en.wikipedia.org/wiki/Btrfs).
Btrfs, often compared to ZFS, is offering some interesting features like:
- Using very few fixed location metadata, thus allowing an existing ext2/ext3 filesystem to be "upgraded" in-place to BTRFS.
- Operations are transactional
- Online volume defragmentation (online filesystem check is on the radar but is not yet implemented).
- Built-in storage pool capabilities (no need for LVM)
- Built-in RAID capabilities (both for the data and filesystem metadata). RAID-5/6 is planned for 3.5 kernels
- Capabilities to grow/shrink the volume
- Subvolumes and snapshots (extremely powerful, you can "rollback" to a previous filesystem state as if nothing had happened).
- Copy-On-Write
- Usage of B-Trees to store the internal filesystem structures (B-Trees are known to have a logarithmic growth in depth, thus making them more efficient when scanning)
A recent Linux kernel (BTRFS metadata format evolves from time to time and mounting using a recent Linux kernel can make the BTRFS volume unreadable with an older kernel revision, e.g. Linux 2.6.31 vs Linux 2.6.30). You must also use sys-fs/btrfs-progs (0.19 or better use -9999 which points to the git repository).
Playing with BTRFS storage pool capabilities
Whereas it would possible to use btrfs just as you are used to under a non-LVM system, it shines in using its built-in storage pool capabilities. Tired of playing with LVM ? 🙂 Good news: you do not need it anymore with btrfs.
Setting up a storage pool
BTRFS terminology is a bit confusing. If you already have used another 'advanced' filesystem like ZFS or some mechanism like LVM, it's good to know that there are many correlations. In the BTRFS world, the word volume corresponds to a storage pool (ZFS) or a volume group (LVM). Ref. http://www.rkeene.org/projects/info/wiki.cgi/165
The test bench uses disk images through loopback devices. Of course, in a real world case, you will use local drives or units though a SAN. To start with, 5 devices of 1 GiB are allocated:
# dd if=/dev/zero of=/tmp/btrfs-vol0.img bs=1G count=1 # dd if=/dev/zero of=/tmp/btrfs-vol1.img bs=1G count=1 # dd if=/dev/zero of=/tmp/btrfs-vol2.img bs=1G count=1 # dd if=/dev/zero of=/tmp/btrfs-vol3.img bs=1G count=1 # dd if=/dev/zero of=/tmp/btrfs-vol4.img bs=1G count=1
Then attached:
# losetup /dev/loop0 /tmp/btrfs-vol0.img # losetup /dev/loop1 /tmp/btrfs-vol1.img # losetup /dev/loop2 /tmp/btrfs-vol2.img # losetup /dev/loop3 /tmp/btrfs-vol3.img # losetup /dev/loop4 /tmp/btrfs-vol4.img
Creating the initial volume (pool)
BTRFS uses different strategies to store data and for the filesystem metadata (ref. https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices).
By default the behavior is:
- metadata is replicated on all of the devices. If a single device is used the metadata is duplicated inside this single device (useful in case of corruption or bad sector, there is a higher chance that one of the two copies is clean). To tell btrfs to maintain a single copy of the metadata, just use single. Remember: dead metadata = dead volume with no chance of recovery.
- data is spread amongst all of the devices (this means no redundancy; any data block left on a defective device will be inaccessible)
To create a BTRFS volume made of multiple devices with default options, use:
# mkfs.btrfs /dev/loop0 /dev/loop1 /dev/loop2
To create a BTRFS volume made of a single device with a single copy of the metadata (dangerous!), use:
# mkfs.btrfs -m single /dev/loop0
To create a BTRFS volume made of multiple devices with metadata spread amongst all of the devices, use:
# mkfs.btrfs -m raid0 /dev/loop0 /dev/loop1 /dev/loop2
To create a BTRFS volume made of multiple devices, with metadata spread amongst all of the devices and data mirrored on all of the devices (you probably don't want this in a real setup), use:
# mkfs.btrfs -m raid0 -d raid1 /dev/loop0 /dev/loop1 /dev/loop2
To create a fully redundant BTRFS volume (data and metadata mirrored amongst all of the devices), use:
# mkfs.btrfs -d raid1 /dev/loop0 /dev/loop1 /dev/loop2
Technically you can use anything as a physical volume: you can have a volume composed of 2 local hard drives, 3 USB keys, 1 loopback device pointing to a file on a NFS share and 3 logical devices accessed through your SAN (you would be an idiot, but you can, nevertheless). Having different physical volume sizes would lead to issues, but it works :-).
Checking the initial volume
To verify the devices of which BTRFS volume is composed, just use btrfs-show device (old style) or btrfs filesystem show device (new style). You need to specify one of the devices (the metadata has been designed to keep a track of the what device is linked what other device). If the initial volume was set up like this:
# mkfs.btrfs /dev/loop0 /dev/loop1 /dev/loop2
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
adding device /dev/loop1 id 2
adding device /dev/loop2 id 3
fs created label (null) on /dev/loop0
nodesize 4096 leafsize 4096 sectorsize 4096 size 3.00GB
Btrfs Btrfs v0.19
It can be checked with one of these commands (They are equivalent):
# btrfs filesystem show /dev/loop0 # btrfs filesystem show /dev/loop1 # btrfs filesystem show /dev/loop2
The result is the same for all commands:
Label: none uuid: 0a774d9c-b250-420e-9484-b8f982818c09 Total devices 3 FS bytes used 28.00KB devid 3 size 1.00GB used 263.94MB path /dev/loop2 devid 1 size 1.00GB used 275.94MB path /dev/loop0 devid 2 size 1.00GB used 110.38MB path /dev/loop1
To show all of the volumes that are present:
# btrfs filesystem show
Label: none uuid: 0a774d9c-b250-420e-9484-b8f982818c09
Total devices 3 FS bytes used 28.00KB
devid 3 size 1.00GB used 263.94MB path /dev/loop2
devid 1 size 1.00GB used 275.94MB path /dev/loop0
devid 2 size 1.00GB used 110.38MB path /dev/loop1
Label: none uuid: 1701af39-8ea3-4463-8a77-ec75c59e716a
Total devices 1 FS bytes used 944.40GB
devid 1 size 1.42TB used 1.04TB path /dev/sda2
Label: none uuid: 01178c43-7392-425e-8acf-3ed16ab48813
Total devices 1 FS bytes used 180.14GB
devid 1 size 406.02GB used 338.54GB path /dev/sda4
BTRFS wiki mentions that btrfs device scan should be performed, consequence of not doing the incantation? Volume not seen?
Mounting the initial volume
BTRFS volumes can be mounted like any other filesystem. The cool stuff at the top on the sundae is that the design of the BTRFS metadata makes it possible to use any of the volume devices. The following commands are equivalent:
# mount /dev/loop0 /mnt # mount /dev/loop1 /mnt # mount /dev/loop2 /mnt
For every physical device used for mounting the BTRFS volume df -h reports the same (in all cases 3 GiB of "free" space is reported):
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/loop1 3.0G 56K 1.8G 1% /mnt
The following command prints very useful information (like how the BTRFS volume has been created):
# btrfs filesystem df /mnt
Data, RAID0: total=409.50MB, used=0.00
Data: total=8.00MB, used=0.00
System, RAID1: total=8.00MB, used=4.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=204.75MB, used=28.00KB
Metadata: total=8.00MB, used=0.00
By the way, as you can see, for the btrfs command the mount point should be specified, not one of the physical devices.
Shrinking the volume
A common practice in system administration is to leave some head space, instead of using the whole capacity of a storage pool (just in case). With btrfs one can easily shrink volumes. Let's shrink the volume a bit (about 25%):
# btrfs filesystem resize -500m /mnt # dh -h /dev/loop1 2.6G 56K 1.8G 1% /mnt
And yes, it is an on-line resize, there is no need to umount/shrink/mount. So no downtimes! 🙂 However, a BTRFS volume requires a minimal size… if the shrink is too aggressive the volume won't be resized:
# btrfs filesystem resize -1g /mnt
Resize '/mnt' of '-1g'
ERROR: unable to resize '/mnt'
Growing the volume
This is the opposite operation, you can make a BTRFS grow to reach a particular size (e.g. 150 more megabytes):
# btrfs filesystem resize +150m /mnt Resize '/mnt' of '+150m' # dh -h /dev/loop1 2.7G 56K 1.8G 1% /mnt
You can also take an "all you can eat" approach via the max option, meaning all of the possible space will be used for the volume:
# btrfs filesystem resize max /mnt Resize '/mnt' of 'max' # dh -h /dev/loop1 3.0G 56K 1.8G 1% /mnt
Adding a new device to the BTRFS volume
To add a new device to the volume:
# btrfs device add /dev/loop4 /mnt
oxygen ~ # btrfs filesystem show /dev/loop4
Label: none uuid: 0a774d9c-b250-420e-9484-b8f982818c09
Total devices 4 FS bytes used 28.00KB
devid 3 size 1.00GB used 263.94MB path /dev/loop2
devid 4 size 1.00GB used 0.00 path /dev/loop4
devid 1 size 1.00GB used 275.94MB path /dev/loop0
devid 2 size 1.00GB used 110.38MB path /dev/loop1
Again, no need to umount the volume first as adding a device is an on-line operation (the device has no space used yet hence the '0.00'). The operation is not finished as we must tell btrfs to prepare the new device (i.e. rebalance/mirror the metadata and the data between all devices):
# btrfs filesystem balance /mnt # btrfs filesystem show /dev/loop4 Label: none uuid: 0a774d9c-b250-420e-9484-b8f982818c09 Total devices 4 FS bytes used 28.00KB devid 3 size 1.00GB used 110.38MB path /dev/loop2 devid 4 size 1.00GB used 366.38MB path /dev/loop4 devid 1 size 1.00GB used 378.38MB path /dev/loop0 devid 2 size 1.00GB used 110.38MB path /dev/loop1
Depending on the sizes and what is in the volume a balancing operation could take several minutes or hours.
Removing a device from the BTRFS volume
# btrfs device delete /dev/loop2 /mnt # btrfs filesystem show /dev/loop0 Label: none uuid: 0a774d9c-b250-420e-9484-b8f982818c09 Total devices 4 FS bytes used 28.00KB devid 4 size 1.00GB used 264.00MB path /dev/loop4 devid 1 size 1.00GB used 268.00MB path /dev/loop0 devid 2 size 1.00GB used 0.00 path /dev/loop1 *** Some devices missing # df -h Filesystem Size Used Avail Use% Mounted on /dev/loop1 3.0G 56K 1.5G 1% /mnt
Here again, removing a device is totally dynamic and can be done as an on-line operation! Note that when a device is removed, its content is transparently redistributed among the other devices.
Obvious points:
- If you have used raid0 in either metadata or data at the BTRFS volume creation you will end in a unusable volume if one of the the devices fails before being properly removed from the volume as some stripes will be lost.
Once you add a new device to the BTRFS volume as a replacement for a removed one, you can cleanup the references to the missing device:
# btrfs device delete missing
Using a BTRFS volume in degraded mode
It is not possible to use a volume in degraded mode if raid0 has been used for data/metadata and the device had not been properly removed with btrfs device delete (some stripes will be missing). The situation is even worse if RAID0 is used for the the metadata: trying to mount a BTRFS volume in read/write mode while not all the devices are accessible will simply kill the remaining metadata, hence making the BTRFS volume totally unusable… you have been warned! 🙂
If you use raid1 or raid10 for data AND metadata and you have a usable submirror accessible (consisting of 1 drive in case of RAID1 or the two drive of the same RAID0 array in case of RAID10), you can mount the array in degraded mode in the case of some devices are missing (e.g. dead SAN link or dead drive) :
# mount -o degraded /dev/loop0 /mnt
If you use RAID0 (and have one of your drives inaccessible) the metadata or RAID10 but not enough drives are on-line to even get a degraded mode possible, btrfs will refuse to mount the volume:
# mount /dev/loop0 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
The situation is no better if you have used RAID1 for the metadata and RAID0 for the data, you can mount the drive in degraded mode but you will encounter problems while accessing your files:
# cp /mnt/test.dat /tmp
cp: reading `/mnt/test.dat': Input/output error
cp: failed to extend `/tmp/test.dat': Input/output error
Playing with subvolumes and snapshots
A story of boxes….
When you think about subvolumes in BTRFS, think about boxes. Each one of those can contain items and other smaller boxes ("sub-boxes") which in turn can also contains items and boxes (sub-sub-boxes) and so on. Each box and items has a number and a name, except for the top level box, which has only a number (zero). Now imagine that all of the boxes are semi-opaque: you can see what they contain if you are outside the box but you can't see outside when you are inside the box. Thus, depending on the box you are in you can view either all of the items and sub-boxes (top level box) or only a part of them (any other box but the top level one). To give you a better idea of this somewhat abstract explanation let's illustrate a bit:
(0) --+-> Item A (1) | +-> Item B (2) | +-> Sub-box 1 (3) --+-> Item C (4) | | | +-> Sub-sub-box 1.1 (5) --+-> Item D (6) | | | | | +-> Item E (7) | | | | | +-> Sub-Sub-sub-box 1.1.1 (8) ---> Item F (9) | +-> Item F (10) | +-> Sub-box 2 (11) --> Item G (12)
What you see in the hierarchy depends on where you are (note that the top level box numbered 0 doesn't have a name, you will see why later). So:
- If you are in the node named top box (numbered 0) you see everything, i.e. things numbered 1 to 12
- If you are in "Sub-sub-box 1.1" (numbered 5), you see only things 6 to 9
- If you are in "Sub-box 2" (numbered 11), you only see what is numbered 12
Did you notice? We have two items named 'F' (respectively numbered 9 and 10). This is not a typographic error, this is just to illustrate the fact that every item lives its own peaceful existence in its own box. Although they have the same name, 9 and 10 are two distinct and unrelated objects (of course it is impossible to have two objects named 'F' in the same box, even they would be numbered differently).
… applied to BTRFS! (or, "What is a volume/subvolume?")
BTRFS subvolumes work in the exact same manner, with some nuances:
- First, imagine a frame that surrounds the whole hierarchy (represented in dots below). This is your BTRFS volume. A bit abstract at first glance, but BTRFS volumes have no tangible existence, they are just an aggregation of devices tagged as being clustered together (that fellowship is created when you invoke mkfs.btrfs or btrfs device add).
- Second, the first level of hierarchy contains only a single box numbered zero which can never be destroyed (because everything it contains would also be destroyed).
If in our analogy of a nested boxes structure we used the word "box", in the real BTRFS word we use the word "subvolume" (box => subvolume). Like in our boxes analogy, all subvolumes hold a unique number greater than zero and a name, with the exception of root subvolume located at the very first level of the hierarchy which is always numbered zero and has no name (BTRFS tools destroy subvolumes by their name not their number so no name = no possible destruction. This is a totally intentional architectural choice, not a flaw).
Here is a typical hierarchy:
.....BTRFS Volume................................................................................................................................ . . Root subvolume (0) --+-> Subvolume SV1 (258) ---> Directory D1 --+-> File F1 . | | . | +-> File F2 . | . +-> Directory D1 --+-> File F1 . | | . | +-> File F2 . | | . | +-> File F3 . | | . | +-> Directory D11 ---> File F4 . +-> File F1 . | . +-> Subvolume SV2 (259) --+-> Subvolume SV21 (260) . | . +-> Subvolume SV22 (261) --+-> Directory D2 ---> File F4 . | . +-> Directory D3 --+-> Subvolume SV221 (262) ---> File F5 . | | . | +-> File F6 . | | . | +-> File F7 . | . +-> File F8 . .....................................................................................................................................
Maybe you have a question: "Okay, What is the difference between a directory and a subvolume? Both can can contain something!". To further confuse you, here is what users get if they reproduce the first level hierarchy on a real machine:
# ls -l
total 0
drwx------ 1 root root 0 May 23 12:48 SV1
drwxr-xr-x 1 root root 0 May 23 12:48 D1
-rw-r--r-- 1 root root 0 May 23 12:48 F1
drwx------ 1 root root 0 May 23 12:48 SV2
Although subvolumes SV1 and SV2 have been created with special BTRFS commands they appear just as if they were ordinary directories! A subtle nuance exists, however: think again at our boxes analogy we did before and map the following concepts in the following manner:
- a subvolume : the semi-opaque box
- a directory : a sort of item (that can contain something even another subvolume)
- a file : another sort of item
So, in the internal filesystem metadata SV1 and SV2 are stored in a different manner than D1 (although this is transparently handled for users). You can, however see SV1 and SV2 for what they are (subvolumes) by running the following command (subvolume numbered (0) has been mounted on /mnt):
# btrfs subvolume list /mnt
ID 258 top level 5 path SV1
ID 259 top level 5 path SV2
What would we get if we create SV21 and SV22 inside of SV2? Let's try! Before going further you should be aware that a subvolume is created by invoking the magic command btrfs subvolume create:
# cd /mnt/SV2 # btrfs subvolume create SV21 Create subvolume './SV21' # btrfs subvolume create SV22 Create subvolume './SV22' # btrfs subvolume list /mnt ID 258 top level 5 path SV1 ID 259 top level 5 path SV2 ID 260 top level 5 path SV2/SV21 ID 261 top level 5 path SV2/SV22
Again, invoking ls in /mnt/SV2 will report the subvolumes as being directories:
# ls -l
total 0
drwx------ 1 root root 0 May 23 13:15 SV21
drwx------ 1 root root 0 May 23 13:15 SV22
Changing the point of view on the subvolumes hierarchy
At some point in our boxes analogy we have talked about what we see and what we don't see depending on our location in the hierarchy. Here lies a big important point: whereas most of the BTRFS users mount the root subvolume (subvolume id = 0, we will retain the root subvolume terminology) in their VFS hierarchy thus making visible the whole hierarchy contained in the BTRFS volume, it is absolutely possible to mount only a subset of it. How that could be possible? Simple: Just specify the subvolume number when you invoke mount. For example, to mount the hierarchy in the VFS starting at subvolume SV22 (261) do the following:
# mount -o subvolid=261 /dev/loop0 /mnt
Here lies an important notion not disclosed in the previous paragraph: although both directories and subvolumes can act as containers, only subvolumes can be mounted in a VFS hierarchy. It is a fundamental aspect to remember: you cannot mount a sub-part of a subvolume in the VFS; you can only mount the subvolume in itself. Considering the hierarchy schema in the previous section, if you want to access the directory D3 you have three possibilities:
- Mount the non-named subvolume (numbered 0) and access D3 through /mnt/SV2/SV22/D3 if the non-named subvolume is mounted in /mnt
- Mount the subvolume SV2 (numbered 259) and access D3 through /mnt/SV22/D3 if the the subvolume SV2 is mounted in /mnt
- Mount the subvolume SV22 (numbered 261) and access D3 through /mnt/D3 if the the subvolume SV22 is mounted in /mnt
This is accomplished by the following commands, respectively:
# mount -o subvolid=0 /dev/loop0 /mnt # mount -o subvolid=259 /dev/loop0 /mnt # mount -o subvolid=261 /dev/loop0 /mnt
When a subvolume is mounted in the VFS, everything located "above" the subvolume is hidden. Concretely, if you mount the subvolume numbered 261 in /mnt, you only see what is under SV22, you won't see what is located above SV22 like SV21, SV2, D1, SV1, etc.
The default subvolume
$100 questions: 1. "If I don't put 'subvolid' in the command line, 1. how does the kernel know which one of the subvolumes it has to mount? 2. Does Omitting the 'subvolid' means automatically 'mount subvolume numbered 0'?". Answers: 1. BTRFS magic! 😉 2. No, not necessarily, you can choose something other than the non-named subvolume.
When you create a brand new BTRFS filesystem, the system not only creates the initial the root subvolume (numbered 0) but also tags it as being the default subvolume. When you ask the operating system to mount a subvolume contained in a BTRFS volume without specifying a subvolume number, it determines which of the existing subvolumes has been tagged as "default subvolume" and mounts it. If none of the exiting subvolumes has the tag "default subvolume" (e.g. because the default subvolume has been deleted), the mount command gives up with a rather cryptic message:
# mount /dev/loop0 /mnt
mount: No such file or directory
It is also possible to change at any time which subvolume contained in a BTRFS volume is considered the default volume. This is accomplished with btrfs subvolume set-default. The following tags the subvolume 261 as being the default:
# btrfs subvolume set-default 261 /mnt
After that operation, doing the following is exactly the same:
# mount /dev/loop0 /mnt # mount -o subvolid=261 /dev/loop0 /mnt
The chosen new default subvolume must be visible in the VFS when you invoke btrfs subvolume set-default'
Deleting subvolumes
Question: "As subvolumes appear like directories, can I delete a subvolume by doing an rm -rf on it?". Answer: Yes, you can, but that way is not the most elegant, especially when it contains several gigabytes of data scattered on thousands of files, directories and maybe other subvolumes located in the one you want to remove. It isn't elegant because rm -rf could take several minutes (or even hours!) to complete whereas something else can do the same job in the fraction of a second.
"Huh?" Yes perfectly possible, and here is the cool goodie for the readers who arrived at this point: when you want to remove a subvolume, use btrfs subvolume delete instead of rm -rf. That btrfs command will remove the snapshots in a fraction of a second, even it contains several gigabytes of data!
- You can never remove the root subvolume of a BTRFS volume as btrfs delete expects a subvolume name (again: this is not a flaw in the design of BTRFS; removing the subvolume numbered 0 would destroy the entirety of a BTRFS volume…too dangerous).
- If the subvolume you delete was tagged as the default subvolume you will have to designate another default subvolume or explicitly tell the system which one of the subvolumes has to be mounted)
An example: considering our initial example given above and supposing you have mounted non-named subvolume numbered 0 in /mnt, you can remove SV22 by doing:
# btrfs subvolume delete /mnt/SV2/SV22
Obviously the BTRFS volume will look like this after the operation:
.....BTRFS Volume................................................................................................................................ . . (0) --+-> Subvolume SV1 (258) ---> Directory D1 --+-> File F1 . | | . | +-> File F2 . | . +-> Directory D1 --+-> File F1 . | | . | +-> File F2 . | | . | +-> File F3 . | | . | +-> Directory D11 ---> File F4 . +-> File F1 . | . +-> Subvolume SV2 (259) --+-> Subvolume SV21 (260) .....................................................................................................................................
Snapshot and subvolumes
If you have a good comprehension of what a subvolume is, understanding what a snapshot is won't be a problem: a snapshot is a subvolume with some initial contents. "Some initial contents" here means an exact copy.
When you think about snapshots, think about copy-on-write: the data blocks are not duplicated between a mounted subvolume and its snapshot unless you start to make changes to the files (a snapshot can occupy nearly zero extra space on the disk). At time goes on, more and more data blocks will be changed, thus making snapshots "occupy" more and more space on the disk. It is therefore recommended to keep only a minimal set of them and remove unnecessary ones to avoid wasting space on the volume. The following illustrates how to take a snaphot of the VFS root:
# btrfs subvolume snapshot / /snap-2011-05-23
Create a snapshot of '/' in '//snap-2011-05-23'
Once created, the snapshot will persist in /snap-2011-05-23 as long as you don't delete it. Note that the snapshot contents will remain exactly the same it was at the time is was taken (as long as you don't make changes… BTRFS snapshots are writable!). A drawback of having snapshots: if you delete some files in the original filesystem, the snapshot still contains them and the disk blocks can't be claimed as free space. Remember to remove unwanted snapshots and keep a bare minimal set of them.
Listing and deleting snaphots
As there is no distinction between a snapshot and a subvolume, snapshots are managed with the exact same commands, especially when the time has come to delete some of them. An interesting feature in BTRFS is that snapshots are writable. You can take a snapshot and make changes in the files/directories it contains. A word of caution: there are no undo capbilities! What has been changed has been changed forever… If you need to do several tests just take several snapshots or, better yet, snapshot your snapshot then do whatever you need in this copy-of-the-copy :-).
Using snapshots for system recovery (aka Back to the Future)
Here is where BTRFS can literally be a lifeboat. Suppose you want to apply some updates via emerge -uaDN @world but you want to be sure that you can jump back into the past in case something goes seriously wrong after the system update (does libpng14 remind you of anything?!). Here is the "putting-things-together part" of the article!
The following only applies if your VFS root and system directories containing /sbin, /bin, /usr, /etc…. are located on a BTRFS volume. To make things simple, the whole structure is supposed to be located in the SAME subvolume of the same BTRFS volume.
To jump back into the past you have at least two options:
- Fiddle with the default subvolume numbers
- Use the kernel command line parameters in the bootloader configuration files
In all cases you must take a snapshot of your VFS root *before* updating the system:
# btrfs subvolume snapshot / /before-updating-2011-05-24
Create a snapshot of '/' in '//before-updating-2011-05-24'
Hint: You can create an empty file at the root of your snapshot with the name of your choice to help you easily identify which subvolume is the currently mounted one (e.g. if the snapshot has been named before-updating-2011-05-24, you can use a slightly different name like current-is-before-updating-2011-05-24 => touch /before-updating-2011-05-24/current-is-before-updating-2011-05-24). This is extremly useful if you are dealing with several snapshots.
There is no "better" way; it's just a question of personal preference.
Way #1: Fiddle with the default subvolume number
- Your "production" VFS root partition resides in the root subvolume (subvolid=0),
- Your /boot partition (where the bootloader configuration files are stored) is on another standalone partition
First search for the newly created subvolume number:
# btrfs subvolume list /
'''ID 256''' top level 5 path before-updating-2011-05-24
'256' is the ID to be retained (of course, this ID will differ in your case).
Now, change the default subvolume of the BTRFS volume to designate the subvolume (snapshot) before-updating and not the root subvolume then reboot:
# btrfs subvolume set-default 256 /
Once the system has rebooted, and if you followed the advice in the previous paragraph that suggests to create an empty file of the same name as the snapshot, you should be able to see if the mounted VFS root is the copy hold by the snapshot before-updating-2011-05-24:
# ls -l /
-rw-rw-rw- 1 root root 0 May 24 20:33 current-is-before-updating-2011-05-24
The correct subvolume has been used for mounting the VFS! Excellent! This is now the time to mount your "production" VFS root (remember the root subvolume can only be accessed via its identification number i.e 0):
# mount -o subvolid=0 /mnt # mount ... /dev/sda2 on /mnt type btrfs (rw,subvolid=0)
Oh by the way, as the root subvolume is now mounted in /mnt let's try something, just for the sake of the demonstration:
# ls /mnt ... drwxr-xr-x 1 root root 0 May 24 20:33 current-is-before-updating-2011-05-24 ... # btrfs subvolume list /mnt ID 256 top level 5 path before-updating-2011-05-24
No doubt possible 🙂 Time to rollback! For this rsync will be used in the following way:
# rsync --progress -aHAX --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/mnt / /mnt
Basically we are asking rsync to:
- preserve timestamps, hard and symbolic links, owner/group IDs, ACLs and any extended attributes (refer to the rsync manual page for further details on options used) and to report its progression
- ignore the mount points where virtual filesystems are mounted (procfs, sysfs…)
- avoid a re-recursion by reprocessing /mnt (you can speed up the process by adding some extra directories if you are sure they don't hold any important changes or any change at all like /var/tmp/portage for example).
Be patient! The resync may take several minutes or hours depending on the amount of data amount to process…
Once finished, you will have to set the default subvolume to be the root subvolume:
# btrfs subvolume set-default 0 /mnt
ID 256 top level 5 path before-updating-2011-05-24
DO NOT ENTER / instead of /mnt in the above command; it won't work and you will be under the snapshot before-updating-2011-05-24 the next time the machine reboots.
The reason is that subvolume number must be "visible" from the path given at the end of the btrfs subvolume set-default command line. Again refer the boxes analogy: in our context we are in a subbox numbered 256 which is located *inside* the box numbered 0 (so it can't see neither interfere with it). [TODO: better explain]
Now just reboot and you should be in business again! Once you have rebooted just check if you are really under the right subvolume:
# ls / ... drwxr-xr-x 1 root root 0 May 24 20:33 current-is-before-updating-2011-05-24 ... # btrfs subvolume list / ID 256 top level 5 path before-updating-2011-05-24
At the right place? Excellent! You can now delete the snapshot if you wish, or better: keep it as a lifeboat of "last good known system state."
Way #2: Change the kernel command line in the bootloader configuration files
First search for the newly created subvolume number:
# btrfs subvolume list /
'''ID 256''' top level 5 path before-updating-2011-05-24
'256' is the ID to be retained (can differ in your case).
Now with your favourite text editor, edit the adequate kernel command line in your bootloader configuration (/etc/boot.conf). This file contains is typically organized in several sections (one per kernel present on the system plus some global settings), like the excerpt below:
set timeout=5 set default=0 # Production kernel menuentry "Funtoo Linux production kernel (2.6.39-gentoo x86/64)" { insmod part_msdos insmod ext2 ... set root=(hd0,1) linux /kernel-x86_64-2.6.39-gentoo root=/dev/sda2 initrd /initramfs-x86_64-2.6.39-gentoo } ...
Find the correct kernel line and add one of the following statements after root=/dev/sdX:
rootflags=subvol=before-updating-2011-05-24 - Or - rootflags=subvolid=256
If the kernel your want to use has been generated with Genkernel, you MUST use real_rootflags=subvol=… instead of rootflags=subvol=… at the penalty of not having your rootflags taken into consideration by the kernel on reboot.
Applied to the previous example you will get the following if you referred the subvolume by its name:
set timeout=5 set default=0 # Production kernel menuentry "Funtoo Linux production kernel (2.6.39-gentoo x86/64)" { insmod part_msdos insmod ext2 ... set root=(hd0,1) linux /kernel-x86_64-2.6.39-gentoo root=/dev/sda2 rootflags=subvol=before-updating-2011-05-24 initrd /initramfs-x86_64-2.6.39-gentoo } ...
Or you will get the following if you referred the subvolume by its identification number:
set timeout=5 set default=0 # Production kernel menuentry "Funtoo Linux production kernel (2.6.39-gentoo x86/64)" { insmod part_msdos insmod ext2 ... set root=(hd0,1) linux /kernel-x86_64-2.6.39-gentoo root=/dev/sda2 rootflags=subvolid=256 initrd /initramfs-x86_64-2.6.39-gentoo } ...
Once the modifications are done, save your changes and take the necessary extra steps to commit the configuration changes on the first sectors of the disk if needed (this mostly applies to the users of LILO; Grub and SILO do not need to be refreshed) and reboot.
Once the system has rebooted and if you followed the advice in the previous paragraph that suggests to create an empty file of the same name as the snapshot, you should be able to see if the mounted VFS root is the copy hold by the snapshot before-updating-2011-05-24:
# ls -l /
-rw-rw-rw- 1 root root 0 May 24 20:33 current-is-before-updating-2011-05-24
The correct subvolume has been used for mounting the VFS! Excellent! This is now the time to mount your "production" VFS root (remember the root subvolume can only be accessed via its identification number 0):
# mount -o subvolid=0 /mnt # mount ... /dev/sda2 on /mnt type btrfs (rw,subvolid=0)
Time to rollback! For this rsync will be used in the following way:
# rsync --progress -aHAX --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/mnt / /mnt
Here, please refer to what has been said in Way #1 concerning the used options in rsync. Once everything is in place again, edit your bootloader configuration to remove the rootflags/real_rootflags kernel parameter, reboot and check if you are really under the right subvolume:
# ls / ... drwxr-xr-x 1 root root 0 May 24 20:33 current-is-before-updating-2011-05-24 ... # btrfs subvolume list / ID 256 top level 5 path current-is-before-updating-2011-05-24
At the right place? Excellent! You can now delete the snapshot if you wish, or better: keep it as a lifeboat of "last good known system state."
Some BTRFS practices / returns of experience / gotchas
- Although BTRFS is still evolving, at the date of writing it (still) is an experimental filesystem and should be not be used for production systems and for storing critical data (even if the data is non critical, having backups on a partition formatted with a "stable" filesystem like Reiser or ext3/4 is recommended).
- From time to time some changes are brought to the metadata (BTRFS format is not definitive at date of writing) and a BTRFS partition could not be used with older Linux kernels (this happened with Linux 2.6.31).
- More and more Linux distributions are proposing the filesystem as an alternative for ext4
- Some reported gotchas: https://btrfs.wiki.kernel.org/index.php/Gotchas
- Playing around with BTFRS can be a bit tricky especially when dealing with default volumes and mount point (again: the box analogy)
- Using compression (e.g. LZO =>> mount -o compress=lzo) on the filesystem can improve the throughput performance, however many files nowadays are already compressed at application level (music, pictures, videos….).
- Using space caching capabilities (mount -o space_cache) seems to brings some extra slight performance improvements.
- There is very interesting discussion on BTRFS design limitations with B-Trees lying on LKML. We strongly encourage you to read about on
Deploying a Funtoo instance in a subvolume other than the root subvolume
Some Funtoo core devs have used BTRFS for many months and no major glitches have been reported so far (except an non-aligned memory access trap on SPARC64 in a checksum calculation routine; minor latest kernels may brought a correction) except a long time ago but this was more related to a kernel crash due to a bug that corrupted some internal data rather than the filesystem code in itself.
The following can simplify your life in case of recovery (not tested):
When you prepare the disk space that will hold the root of your future Funtoo instance (and so, will hold /usr /bin /sbin /etc etc…), don't use the root subvolume but take an extra step to define a subvolume like illustrated below:
# fdisk /dev/sda2 .... # mkfs.btrfs /dev/sda2 # mount /dev/sda2 /mnt/funtoo # subvolume create /mnt/funtoo /mnt/funtoo/live-vfs-root-20110523 # chroot /mnt/funtoo/live-vfs-root-20110523 /bin/bash
Then either:
- Set the default subvolume /live-vfs-root-20110523 as being the default subvolume (btrfs subvolume set-default…. remember to inspect the subvolume identification number)
- Use rootflag / real_rootfsflags (always use real_rootfsflags for kernel generated with Genkernel) on the kernel command line in your bootloader configuration file
Technically speaking, it won't change your life BUT at system recovery: when you want to rollback to a functional VFS root copy because something happened (buggy system package, too aggressive cleanup that removed Python, dead compiling toolchain…) you can avoid a time costly rsync but at the cost of putting a bit of overhead over your shoulders when taking a snapshot.
Here again you have two ways to recover the system:
- fiddling with the default subvolume:
- Mount to the no named volume somewhere (e.g. mount -o subvolid=0 /dev/sdX /mnt)
- Take a snapshot (remember to check its identification number) of your current subvolume and store it under the root volume you just have just mounted (btrfs snapshot create / /mnt/before-updating-20110524) — (Where is the "frontier"? If 0 is monted does its contennts also appear in the taken snashot located on the same volume?)
- Update your system or do whatever else "dangerous" operation
- If you need to return to the latest good known system state, just set the default subvolume to use to the just taken snapshot (btrfs subvolume set-default <snapshotnumber here> /mnt)
- Reboot
- Once you have rebooted, just mount the root subvolume again and delete the subvolume that correspond to the failed system update (btrfs subvolume delete /mnt/<buggy VFS rootsnapshot name here>)
- fiddling with the kernel command line:
- Mount to the no named volume somewhere (e.g. mount -o subvolid=0 /dev/sdX /mnt)
- Take a snapshot (remember to check its identification number) of your current subvolume and store it under the root volume you just have just mounted (btrfs snapshot create / /mnt/before-updating-20110524) — (Where is the "frontier"? If 0 is mounted does its contents also appear in the taken snapshot located on the same volume?)
- Update your system or do whatever else "dangerous" operation
- If you need to return to the latest good known system state, just set the rootflags/real_rootflags as demonstrated in previous paragraphs in your loader configuration file
- Reboot
- Once you have rebooted, just mount the root subvolume again and delete the subvolume that correspond to the failed system update (btrfs subvolume delete /mnt/<buggy VFS rootsnapshot name here>)
Space recovery / defragmenting the filesystem
From time to time it is advised to ask for re-optimizing the filesystem structures and data blocks in a subvolume. In BTRFS terminology this is called a defragmentation and it only be performed when the subvolume is mounted in the VFS (online defragmentation):
# btrfs filesystem defrag /mnt
You can still access the subvolume, even change its contents, while a defragmentation is running.
It is also a good idea to remove the snapshots you don't use anymore especially if huge files and/or lots of files are changed because snapshots will still hold some blocks that could be reused.
SSE 4.2 boost
If your CPU supports hardware calculation of CRC32 (e.g. since Intel Nehalem series and later and AMD Bulldozer series), you are encouraged to enable that support in your kernel since BTRFS makes an aggressive use of those. Just check you have enabled CRC32c INTEL hardware acceleration in Cryptographic API either as a module or as a built-in feature
Recovering an apparent dead BTRFS filesystem
Dealing with a filesystem metadata coherence is a critical in a filesystem design. Losing some data blocks (i.e. having some corrupted files) is less critical than having a screwed-up and unmountable filesystem especially if you do backups on a regular basis (the rule with BTRFS is *do backups*, BTRFS has no mature filesystem repair tool and you *will* end up in having to re-create your filesystem from scratch again sooner or later).
Mounting with recovery option (Linux 3.2 and beyond)
If you are using Linux 3.2 and later (only!), you can use the recovery option to make BTRFS seek for a usable copy of tree root (several copies of it exists on the disk). Just mount your filesystem as:
# mount -o recovery /dev/yourBTFSvolume /mount/point
btrfs-select-super / btrfs-zero-log
Two other handy tools exist but they are not deployed by default by sys-fs/btrfs-progs (even btrfs-progs-9999) ebuilds because they only lie in the branch "next" of the btrfs-progs Git repository:
- btrfs-select-super
- btrfs-zero-log
Building the btrfs-progs goodies
The two tools this section is about are not build by default and Funtoo ebuilds does not build them as well for the moment. So you must build them manually:
# mkdir ~/src # cd ~/src # git clone git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git # cd btrfs-progs # make && make btrfs-select-super && make btrfs-zero-log
In the past, btrfs-select-super and btrfs-zero-log were lying in the git-next branch, this is no longer the case and those tools are available in the master branch
Fixing dead superblock
In case of a corrupted superblock, start by asking btrfsck to use an alternate copy of the superblock instead of the superblock #0. This is achieved via the -s option followed by the number of the alternate copy you wish to use. In the following example we ask for using the superblock copy #2 of /dev/sda7:
# ./btrfsck --s 2 /dev/sd7
When btrfsck is happy, use btrfs-super-select to restore the default superblock (copy #0) with a clean copy. In the following example we ask for restoring the superblock of /dev/sda7 with its copy #2:
# ./btrfs-super-select -s 2 /dev/sda7
Note that this will overwrite all the other supers on the disk, which means you really only get one shot at it.
If you run btrfs-super-select prior prior to figuring out which one is good, you've lost your chance to find a good one.
Clearing the BTRFS journal
This will only help with one specific problem!
If you are unable to mount a BTRFS partition after a hard shutdown, crash or power loss, it may be due to faulty log playback in kernels prior to 3.2. The first thing to try is updating your kernel, and mounting. If this isn't possible, an alternate solution lies in truncating the BTRFS journal, but only if you see "replay_one_*" functions in the oops callstack.
To truncate the journal of a BTRFS partition (and thereby lose any changes that only exist in the log!), just give the filesystem to process to btrfs-zero-log:
# ./btrfs-zero-log /dev/sda7
This is not a generic technique, and works by permanently throwing away a small amount of potentially good data.
Using btrfsck
Extremely experimental…
If one thing is famous in the BTRFS world it would be the so-wished fully functional btrfsck. A read-only version of the tool was existing out there for years, however at the begining of 2012, BTRFS developers made a public and very experimental release: the secret jewel lies in the branch dangerdonteveruse of the BTRFS Git repository hold by Chris Mason on kernel.org.
# git clone git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git # cd btrfs-progs # git checkout dangerdonteveruse # make
So far the tool can:
- Fix errors in the extents tree and in blocks groups accounting
- Wipe the CRC tree and create a brand new one (you can to mount the filesystem with CRC checking disabled )
To repair:
# btrfsck --repair /dev/''yourBTRFSvolume''
To wipe the CRC tree:
# btrfsck --init-csum-tree /dev/''yourBTRFSvolume''
Two other options exist in the source code: –super (equivalent of btrfs-select-super ?) and –init-extent-tree (clears out any extent?)
Final words
We give the great lines here but BTRFS can be very tricky especially when several subvolumes coming from several BTRFS volumes are used. And remember: BTRFS is still experimental at date of writing 🙂
Lessons learned
- Very interesting but still lacks some important features present in ZFS like RAID-Z, virtual volumes, management by attributes, filesystem streaming, etc.
- Extremly interesting for Gentoo/Funtoo systems partitions (snapshot/rollback capabilities). However not integrated in portage yet.
- If possible, use a file monitoring tool like TripWire this is handy to see what file has been corrupted once the filesystem is recovered or if a bug happens
- It is highly advised to not use the root subvolume when deploying a new Funtoo instance or put any kind of data on it in a more general case. Rolling back a data snapshot will be much easier and much less error prone (no copy process, just a matter of 'swapping' the subvolumes).
- Backup, backup backup your data! 😉
Support Funtoo and help us gro


text:
Information for Chisinau
If you wish to travel from Turin to Chisinau, Rumbo offers you the best last minute offers so that you can travel taking advantage of every discount and special promotion. Your cheap flights from Turin to Chisinau are in Rumbo.
You might also be interested in Cheap flights to Turin or are looking for Cheap flights from Chisinau to Turin Book now!

subset: commoncrawl


text:
Xbox One will require an Xbox Gold subscription for almost everything
Microsoft has always been a fan of charging their Xbox customers a premium to access features including multiplayer gaming, entertainment applications, and Internet Explorer. The company has announced the list of additional new features for Xbox One that will require a Live Gold subscription.
Xbox One will require a paid subscription to access the console's OneGuide (TV Guide), Game DVR service, Skype, and new SmartMatch service. We aren't extremely surprised about the news, but now we can confirm what we suspected.
This announcement doesn't exactly boast well with customers who are debating between Microsoft and Sony's latest consoles. The PlayStation 4 will require a PlayStation Plus subscription to play games online, but it won't require one for many other features including the Game DVR.
In the end - most users will have a subscription to Xbox Live Gold anyway, but for most this idea will be a battle of principle between the two companies.
What are your thoughts on Microsoft charging for essentially… everything?
Source: Microsoft via The Verge
Get the Windows Central Newsletter
All the latest news, reviews, and guides for Windows and Xbox diehards.


text:
The question of whether Mitt Romney's presidential campaign will be hurt by his characterization of 47 percent of Americans as people who believe they are victims, entitled to health care, food, housing, "you name it," is fairly settled.
Yes, it will — at least in the short run. Romney's problem? There's not much more campaign left than a short run.
His comments, surreptitiously videotaped during a May fundraiser and disseminated online Monday by the liberal Mother Jones magazine, came after a series of gaffes by Romney and have the potential to hobble him further in eight tossup states where the race for the White House will be decided Nov. 6. President Obama holds small leads in all.
Particularly damaging, say politicos in states like Ohio and Iowa and Virginia, was Romney's distillation of how he viewed his obligation to those Americans.
On the video, Romney says that his role "is not to worry about those people. I'll never convince them that they should take personal responsibility and care for their lives." He also characterized 47 percent who will "vote for the president no matter what" as the swath of Americans who don't pay income tax.
Iowa lawyer Doug Gross, a Republican who in 2008 chaired Romney's presidential effort in the state, says that comment "doesn't help anywhere."
"We Republicans, and independents who tend to vote Republican, are concerned about the government-centered nature of the Obama administration and his plans for the future," Gross said Tuesday. "But our beliefs are that we don't write off those who are dependent — we help them get the education and tools to succeed on their own."
"Writing them off is an anathema to us," he said.
In the hours after the video surfaced, tax policy centers have noted that while it's true that just under half of Americans owe no federal income taxes under the current tax code, many of them pay federal payroll and excise taxes, as well as state and local income, property and sales taxes. And many of them are elderly, poor, and some serve in the military.
To gauge how Romney's comments may play in tossup states, we turned to politicos, strategists and pollsters on both sides of the aisle. Here's what we heard:
- 32 percent of tax filers have no federal tax liability, 34th in the nation, according to the Tax Foundation.
- 2008 presidential result: Obama 51.2, GOP nominee Sen. John McCain, 47.2 percent
- Current polling average from Real Clear Politics: Obama, 48.5 percent, Romney, 44.3 percent
Alan Melamed, Democratic strategist with offices in Cleveland and Columbus:
"Gov. Romney was already in some serious trouble. The latest polling shows him down 7 points. His failure to advocate for assisting the auto industry is having a serious impact on him in Ohio. There was a stark contrast in the two party conventions, and President Clinton's efforts have hurt him here."Then you go to these videos. It just reinforces everything that's hurt him up to this point. The comments don't surprise me. If you go back to the primaries, and saw Gov. Romney shift to the right, attempt to appease the Ron Paul and Tea Party elements. His words are coming back to haunt him in the middle of a general election presidential campaign."The people he had a shot at, I don't know how he brings them to his camp at this point."
- 31 percent of tax filers have no federal tax liability, 36th in the nation
- 2008 presidential result: Obama, 53.5, McCain, 44.9 percent
- Current polling average from Real Clear Politics: Obama, 47.5 percent, Romney, 45.8 percent
Floyd Cirulli, Denver-based pollster and consultant.
"I think the worst part of it is the timing. There's nothing philosophically that was that surprising. And almost everything can be handled if they're handled early enough. His problem: We're two weeks from [early] voting in tossup states. We're close. He's clearly going to be on the defensive explaining this; it's polarizing. If you're talking to independent Colorado voters, you want to be more conciliatory; you want to say that there can be solutions, you can get things done. This is more of the very partisan antagonism that has characterized this race."We are in a major debate right now as to whether or not the campaign has cratered. This will simply reinforce the commentary. For Colorado, for opinion leaders, for those wondering whether to make a final donation, a final phone call — not just voters, but activists and the attentive public, are right at a critical point."This is just terrible, terrible timing for Romney."
- 31 percent of tax filers have no federal tax liability, 37th in the nation
- 2008 presidential result, Obama, 54, McCain, 44.7
- Current polling average from Real Clear Politics: Obama 45 percent, Romney, 44.8 percent
Doug Gross, Des Moines attorney, onetime GOP candidate for governor:
"It's not a death blow. I think the key will be the first debate, a chance to see them side-by-side."Philosophically, clearly the majority of the public are not interested in more government handouts. They are concerned about income inequality. Not to ignore it, but solve it. This is a general election and not a primary."His problem is not the fact that he's decrying a significant and growing proportion of people dependent on government and not paying taxes. The problem is him writing them off. It feeds the narrative of the Obama campaign that he's out of touch."He still has a chance to win here, but this doesn't help."
- 32 percent of tax filers have no federal tax liability, 35th in the nation
- 2008 presidential result, Obama, 56.3, McCain, 42.4 percent
- Current polling average: Obama, 48.2 percent, Romney, 46.8 percent
Mike Gousha, distinguished fellow in law and public policy at Marquette University; host of statewide television politics show:
"I don't know how this will play out. If you look at how Romney has fared in polling since January, he's had some work to do here."His issue has been answering the question about whether he cares about people — he has trouble there. And in simple favorable/unfavorable ratings, he's been underwater."In his favor, having [Wisconsin Rep. Paul] Ryan on the ticket does help, and he has a really solid get-out-the-voter operation."He has work to do."
Charles Franklin, director of the Marquette Law School Poll:
"I think the Romney comment reinforces the belief that he lacks empathy. In our August Marquette Law School Poll in Wisconsin we found 51 percent of registered voters said Romney doesn't care about "people like me," while 37 percent said he did. In contrast, 57 percent said Obama cares about "people like me" while 39 percent said he did not. That gap is likely to be exacerbated by the new Romney comments at a time he needs to improve his personal image with Wisconsin voters."
- 35 percent of tax filers have no federal tax liability, 25th in the nation
- 2008 presidential result, Obama, 55.1, McCain, 42.7 percent
- Current polling average from Real Clear Politics: Obama, 49 percent, Romney, 45.7 percent
Jon Ralston, political analyst, host of Face to Face:
"I'm not sure Nevada will be any different than any other place. He already has some problems here. There are no public polls showing him ahead. This is just going to make his job here that much tougher."I know some people think this is going to help energize the base, but I think it's a little late for that. The Democrats have a much, much better machine to get out the vote here."His only chance is an exceedingly high Republican turnout, and the 17 percent of voters who are independents breaking toward him. There's no sign of any of that now."
- 30 percent of tax filers have no federal tax liability, 41st in the nation
- 2008 presidential result, Obama, 52.7, McCain, 46.4 percent
- Current polling average: Obama, 49 percent, Romney, 45.7 percent
Larry Sabato, director of the University of Virginia's Center for Politics:
"It doesn't help him anywhere — how could it? The 47 percent he described as victims, and hopeless, include millions of Romney supporters. He draws disproportionately from white blue-collar workers, who are often not paying federal income taxes. Those lower-middle class and below can be exempt, as can senior citizens."Many years ago I learned an inflexible rule — you tend not to get the votes of people you insult."It's Sept. 18, and you push the reset button at the debates next month. But even War and Peace has only a certain number of pages to turn. We seem to be turning a number of pages on Gov. Romney — gaffes, staff infighting, the convention. Time and pages are running out."
The two other tossup states are New Hampshire and Florida. Their statistics look like this:
- 28 percent of tax filers have no federal tax liability, 47th in the nation
- 2008 presidential result: Obama, 54.3, McCain, 44.8 percent
- Current polling average: Obama, 47.3 percent, Romney, 43.3 percent
- 39 percent of tax filers have no federal tax liability, ninth in the nation
- 2008 presidential result: Obama, 50.9, McCain, 48.4 percent
- Current polling average: Obama, 47.8 percent, Romney, 46.4 percent
Copyright 2016 NPR. To see more, visit http://www.npr.org/.


text:
Latest Gear Live Videos
Apple updates AirPort Utility for iOS, making it 64-bit
Posted by Jason Diaz Categories: Utilities, App Updates, Apple, Free Apps,
Alongside the Apple TV Remote app update, Apple has also released AirPort Utility 1.3.3, bringing 64-bit support to the app when using it on an iPhone 5S, iPad Air, or iPad Mini 2. While the prior update gave it a redesign, this update brings AirPort Utility up to par with other Apple iOS stock apps that have transitioned to the higher bitness. Clearly, Apple is on the move and is transitioning all of its first-party app over to 64-bit. Get a look at all the features after the jump.
- See a graphical overview of your Wi-Fi network
- Get information about your connected Wi-Fi devices
- View and change network and Wi-Fi settings
- Restart or restore a base station, or update the firmware on a base station when available
- View or update passwords for your network, base stations, or disks
- Easily access network information such as IP address, DNS servers, and router address
- Manage DHCP reservations and port mappings
- Configure base stations for IPv6
- View status or error messages
- Archive Time Machine backups
New In Update 1.3.3
- Adds 64-bit support
Read More | App Store
Gallery: Apple updates AirPort Utility for iOS, making it 64-bit
iCam video security app now supports 256-Bit AES encryption & iPhone 5
Posted by Jason Diaz Categories: Utilities, App Updates, $4.99,
Video security surveillance app maker, SKJM, has updated its iCam app to version 2.2 and added some useful features. iCam now supports 256-Bit AES encryption, motion event image thumbnail gallery style, and supports the iPhone 5 4-inch display size. The update also includes various bug fixes and optimizations. I highly recommend this invaluable app. iCam has motion detection functionality sent via push notifiation alert with support for a bevy of third-party of security surveillance cameras. iCam is universal binary iOS app. Most notable feature: iCam for iPhone can support up to 12 simultaneous live video streams and the iPad up to 16. Don't don't have it? iCam is priced at $4.99 in the App Store.
What's New in Version 2.2
- Added support for 256-bit AES encryption.
- Added support for Motion Event Image Thumbnails.
- Added iPhone 5 screen size optimizations.
- Fixed various minor bugs.
Be sure to also update the iCamSource application running on your computer(s) to the latest version: http://skjm.com/icam/support.php
Read More | iCam
Gallery: iCam video security app now supports 256-Bit AES encryption & iPhone 5
1Password 4 with iCloud sync, built-in browser, demo mode a worthy upgrade
Posted by Jason Diaz Categories: Utilities, App Updates, iPad Apps, $7.99, Above $10,
I can't deny how excited we at Gear Live are about AgileBits's update to its successful password management app. 1Password Pro is now at version 4, and with it comes an overhauled UI and a host of cool, new features like iCloud support, integrated full browser, and demo mode.
Undoubtedly, iCloud sync has to be the stand out feature. Now all of your iDevices that have 1Password 4 (1P4) installed will automagically have the same data whether it be iPhone, iPad, or iPod Touch, all transferred and stored in 256-bit AES encryption. You can also simultaneously use DropBox as sync protocol along with iCloud; great news for those who use multivendor hardware.
1Password 4 now has a new full integrated browser built right inside the app that has a URL bar, tabs and full access to your password vault.
Click to continue reading 1Password 4 with iCloud sync, built-in browser, demo mode a worthy upgrade
Read More | 1Password 4
Gallery: 1Password 4 with iCloud sync, built-in browser, demo mode a worthy upgrade
Find My iPhone updated with driving directions
Posted by Jason Diaz Categories: Utilities, App Updates, Apple, Free Apps,
Apple has updated Find My iPhone to version 2.0.1 and has added driving directions to your lost or stolen Apple device. The update brings a new feature called Lost Mode, which we're assuming tracks movement and stops with pin points. We at Gear Live highly recommend installing and enabling Find My iPhone on every iOS device you own.
- Driving directions to device location (iOS 6 or later)
- Play Sound, Lost Mode, and Erase buttons appear separately from map view
Read More | iTunes
Gallery: Find My iPhone updated with driving directions
Google Search iOS app updated with Siri-like Google Voice Search functionality (video!)
Posted by Jason Diaz Categories: Reference, Utilities, App Updates, Google, Free Apps,
Just like that, Google has updated its Google Search app for iOS with the Google Voice Search functionality that mimics Apple's Siri, first seen on Android devices. For those using iOS, now you have the best of both worlds. The update went live yesterday, and is a universal iOS app update for all iDevices, which also includes the new iPhone 5, iPod touch, and iPad mini. Users must be running at least iOS 4.2 to use the new app. My initial impressions of the Google Now voice feature is that it is quick, fairly accurate, and I like how it composes voice to text in real time. What are you waiting for? Go update and ask Google where to hide the body.
Read More | Google Search app
Gallery: Google Search iOS app updated with Siri-like Google Voice Search functionality (video!)
Download the Vonage Time to Call app and get a free international call
Posted by Andru Edwards Categories: Social Networking, Utilities, New Apps, Free Apps,
If you've been putting off calling your aunt in the Dominican Republic or your Slovenian cousins because of the cost of calling from your mobile phone, a promotion from Vonage should pique your interest. The VoIP provider is giving away one free international phone call, up to 15 minutes, to anyone who downloads its new iPhone app, Time to Call. The app is also free.
What's especially appealing about the offer is you don't have to be a paying customer of Vonage (from $11.99 per month) to use the app or get the one free trial call. The free call expires one year after you download the app. Be sure to check that the country you're calling is on the list of 100 that are included in the deal (check below).
After your one free call, all calls are billed in 15-minute increments. Prices for the 15-minute blocks of international talk time range from 99 cents to $9.99, depending on which country you call, although calling most countries is less than $1.99. And typical of Vonage's slightly experimental nature, the Time to Call app doesn't charge you through pre-paid credits or an in-system account, the way other services such as Skype do. Instead, Vonage's app bills you directly through iTunes.
Click to continue reading Download the Vonage Time to Call app and get a free international call
Gallery: Download the Vonage Time to Call app and get a free international call
Word Lens for iPhone review
Posted by Andru Edwards Categories: Travel, Utilities, Reviews, Free Apps,
There was a time when a jaunt through a foreign country meant stashing a translation guide on your pocket so that you could whip it out at a moment's notice to read a sign or understand a spoken word. It's a rudimentary system that's worked for ages, but Quest Visual looks to change the game with its Word Lens free iPhone (free, but language packs cost $4.99) app, which translates printed text on the fly.
How It Works
The concept behind Word Lens is a simple one: You point your iPhone 3GS, iPhone 4, or fourth generation iPod touch's camera at printed text and the app translates the word on the fly simply by tapping the green button in the toolbar. That ability isn't included by default; you have to purchase one of the $4.99 language packs. Unfortunately, only two packs are available at the moment—English to Spanish, and Spanish to English—so the selection is extremely limited. Other undisclosed languages are in the works.
Click to continue reading Word Lens for iPhone review
Gallery: Word Lens for iPhone review
Skyfire brings Flash video to the iPhone
Posted by Patrick Lambert Categories: Utilities, New Apps, $2.99,
The Skyfire browser is now fully available in the App Store, and promises to bring Flash video to the iPhone. The browser actually has a server side component which converts any Flash video on the fly before sending it on to your device, which allows it to display Flash videos converted to a format the Apple device understands. However, it seems that the company underestimated the demand for Flash videos from iOS users, since mere hours after the app went live, it was pulled from the App Store. It seems those troubles have disappeared though, and in use the app performs quite nicely. If you're looking for a way to view Flash video across the Internet in your browser, check out the Skyfire browser for iPhone, available for $2.99.
Read More | Skyfire
Gallery: Skyfire brings Flash video to the iPhone
Mobiscope: Your iPhone Surveillance Camera
Posted by John Kilhefner Categories: Photography, Utilities, $9.99,
Ever feel the prying urge to know what's going on inside your home when you leave your teenage son all alone for the weekend? Or just to check up on that sketchy baby sitter that you suspect is engaged in the larceny of your video game collection? How about just to watch public accessible surveillance cameras around the world for your own kicks? Whatever your fancy, Mobiscope wants to give it you. In real time. On your smartphone.
While the home surveillance technology is not new by any means, Mobiscope gives wannabe spies on a budget a great way to start. All that you need to begin your snoop-tastic adventure is a simple web camera, and the Mobiscope app installed on your smartphone.
If one camera isn't enough, you can access up to four well placed camera feeds at one time! The mobile app allows you to check up in real time what is going on in your home, or someone else's (hey, no judgement here!). Spying can be hard, and Mobiscope knows this. That's why the app lends you the ability to send an alert to your smart device when motion is detected so you don't miss a beat! What's more, the video feed can be recorded and viewed in real time with sound on the desktop edition, and on BlackBerry.
This app will run iPhone users just $9.99, while Windows, Palm, Android, and BlackBerry users will have to fork over $19.95. If spying is the name of your game, then you will definitely want to equip yourself with this little stealthy on-the-go gem.
Read More | Mobiscope App
Gallery: Mobiscope: Your iPhone Surveillance Camera
Calcbot: The calculator app you didn't know you needed
Posted by Andru Edwards Categories: Productivity, Utilities, $0.99,
If you are looking for a simple, stylish, and highly functional calculator app for the iPhone and iPad, we think you should check out Calcbot. You have an interface that is very appealing and fluid, and you can swipe to pull up a register of your work, and can even pull results from the register into equations. The best part, though, is that Calcbot is a universal app (which means you buy it once, and you get both the iPhone and the iPad version) that costs just $0.99. Seriously, a buck for a great iPhone and great iPad app? Don't mind if we do.
Read More | Calcbot
Gallery: Calcbot: The calculator app you didn't know you needed
© Gear Live Media, LLC. 2007 – User-posted content, unless source is quoted, is licensed under a Creative Commons Public Domain License. Gear Live graphics, logos, designs, page headers, button icons, videos, articles, blogs, forums, scripts and other service names are the trademarks of Gear Live Inc.


text:
Casanova�Don Juan�Charlie McCarthy?
Ventriloquist Edgar Bergen achieved stardom playing both straight man and comedian with his wooden alter ego Charlie McCarthy. The Charlie McCarthy Show was one of radio�s top-rated shows for nearly two decades.
Button down and bow-tied, the gentlemanly Bergen would never behave improperly with a lady. Charlie, on the other hand, is frisky, flirtatious, and brave enough to bring his game to guests Bette Davis and Hedy Lamarr, among others. His love of the ladies leads him to many an entertaining exchange.
Joined by a bevy of beauties (including Lana Turner, Judy Garland, Dorothy Lamour and more) and a bunch of boys (including Abbott & Costello, W. C. Fields, and Mickey Rooney), Edgar Bergen and his provocative puppet star in 16 digitally restored and remastered episodes.
Includes a Program Guide by Ivan G. Shreve, Jr.
EPISODES INCLUDE: Guest: Sonja Henie 06-27-37, Guest: Ida Lupino 09-05-37, Guest: Bette Davis 09-12-37, Guest: Maureen O' Sullivan 01-29-39, Guest: Hedy Lamarr (a.k.a. �Charlie's Orchestra�) 11-30-41, Guest: Judy Garland 12-07-41, Guest: Lana Turner 12-14-41, Guest: Billie Burke (a.k.a. �Raising Frogs�) 10-22-44, Guest: Signo Hasso 12-10-44, Guest: Dorothy Lamour (a.k.a. �Ransom Note�) 02-11-45, Guest: Gene Tierney (a.k.a. �Charlie the Hero�) 02-25-45, Guest: Anne Baxter (a.k.a. �Charlie's Rich�) 03-04-45, Guest: Joan Blondell (a.k.a. �Charlie's Bodyguard�) 03-11-45, Guest: Maria Montez (a.k.a. �Joint Bank Account�) 03-18-45, Guest: Lynn Bari (a.k.a. �Red Riding Hood�) 03-25-45, Guest: Linda Darnell 10-12-47
Related Products


text:
Rutabaga is one of those vegetables that I know exists and I have nothing against it but I tend to just pass it by all the time in the grocery store. This weekend I noticed some at the grocery store and I decided that it was past time to do something with it. The first thing that came to mind was a cheesy gratin and I figured that the rutabaga would work just like a potato in a gratin. I started by peeling the rutabaga and slicing it thinly using a mandolin. From there I briefly boiled the rutabaga slices to ensure that they would be nice and tender when they finally came out of the oven. I decided to go with a cream based gratin this time rather than a bechamel based one and I jazzed it up a bit with some garlic and thyme. After the sauce was made, it was as easy as assembling the gratin and baking it. By the time the gratin came out of the oven it was perfectly golden brown and covered in ooey gooey, creamy, melted cheesy goodness! I thoroughly enjoyed the rutabaga gratin and now that I have reacquainted myself with rutabaga I am looking forward to doing more with it!
Rutabaga Gratin
- 2 pounds rutabaga (peeled, sliced thinly)
- 1 cup heavy cream
- 2 cloves garlic (chopped)
- 1 teaspoon thyme (chopped)
- salt and pepper to taste
- 2 cups gruyere (grated)
- Heat the sliced rutabaga in boiling water for 3 minutes and set aside.
- Bring the cream, garlic, thyme, salt and pepper to a boil, reduce the heat and simmer for 3 minutes and then remove from the heat.
- Pour a bit of the cream into the bottom of a casserole dish.
- Place a layer of rutabaga on top, followed by some cream and some cheese. Continue to layer ending with a layer of cheese.
- Bake in a preheated 350F/180C oven until bubbling on the sides and golden brown on top, about 30-40 minutes.


text:
From the kitchen of One Perfect Bite...It took longer to trace this recipe to its original online source than it did to make the cookies. The recipe, which is quite old, has appeared in many places over the years, but I think it was first published online by the Food Network in 2004. It ended up in my kitchen because I was on the prowl for recipes that could be made by children, and these cookies seemed perfect. Was I right? Kinda. While the cookies are no-bake, they are not no-cook. There is a point where a hot mixture containing sugar bubbles away on the stove, and I think some supervision is in order to prevent spills and serious burns. The recipe is definitely within the realm of possibility for kids over ten, but certainly not for anyone younger. The cookie, which is actually more of a confection, is delicious and, despite my concerns about hot sugar, it is very easy to make. There's just one trick; you have to make sure that the sugar mixture boils hard for at least one minute, otherwise the cookies will be sugary instead of creamy. If you are very patient, these cookies can be formed and set within cookie cutters, but I tend to follow the line of least resistance and simply dropped them on to waxed paper to cool. If you are looking for a rainy day project for children, this would be a perfect way to spend an hour or two. Here's the recipe.
No-Bake Peanut Butter, Chocolate and Oatmeal Cookies...from the kitchen of One Perfect Bite courtesy of Helen Ostrosky and the Food Network
2 cups sugar
4 tablespoons cocoa
1 stick butter
1/2 cup milk
1 cup peanut butter
1 tablespoon vanilla
3 cups quick-cooking oatmeal (not instant)
In a heavy saucepan bring to a boil, sugar, cocoa, butter and milk. Let boil for 1 minute then add peanut butter, vanilla and oatmeal. On a sheet of waxed paper, drop mixture by teaspoonfuls, until cooled and hardened. Yield: 24 to 36 cookies depending on size.
One Year Ago Today: Lemon Sour Cream Tart
Two Years Ago Today: Sticky Rice Cake - Nian Gao


text:
Tech-Net Professional is an elite performance network where independent service facility members have a common goal of being world-class automotive service facilities. The TECH-NET Professional program provides superior customer service by combining high-quality CARQUEST Auto Parts, skilled automotive technicians and innovative consumer marketing programs.
Tech-Net Professional is committed to serving you, our customer, with professional automotive repair at a reasonable cost with qualified technicians. We use quality Carquest Auto Parts, guaranteed coast to coast. We stand on sound business principles and uphold high ethical standards. Our goal is to make your automotive repair experience friendly and successful.


text:
Version Date: Oct 7, 2008 View help for published
Principal Investigator(s): View help for Principal Investigator(s)
United States Department of Health and Human Services. National Institutes of Health. National Institute on Drug Abuse
Version V3
Drug Abuse Treatment Outcome Study - Adolescent (DATOS-A) was a multisite, prospective, community-based, longitudinal study of adolescents entering treatment. It was designed to evaluate the effectiveness of adolescent drug treatment by investigating the characteristics of the adolescent population, the structure and process of drug abuse treatment in adolescent programs, and the relationship of these factors with outcomes. Three major types or modalities of programs included in the study were chemical dependency or short-term inpatient (STI), therapeutic community or residential (RES), and outpatient drug-free (ODF). The adolescent battery of instruments included intake, intreatment, and follow-up questionnaires based largely on the DATOS adult study DRUG ABUSE TREATMENT OUTCOME STUDY (DATOS), 1991-1994: [UNITED STATES] (ICPSR 2258) instrument format, with considerable tailoring to the adolescent population. Clients entering treatment completed two comprehensive intake interviews (Intake 1 and Intake 2), approximately one week apart. This information is provided in Parts 1 and 2 of the data collection. These interviews were designed to obtain baseline data on drug use and other behaviors, such as illegal involvement, as well as information on background and demographic characteristics, education and training, mental health status, employment, income and expenditures, drug and alcohol dependence, health, religiosity and self-concept, and motivation and readiness for treatment. The one-, three-, and six-month intreatment interviews (Parts 3, 4, and 7) included items on treatment access, intreatment experience, and psychological functioning, as well as questions replicated from some of the domains in the Intake 1 and 2 questionnaires. The 12-month post-treatment follow-up interview (Part 5) included questions replicated from the previous interviews, and also included post-treatment status. Part 6 includes variables for time in treatment and interview availability indicators. The Measures Data (Part 8) were generated by using the Diagnostic and Statistical Manual of Mental Disorders (Rev. 3rd ed., DSM-III-R) (American Psychiatric Association, 1987). The variables in Part 8 give either the DSM-III-R level of dependence to a drug category or they describe whether the subject meets the DSM-III-R standard for a particular disorder. The 12-Month Follow-up Urine Result data (Part 9) provide the results from urine sample tests that were given to a sample of subjects at the time of the 12-Month Follow-up Interview. The urine test was used to ascertain the nature and extent of bias in the self-reports of the respondents. Urine specimens were tested for eight categories of drugs (amphetamines, barbiturates, benzodiazepines, cannabinoids, cocaine metabolite, methaqualone, opiates, and phencyclidine). The drugs covered in the study were alcohol, tobacco, marijuana (hashish, THC), cocaine (including crack), heroin, narcotics or opiates such as morphine, codeine, Demerol, Dilaudid, and Talwin, illegal methadone, sedatives and tranquilizers such as barbiturates and depressants, amphetamines or other stimulants such as speed or diet pills, methamphetamines, LSD, PCP, and other hallucinogens or psychedelics, and inhalants such as glue, gasoline, paint thinner, and aerosol sprays. The study also included drug of choice, frequency, and route of administration.
Export Citation:
Users are reminded by the National Institute on Drug Abuse (NIDA) that these data are to be used solely for statistical analysis and reporting of aggregated information and not for the investigation of specific individuals or organizations.
Users are advised that the data are most appropriately analyzed by modality.
The Intake 1 and Intake 2 data files contain several continuous variables that denote age at the time of a certain event. For some of these variables, dichotomous codes 1 and 95 were also used for "don't know but under 15" and "don't know but 15 or older," respectively. Code 1 was also used for actual responses of "1 year old." Because it is unlikely that these events occurred at age 1, the code 1 was changed to 94 ("1 or don't know but under 15") in order to make it clearer that this code denotes something other than age 1. Users are cautioned that this may have an effect on any analyses performed using these variables.
Users are advised that some DATOS-A publications exclude data from two sites that had low response rates. However, the public use files include data from all six sites.
DATOS-A is an ongoing collaborative research effort of the National Development and Research Institutes at North Carolina (NDRI), Texas Christian University, the University of California at Los Angeles, and NIDA. For additional information, see the DATOS Web site.
Conducted by the Coordinating DATOS Research Center at the National Development and Research Institutes (NDRI), North Carolina, and collaborating research centers at Texas Christian University and the University of California at Los Angeles, with data collected by the Research Triangle Institute.
Six cities located in different sections of the United States were selected for the study because they each had a sufficient number of adolescent programs to support the research design. All six cities were medium to large metropolitan areas with established treatment systems. These cities were a subset of the sites for the DATOS adult study DRUG ABUSE TREATMENT OUTCOME STUDY (DATOS), 1991-1994: [UNITED STATES] (ICPSR 2258). Treatment programs were purposefully sampled and included (1) programs that treated an adolescent population separately from an adult population and (2) programs with projected patient admissions of at least five patients per month. Thirty-seven programs participated in the study. Respondents were sampled from among those admitted to treatment in 1993-1995. A total of 3,382 clients participated in the Intake interview. Of those, 2,258 participated in the one-month intreatment interview, 1,120 participated in the three-month intreatment interview, and 1,785 participated in the 12-month follow-up. The intake treatment sample was 74 percent male, 24 percent African American, and 21 percent Hispanic, with a mean age of between 15 and 16 years and a mean of 9 years education. Over half had some juvenile or criminal justice status at admission, two-thirds had no prior drug treatment experience, and the predominant drug-use patterns included weekly or daily use of marijuana alone or combined with alcohol. For the urine testing that was done at the 12 month follow-up, 25 percent of the respondents interviewed at follow-up were randomly selected to provide a urine sample for testing. A total of 464 respondents were asked to provide a specimen. Urine specimens suitable for testing were obtained for 417, and results were available for 362 respondents and analyzed at a NIDA-certified laboratory.
Clients admitted to selected drug treatment programs in the United States in 1993-1995.
2,974 of the clients who completed the intake interview were selected as eligible for the 12-month follow-up interview (reasons for ineligibility include incarceration, hospitalization, language barrier, and living outside of the metropolitan interviewing area). Of these eligible clients, 65.9 percent (n = 1,960) were located, 60 percent (n = 1,785) were successfully interviewed, .5 percent (n = 14) were deceased, and 5.4 percent (n = 161) refused to participate.
2008-10-07 The question text was updated to enhance the clarity of each question by adding question stems and qualifying information. Also, minor typographical errors were corrected.
2007-02-19 SAS transport (XPORT), SPSS portable, and Stata system files were added to Parts 1-5. Some corrections were made to the codebooks.
2005-11-04 On 2005-03-14 new files were added to one or more datasets. These files included additional setup files as well as one or more of the following: SAS program, SAS transport, SPSS portable, and Stata system files. The metadata record was revised 2005-11-04 to reflect these additions.
2004-06-23 Three datasets were added to the study: 6-Month Intreatment Data (Part 7), Measures Data (Part 8, and 12-Month Follow-Up Urine Result Data (Part 9). Corresponding documentation was prepared for each. Value labels were added for one variable (MUSA) in Part 5, 12-Month Follow-Up Data.
2004-02-05 ICPSR data undergo a confidentiality review and are altered when necessary to limit the risk of disclosure. ICPSR also routinely creates ready-to-go data files along with setups in the major statistical software formats as well as standard codebooks to accompany the data. In addition to these procedures, ICPSR performed the following processing steps for this data collection:
The public-use data files in this collection are available for access by the general public. Access does not require affiliation with an ICPSR member institution.


text:
Nominate Brockley's worst roads for repair
He got up and walked out to the road. The black shape of it running from dark to dark. Then the distant low rumble. Not thunder. You could feel it under your feet... Something imponderable shifting out there in the dark. The earth itself contracting with the cold. It did not come again... He walked out into the road and stood. The silence. The salitter drying from the earth. The mudstained shapes of flooded cities burned to the waterline. At a crossroads a ground set with dolmen stones where the spoken bones of oracles lay moldering.
- The Road, Cormac McCarthy
Cllr Walton has alerted us to the fact that the Council has approved a budget of £1.525m to improve Lewisham's roads and are now looking for nominations for the borough's worst. We'd rather they spent money on pavements, but there are plenty of atrocious roads in Brockley that would be very deserving candidates for repair.
Please use this thread to nominate the roads that you think should the Council should consider and we'll pass your comments on. Nominations need to be in by April 15th.


text:
Good morning.
Our early headlines:
-- Former British Prime Minister Thatcher Dies
-- Blocked Or Breaking Through? Mixed Signals On Gun Bills
-- North Korea To Shut Jointly Run Factories, May Test Missile
-- Book News: Chile Prepares To Exhume Pablo Neruda's Remains
Other stories making headlines:
-- "Deadly Car Bomb Rocks Central Damascus." ( Al-Jazeera English)
-- "Kerry Meets Israeli Leaders To Push Mideast Peace." ( The Associated Press)
-- Louisville Men And Women Both Vying For Basketball Championships. ( ESPN)
-- "Officials: Bodies Of 2 Children Recovered From Construction Site" In South Carolina. ( WSOC-TV)
Copyright 2020 NPR. To see more, visit https://www.npr.org.


text:
8503 Greenbelt Rd, Suite T4
Greenbelt, MD 20770
Zebrowski Dental Care is a trusted Greenbelt area dental implants practice providing natural-looking, comfortable tooth replacement. We make it our mission to use a gentle touch during the process.
We hold ourselves to the highest standards to replace missing teeth and provide you with natural-looking results. Our goal is to restore your confidence and your bright, healthy smile.
Dr. Robert Zebrowski has a gentle touch and provides comfortable cleaning for a whiter smile. Offering general dentistry in the Greenbelt, Maryland area, Dr. Zebrowski assures you that a bright, healthy smile is the result of regular, preventative, professional dental cleanings.
Zebrowski Dental Care offers natural-looking partial dentures. Greenbelt area dentures dentist Dr. Robert Zebrowski uses the latest technology to produce materials custom-blended to your skin, hair and eye color. You'll look like you were born with perfect teeth.
Greenbelt area restorative dentistry at Zebrowski Dental Care can produce natural-looking results. If you have a damaged or missing tooth, we can help.
Our highly skilled team will assess your need for a crown, bridge, implant or other procedure to restore or improve your smile. Our goal is to provide quality dental care for your life-long oral health.
If you're interested in natural-looking bridges and dentures, look no further than Robert Zebrowski, D.D.S. who practices in the Greenbelt, Maryland area. Using modern materials and techniques, Dr. Zebrowski can achieve the natural look you seek. You will be very pleased with the comfortable, long-lasting results.
Dr. Karen McAndrew, D.D.S.
10442 Patterson Avenue
Gainesville, VA, 20155
(804) 741-8689
C/O Dr. Steven Johnson
4322 Ravensworth Rd.
Annandale, VA, 22003
(703) 256-5870
Dr. Kathryn Biery, D.D.S. DMD PC
Harrisonburg , VA, 22801
(540) 432-0609
Ms. Jennifer I. Elmore, BA
10530 Rosehaven Street Suite 111
Fairfax, VA, 22030
(703) 385-5777


text:
This week on the podcast we're talking about the cooking mistakes everybody makes, creating your own private cloud syncing service, and which Linux distro is better for beginners. We're also answering questions about reusing old file cabinets, keeping your unlimited data after Verizon takes it away, and syncing music to a flash drive for your car.
How to Listen to This Week's Episode
Here's how you can listen to our episode:
Download the MP3 directly.
Just listen to it in the Souncloud player below.
News and Top Stories
Facebook Home Brings a Friend-Focused Home and Lock Screen to Android: The fabled "Facebook Phone" is here, but it's not a phone—it's a suite of apps for Android. "Facebook Home" replaces the lock and home screens that normally hold your Android apps with updates, pictures, and messaging, all delivered through Facebook. It'll be available later in April for a few select devices in the Play Store, with more devices to come later.
Firefox Updates with Per-Window Private Browsing, a New Download Manager, and More: Firefox's latest update brings a number of new features, included one highly anticipated one: per-window private browsing. Now you can browse privately without closing out your current session, and it's not just for porn, people!
5 Cooking Mistakes We All Make, and How to Fix Them: Cleaning your cast iron with soap and water? Squeezing every last bit of ground beef into that pan? Even if you know your way around the kitchen, there are a few mistakes nearly all of us make in the kitchen. We take a look at some common kitchen errors that may plague your cooking, and why they're bad for your food.
How to Set Up Your Own Private Cloud Storage Service in Five Minutes with OwnCloud: With so many services like iCloud and Dropbox getting hacked these days, it's no surprise that more people want to pull their data off the cloud. Instead of missing out on those great syncing features, though, you can create your own cloud storage service that you control with a service called ownCloud. With it, you'll get syncing files, notes, calendars, and more. And, it only takes about five minutes to get it set up.
Ubuntu vs. Mint: Which Linux Distro Is Better for Beginners?: There's nothing like digging into your first Linux distribution, whether you're a tech-savvy user looking to branch out or whether you're installing it on a friend's computer. But which distribution is actually better for beginners? Here, we'll delve into the differences between Ubuntu and Mint, the two most popular beginner distros, and perform a little experiment to see what new users prefer.
Questions and Answers
Each week we answer five questions from readers and listeners. Here's what we tackled this week. (Apologies for the bad audio in the video version, the questions did not come through very well.)
Now that I've digitized my life, what should I do with all these filing cabinets I used to use? You could just use them as regular drawers and store things like spare cables in them, but we've also shared a number of cool DIY projects over the years. You could turn it into a standing desk, a little container garden, or—for you l33t hackers out there—a Linux server cluster.
I just upgraded to the iPhone 5 on Verizon and lost my unlimited data. Can I move my iPhone to another carrier, or somehow get unlimited data back on Verizon? Unfortunately, you can't use the Verizon iPhone on other carriers like Sprint or T-Mobile (you can switch an AT&T or T-Mobile phone between those two networks, though). In the case of Verizon, you could possibly migrate it to a carrier that uses Verizon's cell towers—like the pay-as-you-go carrier Page Plus—but you won't necessarily have unlimited data. If you want truly unlimited data, you'll probably have to buy another phone and use it on Sprint. Some users may be able to get Verizon customer service to reinstate their unlimited data, but there are no guarantees. Make sure you actually need unlimited data, too, before you go through the trouble.
Can I sync iTunes with an SD card or flash drive for playback in my car? iTunes won't sync with mass storage devices on its own, but you could do it with an app like DoubleTwist. Mac users should also check out Middleman, an app I put together for syncing iTunes playlists with flash drives and SD cards.
I like your show and want to help you out with a review, but I don't like iTunes. Is there anywhere else I can leave a review? Sadly, iTunes is one of the primary ways people discover and listen to our podcast. Even if you don't listen to it with iTunes (most of us don't), you can still leave a review there if you want to help us out!
Can I sync MP3 files from my Android phone to a cloud service? We dig Google Play Music and Amazon Cloud Player for that kind of stuff, but they sync from your computer to the cloud. We don't know of anything that syncs directly from your phone, if that's what you're asking, but perhaps other readers have suggestions?
I want to get a Kindle. Can I read EPUB books on it, or just Amazon-bought books? You can't read EPUB books on a Kindle, but you can convert your EPUB books to the MOBI format with Calibre and then transfer them to your Kindle. You aren't limited to just Amazon books. Alternatively, we love the Nook Simple Touch, which can not only read EPUB but is rootable, which means you can turn it into the ultimate ereader with magazines and other Android apps.
Tips of the Week
Thorin's Tip: The Psychology Behind How Clothing Influences How People See You At Work
Whitson's Tip: Gmail's Priority Inbox Is Awesome. Just Give It a Chance
Alan's Tip: This Guide to Cuts of Beef Makes Sure You're Never Confused at the Meat Counter Again
Downloads of the Week
Thorin's Pick: Bluenote (OS X)
Whiton's Pick: Avast Free Antivirus (Windows)
Alan's Pick: Koalcat's Clear (Android, based off Clear for iPhone)
How Do I Submit a Question?
There are two ways to send in your question:
Call (347) 687-8109 and record a question. Calls are awesome! We like them!
Email your question to [email protected].
Please keep your questions as brief as possible. This means about 3-5 sentences for emails and 30-60 seconds for calls and videos. Your questions can be specific, but broader questions are generally better because they'll apply to more people. For example, "how can I breathe new life into my old PDA?" is much better than "what can I do with an old HP iPAQ 210?" Either way, we look forward to hearing from you!
Newspaper, Computer, Clock (by Brandon Hopkins), and Alert (by Dima Yagnyuk) provided by the Noun Project.


text:
It was another great year filled with lots of tasty food and the pure enjoyment of both making it and eating it! On the other side there was the fun of photographing all of the food and writing about it. I somehow managed to squeeze all of this in between the countless hours spent food blogging and drooling over others creations! (My bookmarked recipes 'to try' increased a lot faster than I could cook this year.) Somewhere along the way I blew right past the 1000 post mark without even noticing it!
I would like to take the opportunity to thank all of my readers for their continued support! I am looking forward to another year of tasty food!
I will leave you with a roundup of the most viewed recipes on Closet Cooking since the beginning.
No Bake Cheesecake – It is not surprising that this effortless cheese cake is number one and given its chilled nature it is perfect for enjoying on warm summer days with fresh fruits and berries.
Okonomiyaki (Japanese Pancake) – This 'as you like' Japanese pancake or pizza is made with a vegetable base that you can add what you like to and then you can top it with your favourites as well. Common toppings include mayonnaise, okonomiyaki sauce (similar to a Worcestershire sauce) and bonito flakes or smoked skipjack tuna.
Kare (Japanese Curry) – This is one of my favourite winter comfort foods! Japanese curry is a little more on the sweet side and it has an amazingly deep and rich flavour.
Jalapeno Popper Dip – This dip is so addictive with its creamy, ooey, gooey, cheesy textures and flavours with the perfect hit of jalapeno heat!
Hot Spinach and Artichoke Dip – If you are craving a warm melted cheese dip but you are looking for something a little more on the healthy side, this dip has spinach and artichoke hearts in it. 😉
Spanakopita (Greek Spinach Pie) – This dish was my first introduction to the amazing spinach, dill and feta flavour combination. Since I discovered it I have used that flavour combination in many dishes but this pie with its light and flaky phyllo pastry crust might just be the best!
7 Layer Dip – This is a nice, fairly healthy take on the classic 7 layer dip that contains so many of my favourite Mexican flavours!
Parmesan Crusted Baked Zucchini Sticks with Marinara Sauce – This is another great snack that is also healthy! You just can't go wrong with crispy baked sticks of zucchini with a tasty marinara sauce for dipping.
Salmon Teriyaki – I am glad that this recipe made it to the top 10 as it is one of my favourite no muss, no fuss, super quick, never fail, meals that is just so good! It is even better when you make your own homemade teriyaki sauce.
Chinese Hot and Sour Soup – This soup is one of the things that I always like to get when eating Chinese takeout and although it can be a bit tricky to make at home it is well worth the effort!
Similar Posts:
Closet Cooking's Birthday 2012 and 1500 Recipes!
Closet Cooking's Birthday: 2011
Closet Cooking's Birthday: 2009
Closet Cooking's Birthday: 2008